@rosthq/cli 0.7.97 → 0.7.99
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,EAuR3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -43382,6 +43382,49 @@ var agentStatusOutputSchema = external_exports.object({
|
|
|
43382
43382
|
runner_available: external_exports.boolean()
|
|
43383
43383
|
}).strict();
|
|
43384
43384
|
var agentListFleetInputSchema = external_exports.object({}).strict();
|
|
43385
|
+
var agentLivenessStateSchema = external_exports.enum([
|
|
43386
|
+
"working",
|
|
43387
|
+
"idle_waiting",
|
|
43388
|
+
"resource_starved",
|
|
43389
|
+
"unresponsive",
|
|
43390
|
+
"failed_to_start",
|
|
43391
|
+
"alive_but_silent"
|
|
43392
|
+
]);
|
|
43393
|
+
var hostResourcePressureSchema = external_exports.enum(["ok", "elevated", "critical"]);
|
|
43394
|
+
var agentLivenessSchema = external_exports.object({
|
|
43395
|
+
state: agentLivenessStateSchema,
|
|
43396
|
+
reasons: external_exports.array(external_exports.string()),
|
|
43397
|
+
resource_pressure: hostResourcePressureSchema.nullable()
|
|
43398
|
+
}).strict();
|
|
43399
|
+
var fleetHostResourceSchema = external_exports.object({
|
|
43400
|
+
reporting: external_exports.boolean(),
|
|
43401
|
+
observed_at: isoDateTime4.nullable(),
|
|
43402
|
+
load_avg_1m: external_exports.number().nullable(),
|
|
43403
|
+
cpu_count: external_exports.number().int().nullable(),
|
|
43404
|
+
memory_total_mb: external_exports.number().nullable(),
|
|
43405
|
+
memory_available_mb: external_exports.number().nullable(),
|
|
43406
|
+
swap_used_mb: external_exports.number().nullable(),
|
|
43407
|
+
swap_total_mb: external_exports.number().nullable(),
|
|
43408
|
+
pressure: hostResourcePressureSchema.nullable()
|
|
43409
|
+
}).strict();
|
|
43410
|
+
var fleetWorkEvidenceSchema = external_exports.object({
|
|
43411
|
+
status: external_exports.enum(["fresh", "stale", "missing", "queued", "blocked"]),
|
|
43412
|
+
label: external_exports.string(),
|
|
43413
|
+
detail: external_exports.string(),
|
|
43414
|
+
href: external_exports.string().nullable(),
|
|
43415
|
+
run_id: uuidSchema14.nullable(),
|
|
43416
|
+
linkable_run: external_exports.boolean(),
|
|
43417
|
+
can_run_now: external_exports.boolean()
|
|
43418
|
+
}).strict();
|
|
43419
|
+
var workProgressStateSchema = external_exports.enum(["not_started", "in_progress", "handed_off", "done", "failed"]);
|
|
43420
|
+
var fleetWorkProgressSchema = external_exports.object({
|
|
43421
|
+
state: workProgressStateSchema,
|
|
43422
|
+
reasons: external_exports.array(external_exports.string()),
|
|
43423
|
+
claimed_state: workProgressStateSchema.nullable(),
|
|
43424
|
+
claim_mismatch: external_exports.boolean(),
|
|
43425
|
+
last_activity_at: isoDateTime4.nullable(),
|
|
43426
|
+
last_durable_activity_at: isoDateTime4.nullable()
|
|
43427
|
+
}).strict();
|
|
43385
43428
|
var fleetOverviewRowSchema = external_exports.object({
|
|
43386
43429
|
seat_id: uuidSchema14,
|
|
43387
43430
|
seat_name: external_exports.string(),
|
|
@@ -43394,7 +43437,18 @@ var fleetOverviewRowSchema = external_exports.object({
|
|
|
43394
43437
|
turns_7d: external_exports.number().int().nonnegative(),
|
|
43395
43438
|
top_measurable_status: external_exports.enum(["on", "off", "pending", "none"]),
|
|
43396
43439
|
open_escalations: external_exports.number().int().nonnegative(),
|
|
43397
|
-
spend_usd: external_exports.string()
|
|
43440
|
+
spend_usd: external_exports.string(),
|
|
43441
|
+
// DER-1905: "idle" added — cadence-aware grading now distinguishes an
|
|
43442
|
+
// on-demand agent with nothing pending (idle, neutral) from a scheduled
|
|
43443
|
+
// agent that missed its cron (stale, alarming).
|
|
43444
|
+
health_status: external_exports.enum(["needs_review", "stale", "idle", "setup_gap", "awaiting_data", "awaiting_data_overdue", "healthy"]),
|
|
43445
|
+
health_reasons: external_exports.array(external_exports.string()),
|
|
43446
|
+
work_evidence: fleetWorkEvidenceSchema,
|
|
43447
|
+
liveness: agentLivenessSchema,
|
|
43448
|
+
// runner-lane host-resource meter; null for cloud/mcp_session lanes.
|
|
43449
|
+
host_resource: fleetHostResourceSchema.nullable(),
|
|
43450
|
+
work_progress: fleetWorkProgressSchema,
|
|
43451
|
+
work_progress_conflict: external_exports.boolean()
|
|
43398
43452
|
}).strict();
|
|
43399
43453
|
var agentListFleetOutputSchema = external_exports.object({
|
|
43400
43454
|
agents: external_exports.array(fleetOverviewRowSchema)
|
|
@@ -43452,12 +43506,8 @@ var fleetDigestAgentSchema = fleetOverviewRowSchema.extend({
|
|
|
43452
43506
|
spend_7d_usd: external_exports.string(),
|
|
43453
43507
|
spend_30d_usd: external_exports.string(),
|
|
43454
43508
|
cost_drift_percent: external_exports.number().int().nullable(),
|
|
43455
|
-
// DER-
|
|
43456
|
-
//
|
|
43457
|
-
// agent that missed its cron (stale, alarming). Purely additive to this
|
|
43458
|
-
// enum; no other field on this schema changed.
|
|
43459
|
-
health_status: external_exports.enum(["needs_review", "stale", "idle", "setup_gap", "awaiting_data", "awaiting_data_overdue", "healthy"]),
|
|
43460
|
-
health_reasons: external_exports.array(external_exports.string()),
|
|
43509
|
+
// DER-1895: health_status/health_reasons now live on the base
|
|
43510
|
+
// fleetOverviewRowSchema above (purely additive there too) — not redefined here.
|
|
43461
43511
|
recent_failed_runs: external_exports.array(fleetDigestRunSchema),
|
|
43462
43512
|
unresolved_errors: external_exports.array(fleetDigestErrorSchema),
|
|
43463
43513
|
notification_errors: external_exports.array(fleetDigestNotificationErrorSchema),
|
|
@@ -43586,7 +43636,6 @@ var agentWatchRunInputSchema = external_exports.object({
|
|
|
43586
43636
|
seat_id: uuidSchema14,
|
|
43587
43637
|
run_id: uuidSchema14
|
|
43588
43638
|
}).strict();
|
|
43589
|
-
var workProgressStateSchema = external_exports.enum(["not_started", "in_progress", "handed_off", "done", "failed"]);
|
|
43590
43639
|
var runWatchCurrentStateSchema = external_exports.object({
|
|
43591
43640
|
state: workProgressStateSchema,
|
|
43592
43641
|
reasons: external_exports.array(external_exports.string()),
|
|
@@ -44731,7 +44780,15 @@ var brokerProviderSchema = external_exports.string().trim().min(1).max(100).refi
|
|
|
44731
44780
|
message: "provider must be a label, never raw secret material"
|
|
44732
44781
|
});
|
|
44733
44782
|
var brokerAllowedHostSchema = external_exports.string().trim().min(1).max(255).regex(/^[a-zA-Z0-9.-]+$/, "allowed_host must be a bare hostname (letters, digits, dots, hyphens) \u2014 no scheme, port, or path");
|
|
44734
|
-
var brokerAllowedPathPrefixSchema = external_exports.string().min(1).max(512).refine((value) => value.startsWith("/"), { message: "allowed_path_prefix must start with /" }).refine((value) => !value.includes("//"), { message: "allowed_path_prefix must not contain //" }).refine((value) => !value.includes("\\"), { message: "allowed_path_prefix must not contain a backslash" }).refine((value) => !value.includes("://"), { message: "allowed_path_prefix must not contain a scheme" }).refine((value) => !value.includes("?") && !value.includes("#"), { message: "allowed_path_prefix must not contain a query or fragment" }).refine((value) => !value.includes(".."), { message: "allowed_path_prefix must not contain .." }).refine((value) =>
|
|
44783
|
+
var brokerAllowedPathPrefixSchema = external_exports.string().min(1).max(512).refine((value) => value.startsWith("/"), { message: "allowed_path_prefix must start with /" }).refine((value) => !value.includes("//"), { message: "allowed_path_prefix must not contain //" }).refine((value) => !value.includes("\\"), { message: "allowed_path_prefix must not contain a backslash" }).refine((value) => !value.includes("://"), { message: "allowed_path_prefix must not contain a scheme" }).refine((value) => !value.includes("?") && !value.includes("#"), { message: "allowed_path_prefix must not contain a query or fragment" }).refine((value) => !value.includes(".."), { message: "allowed_path_prefix must not contain .." }).refine((value) => {
|
|
44784
|
+
let decoded;
|
|
44785
|
+
try {
|
|
44786
|
+
decoded = decodeURIComponent(value);
|
|
44787
|
+
} catch {
|
|
44788
|
+
return false;
|
|
44789
|
+
}
|
|
44790
|
+
return !decoded.includes("..");
|
|
44791
|
+
}, { message: "allowed_path_prefix must not contain encoded path traversal" }).refine((value) => !/[\s\x00-\x1f]/.test(value), { message: "allowed_path_prefix must not contain whitespace or control characters" });
|
|
44735
44792
|
var brokerHttpMethodSchema = external_exports.enum(["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]);
|
|
44736
44793
|
var READ_SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD", "OPTIONS"]);
|
|
44737
44794
|
var brokerScopeTierSchema = external_exports.enum(["read", "write"]);
|
|
@@ -44766,6 +44823,9 @@ var secretGrantRequestInputSchema = external_exports.object({
|
|
|
44766
44823
|
var secretGrantRequestOutputSchema = external_exports.object({
|
|
44767
44824
|
requested: external_exports.literal(true),
|
|
44768
44825
|
event_id: uuid10,
|
|
44826
|
+
// DER-1888: the durable, resolvable agent_grant_interventions handle this
|
|
44827
|
+
// request opened (blocker_kind 'vault_credential') — the human's next hop.
|
|
44828
|
+
intervention_id: uuid10,
|
|
44769
44829
|
seat_id: uuid10,
|
|
44770
44830
|
grant_key: external_exports.string(),
|
|
44771
44831
|
scope_tier: brokerScopeTierSchema
|
|
@@ -46682,6 +46742,17 @@ var deliverableAcceptOutputSchema = external_exports.object({
|
|
|
46682
46742
|
accepted_at: external_exports.string(),
|
|
46683
46743
|
impact_value_usd: external_exports.number().nonnegative()
|
|
46684
46744
|
}).strict();
|
|
46745
|
+
var deliverableRejectInputSchema = external_exports.object({
|
|
46746
|
+
deliverable_id: external_exports.string().uuid(),
|
|
46747
|
+
reason: external_exports.string().max(500).optional()
|
|
46748
|
+
}).strict();
|
|
46749
|
+
var deliverableRejectOutputSchema = external_exports.object({
|
|
46750
|
+
deliverable_id: external_exports.string().uuid(),
|
|
46751
|
+
acceptance_status: external_exports.literal("rejected"),
|
|
46752
|
+
rejected_by: external_exports.string().uuid(),
|
|
46753
|
+
rejected_at: external_exports.string(),
|
|
46754
|
+
reason: external_exports.string().nullable()
|
|
46755
|
+
}).strict();
|
|
46685
46756
|
|
|
46686
46757
|
// ../../packages/protocol/src/steward.ts
|
|
46687
46758
|
var uuidSchema20 = external_exports.string().uuid();
|
|
@@ -47026,6 +47097,11 @@ var agentGrantInterventionDecideOutputSchema = external_exports.object({
|
|
|
47026
47097
|
// True when the human chose the permanent option — the surface must route to a
|
|
47027
47098
|
// Charter re-sign; no authority was widened by this call (invariant #10).
|
|
47028
47099
|
requires_charter_resign: external_exports.boolean(),
|
|
47100
|
+
// DER-1888: true when the blocked grant is a vault_credential ask — a decide
|
|
47101
|
+
// grant does NOT clear it (it holds no vault_ref and would false-clear a secrets
|
|
47102
|
+
// gate, invariant #5/#7); the surface must route the human to secret_grant.grant.
|
|
47103
|
+
// No authority was granted here; the record stays open.
|
|
47104
|
+
requires_secret_grant: external_exports.boolean(),
|
|
47029
47105
|
// True when authority committed but the continuation enqueue did not complete —
|
|
47030
47106
|
// the human can retry ONLY the enqueue via `resume` (never re-grant).
|
|
47031
47107
|
enqueue_failed: external_exports.boolean()
|
|
@@ -48445,7 +48521,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48445
48521
|
order: 48,
|
|
48446
48522
|
title: "CLI and MCP installation guide",
|
|
48447
48523
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
48448
|
-
version: "2026-07-
|
|
48524
|
+
version: "2026-07-18.1",
|
|
48449
48525
|
public: true,
|
|
48450
48526
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48451
48527
|
stages: ["company_setup", "staffing"],
|
|
@@ -48512,6 +48588,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48512
48588
|
"deliverable.create",
|
|
48513
48589
|
"deliverable.attach",
|
|
48514
48590
|
"deliverable.accept",
|
|
48591
|
+
"deliverable.reject",
|
|
48515
48592
|
"usage.report",
|
|
48516
48593
|
"usage.snapshot",
|
|
48517
48594
|
"error_log.list",
|
|
@@ -49048,7 +49125,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
49048
49125
|
| \`rost_get_current_compass\` | \`compass.get_current\` | Read the active and draft Compass versions and source documents. | Tenant | Call with \`{}\`. |
|
|
49049
49126
|
| \`rost_list_compass_gaps\` | \`compass.list_gaps\` | List unanswered and answered Compass context gaps. | Tenant | Call with \`{}\` before answering gaps. |
|
|
49050
49127
|
| \`rost_get_agent_status\` | \`agent.status\` | Read agent lane, live state, steward chain, dry-run result, Runner availability. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`. |
|
|
49051
|
-
| \`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. |
|
|
49128
|
+
| \`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, plus the liveness/health/work-progress axes the web fleet page renders (liveness state, health status, work evidence, host-resource pressure). | Tenant | Call with \`{}\`; counts use the same seat-run association as \`agent.list_runs\`, with sandbox dry runs excluded from real turns. |
|
|
49052
49129
|
| \`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. |
|
|
49053
49130
|
| \`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. |
|
|
49054
49131
|
| \`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. |
|
|
@@ -49060,6 +49137,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
49060
49137
|
| \`rost_list_agent_deliverables\` | \`deliverable.list\` | List durable agent deliverables for a seat, including explicit outputs and successful-run summaries. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`. |
|
|
49061
49138
|
| \`rost_get_agent_deliverable\` | \`deliverable.get\` | Read one durable agent deliverable by id for a seat. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>","deliverable_id":"<id>"}\`. |
|
|
49062
49139
|
| \`rost_accept_deliverable_value\` | \`deliverable.accept\` | Record a human-confirmed accepted value (USD) on a deliverable; owner-only and human-gated. Humans decide \u2014 agents cannot self-accept. Re-accepting records a correction as a new event. | Tenant-admin | Call with \`{"deliverable_id":"<id>","impact_value_usd":<number>}\`; expect human confirmation. |
|
|
49140
|
+
| \`rost_reject_deliverable_value\` | \`deliverable.reject\` | Record a human-confirmed rejection on a deliverable; owner-only and human-gated. Humans decide \u2014 agents cannot self-reject. Re-rejecting records a correction as a new event. | Tenant-admin | Call with \`{"deliverable_id":"<id>","reason":"<why>"}\`; expect human confirmation. |
|
|
49063
49141
|
| \`rost_ai_workforce_roi_report\` | \`usage.report\` | Read the AI-workforce ROI report \u2014 per-period agent turns, token/run cost, human-accepted value, exceptions, and approvals \u2014 from immutable usage snapshots. | Tenant | Call with \`{}\` or \`{"limit":<n>}\`. |
|
|
49064
49142
|
| \`rost_capture_usage_period_snapshot\` | \`usage.snapshot\` | Freeze the current (or a given) period's usage and accepted-value totals into an immutable snapshot; insert-only and idempotent. | Tenant | Call with \`{}\` or \`{"period":"YYYY-MM-DD"}\`. |
|
|
49065
49143
|
| \`rost_list_agent_templates\` | \`agent_template.list\` | List stock agent templates and metadata. | Tenant | Call with \`{}\`. |
|
|
@@ -49183,7 +49261,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
49183
49261
|
| \`rost_expire_agent_trusted_grants\` | \`agent.trust.expire\` | Mark overdue active Trusted grants expired and append audit events. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>"}\`. |
|
|
49184
49262
|
| \`rost_supersede_agent_trusted_grant\` | \`agent.trust.supersede\` | Replace the active Trusted grant with a fresh digest and budget. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>","expected_scope_digest":"sha256:...","budget_cents":2500}\`. |
|
|
49185
49263
|
| \`rost_list_blocked_awaiting_grant_interventions\` | \`agent_grant_intervention.list\` | List durable blocked-awaiting-grant agent interventions with their missing grant, blocker kind, checkpoint, and decision state. Returns secret-scrubbed metadata only; a seat-scoped caller is clamped to its own seat. Pass \`include_decided\` to also return terminal (declined/resumed/expired) records. | Seat or tenant-admin | Call with \`{}\` (or \`{"seat_id":"<seat-id>","include_decided":true}\`). |
|
|
49186
|
-
| \`rost_decide_a_blocked_agent_grant\` | \`agent_grant_intervention.decide\` | Grant (one-time, exact-action) or decline a blocked agent intervention. A grant writes a human decision and enqueues the linked continuation; the \`permanent\` grant kind never auto-widens \u2014 it returns \`requires_charter_resign\` so the surface routes the human to a Charter re-sign. A supplied \`action_digest\` must byte-match the record's or the grant expires instead of replaying a stale action. Human steward/admin only and human-gated. | Tenant | Call with \`{"intervention_id":"<intervention-id>","action":"grant","grant_kind":"allow_once","action_digest":"sha256:..."}\`; non-interactive callers receive a confirmation handoff. |
|
|
49264
|
+
| \`rost_decide_a_blocked_agent_grant\` | \`agent_grant_intervention.decide\` | Grant (one-time, exact-action) or decline a blocked agent intervention. A grant writes a human decision and enqueues the linked continuation; the \`permanent\` grant kind never auto-widens \u2014 it returns \`requires_charter_resign\` so the surface routes the human to a Charter re-sign. A grant on a \`vault_credential\` blocker returns \`requires_secret_grant\` (a decide holds no vault ref and cannot mint the secret) so the surface routes the human to \`secret_grant.grant\` instead of clearing the block. A supplied \`action_digest\` must byte-match the record's or the grant expires instead of replaying a stale action. Human steward/admin only and human-gated. | Tenant | Call with \`{"intervention_id":"<intervention-id>","action":"grant","grant_kind":"allow_once","action_digest":"sha256:..."}\`; non-interactive callers receive a confirmation handoff. |
|
|
49187
49265
|
| \`rost_resume_a_granted_agent_intervention\` | \`agent_grant_intervention.resume\` | Retry ONLY the continuation enqueue for an already-granted blocked intervention whose enqueue did not complete. Never re-grants authority (the one-time grant is already committed). Human steward/admin only. | Tenant | Call with \`{"intervention_id":"<intervention-id>"}\`. |
|
|
49188
49266
|
| \`rost_suggest_setup_capability_grants\` | \`agent_setup.capability_suggestions\` | Suggest deterministic minimum capability grants from the current setup/template and tenant grant availability. | Tenant | Call with \`{"seat_id":"<seat-id>"}\` or \`{"setup_id":"<agent-id>"}\`; no model call and no mutation. |
|
|
49189
49267
|
| \`rost_list_skills\` | \`skill.list\` | List tenant Skills with application descriptors, dependency metadata, source status, latest version, and assigned Seat count. Seat-scoped reads are available through \`rost://skills\`. | Tenant-admin | Call with \`{}\` or \`{"query":"invoice"}\`. |
|
|
@@ -49285,7 +49363,7 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
|
|
|
49285
49363
|
| \`rost_list_work_records\` | \`work.list\` | List the seat's work-ledger records newest-first (keyset-paginated), filterable by verb, object kind/ref, outcome, or run. | Seat | Call with \`{"verb":"contacted","object_kind":"supplier","limit":50}\`. |
|
|
49286
49364
|
| \`rost_request_a_forge_secret_grant\` | \`software_factory.secret.request\` | Request access to a project secret by key. It creates a durable credential request and approval Task, never accepts a secret value, and does not grant access by itself. | Seat | Call with \`{"software_project_id":"<project-id>","environment":"preview","seat_id":"<seat-id>","action":"test.run","key_name":"OPENAI_API_KEY"}\`. |
|
|
49287
49365
|
| \`rost_verify_forge_secret_broker_access\` | \`software_factory.secret.use\` | Verify broker authorization for a Forge secret without opening the vault. Missing grants create or reuse a credential request + approval Task; allowed grants return a redacted authorization summary only. Runtime vault use happens runner-side. | Seat | Call with \`{"software_project_id":"<project-id>","environment":"preview","seat_id":"<seat-id>","action":"test.run","key_name":"OPENAI_API_KEY","operation":"test_execution"}\`. |
|
|
49288
|
-
| \`rost_request_a_brokered_secret_grant\` | \`secret_grant.request\` | A seat agent requests a scoped brokered-secret grant (for secret.broker / baserow.*) by naming the host, path prefix, methods, and scope it needs. Draft-and-confirm: no secret and no vault ref
|
|
49366
|
+
| \`rost_request_a_brokered_secret_grant\` | \`secret_grant.request\` | A seat agent requests a scoped brokered-secret grant (for secret.broker / baserow.*) by naming the host, path prefix, methods, and scope it needs. Draft-and-confirm: no secret and no vault ref. It records a durable blocked-awaiting-grant intervention (blocker_kind vault_credential) that surfaces on the Home "Needs you" band and the blocked seat's page, and returns both an event id and an intervention_id (the human's resolvable handle). A human grants via secret_grant.grant, which closes the intervention. | Seat | Call with {"seat_id":"<seat-id>","grant_key":"baserow","provider":"baserow","allowed_host":"baserow.example.com","allowed_path_prefix":"/api/database/rows/","allowed_methods":["GET"],"scope_tier":"read"}. |
|
|
49289
49367
|
| \`rost_list_brokered_secret_grants\` | \`secret_grant.list\` | List the seat's own brokered secret grants. Returns egress allowlist metadata only (host, path prefix, methods, scope, status), never the vault ref or any secret. | Seat | Call with {} (an agent is server-pinned to its own seat). |
|
|
49290
49368
|
| \`rost_record_forge_conformance_findings\` | \`software_factory.conformance.record_findings\` | A Forge review seat (plan conformance, security, or QA) records structured findings as reviewer evidence. Set \`changeset_id\` on a finding that targets a specific changeset. Open findings route the request back to implementation; accepting a gap remains a separate human gate. Requires the seat's signed manifest grant. | Seat | Call with \`{"build_request_id":"<request-id>","findings":[{"severity":"major","category":"scope_gap","summary":"Missing migration verification","changeset_id":"<changeset-id>"}]}\`. |
|
|
49291
49369
|
| \`rost_resolve_forge_conformance_finding\` | \`software_factory.conformance.resolve_finding\` | A Forge review seat marks a prior open finding resolved after re-reviewing the changeset and verifying it is fixed (reviewer verification, not human gap-acceptance). A resolved finding stops routing the request back to implementation, so the recycle loop converges. Requires the seat's signed manifest grant. | Seat | Call with \`{"build_request_id":"<request-id>","finding_ids":["<finding-id>"]}\`. |
|
|
@@ -50134,7 +50212,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
50134
50212
|
order: 71,
|
|
50135
50213
|
title: "Confirmations and human gates guide",
|
|
50136
50214
|
summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
|
|
50137
|
-
version: "2026-07-17.
|
|
50215
|
+
version: "2026-07-17.2",
|
|
50138
50216
|
public: true,
|
|
50139
50217
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50140
50218
|
stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
@@ -50192,7 +50270,7 @@ A confirmation that expires before a human acts on it is dead \u2014 it can no l
|
|
|
50192
50270
|
|
|
50193
50271
|
## The rule for agents
|
|
50194
50272
|
|
|
50195
|
-
An agent never approves or rejects its own request. \`decisions.decided_by\` is always a human. The steward decision commands (\`escalation.resolve\`, \`escalation.reject\`) and proposal decision commands (\`task.confirm_proposal\`, \`task.decline_proposal\`) are not exposed over MCP. When an agent hits a gate, it prepares the evidence and the recommended action, returns the approve link, and waits for a human. Draft task proposals follow the same rule: the agent can propose the commitment, but a target-side human confirms or declines it unless a bounded Trusted grant applies.
|
|
50273
|
+
An agent never approves or rejects its own request. \`decisions.decided_by\` is always a human. A rejection is a decision too: rejecting any human-gated confirmation writes its own \`decisions\` row (\`decided_by\` = the rejecting human, referencing the confirmation, the command id, and its redacted argument summary), so a human's "no" is recorded in the durable audit trail \u2014 the same standing an approval leaves, not just a status flip on the pending card. Dismissing an expired card is the sole exception (queue hygiene, not a decision). The steward decision commands (\`escalation.resolve\`, \`escalation.reject\`) and proposal decision commands (\`task.confirm_proposal\`, \`task.decline_proposal\`) are not exposed over MCP. When an agent hits a gate, it prepares the evidence and the recommended action, returns the approve link, and waits for a human. Draft task proposals follow the same rule: the agent can propose the commitment, but a target-side human confirms or declines it unless a bounded Trusted grant applies.
|
|
50196
50274
|
|
|
50197
50275
|
## When to stop
|
|
50198
50276
|
|
|
@@ -52504,7 +52582,7 @@ var COMMAND_MANIFEST = [
|
|
|
52504
52582
|
{ "id": "agent.get_run", "namespace": "agent", "action": "get_run", "title": "Get agent run diagnostics", "description": "Return one seat run's diagnostic record: run status, transcript reference, token/cost usage, outcome, and linked product-visible run errors.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "run_id", "flag": "run-id", "type": "string", "required": true }, { "name": "transcript", "flag": "transcript", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Read one run's diagnostic record, transcript reference, token/cost usage, outcome, and linked product-visible errors." },
|
|
52505
52583
|
{ "id": "agent.go_live", "namespace": "agent", "action": "go_live", "title": "Go live", "description": "Promote a dry-run agent seat to live after the human approval gate.", "requiredScope": "seat", "confirmation": "human_required", "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": "Move an agent live only after dry-run evidence, signed permissions, and a human Steward chain are clear.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "charter_version_id": "0190cccc-cccc-7ccc-8ccc-cccccccccccc" } },
|
|
52506
52584
|
{ "id": "agent.import_definition", "namespace": "agent", "action": "import_definition", "title": "Import agent definition", "description": "Import a versioned ROST agent definition into a canonical draft Seat and setup state without credentials, placement identifiers, or go-live side effects.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "definition_json", "flag": "definition-json", "type": "string", "required": true }, { "name": "idempotency_key", "flag": "idempotency-key", "type": "string", "required": false }], "hasComplexInput": false, "help": "Import a strict, versioned ROST agent definition into a canonical draft Seat/setup. The file cannot carry credentials or tenant-local placement ids; tools remain proposal-only until reviewed through setup." },
|
|
52507
|
-
{ "id": "agent.list_fleet", "namespace": "agent", "action": "list_fleet", "title": "List agent fleet", "description": "Return every agent-occupied seat with lane, live state, last real turn, recent turn counts, top measurable status, open escalations,
|
|
52585
|
+
{ "id": "agent.list_fleet", "namespace": "agent", "action": "list_fleet", "title": "List agent fleet", "description": "Return every agent-occupied seat with lane, live state, last real turn, recent turn counts, top measurable status, open escalations, 7-day real-run spend, and the honest liveness/health/work-progress axes the web fleet page renders (liveness, health status, work evidence, work progress, host-resource pressure).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read every agent-occupied seat at once: lane, live state, last real turn, 24h/7d turns, measurable status, escalations, and spend." },
|
|
52508
52586
|
{ "id": "agent.list_runs", "namespace": "agent", "action": "list_runs", "title": "List agent runs", "description": "Return a seat's agent run history (status, lane, model, cost, per-run tool-call, guard-denied, and guard-held counts) plus the seat's run/tool-call rollup with held-action count.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Audit a seat's agent run history with per-run tool-call, guard-denied, and guard-held counts (the Trust Card)." },
|
|
52509
52587
|
{ "id": "agent.list_tool_calls", "namespace": "agent", "action": "list_tool_calls", "title": "List agent tool calls", "description": "Return a seat's tool-call ledger (tool name, guard result, manifest clause, outcome) with the held-action count as the hero metric. Pass held_only to return only guard-held calls. Never returns argument summaries or secret material.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }, { "name": "held_only", "flag": "held-only", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Audit a seat's tool-call ledger with each call's guard result; held actions are the hero metric." },
|
|
52510
52588
|
{ "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." },
|
|
@@ -52562,6 +52640,7 @@ var COMMAND_MANIFEST = [
|
|
|
52562
52640
|
{ "id": "deliverable.create", "namespace": "deliverable", "action": "create", "title": "Create agent deliverable", "description": "Create an agent deliverable for the acting seat. The deliverable is scrubbed for secrets before storage.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "kind", "flag": "kind", "type": "enum", "required": false, "enumValues": ["brief", "work_evidence", "artifact", "report", "other"] }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "summary", "flag": "summary", "type": "string", "required": false }, { "name": "content", "flag": "content", "type": "string", "required": false }, { "name": "delivered_at", "flag": "delivered-at", "type": "string", "required": false }], "hasComplexInput": true, "help": "Create a scrubbed durable work output for the acting seat without making a durable company decision." },
|
|
52563
52641
|
{ "id": "deliverable.get", "namespace": "deliverable", "action": "get", "title": "Get agent deliverable", "description": "Return one agent deliverable by id for a seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Read one durable agent deliverable by id after checking seat-scoped access." },
|
|
52564
52642
|
{ "id": "deliverable.list", "namespace": "deliverable", "action": "list", "title": "List agent deliverables", "description": "Return agent deliverables for a seat, including derived entries from succeeded runs with outcome summaries.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "List durable agent deliverables for a seat, including explicit outputs and successful-run summaries." },
|
|
52643
|
+
{ "id": "deliverable.reject", "namespace": "deliverable", "action": "reject", "title": "Reject deliverable value", "description": "Record a human-confirmed rejection on a deliverable. Humans decide; agents cannot self-reject. Re-rejecting records a correction as a new event; prior events are never mutated.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "deliverable_id", "flag": "deliverable-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Record a human-confirmed rejection on a deliverable; owner-only and human-gated. Humans decide \u2014 agents cannot self-reject. Re-rejecting records a correction as a new event." },
|
|
52565
52644
|
{ "id": "error_log.bulk_resolve", "namespace": "error_log", "action": "bulk_resolve", "title": "Bulk resolve error logs", "description": "Acknowledge or resolve a batch of stale error logs in one human-confirmed action, with a required reason. Each error log is resolved independently (partial success) and writes its own resolution event; already-resolved or missing ids are skipped.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "error_log_ids", "flag": "error-log-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "disposition", "flag": "disposition", "type": "enum", "required": false, "enumValues": ["acknowledged", "resolved"] }], "hasComplexInput": false, "help": "Acknowledge or resolve a batch of stale error logs in one human-confirmed action with a required reason; each is resolved independently (partial success) and already-resolved or missing ids are skipped." },
|
|
52566
52645
|
{ "id": "error_log.list", "namespace": "error_log", "action": "list", "title": "List error logs", "description": "List tenant error logs with optional filtering by seat, source, severity, and resolved state.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "source", "flag": "source", "type": "enum", "required": false, "enumValues": ["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"] }, { "name": "severity", "flag": "severity", "type": "enum", "required": false, "enumValues": ["warning", "error", "critical"] }, { "name": "resolved", "flag": "resolved", "type": "enum", "required": false, "enumValues": ["active", "acknowledged", "resolved", "all"] }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List product-visible error logs by source, severity, seat, and active/resolved disposition before closing stale failures." },
|
|
52567
52646
|
{ "id": "error_log.resolve", "namespace": "error_log", "action": "resolve", "title": "Resolve error log", "description": "Acknowledge or resolve an error log with a required reason and optional linked task, Friction issue, or PR reference.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "error_log_id", "flag": "error-log-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "disposition", "flag": "disposition", "type": "enum", "required": false, "enumValues": ["acknowledged", "resolved"] }, { "name": "linked_task_id", "flag": "linked-task-id", "type": "string", "required": false }, { "name": "linked_issue_id", "flag": "linked-issue-id", "type": "string", "required": false }, { "name": "linked_pr_ref", "flag": "linked-pr-ref", "type": "string", "required": false }], "hasComplexInput": false, "help": "Acknowledge or resolve a stale error log with a required human reason and optional task, issue, or PR evidence." },
|