Skip to content

App-qualified agent ids - #454

Merged
czpython merged 2 commits into
mainfrom
app-qualified-agent-ids
Sep 6, 2026
Merged

App-qualified agent ids#454
czpython merged 2 commits into
mainfrom
app-qualified-agent-ids

Conversation

@czpython

@czpython czpython commented Sep 6, 2026

Copy link
Copy Markdown
Owner

An agent declared on an App takes <app>.<attribute> as its id: software_factory.file_tickets. This is the rule Workflow.kind already follows. The id is the one durable name, so the registry key, the agent_*: override keys, get_profile, AgentCall.agent, the DBOS step name, and the settings wire carry it with no further change. Two apps can now declare the same attribute name. A standalone agent with an explicit id= keeps it. App code does not change: an author still writes file_tickets = Agent(...) and calls await BugHunter.file_tickets(...).

The id itself is qualified, not the registry key alone, because the profile lookup, the override keys, the timeline, and the settings PATCH body would each need a second name otherwise.

The settings wire carries the id as name and the declared display name, else the attribute name, as label. The pages show the label and key their edits by the id.

Migration d2f7a9c4e816 rewrites the bundled app's override rows to the qualified key and its recorded agent steps in dbos.operation_outputs to the qualified step name, so a retried run replays under the names the code now uses. The database does not record which app declares an agent, and a migration cannot read the app registry, so an override or a recorded step of any other app's agent keeps its flat name. Set the override again in Settings → Apps.

Historic agent_calls.agent values stay as recorded. They are display-only, and the timeline label derives the same word from the flat and the qualified name.

🤖 Generated with Claude Code

@mintlify

mintlify Bot commented Sep 6, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
druks 🟢 Ready View Preview Sep 6, 2026, 12:03 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

An agent declared on an App takes `<app>.<attribute>` as its id, the way a
workflow's kind takes `<app>.<kind>`. The registry key, the override keys,
the profile lookup, the timeline's agent, the step name, and the settings
wire all carry that one name, so two apps can declare the same attribute
name. A standalone agent with an explicit id keeps it.

Migration d2f7a9c4e816 rewrites the bundled apps' override rows to the
qualified key. A row for another app's agent keeps its flat key.
The projection sent the declared display name as `name`, which the
pages use as the settings key. A named agent's model save answered
"Unknown agent" and its effort save landed under a key nothing reads.
`name` is the id; the display name, else the attribute name, is `label`.
@czpython
czpython force-pushed the app-qualified-agent-ids branch from 5229c74 to dd9113f Compare September 6, 2026 14:49
@czpython
czpython enabled auto-merge (squash) September 6, 2026 14:50
@czpython
czpython merged commit a00a4b8 into main Sep 6, 2026
3 checks passed
@czpython
czpython deleted the app-qualified-agent-ids branch September 6, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant