* feat: split ai agent memory into agent policy, run memory id and step history
* fix: scope string memory ids to workspace and flow, keep nested tool history inputs
* chore: update sqlx cache for the flow context query
* docs: describe memory id scoping as collision-free rather than isolated
* chore: regenerate openflow json after merging main
* fix: offer no memory id for legacy manual memory, document linked history inputs
* fix: seed provided messages from legacy manual memory and hide its note once set
* fix: bypass memory when a provided messages expression evaluates to null
* fix: require a user message when provided messages are empty
* chore: keep the empty messages comment within the line width
* docs: name the history inputs wherever linked steps list their flow-local inputs
* docs: keep the memory storage path on one line
* feat: managed memory with an inherited or custom memory id per step
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: list a custom memory id in the test run form and name where an inherited one comes from
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: keep memory id out of the add-field menu and drop the memory id telemetry
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: keep legacy auto memory without an id working after an untouched redeploy
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: rename step messages to previous_messages and address review
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* style: rewrap comments and docs lines lengthened by the previous_messages rename
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor: read agent memory as either a legacy shape or the current one
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: name the memory setting in ignored-input notes and keep conversions honest
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: keep a legacy memory count unset on open and read a cleared count as off
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: address review on cleared test history and zero-count memory
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: drop flow-local keys from a linked agent resource before interpolating it
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: keep a linked resource's own inputs as fallbacks and note ignored history on image runs
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: restore the linked agent draft tests and log ignored history on every image run
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: resolve the one-of variant from the value when the selected one leaves the list
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: treat zero-count managed memory as off when enabling chat mode and shorten comments
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: stop requiring user_message in the openflow agent contract when previous messages are the prompt
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* feat: dynamic ai agent toolsets, and memory as a step input
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: address review round 1 on dynamic ai agent toolsets
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: tag enabled_tools and drop the memory step input
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: let an mcp server entry be named by the path the roster shows
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: keep $res: out of the tool names the enabled tools picker offers
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: name an mcp server by its bare path on the one side that can hold it
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: count the enabled tool names that matched nothing instead of logging them
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: narrow an agent's roster in one pass, by whole entries
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* test: pin that an mcp summary is rejected against a name that is not
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* chore: regenerate the copilot flow schema after the merge
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: shorten the enabled tools list hint
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: take enabled_tools back to a plain list of tool names
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: keep the enabled tools add-menu hint describing the unset field
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: name a websearch tool that carries no summary of its own
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: reserve the name web search is enabled by so no tool can share it
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: spell the reserved web search name with a hyphen
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: reserve __wm_web_search as the name web search is enabled by
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* chore: advance ee-repo-ref past the git sync ci check work
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: shorten the enabled tools description the run form shows
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref to e4c1b794d6c5e6e390987341b2840587bbb40348
This commit updates the EE repository reference after PR #785 was merged in windmill-ee-private.
Previous ee-repo-ref: af668462f0f06b02a5f4e0c22e6156858487a518
New ee-repo-ref: e4c1b794d6c5e6e390987341b2840587bbb40348
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5 (1M context) <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: reject invalid AI agent tool names when the chat writes a flow
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: address review nits on agent tool name validation
Share one AI-agent walk between the providerless-agent and invalid-tool-name
collectors, drop the unused validateToolName, and list every reserved id in the
tool naming rules.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: describe an agent tool's summary as the name the agent calls it by
The OpenFlow schema described `AgentTool.summary` as a short description of
the tool, which is the same schema the flow write tools hand the model, so it
pulled against the naming rules. Narrow those rules to flowmodule tools, since
websearch and mcp tool names are never regex-checked, and let `kind` take
either vocabulary its callers resolve.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: name-check only the agent tools whose summary the agent calls
An mcp tool exposes the MCP server's own tool names and a websearch tool's
summary is a plain label, so neither reaches the worker's name check. Both
default to an empty summary in the editor, which the chat then refused to
write back.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>