be: assistant prompt + Claude call with structured output #1214
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/agent-hooks#1214
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Part of the Agents Roster AI Assistant feature. The endpoint ticket (#1212) injects a
buildAndCallProposer(history, catalog)function — this ticket implements it. It owns the system prompt, the Claude call, structured-output enforcement, and prompt caching of the catalog block.Scope
System prompt
A single Claude system prompt that:
CatalogSnapshotas a cacheable block (skills, MCPs, tools, model tiers)setup_required), rationaleKeep the prompt revisable — store it as a versioned constant or a file the team can iterate on without redeploying types.
Claude call
catalog_hashProposalEnvelopeJSON Schema from #1210. Either via tool-use (preferred — pass the schema as a tool) or response_format, whichever the SDK supports bestRefinement handling
Failure modes
unavailable: trueDeliverables
buildAndCallProposer(history, catalog): Promise<ProposalEnvelope>implementationparent_proposal_id, hallucinated skill is rejected/correctedNotes for implementer
Lean on the
claude-apiskill in this repo for SDK patterns and prompt caching — it codifies the conventions this service already uses.Depends on: #1210 (types + JSON schema), #1211 (catalog input), #1212 (endpoint that calls this)
Depended on by: nothing — this is a leaf on the BE side
🤖 Auto-assigned to code-lead (heuristic: area:agents → code-lead (architecture-touching)). Reply
/unassignto reroute.🧹 janitor: this ticket has been idle-assigned since 2026-05-15T20:18:38.000Z. Re-dispatching.