@rosthq/cli 0.7.85 → 0.7.87
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/generator/groups.d.ts.map +1 -1
- package/dist/index.js +49 -12
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
|
@@ -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;AAosCF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAmPjD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -41861,14 +41861,20 @@ var taskCreateInputSchema = external_exports.object({
|
|
|
41861
41861
|
description: external_exports.string().trim().min(1),
|
|
41862
41862
|
goal_id: uuidSchema9.optional(),
|
|
41863
41863
|
acceptance_criteria: external_exports.array(external_exports.string().min(1)).optional(),
|
|
41864
|
-
due_on: dateOnlySchema.optional()
|
|
41864
|
+
due_on: dateOnlySchema.optional(),
|
|
41865
|
+
// DER-1379: deterministic idempotency key; agent/scheduled producers only
|
|
41866
|
+
// (humans/null keep today's behavior); exact structural match.
|
|
41867
|
+
source_key: external_exports.string().trim().min(1).max(200).optional()
|
|
41865
41868
|
}).strict();
|
|
41866
41869
|
var taskCreateOutputSchema = external_exports.object({
|
|
41867
41870
|
task_id: uuidSchema9,
|
|
41868
41871
|
owner_seat_id: uuidSchema9,
|
|
41869
41872
|
from_seat_id: uuidSchema9.nullable(),
|
|
41870
41873
|
status: external_exports.string(),
|
|
41871
|
-
due_on: external_exports.string().nullable()
|
|
41874
|
+
due_on: external_exports.string().nullable(),
|
|
41875
|
+
// DER-1379: true when this was an idempotent no-op returning an existing
|
|
41876
|
+
// active task (agent + matching source_key); false for a normal create.
|
|
41877
|
+
already_filed: external_exports.boolean().default(false)
|
|
41872
41878
|
}).strict();
|
|
41873
41879
|
var taskUpdateInputSchema = external_exports.object({
|
|
41874
41880
|
task_id: uuidSchema9,
|
|
@@ -43827,6 +43833,17 @@ var runnerPostureSchema = external_exports.object({
|
|
|
43827
43833
|
network: external_exports.enum(["allow", "deny", "unknown"]),
|
|
43828
43834
|
capability_set: external_exports.array(external_exports.string())
|
|
43829
43835
|
}).strict();
|
|
43836
|
+
var runnerCapacityStateSchema = external_exports.enum(["available", "near_cap", "exhausted", "unknown"]);
|
|
43837
|
+
var runnerCapacitySchema = external_exports.object({
|
|
43838
|
+
account_alias: external_exports.string().nullable(),
|
|
43839
|
+
state: runnerCapacityStateSchema,
|
|
43840
|
+
raw_state: external_exports.string().nullable(),
|
|
43841
|
+
// Null until the harness gains rate-limit error classification (out of scope for DER-1588);
|
|
43842
|
+
// surfaced now so a fleet reader picks it up automatically once it starts being set.
|
|
43843
|
+
rate_limited_until: isoDateTime6.nullable(),
|
|
43844
|
+
has_observation: external_exports.boolean(),
|
|
43845
|
+
freshness: external_exports.enum(["fresh", "stale"])
|
|
43846
|
+
}).strict();
|
|
43830
43847
|
var runnerSummarySchema = external_exports.object({
|
|
43831
43848
|
id: uuid8,
|
|
43832
43849
|
name: external_exports.string(),
|
|
@@ -43836,6 +43853,7 @@ var runnerSummarySchema = external_exports.object({
|
|
|
43836
43853
|
cli_version: external_exports.string().nullable(),
|
|
43837
43854
|
posture: runnerPostureSchema,
|
|
43838
43855
|
execution: runnerExecutionReadinessSchema,
|
|
43856
|
+
capacity: runnerCapacitySchema,
|
|
43839
43857
|
paired_at: isoDateTime6.nullable(),
|
|
43840
43858
|
last_heartbeat_at: isoDateTime6.nullable(),
|
|
43841
43859
|
revoked_at: isoDateTime6.nullable(),
|
|
@@ -44219,6 +44237,8 @@ var systemHealthConnectivitySectionSchema = external_exports.object({
|
|
|
44219
44237
|
runner_count: external_exports.number().int().nonnegative(),
|
|
44220
44238
|
offline_runner_count: external_exports.number().int().nonnegative(),
|
|
44221
44239
|
not_execute_ready_runner_count: external_exports.number().int().nonnegative(),
|
|
44240
|
+
// DER-1588: fleet-wide near-cap/at-limit warning, driven off the runner capacity badge.
|
|
44241
|
+
near_cap_or_exhausted_runner_count: external_exports.number().int().nonnegative(),
|
|
44222
44242
|
integration_count: external_exports.number().int().nonnegative(),
|
|
44223
44243
|
disconnected_integration_count: external_exports.number().int().nonnegative(),
|
|
44224
44244
|
failed_notification_count: external_exports.number().int().nonnegative()
|
|
@@ -46253,6 +46273,9 @@ var statusRecordOutputSchema = external_exports.object({
|
|
|
46253
46273
|
event_id: uuidSchema19,
|
|
46254
46274
|
type: external_exports.literal("status")
|
|
46255
46275
|
}).strict();
|
|
46276
|
+
var frictionFileIssueInputSchema = issueEventPayloadSchema.extend({
|
|
46277
|
+
source_key: external_exports.string().trim().min(1).max(200).optional()
|
|
46278
|
+
}).strict();
|
|
46256
46279
|
var duplicateFrictionCandidateSchema = external_exports.object({
|
|
46257
46280
|
issue_id: uuidSchema19,
|
|
46258
46281
|
summary: external_exports.string().min(1),
|
|
@@ -46266,7 +46289,10 @@ var frictionFileIssueOutputSchema = external_exports.object({
|
|
|
46266
46289
|
// DER-1522: likely-duplicate candidates detected before creation. Recommend,
|
|
46267
46290
|
// never block — filing always proceeds; empty when nothing crossed the
|
|
46268
46291
|
// conservative threshold (or the actor is not an agent).
|
|
46269
|
-
duplicate_candidates: external_exports.array(duplicateFrictionCandidateSchema).default([])
|
|
46292
|
+
duplicate_candidates: external_exports.array(duplicateFrictionCandidateSchema).default([]),
|
|
46293
|
+
// DER-1379: true when this was an idempotent no-op returning an existing
|
|
46294
|
+
// active issue (agent + matching source_key); false for a normal file.
|
|
46295
|
+
already_filed: external_exports.boolean().default(false)
|
|
46270
46296
|
}).strict();
|
|
46271
46297
|
var workLogInputSchema = external_exports.object({
|
|
46272
46298
|
note: external_exports.string().min(1)
|
|
@@ -46412,6 +46438,8 @@ var WORK_VERBS = [
|
|
|
46412
46438
|
var workVerbSchema = external_exports.enum(WORK_VERBS);
|
|
46413
46439
|
var WORK_OUTCOMES = ["success", "warning", "error", "held"];
|
|
46414
46440
|
var workOutcomeSchema = external_exports.enum(WORK_OUTCOMES);
|
|
46441
|
+
var RESOLUTION_ATTRIBUTIONS = ["agent_self", "escalated_human"];
|
|
46442
|
+
var resolutionAttributionSchema = external_exports.enum(RESOLUTION_ATTRIBUTIONS);
|
|
46415
46443
|
var objectKindSchema = external_exports.string().trim().min(1).max(128);
|
|
46416
46444
|
var externalIdSchema = external_exports.string().trim().min(1).max(512);
|
|
46417
46445
|
var labelSchema = external_exports.string().trim().min(1).max(200);
|
|
@@ -46547,6 +46575,12 @@ var workDetailsSchemas = {
|
|
|
46547
46575
|
currency: external_exports.string().length(3).optional(),
|
|
46548
46576
|
unit: external_exports.string().max(64).optional(),
|
|
46549
46577
|
lead_time_days: external_exports.number().int().nonnegative().optional()
|
|
46578
|
+
}).strict(),
|
|
46579
|
+
// DER-1574: the resolution-attribution marker for a record that closes out an
|
|
46580
|
+
// `escalated`/`held` item — see RESOLUTION_ATTRIBUTIONS above.
|
|
46581
|
+
escalation_resolution: external_exports.object({
|
|
46582
|
+
resolved_by: resolutionAttributionSchema,
|
|
46583
|
+
resolution_note: external_exports.string().trim().min(1).max(2e3).optional()
|
|
46550
46584
|
}).strict()
|
|
46551
46585
|
};
|
|
46552
46586
|
|
|
@@ -47955,7 +47989,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
47955
47989
|
order: 48,
|
|
47956
47990
|
title: "CLI and MCP installation guide",
|
|
47957
47991
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
47958
|
-
version: "2026-07-
|
|
47992
|
+
version: "2026-07-16.1",
|
|
47959
47993
|
public: true,
|
|
47960
47994
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47961
47995
|
stages: ["company_setup", "staffing"],
|
|
@@ -48659,7 +48693,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48659
48693
|
| \`rost_update_friction_issue_status\` | \`friction.update_status\` | Move a non-terminal issue between open and diagnosing. | Seat or tenant-admin | Call with \`issue_id\` and \`status\`. |
|
|
48660
48694
|
| \`rost_resolve_friction_issue\` | \`friction.resolve\` | Resolve an issue with a root cause and remediation task. | Tenant | Human decision; expect confirmation. |
|
|
48661
48695
|
| \`rost_link_task_to_friction_issue\` | \`friction.link_task\` | Attach an existing task as an issue's action task. | Seat or tenant-admin | Call with \`issue_id\` and \`task_id\`. |
|
|
48662
|
-
| \`rost_create_task\` | \`task.create\` | Create a task (a commitment between seats). | Seat or tenant-admin | \`none\` \u2014 human-created tasks go live directly; ordinary agent-created tasks become draft proposals; bounded Trusted proposals become offered or, for same-Steward live agent seats, in progress. |
|
|
48696
|
+
| \`rost_create_task\` | \`task.create\` | Create a task (a commitment between seats). | Seat or tenant-admin | \`none\` \u2014 human-created tasks go live directly; ordinary agent-created tasks become draft proposals; bounded Trusted proposals become offered or, for same-Steward live agent seats, in progress. Agent/scheduled producers may pass an optional \`source_key\` so a repeat proposal is an idempotent no-op (\`already_filed:true\`, no duplicate task). |
|
|
48663
48697
|
| \`rost_update_task\` | \`task.update\` | Reschedule, reassign, or edit a non-terminal task. | Owner (tenant-admin) | Pass \`task_id\` plus at least one of \`due_on\`/\`owner_seat_id\`/\`title\`/\`description\`; terminal tasks reject. |
|
|
48664
48698
|
| \`rost_compile_sync_brief\` | \`sync.brief.compile\` | Compile the weekly Sync Brief (idempotent per period). | Tenant | Call with \`{}\`. |
|
|
48665
48699
|
| \`rost_get_sync_brief\` | \`sync.brief.get\` | Read the latest or a specific Sync Brief and agenda. | Seat or tenant-admin | Call with \`{}\` or \`{"sync_brief_id":"<id>"}\`. |
|
|
@@ -48775,7 +48809,7 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
|
|
|
48775
48809
|
| \`rost_report_status\` | \`status.record\` | Write a status event. | Seat | Call with a concise status payload. |
|
|
48776
48810
|
| \`rost_complete_task\` | \`task.complete\` | Complete a task and record evidence. | Seat | Call with \`task_id\` and evidence. |
|
|
48777
48811
|
| \`rost_escalate\` | \`escalation.raise\` | Escalate approval-scope or must-escalate work. | Seat | Call with severity, reason, and requested decision. |
|
|
48778
|
-
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with title, severity, and impact. |
|
|
48812
|
+
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with title, severity, and impact. 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. |
|
|
48779
48813
|
| \`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. |
|
|
48780
48814
|
| \`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"}\`. |
|
|
48781
48815
|
| \`rost_create_agent_deliverable\` | \`deliverable.create\` | Create a scrubbed durable work output for the acting seat. | Seat | Call with title, kind, summary/content, and optional safe links. |
|
|
@@ -49998,7 +50032,7 @@ Every notification should include the seat, cause, evidence, and requested decis
|
|
|
49998
50032
|
order: 75,
|
|
49999
50033
|
title: "Local runner guide",
|
|
50000
50034
|
summary: "How local agent sessions and runner surfaces should operate through {{brand}} without bypassing Charters or audit.",
|
|
50001
|
-
version: "2026-07-
|
|
50035
|
+
version: "2026-07-16.1",
|
|
50002
50036
|
public: true,
|
|
50003
50037
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50004
50038
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -50075,7 +50109,7 @@ A Forge turn should load its context in one order: build context first, then Ski
|
|
|
50075
50109
|
## Inspect and control runners from CLI or MCP
|
|
50076
50110
|
|
|
50077
50111
|
- Pair a new runner: \`runner.pairing.start\` / \`rost_start_runner_pairing\` with \`name\` and \`platform\` returns a human pairing code. This is owner/admin-only because it mints a short-lived runner pairing session that leads to machine credentials.
|
|
50078
|
-
- 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.
|
|
50112
|
+
- 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.
|
|
50079
50113
|
- 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.
|
|
50080
50114
|
- 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).
|
|
50081
50115
|
- 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.
|
|
@@ -52044,7 +52078,7 @@ var COMMAND_MANIFEST = [
|
|
|
52044
52078
|
{ "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." },
|
|
52045
52079
|
{ "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." },
|
|
52046
52080
|
{ "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." },
|
|
52047
|
-
{ "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"] }], "hasComplexInput": true, "help": "File a Friction issue with evidence when a goal or measurable is blocked or broken." },
|
|
52081
|
+
{ "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." },
|
|
52048
52082
|
{ "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." },
|
|
52049
52083
|
{ "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." },
|
|
52050
52084
|
{ "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." },
|
|
@@ -52199,7 +52233,7 @@ var COMMAND_MANIFEST = [
|
|
|
52199
52233
|
{ "id": "task.accept", "namespace": "task", "action": "accept", "title": "Accept task", "description": "Accept an offered handoff task owned by the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Accept an offered task only when the seat can deliver it within its Charter." },
|
|
52200
52234
|
{ "id": "task.complete", "namespace": "task", "action": "complete", "title": "Complete task", "description": "Complete an accepted handoff task and emit a handoff event back to the requesting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "summary", "flag": "summary", "type": "string", "required": true }], "hasComplexInput": true, "help": "Complete an accepted task with a summary so the requesting seat receives the handoff." },
|
|
52201
52235
|
{ "id": "task.confirm_proposal", "namespace": "task", "action": "confirm_proposal", "title": "Confirm proposed task", "description": "Confirm an agent-proposed draft task when the current human has target-side authority.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Confirm an agent-proposed draft task when the current human has authority for the target seat." },
|
|
52202
|
-
{ "id": "task.create", "namespace": "task", "action": "create", "title": "Create task", "description": "Create a task (a commitment between seats). Agent-created tasks land in draft for human confirmation; human-created tasks are offered (handoff) or in progress.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "owner_seat_id", "flag": "owner-seat-id", "type": "string", "required": true }, { "name": "from_seat_id", "flag": "from-seat-id", "type": "string", "required": false }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "description", "flag": "description", "type": "string", "required": true }, { "name": "goal_id", "flag": "goal-id", "type": "string", "required": false }, { "name": "acceptance_criteria", "flag": "acceptance-criteria", "type": "array", "required": false, "itemType": "string" }, { "name": "due_on", "flag": "due-on", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create a task as a commitment between seats; ordinary agent proposals land in draft for target-side human confirmation, while bounded Trusted proposals may become offered or in progress.", "example": { "owner_seat_id": "0190dddd-dddd-7ddd-8ddd-dddddddddddd", "from_seat_id": "0190eeee-eeee-7eee-8eee-eeeeeeeeeeee", "title": "Reconcile the March vendor statements", "description": "Match every March vendor statement line to a recorded invoice and flag discrepancies.", "goal_id": "0190ffff-ffff-7fff-8fff-ffffffffffff", "acceptance_criteria": ["All March statements reconciled", "Discrepancies filed as Friction issues"], "due_on": "2026-04-15" } },
|
|
52236
|
+
{ "id": "task.create", "namespace": "task", "action": "create", "title": "Create task", "description": "Create a task (a commitment between seats). Agent-created tasks land in draft for human confirmation; human-created tasks are offered (handoff) or in progress.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "owner_seat_id", "flag": "owner-seat-id", "type": "string", "required": true }, { "name": "from_seat_id", "flag": "from-seat-id", "type": "string", "required": false }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "description", "flag": "description", "type": "string", "required": true }, { "name": "goal_id", "flag": "goal-id", "type": "string", "required": false }, { "name": "acceptance_criteria", "flag": "acceptance-criteria", "type": "array", "required": false, "itemType": "string" }, { "name": "due_on", "flag": "due-on", "type": "string", "required": false }, { "name": "source_key", "flag": "source-key", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create a task as a commitment between seats; ordinary agent proposals land in draft for target-side human confirmation, while bounded Trusted proposals may become offered or in progress.", "example": { "owner_seat_id": "0190dddd-dddd-7ddd-8ddd-dddddddddddd", "from_seat_id": "0190eeee-eeee-7eee-8eee-eeeeeeeeeeee", "title": "Reconcile the March vendor statements", "description": "Match every March vendor statement line to a recorded invoice and flag discrepancies.", "goal_id": "0190ffff-ffff-7fff-8fff-ffffffffffff", "acceptance_criteria": ["All March statements reconciled", "Discrepancies filed as Friction issues"], "due_on": "2026-04-15" } },
|
|
52203
52237
|
{ "id": "task.decline", "namespace": "task", "action": "decline", "title": "Decline task", "description": "Decline an offered handoff task owned by the acting seat with a reason.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": true }], "hasComplexInput": false, "help": "Decline an offered task with a clear reason when it is out of scope for the seat." },
|
|
52204
52238
|
{ "id": "task.decline_proposal", "namespace": "task", "action": "decline_proposal", "title": "Decline proposed task", "description": "Decline an agent-proposed draft task with a target-side human reason.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": true }], "hasComplexInput": false, "help": "Decline an agent-proposed draft task with a target-side human reason." },
|
|
52205
52239
|
{ "id": "task.import", "namespace": "task", "action": "import", "title": "Import Tasks from a ninety To-Dos export", "description": "Bulk-import a ninety To-Dos export into Tasks. Owners are seat names resolved to seats; each to-do becomes a seat-owned task with provenance origin_kind:manual. Idempotent \u2014 re-importing the same export is a no-op, and an existing non-terminal task with the same seat + title 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 To-Dos export into Tasks (origin_kind:manual); owners resolve to seats, idempotent by file + seat/title." },
|
|
@@ -52990,17 +53024,20 @@ function renderRunnerList(output) {
|
|
|
52990
53024
|
return runners.map((runner) => {
|
|
52991
53025
|
const record2 = asRecord(runner);
|
|
52992
53026
|
const posture = asRecord(record2.posture);
|
|
53027
|
+
const capacity = asRecord(record2.capacity);
|
|
52993
53028
|
const capabilitySet = asArray(posture.capability_set).map((value) => String(value)).join(", ");
|
|
52994
|
-
return `${field(record2, "id")} ${field(record2, "health")} ${field(record2, "name")} (${field(record2, "platform")}) cli=${field(record2, "cli_version")} sandbox=${field(posture, "sandbox")} network=${field(posture, "network")}${capabilitySet.length > 0 ? ` capabilities=${capabilitySet}` : ""}`;
|
|
53029
|
+
return `${field(record2, "id")} ${field(record2, "health")} ${field(record2, "name")} (${field(record2, "platform")}) cli=${field(record2, "cli_version")} sandbox=${field(posture, "sandbox")} network=${field(posture, "network")}${capabilitySet.length > 0 ? ` capabilities=${capabilitySet}` : ""} capacity=${field(capacity, "state")} account=${field(capacity, "account_alias")} freshness=${field(capacity, "freshness")}`;
|
|
52995
53030
|
}).join("\n");
|
|
52996
53031
|
}
|
|
52997
53032
|
function renderRunnerStatus(output) {
|
|
52998
53033
|
const record2 = asRecord(output);
|
|
52999
53034
|
const posture = asRecord(record2.posture);
|
|
53035
|
+
const capacity = asRecord(record2.capacity);
|
|
53000
53036
|
const capabilitySet = asArray(posture.capability_set).map((value) => String(value)).join(", ");
|
|
53001
53037
|
const lines = [
|
|
53002
53038
|
`${field(record2, "id")} ${field(record2, "health")} ${field(record2, "name")} (last heartbeat ${field(record2, "last_heartbeat_at")}).`,
|
|
53003
|
-
`cli_version: ${field(record2, "cli_version")} sandbox: ${field(posture, "sandbox")} network: ${field(posture, "network")}
|
|
53039
|
+
`cli_version: ${field(record2, "cli_version")} sandbox: ${field(posture, "sandbox")} network: ${field(posture, "network")}`,
|
|
53040
|
+
`capacity: ${field(capacity, "state")} account: ${field(capacity, "account_alias")} freshness: ${field(capacity, "freshness")} rate_limited_until: ${field(capacity, "rate_limited_until")}`
|
|
53004
53041
|
];
|
|
53005
53042
|
if (capabilitySet.length > 0) {
|
|
53006
53043
|
lines.push(`capabilities: ${capabilitySet}`);
|