mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-19 00:02:03 +00:00
e26e437dd1
* feat(backend): extract 12 leaf crates from windmill-api to improve incremental compilation Extract independent modules from windmill-api (90k LOC monolith) into separate leaf crates to reduce incremental compilation times. Modules extracted: assets, configs, debug, flow-conversations, inputs, npm-proxy, openapi, schedule, settings, workers, agent-workers, and alerting (from windmill-common). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add windmill-api-settings dep to root crate, make ee_oss public Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: add agent_workers integration tests 8 tests covering agent worker lifecycle: - Simple script execution (bun) - Script with arguments - Script with logs (verified in job_logs table) - Script failure handling - Complex result (nested objects/arrays) - Agent token creation via API - Token creation + Initial/MainLoop ping cycle - Multiple sequential job execution Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * all --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
47 lines
1.4 KiB
Rust
47 lines
1.4 KiB
Rust
/*
|
|
* Author: Ruben Fiszel
|
|
* Copyright: Windmill Labs, Inc 2022
|
|
* This file and its contents are licensed under the AGPLv3 License.
|
|
* Please see the included NOTICE for copyright information and
|
|
* LICENSE-AGPL for a copy of the license.
|
|
*/
|
|
|
|
use axum::{body::Body, response::Response};
|
|
use serde::{Deserialize, Deserializer};
|
|
|
|
pub use windmill_api_auth::{check_scopes, require_devops_role, require_super_admin};
|
|
|
|
#[cfg(feature = "private")]
|
|
pub use windmill_common::usernames::generate_instance_wide_unique_username;
|
|
pub use windmill_common::utils::WithStarredInfoQuery;
|
|
|
|
#[cfg(feature = "enterprise")]
|
|
pub use windmill_alerting::{
|
|
acknowledge_all_critical_alerts, acknowledge_critical_alert, get_critical_alerts,
|
|
AlertQueryParams,
|
|
};
|
|
|
|
pub fn content_plain(body: Body) -> Response {
|
|
use axum::http::header;
|
|
Response::builder()
|
|
.header(header::CONTENT_TYPE, "text/plain")
|
|
.body(body)
|
|
.unwrap()
|
|
}
|
|
|
|
#[allow(unused)]
|
|
pub fn non_empty_str<'de, D>(deserializer: D) -> Result<Option<String>, D::Error>
|
|
where
|
|
D: Deserializer<'de>,
|
|
{
|
|
let o: Option<String> = Option::deserialize(deserializer)?;
|
|
Ok(o.filter(|s| !s.trim().is_empty()))
|
|
}
|
|
|
|
#[cfg(feature = "http_trigger")]
|
|
pub use windmill_common::utils::ExpiringCacheEntry;
|
|
|
|
lazy_static::lazy_static! {
|
|
static ref DUCKLAKE_INSTANCE_PG_PASSWORD: std::sync::RwLock<Option<String>> = std::sync::RwLock::new(None);
|
|
}
|