* feat: replace _TRUNC with hash-based MCP tool names (50 char limit) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: reduce MCP tool name limit from 50 to 40 chars Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: use path prefix filtering instead of separate DB query for hashed name resolution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: remove long path warning from MCP token creation (hashing handles long names) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: unify tool prefix parsing and fix extract_path_prefix_from_hashed for Hs- names - Replace `is_hashed_name` + `parse_hashed_name` with unified `parse_tool_prefix` that returns `(type_str, is_hub, is_hashed)` in one call - Fix `extract_path_prefix_from_hashed` to dynamically determine prefix length (3 for `Hs-`, 2 for `S-`/`F-`) instead of hardcoding index 2 - Simplify `reverse_transform` to reuse `parse_tool_prefix` - Add tests for invalid prefixes and `Hs-` prefix handling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: escape LIKE wildcards in MCP hashed name path prefix query Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: respect favorites scope in hashed tool name resolution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: deduplicate MCP tool name resolution and rename get_path_or_id - Extract `unescape_path` helper in transform.rs to deduplicate the 3-step placeholder unescape logic - Extract `find_matching_path` helper in runner.rs to deduplicate script/flow candidate matching via ToolableItem trait - Remove verbose tracing::info! logs from hashed tool resolution hot path - Fix doc comment referencing nonexistent `is_hashed_name` function - Rename `get_path_or_id` to `get_transformed_path` for clarity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update stale doc comments to reflect MAX_PATH_LENGTH=40 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Windmill API
The API server, exposing functionality to other components and the frontend
This crate exposes both a library as well as a binary target.