feat(gui): goal wire domain, client goal state, and docked goal bar
- apiproxy goals RPC domain (get/create/edit/pause/resume/complete/clear) with CAS refs, zod schemas, and fetch client/handler wiring - client runtime session goal state: live goal/change meta triggers a coalesced refetch; mutations fold transport errors into RpcResult - web GoalBar: docked strip above the composer (sparkle, phase label, truncated objective, inline edit, clear; resume when paused); creation stays on the /goal command - GoalBarActions in the ui-conversation contract layer; IconSparkle16 moves to ui-primitives icons
This commit is contained in:
@@ -147,6 +147,11 @@ export function apply(ctx: Context): void {
|
||||
ctx.goals.block(state.agent, ref, { code: outcome.code, message: outcome.message })
|
||||
return
|
||||
case 'disarm':
|
||||
// TODO(disarm-reason): `GoalRoundOutcome.disarm.reason` carries a
|
||||
// specific string (durability-failed/disposed/interrupted) that is
|
||||
// produced in `classifyGoalRound()` but discarded here. Either log it
|
||||
// or remove it from the variant to stop dead payload being carried
|
||||
// through the result type.
|
||||
ctx.goals.disarm(state.agent)
|
||||
return
|
||||
/* v8 ignore next 2 -- GoalRoundOutcome is closed and every member is handled above */
|
||||
|
||||
Reference in New Issue
Block a user