* 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: keep flow inputs and seed the agent when chat mode is enabled
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: leave a linked agent's memory and streaming to the agent when enabling chat mode
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
* feat(frontend): group the AI agent step form and edit saved agents in a modal
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat: edit a saved AI agent through its own resource draft
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor: drop the agent fork-for-edit session now that edits live in a draft
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat: edit ai_agent resources from the resources page with the agent editor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: send a standalone agent's brain from the module when testing a step
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: keep the agent draft faithful to the resource it deploys to
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* chore: add the sqlx cache entry for the eval subject rename
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor: share the module insert between the graph and the agent editor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): open evals inside the agent editor, actions in its header
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): add tools from the agent editor and lighten its test pane
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): open an ai_agent deep link in the agent editor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): drop the failed result badge on a step that never ran
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): head the agent editor's levels with a back control
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): drop connect and fill inputs from the agent editor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): lighten the agent editor's run panel
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): stop a nested agent tool's config reading as AI-filled
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): offer only AI or static on an agent tool's inputs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): give a saved agent's tool editor a static-only surface
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): open an agent tool in a drawer beside the agent
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(frontend): hide unset agent config in the run form
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor(frontend): share the input forms' pickers and s3 lookup
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* chore(frontend): drop a dead agent-editor export and fix two stale comments
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): reach an ai_agent's resource-level settings and copilot
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): open an ai_agent's resource view as JSON, not the generic form
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): address review findings on the agent editor's draft and streaming
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): close the agent editor on a version restore, as the resource editor does
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): stop the provider picker auto-writing a kind, and clear review nits
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor(frontend): drop the fork-for-edit leftovers from the agent card
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): mount the agent editor in the dev flow editor and guard the deep-link race
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): deploy the agent config that was submitted, and refuse one no run could use
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* refactor(frontend): build the agent editor's rows from the design-system button
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): keep a draft-only agent's draft, and let a blank MCP summary deploy
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): guard read-only agents, incomplete MCP tools and duplicate editor mounts
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: read-only agent editor, linked-card refresh, atomic eval rename
* fix: eval rename needs the privileged pool, per-workspace write access
* fix(frontend): drop the agent editor target when its mount goes away
* refactor: drop the agent rename work from this PR, unban the bindable defaults
* fix(frontend): refuse a renaming deploy and drop the copilot from static-only fields
* fix(frontend): mirror the worker's streaming rule and scope agent writes to their target
* fix(frontend): read runtime streaming as off and reset the drawer's json view
* fix(frontend): read an unsettled output_type as non-streaming too
* fix(frontend): let the showing modal claim an agent opened from inside it
* fix(frontend): keep in-flight edits, tool replacements and every linked step in sync
* fix(frontend): keep attachments in the run form and bind the agent ref to its tools
* fix(frontend): preview the agent as authored and re-evaluate step args on run
* fix(frontend): scope agent-editor ownership to the flow's workspace
* fix(frontend): drop the tool drill-in where there is no graph to select on
* fix(frontend): require a provider kind and keep one resource editor open at a time
* fix(frontend): keep legacy nulls, static-only text literal, and the handover anchor
* test(worker): pin the agent streaming default
* fix(frontend): let an AI-fillable input be switched to static
* fix(frontend): report agent editor background failures instead of floating them
* fix(frontend): keep the version pane's path alive while the editor closes
* fix(frontend): clear the anchor-keep flag at the start of each drawer session
* fix(frontend): preview the agent without its synthetic path, refresh the baseline on external writes
* refactor(frontend): drop the unverifiable baseline refresh, state the synthetic-path rule
* fix(frontend): keep the synthetic path out of agent tool test runs too
* refactor(frontend): host the agent editor under the agent's own path
* fix(frontend): mark an agent editor's host explicitly instead of inferring it from the path
* fix(frontend): discard linked-agent responses from before a deploy
* fix(frontend): keep a flow mount from claiming an agent editor's nested target
* feat(frontend): keep an agent used as a tool inside the agent being edited
* fix(frontend): reserve the agent editor's root module id
* docs(frontend): record why the agent editor previews under the agent's path
* fix(frontend): refuse to open or deploy a resource that is not an agent
* docs(frontend): put the scope-migration comment on the function it describes
* fix(frontend): refuse an agent path whose resource type is not proven
* fix(frontend): recheck the resource type before deploying, and keep expressions off static-only inputs
* fix(frontend): lazy-load the agent editor and slide its levels like the evals pane
* refactor: drop unreachable non-list tools check from agent deploy
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): clear text-only agent fields on image output, reserve the root id
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): keep the agent editor usable for a non-list tools value
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): stop the parked eval run list from taking arrow keys
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): report a non-list tools value on deploy instead of throwing
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): keep temperature editable for image output
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): skip non-object tool entries when rendering an agent
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): guard tool entry reads instead of copying the tool array
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(frontend): key tool rows by position so duplicate ids render
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* handle messages array for ai agent
* better
* nit
* make tool_calls and tool_call_id nullable
* fix empty json behavior
* nits
* cleaning
* feat(backend): replace messages/messages_context_length with history oneOf field
Replace the separate 'messages' array and 'messages_context_length' fields with
a single 'history' field that uses a oneOf discriminator.
The 'history' field can be either:
- 'auto' mode: automatically manages conversation history with memory, takes a
'context_length' number parameter
- 'manual' mode: bypasses memory and uses explicitly provided messages array
Backward compatibility is maintained: if 'messages_context_length' is provided
in the old schema format, it is automatically converted to 'auto' mode with the
specified context_length.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* feat(frontend): replace messages/messages_context_length with history oneOf field
Replace the separate 'messages' array and 'messages_context_length' fields with
a single 'history' field in the AI agent schema.
The 'history' field uses a oneOf discriminator with two modes:
- 'auto': { mode: 'auto', context_length: number } - automatically manages
conversation history with memory
- 'manual': { mode: 'manual', messages: array } - bypasses memory and uses
explicitly provided messages
The schema includes comprehensive descriptions for each mode explaining the
behavior. The order array has been updated to include 'history' in place of
the old 'messages_context_length' and 'messages' fields.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix(frontend): add support for 'mode' discriminator in oneOf rendering
Update ArgInput.svelte to properly handle oneOf schemas that use 'mode' as the
discriminator field, in addition to the existing 'kind' and 'label' support.
Changes:
- Updated tagKey derivation to check for 'mode' first, then 'kind', then 'label'
- Added 'mode' to the onOneOfChange function to track mode changes
- Added 'mode' to the list of keys excluded from enum validation
- Added 'mode' to hiddenArgs to prevent it from being shown in the form
- Added title fields to the history oneOf variants in flowInfers.ts
This allows the AI agent's history field to properly render with toggle buttons
for 'auto' and 'manual' modes.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fixes
* frontend fix
* nit
* cleaning
* cleaning
* better
* reword
* reword
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: centdix <centdix@users.noreply.github.com>
* NULL toggle in InsertRow
* fix long type parsing in postgres
* nits
* graphite catch
* lazy_static
* support for time/timestamp/tz long forms in pg parser
* graphite suggestion
* feat(frontend): Support array of objets
* feat(frontend): add support for LightweightArgInput
* feat(frontend): support objects and arrays of objects in LightweightArgInput
* feat(frontend): wip
* feat(frontend): wip
* feat(frontend): add support for array of resources
* feat(frontend): improve code
* feat(frontend): add support for array of resources in the flow and app editors
* feat(frontend): improve code
* feat(frontend): display the detected resource type
* fix(frontend): Fix PR comments + add warning on the value format
* fix(frontend): improve code
* feat(frontend): Add date format
* feat(frontend): Add date format
* feat(frontend): add missing case
* feat(frontend): add date format
* fix(frontend): added missing tooltip + added default value to the date component
* all
* improve all
* improve all
* fix frontend
* fix input picker nits
* fix(frontend): Fix Menu display
* all
* fix all
* fix all
Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>