@rosthq/cli 0.7.103 → 0.7.105
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.
- package/dist/index.js +47 -16
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41776,6 +41776,10 @@ var frictionIssueSummarySchema = external_exports.object({
|
|
|
41776
41776
|
raised_by_seat_id: uuidSchema9,
|
|
41777
41777
|
raised_by_seat_name: external_exports.string(),
|
|
41778
41778
|
summary: external_exports.string(),
|
|
41779
|
+
// DER-1978 (S2): OPTIONAL short headline written at creation; null/absent when unset
|
|
41780
|
+
// (surfaces derive a clamped title from `summary`). Optional so existing callers and
|
|
41781
|
+
// legacy null-title rows validate unchanged.
|
|
41782
|
+
title: external_exports.string().nullable().optional(),
|
|
41779
41783
|
severity: external_exports.enum(["low", "med", "high", "critical"]),
|
|
41780
41784
|
impact_score: external_exports.number(),
|
|
41781
41785
|
status: issueStatusSchema,
|
|
@@ -44181,10 +44185,15 @@ var workOrderListOutputSchema = external_exports.object({
|
|
|
44181
44185
|
var workOrderEnqueueInputSchema = external_exports.object({
|
|
44182
44186
|
agent_id: uuid8,
|
|
44183
44187
|
scheduled_for: isoDateTime6.optional(),
|
|
44188
|
+
// DER-1973: cloud-lane only. A runner-lane agent rejects a task_id at enqueue —
|
|
44189
|
+
// a task-linked runner order is structurally unclaimable (the runner-claim SQL
|
|
44190
|
+
// requires task_id is null). Run task-linked runner work as an interactive agent turn.
|
|
44184
44191
|
task_id: uuid8.optional()
|
|
44185
44192
|
}).strict();
|
|
44186
44193
|
var agentRunNowInputSchema = external_exports.object({
|
|
44187
44194
|
seat_id: uuid8,
|
|
44195
|
+
// DER-1973: cloud-lane only. A runner-lane agent rejects a task_id at enqueue
|
|
44196
|
+
// (structurally unclaimable). Run task-linked runner work as an interactive agent turn.
|
|
44188
44197
|
task_id: uuid8.optional()
|
|
44189
44198
|
}).strict();
|
|
44190
44199
|
var agentRunNowOutputSchema = external_exports.object({
|
|
@@ -46383,6 +46392,12 @@ var syncBriefGoalDeltaSchema = external_exports.object({
|
|
|
46383
46392
|
title: external_exports.string().min(1),
|
|
46384
46393
|
status: external_exports.enum(["on", "off", "done", "dropped"]),
|
|
46385
46394
|
status_source: external_exports.string().min(1),
|
|
46395
|
+
// DER-1957 (S1): the goal's own progress reading (null when unmeasured), so the
|
|
46396
|
+
// sync-brief goal-delta row can render the shared goal-status chip with the same
|
|
46397
|
+
// pending-measurement rule Home and Cascade use — an unmeasured `on` goal reads
|
|
46398
|
+
// "Pending measurement", never a false "On track". Nullable + optional so briefs
|
|
46399
|
+
// persisted before this field parse unchanged.
|
|
46400
|
+
progress_pct: external_exports.number().int().min(0).max(100).nullable().optional(),
|
|
46386
46401
|
changed_this_period: external_exports.boolean()
|
|
46387
46402
|
}).strict();
|
|
46388
46403
|
var syncBriefTaskReviewSchema = external_exports.object({
|
|
@@ -46624,6 +46639,12 @@ var escalationRaiseInputSchema = external_exports.object({
|
|
|
46624
46639
|
charter_clause: external_exports.string().min(1),
|
|
46625
46640
|
evidence: evidenceSchema,
|
|
46626
46641
|
recommended_action: external_exports.string().min(1).optional(),
|
|
46642
|
+
// DER-1978 (S2): an OPTIONAL short human-readable title written at creation.
|
|
46643
|
+
// Agents' long narrative lands in `reason` (the body); this ≤90-char title is
|
|
46644
|
+
// what Home's "Needs you" band renders as the one-line summary. Optional so
|
|
46645
|
+
// every existing escalation event validates unchanged; when absent the read
|
|
46646
|
+
// surface derives a clamped title from `reason`.
|
|
46647
|
+
title: external_exports.string().trim().min(1).max(90).optional(),
|
|
46627
46648
|
// DER-1848: reason-adjacent category. Optional so every existing escalation event
|
|
46628
46649
|
// (and every ordinary held call) validates unchanged; present only when the agent
|
|
46629
46650
|
// explicitly escalated with a category (today: a safety refusal).
|
|
@@ -46637,7 +46658,13 @@ var issueEventPayloadSchema = external_exports.object({
|
|
|
46637
46658
|
blocking_goal_id: uuidSchema19.optional(),
|
|
46638
46659
|
broken_measurable_id: uuidSchema19.optional(),
|
|
46639
46660
|
evidence: evidenceSchema,
|
|
46640
|
-
severity: external_exports.enum(["low", "med", "high", "critical"])
|
|
46661
|
+
severity: external_exports.enum(["low", "med", "high", "critical"]),
|
|
46662
|
+
// DER-1978 (S2): an OPTIONAL short human-readable title written at creation.
|
|
46663
|
+
// The agent's long narrative lands in `summary` (the body); this ≤90-char title
|
|
46664
|
+
// is what Home's "Needs you" band renders as the one-line summary. Optional so
|
|
46665
|
+
// every existing issue event validates unchanged; when absent the read surface
|
|
46666
|
+
// derives a clamped title from `summary`.
|
|
46667
|
+
title: external_exports.string().trim().min(1).max(90).optional()
|
|
46641
46668
|
}).strict();
|
|
46642
46669
|
|
|
46643
46670
|
// ../../packages/protocol/src/event-internal-payloads.ts
|
|
@@ -46900,6 +46927,10 @@ var stewardEscalationSchema = external_exports.object({
|
|
|
46900
46927
|
steward_seat_id: uuidSchema22,
|
|
46901
46928
|
steward_seat_name: external_exports.string(),
|
|
46902
46929
|
reason: external_exports.string(),
|
|
46930
|
+
// DER-1978 (S2): OPTIONAL short headline written at creation; null/absent when unset
|
|
46931
|
+
// (surfaces derive a clamped title from `reason`). Optional so existing callers and
|
|
46932
|
+
// legacy null-title rows validate unchanged.
|
|
46933
|
+
title: external_exports.string().nullable().optional(),
|
|
46903
46934
|
charter_clause: external_exports.string(),
|
|
46904
46935
|
// DER-1848: the first-class escalation category, or null for an ordinary held call.
|
|
46905
46936
|
// `safety_refusal` = the agent explicitly declined the task on safety grounds, so
|
|
@@ -48384,7 +48415,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
|
|
|
48384
48415
|
order: 45,
|
|
48385
48416
|
title: "How agents work",
|
|
48386
48417
|
summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
|
|
48387
|
-
version: "2026-07-
|
|
48418
|
+
version: "2026-07-18.1",
|
|
48388
48419
|
public: true,
|
|
48389
48420
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48390
48421
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -48455,7 +48486,7 @@ A seat-scoped MCP token or the CLI runs the hand-shaped protocol. The server sti
|
|
|
48455
48486
|
2. Tasks: \`rost_get_tasks\` / \`{{cli}} task list --seat <seat-id>\`, then \`rost_accept_task\` / \`rost_decline_task\` (with a \`reason\`).
|
|
48456
48487
|
3. Report: \`rost_report_status\` / \`{{cli}} status record --seat <seat-id>\` as work progresses; \`rost_log_work\` to record evidence.
|
|
48457
48488
|
4. Finish: \`rost_complete_task\` / \`{{cli}} task complete --seat <seat-id>\` with evidence.
|
|
48458
|
-
5. Surface problems: \`rost_file_issue\` (Friction) and \`rost_escalate\` when the work exceeds autonomous scope.
|
|
48489
|
+
5. Surface problems: \`rost_file_issue\` (Friction) and \`rost_escalate\` when the work exceeds autonomous scope. Both take an optional short \`title\` (\u226490 chars) for the "Needs you" headline \u2014 put the long narrative in the body (\`summary\` / \`reason\`).
|
|
48459
48490
|
|
|
48460
48491
|
A seat-scoped MCP token already carries the seat, so its tools (\`rost_get_tasks\`, \u2026) need no seat argument. A tenant or owner CLI **session** does not, so pass \`--seat <seat-id>\` on seat-operating wrappers (an owner can target any seat in the tenant; a member only a seat they occupy). See "Seat scope" below.
|
|
48461
48492
|
|
|
@@ -48643,7 +48674,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48643
48674
|
order: 48,
|
|
48644
48675
|
title: "CLI and MCP installation guide",
|
|
48645
48676
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
48646
|
-
version: "2026-07-18.
|
|
48677
|
+
version: "2026-07-18.4",
|
|
48647
48678
|
public: true,
|
|
48648
48679
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48649
48680
|
stages: ["company_setup", "staffing"],
|
|
@@ -49477,8 +49508,8 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
|
|
|
49477
49508
|
| \`rost_decline_task\` | \`task.decline\` | Decline a task with a reason. | Seat | Call with \`task_id\` and \`reason\`. |
|
|
49478
49509
|
| \`rost_report_status\` | \`status.record\` | Write a status event. | Seat | Call with a concise status payload. |
|
|
49479
49510
|
| \`rost_complete_task\` | \`task.complete\` | Complete a task and record evidence. | Seat | Call with \`task_id\` and evidence. |
|
|
49480
|
-
| \`rost_escalate\` | \`escalation.raise\` | Escalate approval-scope or must-escalate work. | Seat | Call with
|
|
49481
|
-
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with
|
|
49511
|
+
| \`rost_escalate\` | \`escalation.raise\` | Escalate approval-scope or must-escalate work. | Seat | Call with reason and requested decision; pass an optional short \`title\` (\u226490 chars) for the "Needs you" headline and keep the long narrative in \`reason\`. |
|
|
49512
|
+
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with \`summary\`, severity, and evidence; pass an optional short \`title\` (\u226490 chars) for the headline and keep the long narrative in \`summary\`. Agent/scheduled producers may pass an optional \`source_key\` for deterministic idempotency \u2014 a repeat filing with the same key returns the existing open issue with \`already_filed:true\` and creates nothing new. |
|
|
49482
49513
|
| \`rost_log_work\` | \`work.log\` | Record a lightweight free-text work breadcrumb for the seat. For structured, per-entity, queryable business activity (a client might ask "which ones?"), use \`rost_record_work\` instead. | Seat | Call with summary and evidence. |
|
|
49483
49514
|
| \`rost_report_a_signal_reading\` | \`signal.report\` | Propose one draft reading for this seat's own agent-sourced measurable. The reading lands unconfirmed for human review. | Seat | Call with \`{"measurable_id":"<id>","value":42,"note":"read off the source","confidence":"high"}\`. |
|
|
49484
49515
|
| \`rost_draft_first_readings_from_a_connected_source\` | \`signal.draft_first_readings\` | Pull this seat's measurable's connected source ONCE (read-only, SSRF-guarded) and land the value as a DRAFT reading for the current period, for a human to confirm. For a measurable that has a source but no confirmed reading yet. Never publishes and never fabricates a value \u2014 a non-numeric or blocked pull drafts nothing. | Seat | Call with \`{"measurable_id":"<id>"}\`. |
|
|
@@ -50171,7 +50202,7 @@ Agents may record readings when the Charter allows it. Agent-reported readings s
|
|
|
50171
50202
|
order: 62,
|
|
50172
50203
|
title: "Friction guide",
|
|
50173
50204
|
summary: "How to capture issues with evidence, rank them, and resolve them without losing ownership.",
|
|
50174
|
-
version: "2026-07-
|
|
50205
|
+
version: "2026-07-18.1",
|
|
50175
50206
|
public: true,
|
|
50176
50207
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50177
50208
|
stages: ["operating_rhythm"],
|
|
@@ -50232,7 +50263,7 @@ The Friction page opens with one computed line \u2014 how many issues are open,
|
|
|
50232
50263
|
|
|
50233
50264
|
Friction, tasks, and escalations are the issue-to-action loop. A seat files, a task carries the work, and an escalation routes a decision a seat cannot make alone.
|
|
50234
50265
|
|
|
50235
|
-
- File and triage: \`{{cli}} friction file ...\` / \`friction.file_issue\` (seat) / \`rost_file_issue
|
|
50266
|
+
- File and triage: \`{{cli}} friction file ...\` / \`friction.file_issue\` (seat) / \`rost_file_issue\`. \`friction.file_issue\` takes an optional short \`title\` (\u226490 chars) for the "Needs you" headline \u2014 keep the long narrative in \`summary\`. List with \`{{cli}} friction list --status open --json\` / \`friction.list\` / \`rost_list_friction_issues\`; move between open and diagnosing with \`friction.update_status\` / \`rost_update_friction_issue_status\`.
|
|
50236
50267
|
- Carry the work as a task: \`task.create\` / \`rost_create_task\` (a commitment between seats). \`task.create\` is \`none\` (no confirmation gate), so an agent can file one directly; an ordinary agent task lands as a **draft** proposal (\`origin: agent_proposal\`) for a target-side human to confirm or decline through \`task.confirm_proposal\` / \`task.decline_proposal\` in \`/approvals\` or the CLI \u2014 not MCP, and not a live offer in the owning seat's accept/decline queue. A bounded Trusted task-create grant may skip that draft card: it creates an **offered** handoff by default, and only creates **in_progress** when both proposing and target seats are live agent seats resolving to the same current accountable human Steward. A seat runs its live queue with \`{{cli}} task list|accept|decline|complete\` (\`task.list\`, \`task.accept\`, \`task.decline\`, \`task.complete\`). Link a task to an issue with \`friction.link_task\` / \`rost_link_task_to_friction_issue\`.
|
|
50237
50268
|
- Route a decision: \`escalation.raise\` (seat) / \`rost_escalate\` sends approval-scope or must-escalate work to the Steward queue. Reads are \`escalation.list\` / \`escalation.get\`. See the steward queue guide for resolution.
|
|
50238
50269
|
|
|
@@ -50255,7 +50286,7 @@ Resolving Friction should produce one of four outcomes: a decision, a task, a Ch
|
|
|
50255
50286
|
order: 70,
|
|
50256
50287
|
title: "Steward queue guide",
|
|
50257
50288
|
summary: "How Stewards review escalations, approve agent boundaries, and keep agents accountable.",
|
|
50258
|
-
version: "2026-07-
|
|
50289
|
+
version: "2026-07-18.1",
|
|
50259
50290
|
public: true,
|
|
50260
50291
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50261
50292
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -50312,7 +50343,7 @@ Every notification sent to you \u2014 escalations, approval requests, sync brief
|
|
|
50312
50343
|
|
|
50313
50344
|
The Steward reads the queue from any surface but decides as a human.
|
|
50314
50345
|
|
|
50315
|
-
- Read: \`{{cli}} escalation list --json\` / \`escalation.list\` / \`rost_list_escalations\` (own steward chain for humans, own seat for agents). Read one with \`{{cli}} escalation get\` / \`escalation.get\` / \`rost_get_escalation\` \u2014 evidence, recommendation, and decision state.
|
|
50346
|
+
- Read: \`{{cli}} escalation list --json\` / \`escalation.list\` / \`rost_list_escalations\` (own steward chain for humans, own seat for agents). Read one with \`{{cli}} escalation get\` / \`escalation.get\` / \`rost_get_escalation\` \u2014 evidence, recommendation, and decision state. An item may carry a short \`title\` (\u226490 chars) the raising agent wrote as the "Needs you" headline; the full narrative stays in \`reason\`.
|
|
50316
50347
|
- Decide: \`{{cli}} escalation resolve\` / \`escalation.resolve\` and \`{{cli}} escalation reject\` / \`escalation.reject\`. \`escalation.resolve\` and \`escalation.reject\` are \`none\` at the confirmation layer, but they are deliberately NOT exposed over MCP \u2014 \`decisions.decided_by\` must be a human, so there is no \`rost_resolve_escalation\` tool. They are kept human-only by that MCP exclusion plus the human-only \`decided_by\`, not by a confirmation gate. The CLI runs them as the authenticated human; an agent session must hand the decision to a person.
|
|
50317
50348
|
- Approve gated requests: when an escalation or Charter change produces a pending confirmation, the human approves with \`confirmation.approve\` (or rejects with \`confirmation.reject\`). Go-live runs through \`agent.go_live\`.
|
|
50318
50349
|
|
|
@@ -50723,7 +50754,7 @@ Every notification should include the seat, cause, evidence, and requested decis
|
|
|
50723
50754
|
order: 75,
|
|
50724
50755
|
title: "Local runner guide",
|
|
50725
50756
|
summary: "How local agent sessions and runner surfaces should operate through {{brand}} without bypassing Charters or audit.",
|
|
50726
|
-
version: "2026-07-
|
|
50757
|
+
version: "2026-07-18.1",
|
|
50727
50758
|
public: true,
|
|
50728
50759
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50729
50760
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -50803,7 +50834,7 @@ A Forge turn should load its context in one order: build context first, then Ski
|
|
|
50803
50834
|
- Inspect: \`{{cli}} runner list --json\` / \`runner.list\` / \`rost_list_runners\` shows heartbeat state plus execution readiness. A runner is execute-ready only when it has a live heartbeat, a detected local Claude or Codex runtime, and recent claim/result evidence or active queue processing. Settings and runner status/list surfaces also project the runner CLI version, sandbox posture, network posture, and reported capability set from heartbeat so operators can see whether the machine is current and still running with the expected guardrails. \`{{cli}} runner status\` / \`runner.status\` / \`rost_runner_status\` reads one runner with the same execution detail, due queue count, claimed/running counts, and recent result timestamps. Both surfaces also project a \`capacity\` view: the runner's active model-account alias, a badge state (\`available\`, \`near_cap\`, \`exhausted\`, or \`unknown\`), a rate-limited-until timestamp when the harness has classified one, and a fresh/stale refreshability flag mirroring heartbeat recency. The badge reads \`unknown\` \u2014 never a fabricated \`available\` \u2014 whenever no capacity observation has been recorded yet or the runner reported a state {{brand}} does not recognize; real 5-hour/weekly usage percentages and reset timestamps are not collected yet, so this view never claims a percentage it does not have. Settings > Connected machines and the Health dashboard's Connectivity tile (a fleet-wide near-cap/at-limit count) surface the same signal.
|
|
50804
50835
|
- Diagnose (DER-949): \`{{cli}} runner diagnose --runner-id <id>\` / \`runner.diagnose\` / \`rost_diagnose_runner\` returns health, capabilities, and repair guidance without exposing secrets. Use when a runner is offline or stale to get actionable next steps.
|
|
50805
50836
|
- Repair steps (DER-949): \`{{cli}} runner repair --runner-id <id> [--issue restart|re_pair|revoke_stale|missing_cli_runtime]\` / \`runner.repair\` / \`rost_repair_runner\` returns focused repair instructions. The optional \`issue\` flag narrows to a specific kind of repair (restart the app, re-pair, revoke a stale runner, or install a missing CLI runtime).
|
|
50806
|
-
- Work orders: \`{{cli}} runner work-orders\` / \`work_order.list\` / \`rost_list_work_orders\`; queue with \`work_order.enqueue\` / \`rost_enqueue_work_order\` for a live scheduled agent, or use \`agent.run_now\` / \`rost_run_agent_now\` when an operator wants the product to queue and dispatch an immediate live run from a seat id; cancel with \`work_order.cancel\` / \`rost_cancel_work_order\`. The operator Settings page mirrors queued, claimed, running, and recent completed runner evidence so online does not imply can execute.
|
|
50837
|
+
- Work orders: \`{{cli}} runner work-orders\` / \`work_order.list\` / \`rost_list_work_orders\`; queue with \`work_order.enqueue\` / \`rost_enqueue_work_order\` for a live scheduled agent, or use \`agent.run_now\` / \`rost_run_agent_now\` when an operator wants the product to queue and dispatch an immediate live run from a seat id; cancel with \`work_order.cancel\` / \`rost_cancel_work_order\`. The operator Settings page mirrors queued, claimed, running, and recent completed runner evidence so online does not imply can execute. \`task_id\` on either enqueue command is cloud-lane only: a runner-lane agent rejects it, because a task-linked runner work order is structurally unclaimable \u2014 run task-linked runner work as an interactive agent turn (see Interactive AICOS runner turns above), not through the scheduled work-order lane.
|
|
50807
50838
|
- Revoke: \`{{cli}} runner revoke\` / \`runner.revoke\` / \`rost_revoke_runner\` so a runner can no longer authenticate.
|
|
50808
50839
|
|
|
50809
50840
|
## Owner-initiated headless pairing
|
|
@@ -52716,7 +52747,7 @@ var COMMAND_MANIFEST = [
|
|
|
52716
52747
|
{ "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." },
|
|
52717
52748
|
{ "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" } },
|
|
52718
52749
|
{ "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." },
|
|
52719
|
-
{ "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." },
|
|
52750
|
+
{ "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. task_id is cloud-lane only; a runner-lane agent rejects it.", "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. task_id is cloud-lane only; a runner-lane agent rejects it (run task-linked runner work as an interactive agent turn)." },
|
|
52720
52751
|
{ "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." },
|
|
52721
52752
|
{ "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." },
|
|
52722
52753
|
{ "id": "agent.trust.create", "namespace": "agent", "action": "trust.create", "title": "Create agent Trusted grant", "description": "Create a bounded Trusted execution grant for a live agent after a human steward/admin signs the current activation receipt digest.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "expected_scope_digest", "flag": "expected-scope-digest", "type": "string", "required": true }, { "name": "budget_cents", "flag": "budget-cents", "type": "integer", "required": true }, { "name": "expires_at", "flag": "expires-at", "type": "string", "required": false }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create a bounded Trusted execution grant only after reviewing the activation receipt digest, budget, and always-human boundary. Human steward/admin only." },
|
|
@@ -52776,13 +52807,13 @@ var COMMAND_MANIFEST = [
|
|
|
52776
52807
|
{ "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." },
|
|
52777
52808
|
{ "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." },
|
|
52778
52809
|
{ "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." },
|
|
52779
|
-
{ "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." },
|
|
52810
|
+
{ "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": "title", "flag": "title", "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." },
|
|
52780
52811
|
{ "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." },
|
|
52781
52812
|
{ "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." },
|
|
52782
52813
|
{ "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." },
|
|
52783
52814
|
{ "id": "friction.assist", "namespace": "friction", "action": "assist", "title": "Assist Friction issue", "description": "Advisory IDS assist for an issue: the most-similar prior resolved issues with their root causes and decisions, a recurring-pattern flag, and recommended options. Read-only \u2014 it never resolves the issue.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Advisory IDS assist: the most-similar prior resolved issues with their root causes and decisions, plus a recurring-pattern flag. Read-only \u2014 it never resolves the issue." },
|
|
52784
52815
|
{ "id": "friction.bulk_resolve", "namespace": "friction", "action": "bulk_resolve", "title": "Bulk resolve friction", "description": "Resolve a batch of stale Friction issues in one human-confirmed action with a required root cause (already-fixed mode \u2014 no follow-up task). Each issue is resolved independently (partial success) and writes its own human decision; already-resolved or missing ids are skipped.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "issue_ids", "flag": "issue-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "root_cause", "flag": "root-cause", "type": "string", "required": true }], "hasComplexInput": false, "help": "Resolve a batch of stale issues in one human-confirmed action with a required root cause (already-fixed mode); each records its own human decision and already-resolved or missing ids are skipped." },
|
|
52785
|
-
{ "id": "friction.file_issue", "namespace": "friction", "action": "file_issue", "title": "File Friction issue", "description": "Emit an issue event and open a Friction issue raised by the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "summary", "flag": "summary", "type": "string", "required": true }, { "name": "blocking_goal_id", "flag": "blocking-goal-id", "type": "string", "required": false }, { "name": "broken_measurable_id", "flag": "broken-measurable-id", "type": "string", "required": false }, { "name": "severity", "flag": "severity", "type": "enum", "required": true, "enumValues": ["low", "med", "high", "critical"] }, { "name": "source_key", "flag": "source-key", "type": "string", "required": false }], "hasComplexInput": true, "help": "File a Friction issue with evidence when a goal or measurable is blocked or broken." },
|
|
52816
|
+
{ "id": "friction.file_issue", "namespace": "friction", "action": "file_issue", "title": "File Friction issue", "description": "Emit an issue event and open a Friction issue raised by the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "summary", "flag": "summary", "type": "string", "required": true }, { "name": "blocking_goal_id", "flag": "blocking-goal-id", "type": "string", "required": false }, { "name": "broken_measurable_id", "flag": "broken-measurable-id", "type": "string", "required": false }, { "name": "severity", "flag": "severity", "type": "enum", "required": true, "enumValues": ["low", "med", "high", "critical"] }, { "name": "title", "flag": "title", "type": "string", "required": false }, { "name": "source_key", "flag": "source-key", "type": "string", "required": false }], "hasComplexInput": true, "help": "File a Friction issue with evidence when a goal or measurable is blocked or broken." },
|
|
52786
52817
|
{ "id": "friction.get", "namespace": "friction", "action": "get", "title": "Get Friction issue", "description": "Get full detail for one Friction issue by id.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Get full detail for one Friction issue by id, including its root cause, action task, and resolution decision when present." },
|
|
52787
52818
|
{ "id": "friction.import", "namespace": "friction", "action": "import", "title": "Import Friction issues from a ninety Issues List", "description": "Bulk-import a ninety Issues List export into Friction. Owners are seat names resolved to seats; each issue is raised by the resolved seat and attributed to the importing human. Idempotent \u2014 re-importing the same export is a no-op, and an existing open issue with the same seat + summary is skipped.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Import a ninety Issues List export into Friction; owners resolve to seats, idempotent by file + seat/summary." },
|
|
52788
52819
|
{ "id": "friction.link_task", "namespace": "friction", "action": "link_task", "title": "Link task to Friction issue", "description": "Attach an existing tenant task as the action task for a non-terminal issue. Both ids must belong to the tenant.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "task_id", "flag": "task-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Attach an existing task as the action task for a non-terminal issue." },
|
|
@@ -52966,7 +52997,7 @@ var COMMAND_MANIFEST = [
|
|
|
52966
52997
|
{ "id": "user.use_tenant", "namespace": "user", "action": "use_tenant", "title": "Select tenant", "description": "Validate and return an active tenant selection for the authenticated CLI user.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "tenant", "flag": "tenant", "type": "string", "required": true }], "hasComplexInput": false, "help": "Set the active tenant explicitly before running onboarding, graph, Charter, or staffing commands." },
|
|
52967
52998
|
{ "id": "user.whoami", "namespace": "user", "action": "whoami", "title": "Who am I", "description": "Return the authenticated CLI user and accessible tenant roles.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": false, "fields": [], "hasComplexInput": false, "help": "Use session identity checks before making tenant-scoped recommendations or setup changes." },
|
|
52968
52999
|
{ "id": "work_order.cancel", "namespace": "work_order", "action": "cancel", "title": "Cancel work order", "description": "Cancel a queued, claimed, or running work order. Already-terminal orders return a stable error.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "work_order_id", "flag": "work-order-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Cancel a queued, claimed, or running work order; this is a human-gated action." },
|
|
52969
|
-
{ "id": "work_order.enqueue", "namespace": "work_order", "action": "enqueue", "title": "Enqueue work order", "description": "Queue a work order for a live scheduled agent. Idempotent per (agent, scheduled time).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "scheduled_for", "flag": "scheduled-for", "type": "string", "required": false }, { "name": "task_id", "flag": "task-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Queue a work order for a live scheduled agent; enqueue is idempotent per agent and scheduled time." },
|
|
53000
|
+
{ "id": "work_order.enqueue", "namespace": "work_order", "action": "enqueue", "title": "Enqueue work order", "description": "Queue a work order for a live scheduled agent. Idempotent per (agent, scheduled time). task_id is cloud-lane only; a runner-lane agent rejects it.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "scheduled_for", "flag": "scheduled-for", "type": "string", "required": false }, { "name": "task_id", "flag": "task-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Queue a work order for a live scheduled agent; enqueue is idempotent per agent and scheduled time. task_id is cloud-lane only; a runner-lane agent rejects it (run task-linked runner work as an interactive agent turn)." },
|
|
52970
53001
|
{ "id": "work_order.list", "namespace": "work_order", "action": "list", "title": "List work orders", "description": "List runner/cloud work orders for the tenant, optionally filtered by status, agent, or runner.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "status", "flag": "status", "type": "enum", "required": false, "enumValues": ["queued", "claimed", "running", "done", "failed", "expired"] }, { "name": "agent_id", "flag": "agent-id", "type": "string", "required": false }, { "name": "runner_id", "flag": "runner-id", "type": "string", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Inspect queued, claimed, running, and expired work orders to understand runner activity." },
|
|
52971
53002
|
{ "id": "work.list", "namespace": "work", "action": "list", "title": "List work records", "description": "List the acting seat's work-ledger records newest-first (keyset-paginated), filterable by verb, object kind/ref, outcome, or run. Superseded records are hidden unless include_superseded is set.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "verb", "flag": "verb", "type": "enum", "required": false, "enumValues": ["created", "updated", "removed", "sent", "received", "contacted", "replied", "offered", "accepted", "rejected", "assessed", "announced", "assigned", "invited", "flagged", "booked", "searched", "filed", "extracted", "escalated"] }, { "name": "outcome", "flag": "outcome", "type": "enum", "required": false, "enumValues": ["success", "warning", "error", "held"] }, { "name": "object_kind", "flag": "object-kind", "type": "string", "required": false }, { "name": "object_external_id", "flag": "object-external-id", "type": "string", "required": false }, { "name": "run_id", "flag": "run-id", "type": "string", "required": false }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "include_superseded", "flag": "include-superseded", "type": "boolean", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }, { "name": "cursor", "flag": "cursor", "type": "string", "required": false }], "hasComplexInput": false, "help": "List the seat's work-ledger records newest-first with keyset pagination, filterable by verb, object, outcome, or run." },
|
|
52972
53003
|
{ "id": "work.log", "namespace": "work", "action": "log", "title": "Log work", "description": "Write a lightweight activity breadcrumb event for the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "note", "flag": "note", "type": "string", "required": true }], "hasComplexInput": false, "help": "Log a lightweight work breadcrumb so the seat's activity is visible without durable side effects." },
|