@rosthq/cli 0.5.21 → 0.5.23
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 +127 -17
- package/dist/index.js.map +2 -2
- package/dist/operations.d.ts +1 -1
- package/dist/operations.d.ts.map +1 -1
- package/package.json +1 -1
- package/prompts/how-tos/human-confirmations.md +2 -1
package/dist/index.js
CHANGED
|
@@ -42145,7 +42145,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
|
|
|
42145
42145
|
order: 45,
|
|
42146
42146
|
title: "How agents work",
|
|
42147
42147
|
summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
|
|
42148
|
-
version: "2026-06-21.
|
|
42148
|
+
version: "2026-06-21.4",
|
|
42149
42149
|
public: true,
|
|
42150
42150
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42151
42151
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -42239,7 +42239,7 @@ Before an agent goes live, the sandbox dry run rehearses this against fake data
|
|
|
42239
42239
|
|
|
42240
42240
|
The Agents page shows fleet health first: live state, recent runs, failed runs, open held actions, last activity, cost, and the next operator action. It also shows configuration completeness for each staffed agent seat: Steward chain, lane or runtime substrate, vaulted credentials, granted tools, model config, sandbox dry run, and go-live state, each with a remediation link when incomplete. A seat's Trust Card drills into the same facts: run history, one-run detail, tool-call outcomes, product-visible errors, transcript references, loaded Skill versions, and held confirmations or escalations. Open confirmations stay visible until they are decided or expire, even when they are older than the default activity window. Approving or rejecting a held confirmation from the seat page is scoped to that seat; rejection can include a short reason.
|
|
42241
42241
|
|
|
42242
|
-
Review the first dry runs, fleet overview, tool-call audit rows, escalations, deliverables, and Signal impact. A seat's completed-work area combines explicit deliverables, work-log evidence, and successful run summaries into one operator-facing trail with safe links labelled as internal, Linear, GitHub, or external. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat. Fleet real-turn counts use the same seat-run association as \`agent.list_runs\`, filtered to real runs. Scheduled agents are checked in rounded five-minute buckets, so a minute-level cron inside the bucket queues one work order for that bucket rather than one order per minute. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
|
|
42242
|
+
Review the first dry runs, fleet overview, tool-call audit rows, escalations, deliverables, and Signal impact. A seat's completed-work area combines explicit deliverables, work-log evidence, and successful run summaries into one operator-facing trail with safe links labelled as internal, Linear, GitHub, or external. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat. Shared system-health summaries use the same server-derived tenant, member, or seat-token scope so UI, CLI, and MCP operators see consistent stalled-work, unresolved-error, runner, and notification counts without client-supplied tenant boundaries. Fleet real-turn counts use the same seat-run association as \`agent.list_runs\`, filtered to real runs. Scheduled agents are checked in rounded five-minute buckets, so a minute-level cron inside the bucket queues one work order for that bucket rather than one order per minute. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
|
|
42243
42243
|
},
|
|
42244
42244
|
{
|
|
42245
42245
|
slug: "tool-access-and-vault",
|
|
@@ -42384,7 +42384,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
42384
42384
|
order: 48,
|
|
42385
42385
|
title: "CLI and MCP installation guide",
|
|
42386
42386
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
42387
|
-
version: "2026-06-21.
|
|
42387
|
+
version: "2026-06-21.13",
|
|
42388
42388
|
public: true,
|
|
42389
42389
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42390
42390
|
stages: ["company_setup", "staffing"],
|
|
@@ -42443,7 +42443,12 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
42443
42443
|
"integration.list",
|
|
42444
42444
|
"integration.readiness",
|
|
42445
42445
|
"integration.status",
|
|
42446
|
-
"integration.test"
|
|
42446
|
+
"integration.test",
|
|
42447
|
+
"tenant.rename",
|
|
42448
|
+
"deliverable.list",
|
|
42449
|
+
"deliverable.get",
|
|
42450
|
+
"deliverable.create",
|
|
42451
|
+
"deliverable.attach"
|
|
42447
42452
|
],
|
|
42448
42453
|
legal: {
|
|
42449
42454
|
publicRisk: "low",
|
|
@@ -42820,7 +42825,7 @@ The signed-in app exposes the same Skill command surface under **Skills** in the
|
|
|
42820
42825
|
| \`{{cli}} runner list|status|work-orders|revoke\` | \`runner.list\`, \`runner.status\`, \`work_order.list\`, \`runner.revoke\` | Inspect runners and work orders; revoke a runner. | Tenant | \`{{cli}} runner list --json\` |
|
|
42821
42826
|
| \`{{cli}} notification settings|test|errors\` | \`notification.settings.get\`, \`notification.test\`, \`notification.list_errors\` | Read notification settings, send a test, and list failed deliveries with linked product error source, seat id, and run id when available. | Tenant | \`{{cli}} notification errors --limit 10 --json\` |
|
|
42822
42827
|
| \`{{cli}} integration list|readiness|status|test\` | \`integration.list\`, \`integration.readiness\`, \`integration.status\`, \`integration.test\` | List connector metadata, read the setup-readiness checklist, read one connector's health, and run the provider-specific connection test without exposing credentials. | Tenant | \`{{cli}} integration readiness --provider google --json\` |
|
|
42823
|
-
| \`{{cli}} settings get|update|product-learning\` | \`settings.get\`, \`settings.update\`, \`settings.product_learning.get\`, \`settings.product_learning.update\` | Read tenant settings, update budget caps,
|
|
42828
|
+
| \`{{cli}} settings get|update|product-learning|rename\` | \`settings.get\`, \`settings.update\`, \`settings.product_learning.get\`, \`settings.product_learning.update\`, \`tenant.rename\` | Read tenant settings, update budget caps, read or update product-learning participation, and rename the company. Budget and product-learning updates stop at human confirmation in non-interactive CLI/MCP sessions; company rename is owner-only and human-gated. | Tenant / Tenant-admin for updates | \`{{cli}} settings product-learning get --json\`; \`{{cli}} settings product-learning update --mode disabled --json\`; \`{{cli}} settings rename --company "Acme Operations"\` |
|
|
42824
42829
|
| \`{{cli}} member invite|update|remove\` | \`member.invite\`, \`member.update\`, \`member.remove\` | Manage tenant members. | Tenant | \`{{cli}} member invite --email ops@example.com --role member\` |
|
|
42825
42830
|
| \`{{cli}} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show\` | \`agent_template.list\`, \`agent.create_from_template\`, \`agent.create_custom\`, \`agent_setup.get\`, \`agent_setup.update\`, \`agent.configure_tools\`, \`agent.run_dry_run\`, \`agent.go_live\`, \`agent.status\`, \`agent.run_now\`, \`agent.fleet_digest\`, \`agent.get_run\`, \`agent.show_markdown\` | Run the full agent setup and operation flow: list templates, create a draft from a template or guided custom answers (with \`--model\` and \`--effort\`), read or answer setup state, connect or decline tools, dry-run, go live, run on demand, capture the fleet-health digest, read one run's transcript/error diagnostics, and show a markdown readout. Human CLI dry-runs print the rehearsal transcript and, when present, the per-tool preview labels (\`Would run\`, \`Blocked\`, \`Escalated\`) before go-live. Create and go-live stop at human gates; the dry-run is ungated by human approval but requires a signed manifest first. | Tenant and seat | \`{{cli}} agent fleet-digest --json\` |
|
|
42826
42831
|
| \`{{cli}} tools list\` | \`tool.catalog\` | List the discoverable tool catalog the builder reads (id, scope tiers, credential requirement, access policy, and execution-boundary guidance). | Tenant | \`{{cli}} tools list --json\` |
|
|
@@ -42830,6 +42835,7 @@ The signed-in app exposes the same Skill command surface under **Skills** in the
|
|
|
42830
42835
|
| \`{{cli}} model list\` | \`model.catalog\` | List guided model tiers with recommendations, token prices, cost bands, best-fit work, and model ids for \`--model\`. | Tenant | \`{{cli}} model list --json\` |
|
|
42831
42836
|
| \`{{cli}} compass show\` | \`compass.show_markdown\` | Render the current Compass as a clean markdown card for review. | Tenant | \`{{cli}} compass show --markdown\` |
|
|
42832
42837
|
| \`{{cli}} charter show\` | \`charter.show_markdown\` | Render a seat's Charter as a clean markdown card for review. | Tenant | \`{{cli}} charter show --seat-id <id> --markdown\` |
|
|
42838
|
+
| \`{{cli}} deliverable list|get|create|attach\` | \`deliverable.list\`, \`deliverable.get\`, \`deliverable.create\`, \`deliverable.attach\` | List, get, create, or attach agent deliverables for a seat. Deliverables are durable work outputs visible across UI, CLI, and MCP. | Tenant (list/get), Seat (create/attach) | \`{{cli}} deliverable list --seat-id <id> --json\`; \`{{cli}} deliverable create --title "Brief" --kind brief\` |
|
|
42833
42839
|
|
|
42834
42840
|
Skills wrapper help:
|
|
42835
42841
|
|
|
@@ -42949,6 +42955,10 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
42949
42955
|
| \`rost_list_agent_runs\` | \`agent.list_runs\` | Read a seat's agent run history (status, lane, model, cost, per-run Skill activation, tool-call, and guard-held counts) plus the seat's run/tool-call rollup including held-action count. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`; pass \`limit\` for a deeper window. |
|
|
42950
42956
|
| \`rost_get_agent_run_diagnostics\` | \`agent.get_run\` | Read one run's diagnostic record: transcript reference, token/cost usage, outcome, linked product-visible run errors, and loaded Skill activation file metadata. File hashes/sizes identify the immutable source package, while model prompt text may be bounded or truncated. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>","run_id":"<run-id>"}\`. |
|
|
42951
42957
|
| \`rost_list_agent_tool_calls\` | \`agent.list_tool_calls\` | Read a seat's tool-call ledger (tool name, guard result, manifest clause, outcome) with the held-action count as the hero metric. Never returns argument summaries or secret material. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`; pass \`held_only: true\` for only guard-held calls. |
|
|
42958
|
+
| \`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>"}\`. |
|
|
42959
|
+
| \`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>"}\`. |
|
|
42960
|
+
| \`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. |
|
|
42961
|
+
| \`rost_attach_agent_deliverable\` | \`deliverable.attach\` | Attach a scrubbed deliverable to a source run, task, or work order after server-side seat validation. | Seat | Call with title, kind, and the source ids that belong to the acting seat. |
|
|
42952
42962
|
| \`rost_list_agent_templates\` | \`agent_template.list\` | List stock agent templates and metadata. | Tenant | Call with \`{}\`. |
|
|
42953
42963
|
| \`rost_create_agent_from_template\` | \`agent.create_from_template\` | Create a draft stock agent and draft Charter from a template (draft-only; occupancy needs a human steward). | Tenant | Call with \`seat_id\` and \`template_slug\`; expect human confirmation. |
|
|
42954
42964
|
| \`rost_start_agent_setup\` | \`agent_setup.start\` | Start an agent setup draft for template, custom, or existing mode. | Tenant | Call with \`mode\` and seat placement. |
|
|
@@ -42982,6 +42992,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
42982
42992
|
| \`rost_remove_member\` | \`member.remove\` | Remove a tenant member. | Tenant | Call with \`member_id\`; blocked if it would orphan an agent steward chain. |
|
|
42983
42993
|
| \`rost_get_tenant_settings\` | \`settings.get\` | Read tenant operating settings and integration status. | Tenant | Call with \`{}\`; metadata only. |
|
|
42984
42994
|
| \`rost_update_tenant_settings\` | \`settings.update\` | Update tenant AI budget caps. | Tenant | Call with \`soft_cap_usd\` or \`hard_cap_usd\`; expect human confirmation. |
|
|
42995
|
+
| \`rost_rename_company\` | \`tenant.rename\` | Rename the current company. | Tenant-admin | Call with \`company_name\`; expect human confirmation. |
|
|
42985
42996
|
| \`rost_get_sync_brief_scope\` | \`settings.sync_brief_scope.get\` | Read the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant | Call with \`{}\`. |
|
|
42986
42997
|
| \`rost_update_sync_brief_scope\` | \`settings.sync_brief_scope.update\` | Set the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant-admin | Owner-only; call with \`{"sync_brief_scope":"company_wide"}\` or \`{"sync_brief_scope":"per_cluster"}\`. |
|
|
42987
42998
|
| \`rost_get_product_learning_policy\` | \`settings.product_learning.get\` | Read whether product/page/recommendation analytics are allowed. | Tenant | Call with \`{}\`; audit/security logs are always enabled. |
|
|
@@ -43776,7 +43787,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
43776
43787
|
order: 71,
|
|
43777
43788
|
title: "Confirmations and human gates guide",
|
|
43778
43789
|
summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
|
|
43779
|
-
version: "2026-06-20.
|
|
43790
|
+
version: "2026-06-20.2",
|
|
43780
43791
|
public: true,
|
|
43781
43792
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43782
43793
|
stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
@@ -43801,7 +43812,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
43801
43812
|
## Confirmation levels
|
|
43802
43813
|
|
|
43803
43814
|
- \`none\`: no confirmation gate \u2014 the command never returns a pending confirmation. Most are reads or reversible drafts an agent can run directly, including over MCP (graph reads, \`charter.draft\`, \`status.record\`, \`sync.brief.compile\`, \`sync.run.start\`, \`task.complete\`). A few \`none\` commands still require a human actor or an interactive channel \u2014 \`confirmation.approve\` is \`none\` (approving a gate cannot itself be gated) yet runs only as a human in the UI or CLI \u2014 so \`none\` means "no confirmation gate", not always "agent-callable".
|
|
43804
|
-
- \`human_required\`: a human must approve. Structural, staffing, resolution, and go-live commands (\`seat.reparent\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`mcp_token.create\`).
|
|
43815
|
+
- \`human_required\`: a human must approve. Structural, staffing, resolution, tenant profile, and go-live commands (\`seat.reparent\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`mcp_token.create\`, \`tenant.rename\`).
|
|
43805
43816
|
- \`credential_flow\`: routes through the vault-backed credential path so a secret is captured as a vault reference, never stored or logged in the clear (\`credential.ingress\`, \`tenant.anthropic_key.save\`; \`agent.configure_tools\` is \`credential_flow\` too \u2014 it stages credential-ingress requests through the same path without ever taking raw secret material).
|
|
43806
43817
|
- \`dangerous\`: the highest-risk human gate. Only two commands carry it \u2014 \`settings.update\` and \`agent.decommission\`.
|
|
43807
43818
|
|
|
@@ -43831,11 +43842,11 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
|
|
|
43831
43842
|
order: 72,
|
|
43832
43843
|
title: "Settings guide",
|
|
43833
43844
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
43834
|
-
version: "2026-06-21.
|
|
43845
|
+
version: "2026-06-21.4",
|
|
43835
43846
|
public: true,
|
|
43836
43847
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43837
43848
|
stages: ["company_setup", "staffing"],
|
|
43838
|
-
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update"],
|
|
43849
|
+
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update"],
|
|
43839
43850
|
legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
|
|
43840
43851
|
sources: [
|
|
43841
43852
|
{
|
|
@@ -43854,7 +43865,7 @@ Start with members and invites, then provider and channel connections, then MCP
|
|
|
43854
43865
|
|
|
43855
43866
|
## What belongs in Settings
|
|
43856
43867
|
|
|
43857
|
-
- Company profile and workspace defaults.
|
|
43868
|
+
- Company profile and workspace defaults. Rename the company from Settings or with \`tenant.rename\` (CLI: \`{{cli}} settings rename --company "<name>"\`); the command is owner-only, human-gated, and records a rename event with old and new names.
|
|
43858
43869
|
- Members, invites, and tenant roles.
|
|
43859
43870
|
- Agent access tokens for local agents.
|
|
43860
43871
|
- Provider and integration configuration.
|
|
@@ -43888,6 +43899,8 @@ Product-learning participation controls whether {{brand}} may record product/pag
|
|
|
43888
43899
|
|
|
43889
43900
|
Read the policy with \`settings.product_learning.get\` (CLI: \`{{cli}} settings product-learning get\`). Change it with \`settings.product_learning.update\` (CLI: \`{{cli}} settings product-learning update --mode disabled\`). Analytics ingestion code should call the shared product-learning policy helper instead of reading \`tenants.settings\` directly.
|
|
43890
43901
|
|
|
43902
|
+
The product analytics foundation stores only bounded product telemetry: product events, page views by route template, command invocation metadata, onboarding milestones, and recommendation outcomes. Authenticated users can read analytics rows for their tenant, but writes are server-owned through the trusted DB helpers. The helpers and database constraints reject or redact obvious raw URLs, filesystem paths, secrets, prompt/content fields, command argument/output fields, direct contact/payment identifiers, and long prose-shaped values. These analytics rows are not audit records; operational logs and security evidence stay in their dedicated append-only or product-visible tables.
|
|
43903
|
+
|
|
43891
43904
|
## Inference budget
|
|
43892
43905
|
|
|
43893
43906
|
Agents that run on {{brand}}-managed inference draw against a tenant inference budget with a hard cap. A new company starts with a hard cap of $0, so a managed-inference run is blocked until the cap is raised. When a run hits the cap it stops with a typed budget error that names the fix; raise the cap before agents can run again.
|
|
@@ -46543,14 +46556,26 @@ var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
|
|
|
46543
46556
|
const spend = asRecord(asRecord(output).spend);
|
|
46544
46557
|
return `Updated budget caps (soft=$${field(spend, "soft_cap_usd")}, hard=$${field(spend, "hard_cap_usd")}).`;
|
|
46545
46558
|
});
|
|
46559
|
+
},
|
|
46560
|
+
rename: (ctx, rest) => {
|
|
46561
|
+
const parsed = parseFlags(rest);
|
|
46562
|
+
const companyName = optionalValue(parsed, "company");
|
|
46563
|
+
if (!companyName) {
|
|
46564
|
+
throw new UsageError("Provide --company <name>.");
|
|
46565
|
+
}
|
|
46566
|
+
return execute(ctx, parsed, "tenant.rename", { company_name: companyName }, (output) => {
|
|
46567
|
+
const record2 = asRecord(output);
|
|
46568
|
+
return `Renamed company from ${field(record2, "previous_name")} to ${field(record2, "name")}.`;
|
|
46569
|
+
});
|
|
46546
46570
|
}
|
|
46547
46571
|
}, settingsUsage(context.binName));
|
|
46548
46572
|
function settingsUsage(bin) {
|
|
46549
|
-
return `Usage: ${bin} settings get|update|product-learning [--json]
|
|
46573
|
+
return `Usage: ${bin} settings get|update|product-learning|rename [--json]
|
|
46550
46574
|
${bin} settings get
|
|
46551
46575
|
${bin} settings update [--soft-cap-usd <n>] [--hard-cap-usd <n>]
|
|
46552
46576
|
${bin} settings product-learning get
|
|
46553
|
-
${bin} settings product-learning update --mode enabled|disabled|enterprise_contract
|
|
46577
|
+
${bin} settings product-learning update --mode enabled|disabled|enterprise_contract
|
|
46578
|
+
${bin} settings rename --company <name>`;
|
|
46554
46579
|
}
|
|
46555
46580
|
var memberWrapper = (context, args) => dispatch(context, "member", args, {
|
|
46556
46581
|
invite: (ctx, rest) => {
|
|
@@ -47115,6 +47140,87 @@ function charterUsage(bin) {
|
|
|
47115
47140
|
return `Usage: ${bin} charter show --seat-id <id> [--markdown] [--json]
|
|
47116
47141
|
${bin} charter show --seat-id <id> --markdown \u2014 render a seat's active or latest Charter as a markdown card.`;
|
|
47117
47142
|
}
|
|
47143
|
+
function formatDeliverableList(output) {
|
|
47144
|
+
const deliverables = asArray(asRecord(output).deliverables);
|
|
47145
|
+
if (deliverables.length === 0) {
|
|
47146
|
+
return "No deliverables for this seat.";
|
|
47147
|
+
}
|
|
47148
|
+
return deliverables.map((entry) => {
|
|
47149
|
+
const r = asRecord(entry);
|
|
47150
|
+
const summary = field(r, "summary") === "\u2014" ? "" : ` \u2014 ${field(r, "summary")}`;
|
|
47151
|
+
return `${field(r, "id")} [${field(r, "kind")}] ${field(r, "title")}${summary}`;
|
|
47152
|
+
}).join("\n");
|
|
47153
|
+
}
|
|
47154
|
+
function formatDeliverableDetail(output) {
|
|
47155
|
+
const d = asRecord(asRecord(output).deliverable);
|
|
47156
|
+
const links = asArray(d.links).map((entry) => {
|
|
47157
|
+
const l = asRecord(entry);
|
|
47158
|
+
return ` ${field(l, "kind")}: ${field(l, "label")} <${field(l, "url")}>`;
|
|
47159
|
+
}).join("\n");
|
|
47160
|
+
return [
|
|
47161
|
+
`# ${field(d, "title")} [${field(d, "kind")}]`,
|
|
47162
|
+
field(d, "id"),
|
|
47163
|
+
field(d, "summary") === "\u2014" ? "" : field(d, "summary"),
|
|
47164
|
+
field(d, "content") === "\u2014" ? "" : `content:
|
|
47165
|
+
${field(d, "content")}`,
|
|
47166
|
+
`delivered: ${field(d, "delivered_at")}`,
|
|
47167
|
+
`run: ${field(d, "source_run_status")} ${field(d, "source_run_model")}`,
|
|
47168
|
+
`task: ${field(d, "source_task_title")}`,
|
|
47169
|
+
links.length > 0 ? `links:
|
|
47170
|
+
${links}` : ""
|
|
47171
|
+
].filter((line) => line.length > 0).join("\n");
|
|
47172
|
+
}
|
|
47173
|
+
function formatDeliverableWrite(output) {
|
|
47174
|
+
const record2 = asRecord(output);
|
|
47175
|
+
return `deliverable ${field(record2, "deliverable_id")} recorded.`;
|
|
47176
|
+
}
|
|
47177
|
+
var deliverableWrapper = (context, args) => dispatch(context, "deliverable", args, {
|
|
47178
|
+
list: (ctx, rest) => {
|
|
47179
|
+
const parsed = parseFlags(rest);
|
|
47180
|
+
const seatId = requireValue2(parsed, "seat-id");
|
|
47181
|
+
return execute(ctx, parsed, "deliverable.list", { seat_id: seatId }, formatDeliverableList);
|
|
47182
|
+
},
|
|
47183
|
+
get: (ctx, rest) => {
|
|
47184
|
+
const parsed = parseFlags(rest);
|
|
47185
|
+
const body = {
|
|
47186
|
+
seat_id: requireValue2(parsed, "seat-id"),
|
|
47187
|
+
deliverable_id: requireValue2(parsed, "deliverable-id")
|
|
47188
|
+
};
|
|
47189
|
+
return execute(ctx, parsed, "deliverable.get", body, formatDeliverableDetail);
|
|
47190
|
+
},
|
|
47191
|
+
create: (ctx, rest) => {
|
|
47192
|
+
const parsed = parseFlags(rest, /* @__PURE__ */ new Set(["json"]));
|
|
47193
|
+
const body = withOptional({
|
|
47194
|
+
kind: optionalValue(parsed, "kind") ?? "other",
|
|
47195
|
+
title: requireValue2(parsed, "title")
|
|
47196
|
+
}, {
|
|
47197
|
+
summary: optionalValue(parsed, "summary"),
|
|
47198
|
+
content: optionalValue(parsed, "content")
|
|
47199
|
+
});
|
|
47200
|
+
return execute(ctx, parsed, "deliverable.create", body, formatDeliverableWrite);
|
|
47201
|
+
},
|
|
47202
|
+
attach: (ctx, rest) => {
|
|
47203
|
+
const parsed = parseFlags(rest);
|
|
47204
|
+
const body = withOptional({
|
|
47205
|
+
kind: optionalValue(parsed, "kind") ?? "other",
|
|
47206
|
+
title: requireValue2(parsed, "title")
|
|
47207
|
+
}, {
|
|
47208
|
+
run_id: optionalValue(parsed, "run-id"),
|
|
47209
|
+
task_id: optionalValue(parsed, "task-id"),
|
|
47210
|
+
work_order_id: optionalValue(parsed, "work-order-id"),
|
|
47211
|
+
summary: optionalValue(parsed, "summary"),
|
|
47212
|
+
content: optionalValue(parsed, "content")
|
|
47213
|
+
});
|
|
47214
|
+
return execute(ctx, parsed, "deliverable.attach", body, formatDeliverableWrite);
|
|
47215
|
+
}
|
|
47216
|
+
}, deliverableUsage(context.binName));
|
|
47217
|
+
function deliverableUsage(bin) {
|
|
47218
|
+
return `Usage: ${bin} deliverable list|get|create|attach [--json]
|
|
47219
|
+
${bin} deliverable list --seat-id <id>
|
|
47220
|
+
${bin} deliverable get --seat-id <id> --deliverable-id <id>
|
|
47221
|
+
${bin} deliverable create --title <text> [--kind brief|work_evidence|artifact|report|other] [--summary <text>] [--content <text>]
|
|
47222
|
+
${bin} deliverable attach --title <text> [--run-id <id>] [--task-id <id>] [--work-order-id <id>] [--kind brief|work_evidence|artifact|report|other] [--summary <text>] [--content <text>]`;
|
|
47223
|
+
}
|
|
47118
47224
|
var OPERATION_GROUPS = [
|
|
47119
47225
|
"task",
|
|
47120
47226
|
"status",
|
|
@@ -47133,7 +47239,8 @@ var OPERATION_GROUPS = [
|
|
|
47133
47239
|
"skills",
|
|
47134
47240
|
"model",
|
|
47135
47241
|
"compass",
|
|
47136
|
-
"charter"
|
|
47242
|
+
"charter",
|
|
47243
|
+
"deliverable"
|
|
47137
47244
|
];
|
|
47138
47245
|
var wrappers = {
|
|
47139
47246
|
task: taskWrapper,
|
|
@@ -47153,7 +47260,8 @@ var wrappers = {
|
|
|
47153
47260
|
skills: skillsWrapper,
|
|
47154
47261
|
model: modelWrapper,
|
|
47155
47262
|
compass: compassWrapper,
|
|
47156
|
-
charter: charterWrapper
|
|
47263
|
+
charter: charterWrapper,
|
|
47264
|
+
deliverable: deliverableWrapper
|
|
47157
47265
|
};
|
|
47158
47266
|
function isOperationGroup(value) {
|
|
47159
47267
|
return value !== void 0 && OPERATION_GROUPS.includes(value);
|
|
@@ -47176,7 +47284,8 @@ var groupUsageBuilders = {
|
|
|
47176
47284
|
skills: skillsUsage,
|
|
47177
47285
|
model: modelUsage,
|
|
47178
47286
|
compass: compassUsage,
|
|
47179
|
-
charter: charterUsage
|
|
47287
|
+
charter: charterUsage,
|
|
47288
|
+
deliverable: deliverableUsage
|
|
47180
47289
|
};
|
|
47181
47290
|
function operationGroupUsage(group, bin) {
|
|
47182
47291
|
return usageWithSchemaFooter(groupUsageBuilders[group](bin), bin);
|
|
@@ -47200,14 +47309,15 @@ function operationUsageLines(bin) {
|
|
|
47200
47309
|
`${bin} sync brief|compile|complete`,
|
|
47201
47310
|
`${bin} runner list|status|work-orders|revoke`,
|
|
47202
47311
|
`${bin} notification settings|test|errors`,
|
|
47203
|
-
`${bin} settings get|update|product-learning`,
|
|
47312
|
+
`${bin} settings get|update|product-learning|rename`,
|
|
47204
47313
|
`${bin} member invite|update|remove`,
|
|
47205
47314
|
`${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show`,
|
|
47206
47315
|
`${bin} tools list`,
|
|
47207
47316
|
`${bin} skills list|get|file|assigned|check-dependencies`,
|
|
47208
47317
|
`${bin} model list`,
|
|
47209
47318
|
`${bin} compass show`,
|
|
47210
|
-
`${bin} charter show
|
|
47319
|
+
`${bin} charter show`,
|
|
47320
|
+
`${bin} deliverable list|get|create|attach`
|
|
47211
47321
|
];
|
|
47212
47322
|
}
|
|
47213
47323
|
|