* draft mcp client * testing * fix * cleaning * mcp resource in inputtransforms * cleaning * big cleaning * cleaning * no arc * add utils file * refactor tools * add mcp actions * draft frontend * send arguments from backend * better frontend * cleaning * use token for auth * add logo * rm * fix * fix * chore: refactor mcp for ai agents (#6829) * Add Tool enum for AIAgent with backward compatibility - Created Tool enum that can be either Windmill (FlowModule) or Mcp (resource reference) - Created McpToolRef struct to hold MCP resource path - Implemented custom Deserialize for Tool with backward compatibility: - New format: {type: 'windmill'|'mcp', ...} - Old format: FlowModule objects (automatically wrapped in Tool::Windmill) - Updated AIAgent to use Vec<Tool> instead of Vec<FlowModule> - Updated FlowValue::traverse_leafs to handle Tool enum - Backward compatible: old flows with Vec<FlowModule> will deserialize correctly * Refactor AI executor to process Tool enum instead of extracting MCP from input_transforms - Separate Windmill tools and MCP resource paths from tools list - Process Windmill FlowModules into Tool definitions - Load MCP tools from resource paths in Tool::Mcp variants - Remove old logic that extracted mcp_resources from input_transforms - Import FlowModule, remove unused InputTransform - Fix type issues: use .as_str() for path and handle Option<bool> properly * handle in args * mcp as flowmodule * frontend * config for mcp * simplify logic * fix ai executor logic * cleaning * clean frontend * fix * better resource picker * fix and styling * add endpoint to fetch tools * apply tool filtering * fix name validation * better ui * use cache * fix * fix merge * refactor: Separate MCP tools from FlowModule in AIAgent - Add new AgentTool, ToolValue, and McpToolValue types - Update AIAgent to use Vec<AgentTool> instead of Vec<FlowModule> - Implement From traits for clean conversion between AgentTool and FlowModule - Add backward compatibility via custom deserializer for AgentTool - Simplify resolve_module logic by reusing existing resolve_modules function - Update traverse_leafs to handle AgentTool structure This refactoring separates MCP tools from FlowModule tools, making the type system clearer and eliminating the need to treat MCP servers as a special case of FlowModule. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Update ai_executor and worker_lockfiles for AgentTool - Update ai_executor.rs to handle new AgentTool structure - Separate MCP tools from FlowModule tools using ToolValue enum - Convert AgentTool to FlowModule for backward compatibility - Add imports for AgentTool and ToolValue types - Update worker_lockfiles.rs for lazy loading optimization - Convert AgentTool <-> FlowModule in insert_flow_modules - Preserve lazy loading for FlowModule tools via modules_node - Keep MCP tools inline (lightweight, no need for lazy loading) - Maintain backward compatibility with existing flows This enables the lazy loading optimization for FlowModule tools while keeping MCP tools inline, balancing performance and simplicity. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * cleaning * adapt frontend * cleaning * cleaning * type fix * cleaning * fix back comp * move mcp button position * nit * cleaning * fix nested removal * cleaning * opti * fix chat markdown display * fix chat messages layout * fix back comp frontend * fix deserializer * nit * simpler serializer * use if else --------- Co-authored-by: Claude <noreply@anthropic.com>
115 lines
3.6 KiB
TOML
115 lines
3.6 KiB
TOML
[package]
|
|
name = "windmill-common"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
|
|
[features]
|
|
default = []
|
|
enterprise = []
|
|
private = []
|
|
jemalloc = ["dep:tikv-jemalloc-ctl"]
|
|
tantivy = []
|
|
prometheus = ["dep:prometheus"]
|
|
loki = ["dep:tracing-loki"]
|
|
benchmark = []
|
|
parquet = ["dep:object_store", "dep:aws-config", "dep:aws-sdk-sts", "dep:aws-smithy-types-convert", "dep:datafusion"]
|
|
aws_auth = ["dep:aws-sdk-sts", "dep:aws-config"]
|
|
otel = ["dep:opentelemetry-semantic-conventions", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk",
|
|
"dep:opentelemetry", "dep:tracing-opentelemetry", "dep:opentelemetry-appender-tracing", "dep:tonic"]
|
|
smtp = ["dep:mail-send"]
|
|
scoped_cache = []
|
|
cloud = []
|
|
openidconnect = ["dep:openidconnect"]
|
|
[lib]
|
|
name = "windmill_common"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
tar.workspace = true
|
|
hmac.workspace = true
|
|
sha2.workspace = true
|
|
thiserror.workspace = true
|
|
anyhow.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
chrono.workspace = true
|
|
chrono-tz.workspace = true
|
|
hex.workspace = true
|
|
async-trait.workspace = true
|
|
reqwest-middleware = { workspace = true }
|
|
reqwest-retry = { workspace = true }
|
|
rand.workspace = true
|
|
sqlx = { workspace = true, features = ["postgres"] }
|
|
uuid.workspace = true
|
|
tracing = { workspace = true }
|
|
axum = { workspace = true }
|
|
hyper = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tokio-stream.workspace = true
|
|
tokio-util.workspace = true
|
|
datafusion = { workspace = true, optional = true}
|
|
reqwest = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
lazy_static.workspace = true
|
|
tracing-appender.workspace = true
|
|
gethostname.workspace = true
|
|
itertools.workspace = true
|
|
regex.workspace = true
|
|
git-version.workspace = true
|
|
cron.workspace = true
|
|
tracing-loki = { version = "^0", optional = true }
|
|
magic-crypt.workspace = true
|
|
object_store = { workspace = true, optional = true }
|
|
prometheus = { workspace = true, optional = true }
|
|
aws-config = { workspace = true, optional = true }
|
|
aws-sdk-sts = { workspace = true, optional = true }
|
|
base64.workspace = true
|
|
bitflags.workspace = true
|
|
|
|
aws-smithy-types-convert = { workspace = true, optional = true }
|
|
indexmap.workspace = true
|
|
bytes.workspace = true
|
|
mail-send = { workspace = true, optional = true }
|
|
futures-core.workspace = true
|
|
async-stream.workspace = true
|
|
const_format.workspace = true
|
|
crc.workspace = true
|
|
windmill-macros.workspace = true
|
|
windmill-parser-sql.workspace = true
|
|
windmill-parser-ts.workspace = true
|
|
windmill-parser-py.workspace = true
|
|
windmill-parser.workspace = true
|
|
jsonwebtoken.workspace = true
|
|
backon.workspace = true
|
|
openidconnect = { workspace = true, optional = true }
|
|
strum.workspace = true
|
|
strum_macros.workspace = true
|
|
url.workspace = true
|
|
async-recursion.workspace = true
|
|
|
|
semver.workspace = true
|
|
croner = "2.2.0"
|
|
quick_cache.workspace = true
|
|
pin-project-lite.workspace = true
|
|
futures.workspace = true
|
|
tempfile.workspace = true
|
|
systemstat.workspace = true
|
|
size.workspace = true
|
|
globset.workspace = true
|
|
rmcp = { version = "0.8.1", features = ["client", "transport-streamable-http-client", "transport-streamable-http-client-reqwest"] }
|
|
|
|
opentelemetry-semantic-conventions = { workspace = true, optional = true }
|
|
opentelemetry-otlp = { workspace = true, optional = true }
|
|
opentelemetry_sdk = { workspace = true, optional = true }
|
|
opentelemetry = { workspace = true, optional = true }
|
|
tracing-opentelemetry = { workspace = true, optional = true }
|
|
opentelemetry-appender-tracing = { workspace = true, optional = true }
|
|
tonic = { workspace = true, optional = true }
|
|
|
|
[target.'cfg(not(target_env = "msvc"))'.dependencies]
|
|
tikv-jemalloc-ctl = { optional = true, workspace = true }
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
sysinfo.workspace = true
|