Commit Graph
5 Commits
Author SHA1 Message Date
hugocasaandClaude Opus 5.5 2e4c0789a2 feat: agent to flow, tabbed agent page, one webhook panel with an AI prompt (#11903)
* feat: open a flow linking an agent from its menu

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: toast when the flow handoff cannot be stored

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: turn an agent into a flow from its editor, and into a chat app from its page

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: let sandboxed apps run agents, and keep the flow handoff race-free

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: save the new flow as a draft before letting the agent draft go

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: offer the chat app only to those who may build apps

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: give the agent page's chat app section a tab on small screens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: show the flow handoff as an info alert, framed around context and output

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the flow handoff from operators and say why the chat app is locked

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: collapse the flow handoff hint to its title and button

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: show the flow handoff as a corner hint, as the flow editor shows its own

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: name the agent on the app button and say why it is disabled

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: ask whether the agent needs steps before or after it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: name what a flow adds around the agent in its hint

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: say a never-deployed agent turns into a flow

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* revert: leave agent runs and the raw-app guidance to the chat SDK's runnable transport

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: show the agent page's sections as tabs at every width, as a chat-mode flow's page does

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: one webhook panel for scripts, flows and agents, with an AI prompt and chat-mode examples

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: describe the preprocessor's event argument instead of the v1 wm_trigger

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: give the flow chat's preprocessor example the v2 event signature

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: group a webhook's request choices and examples under an HTTP tab, beside the AI prompt and chat SDK

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: drop a comment about guidance this branch no longer adds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: say where the AI prompt expects the webhook token

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: tell the chat-flow prompt that memory_id is required

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the webhook tabs next to their content

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the webhook's REST tab name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: build an agent's chat app from a template, not an AI session

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: don't send the agent chat app's message on an IME confirmation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: agent API tab with one row of call examples and a copy-prompt button

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: open build app in an AI session when AI sessions are on

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: app conversations through the memory_id query parameter, chat-mode flows included

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: regenerate the mcp session instructions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: type backendAsync's memoryId option in the eval diagnostics

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: pin git-sync hub scripts to windmill-cli 1.849.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep build app in the editor when windmill ai is off

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: webhook panel with http and chat sdk tabs over toggle settings

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: memoryId option on the sync backend call too

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: bump the ui builder artifact for the memoryId option

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the webhook panel's http and chat sdk tabs close to their content

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: shared-utils 1.0.14

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: cli takes shared-utils 1.0.14 for the memoryId option

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: pin the app conversation scoping and the memoryId signatures

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: assert the ownership refusal, not any refusal

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: match the memoryId option in the cli wmill.ts signature tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: show the webhook request formats in a card with their toggle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: put the chat sdk example in the same card as the http request

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: add a windmill app tab to chat-mode flow pages

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: title the webhook example cards and label the ai prompt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: offer the chat app from the conversations sidebar instead of a tab

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: raise the chat app's chat-sdk floor to 1.851.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: render the agent's chat app card only once the workspace is known

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: gate the flow's build chat app menu item like the sidebar card

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: build the agent's chat app through the page's navigation, for app-only authors too

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep an imported app in the editor inside a session preview

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: build a form app from an agent without managed memory

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: cover the agent form app's generated source

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:32:20 +01:00
Ruben FiszelandClaude Opus 5.5 e0da560516 feat: build MCP OAuth urls from the api base url, narrowable per surface (#12010)
* feat: configurable public base url for the MCP gateway

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep mcpTokenUrlDisabled's doc comment on its function

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: build MCP OAuth urls from the api base url, narrowable per surface

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: save and discard companion setting keys in the per-category settings flow

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 23:02:27 +01:00
34de8bc06d feat: slack agents through a workspace's own slack app (#11912)
* feat: let Slack agents answer through a workspace's own Slack app, with signing secrets set from the UI

The instance Slack app's signing secret can be set in its OAuth setting as well as
SLACK_SIGNING_SECRET, and a workspace's own Slack app takes its own in the workspace
settings. Each secret only vouches for the workspaces connected through its app, so
/windmill keeps working for a workspace whose app has none set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep Slack signing secrets out of logs and verify an own app without a secret with the instance's

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: report a workspace app's own signing secret in the Slack agents status

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: check Slack approval callbacks against the instance signing secret only

An approval can be sent through any Slack resource, so the team's workspace
connections do not tell which app signed its callback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: share the Slack app setup instructions and require the signing secret for agents

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: tidy the Slack signing secret copy and show a set secret as masked

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: check a workspace app only against its own signing secret, and approvals against their workspace's

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: accept a Slack approval signed by the workspace's app or the instance's

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: check Slack's signature on approvals only when sent through the workspace's Slack connection

Any other Slack resource may belong to any Slack app, so its callbacks rest
on the payload HMAC alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: address review findings on Slack signature checks and the signing secret field

- reject Slack signatures older than five minutes, so a captured request cannot be replayed
- let a reachable workspace's command script take a message before another workspace's help reply
- remove a saved workspace signing secret from its field: the button reads Remove when it is empty
- set the signing secret on connect only when one was entered
- tell non-admins who can set the signing secret

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep SLACK_SIGNING_SECRET for workspace apps without a secret, and route a verified request only to its workspaces

- a workspace on its own app with no secret of its own is checked against SLACK_SIGNING_SECRET,
  which may hold that app's secret from before workspaces had one; the instance setting's secret
  still never applies to it
- once a secret verifies a request, only the workspaces it verified take it, command scripts
  included: it proves which app sent the request
- compute the replay window with abs_diff, which cannot overflow

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: update ee-repo-ref to c8d562aa9d75a7e99bf0ecd1ac224f532452a07e

This commit updates the EE repository reference after PR #907 was merged in windmill-ee-private.

Previous ee-repo-ref: 0864b0ab943defa8b8d55838ef09ab7dacfac17f

New ee-repo-ref: c8d562aa9d75a7e99bf0ecd1ac224f532452a07e

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>
2026-10-22 13:51:09 +02:00
hugocasaandClaude Opus 5.5 394d345e0c fix: give the agent page's API and Slack sections tabs on small screens (#11901)
* fix: give the agent page's API and Slack panel a tab on small screens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the agent pane mounted across the small-screen breakpoint

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: make the covered agent pane inert on the API tab

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: flatten the agent page's API and Slack sections into its small-screen tabs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: fall back to the API tab when the agent has no Slack section

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:07:36 +02:00
35b250e767 feat: let AI agents answer in Slack (#11630)
* 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>
2026-10-19 23:16:17 +02:00