* feat: add a workspace mcp server with the ai session toolset
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep workspace mcp tool calls on their own routes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a token's job tag fence on workspace mcp tool calls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: state the workspace mcp token rule in its refusal message
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: let the workspace mcp server span workspaces chosen per token
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: let the mcp url form choose between the tools and workspace servers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: serve the workspace mcp server as windmill mcp v2 at /api/mcp/v2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add read-and-run access to windmill mcp v2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: serve the full windmill mcp experience at /api/mcp, sign-in first
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: align the mcp url form with the brand guidelines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: serve every mcp token from /api/mcp, with one access picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: rename mcp access levels and keep selections to scripts and flows on /api/mcp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: name the mcp access levels in the url caption
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: name the mcp server windmill
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: lead the mcp access picker with build and run, and spell out what a selection excludes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: show the tools each mcp access level gives
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: list the mcp tools in a collapsible section under the access row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: offer all scripts and flows as typed mcp tools again, as wildcard scopes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: label the mcp selection access as scripts and flows as tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: link mcp run, app draft and deploy results to their windmill pages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: mirror the session tool changes from main in the mcp server
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep an ai agent's identity when the ai chat deploys its resource
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: call the api in-process from the mcp session tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a draft that rebase_draft could not return whole
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let read-and-run mcp tokens run scripts and flows that take secrets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: ask mcp clients to open windmill links in a browser the user sees
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: send mcp clients condensed instructions and serve the full rules on demand
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: put the core rules first in the mcp instructions instead of condensing them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: go straight to the mcp sign-in page after login, without the workspace picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: no workspace error toast on the mcp sign-in page while logged out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: open raw app previews on the preview alone, from mcp links and in sessions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: link mcp script, flow and agent drafts to their editors, and agents to their page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the session preview's saved sidebar choice, fold the build log in preview-only views
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: hold mcp tokens below full access to their level on the per-workspace urls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: revoke tokens with the new mcp scopes when the migration is reverted
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep an mcp token's scopes when its editor is saved without changing access
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: mint one jwt per mcp tool call, accept the old approve body, list the new scopes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: reset the mcp token editor's picker state for each token
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: mark only mcp selections, read levels imply no endpoint tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to b3fd7d49f2ba58f5080fabc3a5686c34a0b2684c
This commit updates the EE repository reference after PR #877 was merged in windmill-ee-private.
Previous ee-repo-ref: 9e960246d51401a2b0487dcffcadd0b43cd67d39
New ee-repo-ref: b3fd7d49f2ba58f5080fabc3a5686c34a0b2684c
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* feat: ship php only on full images with a clear missing-php error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let a bare php or composer path resolve through PATH
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Restarting a flow at the step right after an approval step copied the
approval step as completed, and the worker skips the gate at the restart
step, so a flow whose approval timed out or was disapproved could be
restarted past it without anyone approving. Restart resolution now
refuses a restart whose copied steps include an approval gate that never
opened, naming the step to restart from instead.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: configurable workspace roles with per-workspace overrides
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: close role review gaps in pickers, declarative sync and removal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: keep resolve_role_name doc on its function
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: validate overrides on instance role changes and bill admins fully
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: allow pipeline drafts and keep role checks on one connection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: list data pipelines in operator_can_draft
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: expect a 403 role refusal when an operator resolves jobs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: require a valid license for custom workspace roles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: freeze workspace roles when the license lapses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: pin the ee companion for workspace roles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: broadcast role override changes from the write path, not a trigger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to b5294d38db082bdd104d5358a47695390694c05d
This commit updates the EE repository reference after PR #891 was merged in windmill-ee-private.
Previous ee-repo-ref: 688e00c5982865b14098f530d54280e2311994c0
New ee-repo-ref: b5294d38db082bdd104d5358a47695390694c05d
Automated by sync-ee-ref workflow.
* fix: let an admin row that kept the operator flag hold full rights everywhere
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: treat superadmin members as admins and return role names from get user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: revoke mcp oauth grants on password change and reset
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: revoke pending mcp codes and serialize grants against revocation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: run mcp refresh theft check on the grant transaction
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: log commit failures of rejected mcp oauth exchanges
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix(worker): render TEMP_SCRIPT_REFS placeholder in Python runner-group loader.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: drop unrelated rustfmt churn in python_executor.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: cover relative imports in a python runner group, keep the raw loader private
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 32784f3907f0a25fee4a9f96fa172420f17b3fea
This commit updates the EE repository reference after PR #908 was merged in windmill-ee-private.
Previous ee-repo-ref: 6c36ef6e94dda5e43e04a5a08c00ef7eabb6d9a8
New ee-repo-ref: 32784f3907f0a25fee4a9f96fa172420f17b3fea
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: stop handler, app and agent jobs resolving untrusted references
* perf: skip decoding untrusted args that hold no dollar or escape
* test: drop the transaction the recovery handler no longer takes
* fix: flag reserved names in object keys and tighten the jsonb parity test
* fix: refresh oauth tokens without holding a connection across the exchange
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: pin ee ref for the oauth refresh fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update sqlx cache for the oauth refresh queries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: coalesce forced oauth refreshes and drop the redundant mcp visibility check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: store refreshed oauth tokens at every linked variable and only reuse a fresh one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: date oauth expiry from the exchange and fan out only to secret variables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 3546b6b080e0234335ed2c8e2e9cc3d595bbadca
This commit updates the EE repository reference after PR #906 was merged in windmill-ee-private.
Previous ee-repo-ref: 12d1fb5978e66af462398c789b861706a2367ed0
New ee-repo-ref: 3546b6b080e0234335ed2c8e2e9cc3d595bbadca
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: keep schedule push, flow advance and wac approval on one pool connection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: read flow args on the status-update tx instead of preloading them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: pin ee ref for the scim update_group fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to c465c042eeae3c5d9a0180f62a56e8f8d3e9e162
This commit updates the EE repository reference after PR #905 was merged in windmill-ee-private.
Previous ee-repo-ref: dc4d0327044ddc10ef53ad0b21ae37b96cf4aad2
New ee-repo-ref: c465c042eeae3c5d9a0180f62a56e8f8d3e9e162
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: stop holding a pool connection while waiting for another
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: count only earlier occurrences as schedule handler history
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to ac53164fd27fe962a020f3ee944949df1f760603
This commit updates the EE repository reference after PR #904 was merged in windmill-ee-private.
Previous ee-repo-ref: 047764f902f10fce0156138c4240ba5d1a2e969a
New ee-repo-ref: ac53164fd27fe962a020f3ee944949df1f760603
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix(mcp): escape JSON inlined in the MCP OAuth callback script
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to dd0c7087f9b2453260f3d73b0d589042b4393a1d
This commit updates the EE repository reference after PR #900 was merged in windmill-ee-private.
Previous ee-repo-ref: b8384a2346c2c228ac645e3209a04b1f08627278
New ee-repo-ref: dd0c7087f9b2453260f3d73b0d589042b4393a1d
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* chore: read the caller once in workspace settings handlers
* chore: update ee-repo-ref to bfbf9154df83c5256a35181fc9ea3b715b66c35f
This commit updates the EE repository reference after PR #901 was merged in windmill-ee-private.
Previous ee-repo-ref: 6fbcc79cdd5bb30b362ae2a44e651ede66830ee3
New ee-repo-ref: bfbf9154df83c5256a35181fc9ea3b715b66c35f
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* feat: let AI agents answer in Slack
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: dedupe Slack deliveries by message and route only connected workspaces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: key Slack conversations with the workspace secret and require signed Slack requests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a named agent on its thread after an empty question and flag a missing Slack signing secret
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: register the slack_agents token scope domain
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: name the Slack bot, offer Slack only for chat agents, align the agent API tab with webhooks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn when Slack can't be reached instead of showing a placeholder bot name
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: chat SDK, streaming examples and a copyable integration prompt on the agent API tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the base path in the chat SDK example, list slack_agents token scopes, bound the bot name lookup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: opt into the AI agent Slack scopes at connect, store the signing secret in instance settings, surface the integration prompt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: dispatch Slack agents only on a verified request, warn when the connection lacks the agent scopes, register the callback redirect URLs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: point the agent chat examples at @windmill-labs/chat-sdk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: build the agent API examples on the configured API base URL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: say that a channel's default agent takes its /windmill commands
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list the channels answered by an agent in the workspace Slack settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: keep the Slack signing secret in SLACK_SIGNING_SECRET, warn at connect when it is missing, move the integration prompt to a tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: wrap copyable code blocks at word boundaries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: open the agent panel on its API tab, put the AI prompt first, list channels like the critical alert channels, cap the manifest's height
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: group the agent API examples by AI prompt, TypeScript and HTTP, with React and framework-free chat SDK examples
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: have the agent integration prompt read the token from WINDMILL_TOKEN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: trim the agent API tab intro, name the Slack app in mentions, define the SDK example's output
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: share agents in selected Slack channels, run as their identity
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: share agents in Slack channels with anyone or workspace members only
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: set who can ask an agent in Slack and its channels from its settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: treat a missing Slack audience as workspace members
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list Slack channels before who can ask, name the run-as user in each choice
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: name the next deploy's run-as user in Slack choices, turn agents on by default when connecting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: answer agents on mentions only, group agent settings into sections
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: show how to ask an agent in Slack first, keep agent scopes opt-in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list agents shared in Slack in a setting card and table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 10bc314c95094c0851743cbca31b50a3b37d42fd
This commit updates the EE repository reference after PR #865 was merged in windmill-ee-private.
Previous ee-repo-ref: 47d8fbac461171bd93d888b49cc1c7730a2b3f96
New ee-repo-ref: 10bc314c95094c0851743cbca31b50a3b37d42fd
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat: probe nsjail with a real jail and add a gVisor compat mode
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: route dbt captured phases through the gVisor compat step and harden the probe dir
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: patch nsjail with a gvisor_compat option instead of applying rlimits from the worker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep DuckDB jailed on a sandboxed worker whose nsjail probe failed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: link the upstream gVisor issues from the nsjail patch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: let ALLOW_PRIVATE_MCP_SERVER_URLS name the private hosts it allows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn once about invalid MCP private-host entries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn when an autoscaled worker group has no tags to count
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop warning autoscaling events when rolling the migration back
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop the autoscaling warning event and its migration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: tell agent groups to match custom tags to their token tags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to a673d2e3fe12927921be86c3a52bd9c956759c65
This commit updates the EE repository reference after PR #898 was merged in windmill-ee-private.
Previous ee-repo-ref: bbb21dad8a18f0593a2e1a2f2930b427f44404cd
New ee-repo-ref: a673d2e3fe12927921be86c3a52bd9c956759c65
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat: let agent workers authenticate with a workload identity token
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: throttle failed workload identity key fetches per issuer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep stale workload identity keys through an issuer outage
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse workload identity rules with an empty claim value
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: validate workload identity issuers in declarative sync and share the JWKS cache
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: say workload identity issuers are optional in agent worker settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0
This commit updates the EE repository reference after PR #897 was merged in windmill-ee-private.
Previous ee-repo-ref: 0e98880edb8db269d53120ca606025c81f320f5c
New ee-repo-ref: 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: gate unix-only bun staging items so the Windows worker build compiles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: compile bun_install_can_stage only where it is used
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* perf: opt into sqlx test templates through SQLX_TEST_TEMPLATE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: raise the sqlx test connection cap so concurrent tests cannot starve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: pass --save-text-lockfile only to bun installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: run bun and npm installs under nsjail sandboxing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: strip workspace-dependencies header from npm-mode package.json
* chore: bump npm in worker images to 12
* docs: describe npm 12 install-script policy in install comment
* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* perf: keep bun's cache hardlinks for jailed installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: harden the bun install staging dir and npm-mode jail mounts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: reach the bun staging dir only through no-follow descriptors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: create bun staging files new and check outputs after the move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: retry npm installs refused git or remote fetches with a deprecation warning
* fix: point the npm fetch fallback warning at config that works on CE too
* fix: read npm fetch refusals from its debug log and honor every npm config source
* fix: force text output for the npm config check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: stop backend tests waiting out real time they do not need
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: delete the unused workspace_dependencies fixture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: fix error handler test flake and merge handler test binaries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: tighten workspace handler test comments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* perf: clone sqlx test databases from a migrated template
* perf: lock sqlx test templates shared while cloning
* chore: note the tag that keeps the sqlx fork rev fetchable
* fix: pass --save-text-lockfile only to bun installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: run bun and npm installs under nsjail sandboxing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* perf: keep bun's cache hardlinks for jailed installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: harden the bun install staging dir and npm-mode jail mounts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: reach the bun staging dir only through no-follow descriptors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: create bun staging files new and check outputs after the move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add a no_network annotation for sandboxed python, bash, bun and r jobs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep nodejs relative imports and dedicated workers working under no_network
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: bundle bun no_network jobs so relative imports resolve before the run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: point ee-repo-ref at the runner group no_network fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: state the no_network token rule once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: refuse no_network jobs whose workspace imports would be fetched at run time
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let type-only workspace imports through the no_network import check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to ca4a1959a0d2257d413a57349939053ac3473c6b
This commit updates the EE repository reference after PR #895 was merged in windmill-ee-private.
Previous ee-repo-ref: 3841923cfd117b6b907ac3e84b26f07bde41f8ed
New ee-repo-ref: ca4a1959a0d2257d413a57349939053ac3473c6b
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: refuse dot segments in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse spaces, query and fragment markers in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse percent signs in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let ALLOW_PRIVATE_AI_BASE_URLS name the private hosts it allows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse loose and wildcard allowlist entries, judge embedded v4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: never admit local-use NAT64 addresses through an allowlist net
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep script and flow deploys off a second pool connection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: raise a folder default's errors only when it applies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: skip the fork lock when a fork creation has no storage to purge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: word the fork lock skip for both purge callers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse dot segments in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse spaces, query and fragment markers in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse percent signs in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: scope delete_jobs side-table deletes to the request workspace
The /jobs/delete purge deleted resume_job, v2_job_runtime, v2_job_status
and concurrency_key rows by job id alone. Those tables have no
workspace_id, so a workspace admin could pass another workspace's job ids
and wipe its flow status, runtime, resume and concurrency rows. Scope
each delete through v2_job, as zombie_job_counter already is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: filter delete_jobs ids to the workspace once
Resolve the request's job ids against v2_job up front and run every
delete on that filtered list, instead of repeating the v2_job subquery in
each side-table delete. The workspace scoping lives in one place and the
side-table deletes keep their plain id form.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: run the isolated-forks rule test in its own workspace
PROTECTION_RULES_CACHE is process-wide and keyed by workspace id, so the
other base-fixture tests in protection_rules.rs, running concurrently on
their own databases, could cache test-workspace's rules without the
RequireIsolatedForks ruleset and let the fork through to the data table
copy (400 instead of 403) on main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: match nsjail profile lines so the envar check passes on CRLF checkouts
script_profiles_take_envars_before_their_fixed_ones searched for
"\n{ENVARS}\n", which a Windows checkout (CRLF) never contains, failing
cargo_test_windows since v1.834.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>