* fix: also auto add/del igroup members to workspaces where configured
* Update SQLx metadata
* feature flags
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat(copilot): display tool calls immediately in loading state during streaming
Display tool calls in loading state as soon as they are parsed during
OpenAI streaming, rather than waiting until processToolCall is invoked.
Changes:
- parseOpenAICompletion: Track initialized tool calls and display them
immediately when we have complete tool info (id + function.name)
- processToolCall: Updated comment to clarify it merges with existing
loading state set during parsing
This provides better UX by showing tool execution progress progressively
as the stream is parsed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat(copilot): display Anthropic tool calls immediately in loading state
Apply the same immediate tool call display pattern to Anthropic streaming
that was implemented for OpenAI.
Changes:
- parseAnthropicCompletion: Display tool calls immediately in loading state
when tool_use blocks are received in the message event
This ensures consistent UX across both OpenAI and Anthropic providers,
showing tool execution progress as soon as tool calls are detected.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat(copilot): show Anthropic tool calls even earlier with temp displays
Display temporary loading states for Anthropic tool calls as soon as
inputJson events are received (when tool input starts streaming), then
replace them with real tool displays when complete tool_use blocks
arrive in the message event.
Changes:
- ToolCallbacks: Added removeToolStatus method to clean up temp displays
- AIChatManager: Implemented removeToolStatus to remove tool messages
from displayMessages array
- anthropic.ts:
* Display temp tool on first inputJson event (earliest indicator)
* Flush pending text message before showing temp tool (proper ordering)
* Remove temp display when complete tool_use block arrives
* Replace with real tool display via preAction
This provides the earliest possible feedback for Anthropic tool calls,
showing loading states as soon as the model starts generating tool
inputs rather than waiting for complete blocks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* cleaning
* cleaning
* cleaning
* fix icon
* nit
* handle error
* nit
---------
Co-authored-by: Claude <noreply@anthropic.com>
Never use SELECT * in queries that workers might execute to ensure
backwards compatibility when workers are running behind API server
version. New database columns would break outdated workers.
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat(aichat): create reusable CustomAIPrompts component
Extract custom AI prompts UI into a reusable component that can be
used in both workspace settings and user settings. Component includes:
- AI mode selector with visual indicators for set prompts
- Textarea with character limit
- Customizable title, description, and hint messages
Co-authored-by: centdix <centdix@users.noreply.github.com>
* refactor(aichat): update workspace AISettings to use reusable component
Replace inline custom prompts UI with the reusable CustomAIPrompts
component. Add hint about user-level custom prompts being available
in account settings and how they combine with workspace prompts.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* feat(aichat): add user-level custom AI prompts in account settings
Add collapsible section in user settings for custom AI prompts:
- Stored in localStorage (key: userCustomAIPrompts)
- Collapsible UI to save space
- Visual indicator when prompts are configured
- Hint about prompt combination with workspace settings
- Prompts apply across all workspaces for the user
Co-authored-by: centdix <centdix@users.noreply.github.com>
* feat(aichat): combine workspace and user custom prompts
Update AIChatManager to combine workspace-level and user-level custom
prompts. Prompts are combined in order: workspace first, then user.
Add helper functions in aiStore.ts:
- getUserCustomPrompts(): retrieves user prompts from localStorage
- getCombinedCustomPrompt(mode): combines workspace + user prompts
All AI modes (script, flow, navigator, ask, API) now use combined
prompts, allowing users to append their own instructions to workspace
settings across all workspaces.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix: remove unused imports
Remove unused imports to fix svelte-check errors:
- Remove unused 'get' from svelte/store in AIChatManager
- Remove unused 'copilotInfo' from aiStore in AIChatManager
- Remove unused 'AIMode' from AISettings
Co-authored-by: centdix <centdix@users.noreply.github.com>
* simplify
* nit
* fix
* fix
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: centdix <centdix@users.noreply.github.com>
Fixes#6894
The TypeScript parser now correctly detects preprocessor functions
that are re-exported from other modules using named exports like:
export { preprocessor } from "./other_module";
Previously, only function declarations were detected. Now the parser
also checks ExportNamed AST nodes for any specifier named 'preprocessor'.
This allows developers to easily reuse preprocessor functions across
multiple scripts without the workaround of wrapping them in a new function.
Added comprehensive tests covering:
- Simple re-export: export { preprocessor } from "./other"
- Re-export with renaming: export { preprocessor as preprocessor }
- Mixed exports: export { foo, preprocessor, bar }
- Negative case: exports without preprocessor
Fixes#6867
The bash and PowerShell parsers were not properly handling CRLF (Windows-style)
line endings when parsing script arguments. The regex patterns were only
matching LF line endings, causing scripts with CRLF to fail metadata generation.
Changes:
- Updated RE_BASH regex to optionally match \r before line end (\r?$)
- Updated RE_POWERSHELL_ARGS regex to optionally match \r (\r?)
- Added test case test_parse_bash_sig_with_crlf() to verify CRLF handling
This fix ensures that bash scripts created on Windows (or with editors
using CRLF) will correctly parse arguments and generate proper metadata
via 'wmill script generate-metadata' command.
Python parser was verified to work correctly as it uses an AST parser
that inherently handles line endings properly.