@rosthq/cli 0.7.90 → 0.7.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EAiR3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/generator/groups.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAM1D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKhF,CAAC;
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/generator/groups.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAM1D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKhF,CAAC;AAitCF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAmPjD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -43804,6 +43804,29 @@ var frictionBulkResolveOutputSchema = external_exports.object({
|
|
|
43804
43804
|
failed_count: external_exports.number().int().nonnegative(),
|
|
43805
43805
|
total: external_exports.number().int().nonnegative()
|
|
43806
43806
|
}).strict();
|
|
43807
|
+
var runHeartbeatStateSchema = external_exports.enum(["working", "quiet_healthy", "recovered", "stalled"]);
|
|
43808
|
+
var agentRunHeartbeatsInputSchema = external_exports.object({
|
|
43809
|
+
seat_ids: external_exports.array(uuidSchema14).min(1).max(200).optional()
|
|
43810
|
+
}).strict();
|
|
43811
|
+
var runHeartbeatSeatRollupSchema = external_exports.object({
|
|
43812
|
+
seat_id: uuidSchema14,
|
|
43813
|
+
state: runHeartbeatStateSchema,
|
|
43814
|
+
stalled: external_exports.boolean(),
|
|
43815
|
+
run_count: external_exports.number().int().nonnegative(),
|
|
43816
|
+
stalled_run_count: external_exports.number().int().nonnegative(),
|
|
43817
|
+
current_phase: external_exports.string().nullable(),
|
|
43818
|
+
last_progress_at: isoDateTime4.nullable(),
|
|
43819
|
+
expected_next_at: isoDateTime4.nullable(),
|
|
43820
|
+
stall_after_at: isoDateTime4.nullable(),
|
|
43821
|
+
done_count: external_exports.number().int().nonnegative(),
|
|
43822
|
+
in_flight_count: external_exports.number().int().nonnegative(),
|
|
43823
|
+
queued_count: external_exports.number().int().nonnegative(),
|
|
43824
|
+
lease_remaining_ms: external_exports.number().int().nullable(),
|
|
43825
|
+
reasons: external_exports.array(external_exports.string())
|
|
43826
|
+
}).strict();
|
|
43827
|
+
var agentRunHeartbeatsOutputSchema = external_exports.object({
|
|
43828
|
+
seats: external_exports.array(runHeartbeatSeatRollupSchema)
|
|
43829
|
+
}).strict();
|
|
43807
43830
|
|
|
43808
43831
|
// ../../packages/protocol/src/working-files.ts
|
|
43809
43832
|
var WORKING_FILE_MAX_PATH_CHARS = 512;
|
|
@@ -46173,6 +46196,19 @@ var syncBriefCascadeAtRiskSchema = external_exports.object({
|
|
|
46173
46196
|
classification: external_exports.enum(["at_risk", "projected_miss"]),
|
|
46174
46197
|
behind_days: external_exports.number().nullable()
|
|
46175
46198
|
}).strict();
|
|
46199
|
+
var syncBriefRunHeartbeatStalledSeatSchema = external_exports.object({
|
|
46200
|
+
seat_id: uuidSchema17,
|
|
46201
|
+
current_phase: external_exports.string().nullable(),
|
|
46202
|
+
stalled_run_count: external_exports.number().int().nonnegative()
|
|
46203
|
+
}).strict();
|
|
46204
|
+
var syncBriefRunHeartbeatRollupSchema = external_exports.object({
|
|
46205
|
+
total_runs_tracked: external_exports.number().int().nonnegative(),
|
|
46206
|
+
working_seat_count: external_exports.number().int().nonnegative(),
|
|
46207
|
+
quiet_healthy_seat_count: external_exports.number().int().nonnegative(),
|
|
46208
|
+
stalled_seat_count: external_exports.number().int().nonnegative(),
|
|
46209
|
+
recovered_seat_count: external_exports.number().int().nonnegative(),
|
|
46210
|
+
stalled_seats: external_exports.array(syncBriefRunHeartbeatStalledSeatSchema)
|
|
46211
|
+
}).strict();
|
|
46176
46212
|
var syncBriefAgentActivitySchema = external_exports.object({
|
|
46177
46213
|
agent_id: uuidSchema17,
|
|
46178
46214
|
seat_id: uuidSchema17,
|
|
@@ -46223,7 +46259,13 @@ var syncBriefSchema = external_exports.object({
|
|
|
46223
46259
|
item: syncBriefActionItemTrendSchema,
|
|
46224
46260
|
flagged_gaps: external_exports.array(syncBriefGapSchema)
|
|
46225
46261
|
}).strict().optional(),
|
|
46226
|
-
cascade_at_risk: sectionSchema(syncBriefCascadeAtRiskSchema).optional()
|
|
46262
|
+
cascade_at_risk: sectionSchema(syncBriefCascadeAtRiskSchema).optional(),
|
|
46263
|
+
// DER-1721: optional so prior briefs / fixtures without a run-heartbeat
|
|
46264
|
+
// roll-up still validate; populated by buildSyncBriefDocument going forward.
|
|
46265
|
+
run_heartbeat: external_exports.object({
|
|
46266
|
+
item: syncBriefRunHeartbeatRollupSchema,
|
|
46267
|
+
flagged_gaps: external_exports.array(syncBriefGapSchema)
|
|
46268
|
+
}).strict().optional()
|
|
46227
46269
|
}).strict(),
|
|
46228
46270
|
flagged_gaps: external_exports.array(syncBriefGapSchema),
|
|
46229
46271
|
sources: external_exports.array(external_exports.string().min(1))
|
|
@@ -46341,11 +46383,16 @@ var statusEventPayloadSchema = external_exports.object({
|
|
|
46341
46383
|
note: external_exports.string().min(1).optional()
|
|
46342
46384
|
}).strict()).optional()
|
|
46343
46385
|
}).strict();
|
|
46386
|
+
var escalationCategorySchema = external_exports.enum(["safety_refusal"]);
|
|
46344
46387
|
var escalationEventPayloadSchema = external_exports.object({
|
|
46345
46388
|
reason: external_exports.string().min(1),
|
|
46346
46389
|
charter_clause: external_exports.string().min(1),
|
|
46347
46390
|
evidence: evidenceSchema,
|
|
46348
|
-
recommended_action: external_exports.string().min(1).optional()
|
|
46391
|
+
recommended_action: external_exports.string().min(1).optional(),
|
|
46392
|
+
// DER-1848: reason-adjacent category. Optional so every existing escalation event
|
|
46393
|
+
// (and every ordinary held call) validates unchanged; present only when the agent
|
|
46394
|
+
// explicitly escalated with a category (today: a safety refusal).
|
|
46395
|
+
category: escalationCategorySchema.optional()
|
|
46349
46396
|
}).strict();
|
|
46350
46397
|
var issueEventPayloadSchema = external_exports.object({
|
|
46351
46398
|
summary: external_exports.string().min(1),
|
|
@@ -46504,6 +46551,10 @@ var stewardReplayActionSummarySchema = external_exports.object({
|
|
|
46504
46551
|
tool_name: external_exports.string(),
|
|
46505
46552
|
run_id: uuidSchema20
|
|
46506
46553
|
}).strict();
|
|
46554
|
+
var stewardProposedToolCallSchema = external_exports.object({
|
|
46555
|
+
tool_name: external_exports.string(),
|
|
46556
|
+
args_summary: external_exports.unknown()
|
|
46557
|
+
}).strict();
|
|
46507
46558
|
var stewardEscalationSchema = external_exports.object({
|
|
46508
46559
|
id: uuidSchema20,
|
|
46509
46560
|
seat_id: uuidSchema20,
|
|
@@ -46513,11 +46564,19 @@ var stewardEscalationSchema = external_exports.object({
|
|
|
46513
46564
|
steward_seat_name: external_exports.string(),
|
|
46514
46565
|
reason: external_exports.string(),
|
|
46515
46566
|
charter_clause: external_exports.string(),
|
|
46567
|
+
// DER-1848: the first-class escalation category, or null for an ordinary held call.
|
|
46568
|
+
// `safety_refusal` = the agent explicitly declined the task on safety grounds, so
|
|
46569
|
+
// every read surface (command/MCP/web) can render "refused (safety)" distinctly from
|
|
46570
|
+
// a routine held tool call. Sourced from the escalation event payload (no DB column).
|
|
46571
|
+
category: escalationCategorySchema.nullable(),
|
|
46516
46572
|
// DER-1634: secret-scrubbed evidence the agent attached when it escalated (the DB
|
|
46517
46573
|
// scrubs it at write time; read projections re-scrub defensively — invariant #5).
|
|
46518
46574
|
evidence: external_exports.unknown(),
|
|
46519
46575
|
// DER-1634: scrubbed summary of the durable replay action, or null when there is none.
|
|
46520
46576
|
replay_action_summary: stewardReplayActionSummarySchema.nullable(),
|
|
46577
|
+
// DER-1818: the held tool call the steward is approving (present-only convention —
|
|
46578
|
+
// omitted entirely when the escalation has no durable replay action).
|
|
46579
|
+
proposed_tool_call: stewardProposedToolCallSchema.optional(),
|
|
46521
46580
|
recommended_action: external_exports.string().nullable(),
|
|
46522
46581
|
status: escalationStatusSchema,
|
|
46523
46582
|
decided_by: uuidSchema20.nullable(),
|
|
@@ -48242,7 +48301,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48242
48301
|
order: 48,
|
|
48243
48302
|
title: "CLI and MCP installation guide",
|
|
48244
48303
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
48245
|
-
version: "2026-07-16.
|
|
48304
|
+
version: "2026-07-16.6",
|
|
48246
48305
|
public: true,
|
|
48247
48306
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48248
48307
|
stages: ["company_setup", "staffing"],
|
|
@@ -48848,6 +48907,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48848
48907
|
| \`rost_list_agent_fleet\` | \`agent.list_fleet\` | Read every staffed agent seat at once: lane, live state, last real turn, 24h/7d real turns, measurable status, escalations, and 7-day spend. | Tenant | Call with \`{}\`; counts use the same seat-run association as \`agent.list_runs\`, with sandbox dry runs excluded from real turns. |
|
|
48849
48908
|
| \`rost_get_dogfood_fleet_health_digest\` | \`agent.fleet_digest\` | Capture the daily dogfood fleet-health digest: live/idle state, 24h/7d turns, spend, recent failed runs, unresolved errors, failed notifications, and next actions. | Tenant | Call with \`{}\`; optional \`window_hours\` bounds recent failed-run evidence, while \`error_limit\` caps linked evidence per seat. |
|
|
48850
48909
|
| \`rost_system_health\` | \`system.health\` | Read the scoped system-health snapshot across agent runs, unresolved errors, Signals, Cascade setup, work loop, integrations, runners, notifications, and Sync Brief readiness. | Tenant, member, or seat token | Call with \`{}\`; optional \`seat_id\` narrows inside the caller's server-derived scope. |
|
|
48910
|
+
| \`rost_get_run_heartbeats\` | \`agent.run_heartbeats\` | Read the per-seat run-heartbeat roll-up (quiet-but-healthy vs stalled) for long-running agent programs. | Tenant | Call with \`{}\`; optional \`seat_ids\` narrows to specific seats. |
|
|
48851
48911
|
| \`rost_run_agent_now\` | \`agent.run_now\` | Queue an immediate run for a live staffed agent without changing its saved schedule; cloud lane dispatches to the executor and runner lane queues for the paired runner. | Tenant | Call with \`{"seat_id":"<seat-id>"}\`. |
|
|
48852
48912
|
| \`rost_list_agent_runs\` | \`agent.list_runs\` | Read a seat's agent run history (status, lane, model, cost, per-run Skill activation, tool-call, guard-denied, and guard-held counts) plus the seat's run/tool-call rollup including held-action count. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`; pass \`limit\` for a deeper window. |
|
|
48853
48913
|
| \`rost_get_agent_run_diagnostics\` | \`agent.get_run\` | Read one run's diagnostic record: transcript reference, token/cost usage, outcome, linked product-visible run errors, and loaded Skill activation file metadata. File hashes/sizes identify the immutable source package, while model prompt text may be bounded or truncated. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>","run_id":"<run-id>"}\`. |
|
|
@@ -48957,8 +49017,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48957
49017
|
| \`rost_start_sync_run\` | \`sync.run.start\` | Ensure a Sync Brief exists so the meeting can begin. | Tenant | Call with \`{}\`. |
|
|
48958
49018
|
| \`rost_complete_sync_run\` | \`sync.run.complete\` | Record that the Sync meeting completed (idempotent). | Tenant | Call with \`{"sync_brief_id":"<id>"}\`. |
|
|
48959
49019
|
| \`rost_assign_sync_follow_up\` | \`sync.item.assign\` | Create a follow-up task from a Sync agenda item. | Tenant | Call with brief, owner seat, title, description. |
|
|
48960
|
-
| \`rost_list_escalations\` | \`escalation.list\` | List Steward queue escalations (own steward chain for humans, own seat for agents). | Seat or tenant-admin | Call with \`{}\` or \`{"include_decided":true}\`. |
|
|
48961
|
-
| \`rost_get_escalation\` | \`escalation.get\` | Read one escalation's secret-scrubbed evidence, recommendation, decision state,
|
|
49020
|
+
| \`rost_list_escalations\` | \`escalation.list\` | List Steward queue escalations (own steward chain for humans, own seat for agents). Each escalation that holds a replayable tool call also carries \`proposed_tool_call\` (\`{ tool_name, args_summary }\`, secret-scrubbed \u2014 never raw args). | Seat or tenant-admin | Call with \`{}\` or \`{"include_decided":true}\`. |
|
|
49021
|
+
| \`rost_get_escalation\` | \`escalation.get\` | Read one escalation's secret-scrubbed evidence, recommendation, decision state, \`replay_action_summary\` (the held tool + originating run a steward approval would replay \u2014 never the raw args), and \`proposed_tool_call\` (the same held call's \`{ tool_name, args_summary }\` payload, secret-scrubbed, present only when there is one). | Seat or tenant-admin | Call with \`{"id":"<escalation-id>"}\`. Resolve/reject are human-only and not exposed over MCP. |
|
|
48962
49022
|
| \`rost_find_stale_escalations\` | \`escalation.stale_candidates\` | List aged open escalations on the caller's steward chain that still reference a concrete DER issue or PR, with a per-row confidence tier and evidence. Read-only. | Tenant | Call with optional \`stale_after_days\` and \`limit\`. The bulk override (\`escalation.bulk_resolve\`) is human-only and not exposed over MCP. |
|
|
48963
49023
|
| \`rost_check_compass_alignment\` | \`compass.alignment\` | Advisory drift check: scores whether cycle goals still ladder to the active vision and flags orphan/contradictory goals. Read-only \u2014 it never edits the Compass or any goal. | Tenant | Call with \`{}\`. |
|
|
48964
49024
|
| \`rost_team_health_score\` | \`team.health_score\` | Read the single rolled-up 0-100 team-health score (latest month) with its band and label. | Tenant | Call with \`{}\`. |
|
|
@@ -49843,7 +49903,7 @@ Resolving Friction should produce one of four outcomes: a decision, a task, a Ch
|
|
|
49843
49903
|
order: 70,
|
|
49844
49904
|
title: "Steward queue guide",
|
|
49845
49905
|
summary: "How Stewards review escalations, approve agent boundaries, and keep agents accountable.",
|
|
49846
|
-
version: "2026-07-16.
|
|
49906
|
+
version: "2026-07-16.2",
|
|
49847
49907
|
public: true,
|
|
49848
49908
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
49849
49909
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -49888,6 +49948,10 @@ The Steward page itself only lists charter-clause escalations (Queue, Escalation
|
|
|
49888
49948
|
|
|
49889
49949
|
An escalation reaches you the same way no matter how the agent raised it \u2014 in a chat or CLI session, or on its own scheduled cloud run. When the agent stops at a boundary it opens the queue item and sends a notification to the accountable human along the steward chain, preferring a connected Slack channel and falling back to email. If no human occupies the agent's seat, the chain walks up to the next Steward. Delivery is idempotent: a retried run never notifies you twice for the same escalation, and the notification carries only summarized, redacted evidence \u2014 never secret material.
|
|
49890
49950
|
|
|
49951
|
+
## Safety refusals read distinctly
|
|
49952
|
+
|
|
49953
|
+
When an agent declines a task on safety grounds it raises a first-class **safety refusal**, not a silent stall. The escalation carries a \`category\` of \`safety_refusal\` that every read surface (the queue reads, the CLI/MCP \`escalation.list\`/\`escalation.get\` output, and the steward notification) shows differently from an ordinary held tool call \u2014 the notification reads "refused (safety)" and names that the agent declined and is waiting on you. A cloud run that ends because the agent refused is labeled "declined (safety)" in its run summary rather than reported as a plain success, so a refusal is always visible as a refusal.
|
|
49954
|
+
|
|
49891
49955
|
## Where notifications land
|
|
49892
49956
|
|
|
49893
49957
|
Every notification sent to you \u2014 escalations, approval requests, sync briefs, and your daily digest \u2014 also appears in your in-app Inbox, with unread state you can clear. A Slack or email delivery that fails is retried automatically on a bounded schedule; once it can no longer be delivered it stays visible in the Inbox rather than being lost. A once-a-day digest rolls up the day's deliverables, open approvals, and exceptions into a single message, so a quiet day stays quiet and a busy one is summarized in one place.
|
|
@@ -52295,6 +52359,7 @@ var COMMAND_MANIFEST = [
|
|
|
52295
52359
|
{ "id": "agent.pause", "namespace": "agent", "action": "pause", "title": "Pause agent", "description": "Pause a live agent so it stops scheduled and on-demand runs. Reversible with agent.resume.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Pause a live agent so it stops scheduled and on-demand runs; queued work orders are expired and a paused agent refuses to run until resumed. Reversible, unlike agent.decommission." },
|
|
52296
52360
|
{ "id": "agent.resume", "namespace": "agent", "action": "resume", "title": "Resume agent", "description": "Resume a paused agent back to live. Blocks if the steward chain no longer resolves to a human.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Resume a paused agent back to live; the no-orphan guard blocks a resume whose steward chain no longer resolves to a human." },
|
|
52297
52361
|
{ "id": "agent.run_dry_run", "namespace": "agent", "action": "run_dry_run", "title": "Run agent dry run", "description": "Run the sandbox dry run for a draft agent. Durable and idempotent per Charter version; a passed result is reused, never re-run.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Run the sandbox dry run for a draft agent after the manifest is signed; the result is durable and idempotent per Charter version, and a passed run is reused.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "charter_version_id": "0190cccc-cccc-7ccc-8ccc-cccccccccccc" } },
|
|
52362
|
+
{ "id": "agent.run_heartbeats", "namespace": "agent", "action": "run_heartbeats", "title": "Get run heartbeats", "description": "Reads the per-seat run-heartbeat roll-up (quiet-but-healthy vs stalled) for long-running agent programs.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_ids", "flag": "seat-ids", "type": "array", "required": false, "itemType": "string" }], "hasComplexInput": false, "help": "Read the per-seat run-heartbeat roll-up to tell a quiet-but-healthy long-running agent program apart from a stalled one." },
|
|
52298
52363
|
{ "id": "agent.run_now", "namespace": "agent", "action": "run_now", "title": "Run agent now", "description": "Queue and dispatch an immediate work order for a live cloud or runner agent on a seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "task_id", "flag": "task-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Queue and dispatch an immediate live agent run without changing the agent's saved schedule." },
|
|
52299
52364
|
{ "id": "agent.show_markdown", "namespace": "agent", "action": "show_markdown", "title": "Show agent setup as markdown", "description": "Compose a seat's agent setup, steward, model, tools, and Charter into a clean, human-skimmable markdown card for review.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Render a seat's agent setup, model, steward, tools, and Charter as a clean markdown card to show your human a quick review." },
|
|
52300
52365
|
{ "id": "agent.status", "namespace": "agent", "action": "status", "title": "Get agent status", "description": "Return the agent occupancy, lane, schedule, live/offline state, steward chain, dry-run result, and Runner availability for a seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Check an agent's lane, live state, steward chain, dry-run result, and Runner availability before relying on it." },
|
|
@@ -52351,7 +52416,7 @@ var COMMAND_MANIFEST = [
|
|
|
52351
52416
|
{ "id": "escalation.bulk_resolve", "namespace": "escalation", "action": "bulk_resolve", "title": "Bulk resolve escalations", "description": "Override (safely close) a batch of stale open escalations in one human-confirmed action, with a required reason. Each escalation is decided independently (partial success) and writes its own human decision; already-decided, not-routed, or missing ids are skipped. Agents cannot bulk-resolve.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": false, "fields": [{ "name": "escalation_ids", "flag": "escalation-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "reason", "flag": "reason", "type": "string", "required": true }], "hasComplexInput": false, "help": "Override (safely close) a batch of stale open escalations in one human-confirmed action; each records its own human decision and already-decided, not-routed, or missing ids are skipped. Agents cannot bulk-resolve." },
|
|
52352
52417
|
{ "id": "escalation.get", "namespace": "escalation", "action": "get", "title": "Get escalation", "description": "Read a single escalation the caller is allowed to see (own steward chain for humans, own seat for agents).", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Read one escalation's evidence and recommendation before a human resolves or rejects it." },
|
|
52353
52418
|
{ "id": "escalation.list", "namespace": "escalation", "action": "list", "title": "List escalations", "description": "List Steward queue escalations routed to the caller's steward chain (human) or raised by the caller's seat (agent).", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "include_decided", "flag": "include-decided", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "List Steward queue escalations (own chain for humans, own seat for agents) before resolving or routing them." },
|
|
52354
|
-
{ "id": "escalation.raise", "namespace": "escalation", "action": "raise", "title": "Raise escalation", "description": "Emit an escalation event and open a Steward queue item for the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "charter_clause", "flag": "charter-clause", "type": "string", "required": true }, { "name": "recommended_action", "flag": "recommended-action", "type": "string", "required": false }], "hasComplexInput": true, "help": "Raise an escalation to the seat's Steward when a decision exceeds the seat's authority; humans decide." },
|
|
52419
|
+
{ "id": "escalation.raise", "namespace": "escalation", "action": "raise", "title": "Raise escalation", "description": "Emit an escalation event and open a Steward queue item for the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "charter_clause", "flag": "charter-clause", "type": "string", "required": true }, { "name": "recommended_action", "flag": "recommended-action", "type": "string", "required": false }, { "name": "category", "flag": "category", "type": "enum", "required": false, "enumValues": ["safety_refusal"] }], "hasComplexInput": true, "help": "Raise an escalation to the seat's Steward when a decision exceeds the seat's authority; humans decide." },
|
|
52355
52420
|
{ "id": "escalation.reject", "namespace": "escalation", "action": "reject", "title": "Reject escalation", "description": "Override an open escalation so the agent must not proceed. Writes a human decision; agents cannot reject.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "rationale", "flag": "rationale", "type": "string", "required": false }], "hasComplexInput": false, "help": "Reject (override) an escalation so the agent must not proceed; the decision records the human decider. Agents cannot reject." },
|
|
52356
52421
|
{ "id": "escalation.resolve", "namespace": "escalation", "action": "resolve", "title": "Resolve escalation", "description": "Approve an open escalation (or convert it to Friction). Writes a human decision; agents cannot resolve.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "action", "flag": "action", "type": "enum", "required": false, "enumValues": ["approve", "convert_to_issue"] }, { "name": "rationale", "flag": "rationale", "type": "string", "required": false }], "hasComplexInput": false, "help": "Resolve an escalation as a human Steward; the decision records decided_by as the approving human. Agents cannot resolve." },
|
|
52357
52422
|
{ "id": "escalation.stale_candidates", "namespace": "escalation", "action": "stale_candidates", "title": "Find stale escalations", "description": "List open escalations routed to the caller's steward chain that have aged and still reference a concrete DER issue or PR, with a per-row confidence tier and evidence. Read-only \u2014 it never decides anything.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "stale_after_days", "flag": "stale-after-days", "type": "integer", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List aged open escalations in the caller's steward chain that still reference a concrete DER issue or PR \u2014 candidates for a bulk override. Read-only." },
|
|
@@ -53257,6 +53322,9 @@ function renderConfirmationList(output) {
|
|
|
53257
53322
|
return `${field(record2, "id")} ${field(record2, "risk_level")} ${field(record2, "command_id")} ${field(record2, "summary")}`;
|
|
53258
53323
|
}).join("\n");
|
|
53259
53324
|
}
|
|
53325
|
+
function safetyRefusalTag(record2) {
|
|
53326
|
+
return record2.category === "safety_refusal" ? "[safety refusal] " : "";
|
|
53327
|
+
}
|
|
53260
53328
|
function renderEscalationList(output) {
|
|
53261
53329
|
const escalations = asArray(asRecord(output).escalations);
|
|
53262
53330
|
if (escalations.length === 0) {
|
|
@@ -53264,12 +53332,12 @@ function renderEscalationList(output) {
|
|
|
53264
53332
|
}
|
|
53265
53333
|
return escalations.map((escalation) => {
|
|
53266
53334
|
const record2 = asRecord(escalation);
|
|
53267
|
-
return `${field(record2, "id")} ${field(record2, "status")} ${field(record2, "seat_name")}: ${field(record2, "reason")}`;
|
|
53335
|
+
return `${field(record2, "id")} ${field(record2, "status")} ${safetyRefusalTag(record2)}${field(record2, "seat_name")}: ${field(record2, "reason")}`;
|
|
53268
53336
|
}).join("\n");
|
|
53269
53337
|
}
|
|
53270
53338
|
function renderEscalationGet(output) {
|
|
53271
53339
|
const record2 = asRecord(asRecord(output).escalation);
|
|
53272
|
-
return `${field(record2, "id")} ${field(record2, "status")} ${field(record2, "seat_name")}
|
|
53340
|
+
return `${field(record2, "id")} ${field(record2, "status")} ${safetyRefusalTag(record2)}${field(record2, "seat_name")}
|
|
53273
53341
|
reason: ${field(record2, "reason")}
|
|
53274
53342
|
recommended: ${field(record2, "recommended_action")}`;
|
|
53275
53343
|
}
|