Commit Graph

10756 Commits

Author SHA1 Message Date
tristantr 67578250b3 Add tooltip toggle 2025-10-23 16:58:11 +02:00
tristantr 74cc8905f8 Add tooltip per Tab header in app builder 2025-10-23 16:23:20 +02:00
Tristan TR eda978f7b0 Merge branch 'main' into tl/app-builder 2025-10-23 16:22:41 +02:00
Diego Imbert bed9aa7c9c Fix broken batch reruns InputTransformForm (#6921) 2025-10-23 13:04:06 +00:00
Tristan TR e039f57f85 Merge branch 'main' into tl/app-builder 2025-10-23 14:38:43 +02:00
tristantr a74c680cf1 Add tooltip to Modal button and align mondalcomponent configuration names with other components 2025-10-23 14:35:37 +02:00
Diego Imbert 073ddbab3a fix broken sql completion (#6919) 2025-10-23 11:22:00 +00:00
Diego Imbert f06f3bca85 fix regression bug, toggle button height in input transform form (#6918) 2025-10-23 11:21:15 +00:00
Ruben Fiszel b5ce75e3d2 docs: add critical warning against SELECT * in worker queries (#6916)
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>
2025-10-23 10:54:25 +00:00
Ruben Fiszel 23991bcc9e text input prevent immediate propagation 2025-10-23 10:49:39 +00:00
Diego Imbert dcd466ae15 remove alive state from toast state (#6911) 2025-10-23 09:59:09 +00:00
hugocasa c599091258 chore(parsers): publish ts parser with support for re-exported preprocessor (#6912) 2025-10-23 09:57:50 +00:00
Diego Imbert 8eaef7b28e Sync RT button (#6882) 2025-10-23 09:50:17 +00:00
centdix e33b338151 fix chat (#6910) 2025-10-23 09:36:13 +00:00
Diego Imbert c2cb95e965 Fix/improve toast elapsed logic (#6909)
* Fix/improve toast elapsed logic

* nit
2025-10-23 09:32:22 +00:00
hugocasa e81d629705 feat(backend): stream early return (#6896)
* feat(backend): stream early return

* revert early return change

* nit

* sqlx

* fix build
2025-10-23 08:36:21 +00:00
centdix b5d0f23f4f feat(aichat): add user-level custom system prompts (#6884)
* 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>
2025-10-23 08:35:51 +00:00
centdix 877af9c845 better output (#6893) 2025-10-23 08:34:22 +00:00
hugocasa 4b26def0cd chore(parsers): publish bash parser with CRLF handling (#6905) 2025-10-23 08:33:41 +00:00
Guilhem 8bee6ca41e fix approval buttons (#6906) 2025-10-23 08:33:03 +00:00
centdix 821be01400 dont use diff based edits (#6897) 2025-10-23 10:15:51 +02:00
centdix e40d52d411 fix(yaml-validator): update openflow for aiagents (#6895)
* update openflow for aiagents

* remove value from required in openflow.json

* all

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2025-10-23 07:52:25 +00:00
Vivek Chavan fa76105d14 fix: detect preprocessor in re-exported named exports (#6899)
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
2025-10-23 07:51:57 +00:00
Ruben Fiszel dc887e5f43 remove erronous error log in agent mode 2025-10-23 07:41:31 +00:00
Ruben Fiszel 623392de9e chore(main): release 1.565.0 (#6890)
* chore(main): release 1.565.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.565.0
2025-10-22 18:09:57 +00:00
centdix 2170d8dd32 feat(ai agent): handle inputTransforms for tools arguments (#6873)
* show inputs

* filter filled args

* merge args with input transforms

* working expr

* handle results expr

* cleaning

* cleaning

* cleaning

* cleaning

* Update SQLx metadata

* fix no previous step

* add ai option in frontend

* cleaning

* cleaning

* Update SQLx metadata

* fix

* fix reactive unmount issue with tool id

* use existing func

* only fetch if needed

* fix

---------

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-10-22 18:04:23 +00:00
Ruben Fiszel fc712cf2e5 fix: compute dependencies of apps in deploy to UI 2025-10-22 18:03:13 +00:00
Alexander Petric 9b956902ae fix windows typo (#6900) 2025-10-22 17:48:38 +00:00
Guilhem 032f0c1f8c feat: UX/UI full overhaul to meet new design system 2025-10-22 15:56:36 +00:00
Ruben Fiszel 9b1a7f5a3a fix(windows): improve 2nd shutdown monitor 2025-10-22 08:42:36 +00:00
Pyra b9eaff3688 debouncing edge case (#6891)
* fix: debouncing edge case

* Update SQLx metadata

---------

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-10-22 07:15:28 +00:00
hugocasa cadf32cf03 fix(backend): batch rerun jobs with preprocessor (#6875) 2025-10-22 06:27:32 +00:00
Vivek Chavan 5529736784 fix(parser): Handle CRLF line endings in bash and PowerShell parsers (#6889)
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.
2025-10-22 06:21:38 +00:00
Ruben Fiszel b893af16e7 chore(main): release 1.564.0 (#6877)
* chore(main): release 1.564.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.564.0
2025-10-21 21:18:03 +02:00
Ruben Fiszel df91a7998c fix: fix download s3 images with jwt 2025-10-21 19:01:39 +00:00
Alexander Petric 7fe849494d feat: add 'on submit' wizard for buttons in app builder (#6886) 2025-10-21 18:40:28 +00:00
Pyra caa21fcb33 fix: debounce_key automatic deletion (#6885)
* fix: debounce_key automatic deletion

Signed-off-by: pyranota <pyra@duck.com>

* Update SQLx metadata

* better solution

Signed-off-by: pyranota <pyra@duck.com>

* Update SQLx metadata

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-10-21 18:31:05 +00:00
Alexander Petric d777c7798b feat: allow optionally forcing ipv4 for reqwest (#6883) 2025-10-21 15:46:41 +00:00
centdix 0e98b22b42 feat(flow chat): add cancel button (#6869)
* feat(flow chat): add cancel button

Add cancel button to flow chat interface that appears when a flow is executing.
- Replace send button with red stop button when processing
- Wire up cancel functionality to stop flow execution
- Support both polling and streaming modes
- Fixes #6868

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* fix

---------

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>
2025-10-21 17:41:56 +02:00
centdix b84764733d fix chat toggle (#6870) 2025-10-21 15:33:17 +00:00
centdix 97ac1be036 feat(aiagent): allow mcp as tools (#6790)
* 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>
2025-10-21 15:28:52 +00:00
Ruben Fiszel 1e670731d5 fix: fix column def sync for evalv2 2025-10-21 14:11:55 +00:00
Ruben Fiszel 7d1ee0662e fix: delete workspace_env on workspace deletion 2025-10-21 11:14:36 +00:00
Guilhem b7cdd54776 fix suspended count display (#6871) 2025-10-20 14:32:53 +00:00
Ruben Fiszel e10ac1a93e chore(main): release 1.563.4 (#6865)
* chore(main): release 1.563.4

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.563.4
2025-10-20 10:14:04 +00:00
Ruben Fiszel 6ccccbcf9e fix(cli): improve generate-flow with raw requirements 2025-10-20 10:03:14 +00:00
Ruben Fiszel 88b97e63da tailwind classes editor chrome fix 2025-10-19 23:16:26 +00:00
Ruben Fiszel dfd08d8a4b refactor: improve usage table behavior to eliminate synchronous row locks (#6863)
* refactor: improve usage table behavior to eliminate synchronous row locks

Replace synchronous INSERT...RETURNING with SELECT + async UPDATE pattern:
- Add check_usage_limits() to read current usage without row locks
- Add increment_usage_async() to update usage in background task
- Refactor job push logic to use optimistic validation
- Simplify job completion tracking with better error handling

This eliminates blocking row locks on the usage table during job creation,
significantly improving throughput and reducing contention.

Note: Requires running 'cargo sqlx prepare' with database access to update
the query cache in .sqlx/ directory.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>

* Update SQLx metadata

* refactor: optimize cloud usage checks with caching and conditional queries

- Add 60s cache for superadmin status checks to reduce DB load
- Skip unnecessary user usage query for premium workspaces
- Use existing team plan status cache (already implemented in windmill-common)
- Update check_usage_limits to accept check_user_usage parameter
- Add sqlx query cache for conditional user usage query

This optimization eliminates redundant database queries during job creation,
particularly for premium workspaces where user usage tracking is not needed.

Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-10-18 07:47:31 +00:00
Ruben Fiszel d86ad751d4 fix: set jwt auth for custom apps 2025-10-18 07:10:09 +00:00
Ruben Fiszel 4cc2166c10 chore(main): release 1.563.3 (#6864)
* chore(main): release 1.563.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.563.3
2025-10-18 06:29:11 +00:00