@rosthq/cli 0.6.4 → 0.6.6

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,EAyL3D,CAAC"}
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,EA2L3D,CAAC"}
package/dist/index.js CHANGED
@@ -37433,6 +37433,13 @@ var AGENT_HOW_TO_PROMPT_CONTRACTS = {
37433
37433
  name: "human-confirmations",
37434
37434
  version: "1.0.0",
37435
37435
  filename: "how-tos/human-confirmations.md"
37436
+ },
37437
+ // DER-1045: how an occupant agent collects its seat's agent-sourced measurables
37438
+ // as draft readings via signal.report (a human confirms via signal.confirm_reading).
37439
+ collectSeatSignals: {
37440
+ name: "collect-seat-signals",
37441
+ version: "1.0.0",
37442
+ filename: "how-tos/collect-seat-signals.md"
37436
37443
  }
37437
37444
  };
37438
37445
  function loadAgentHowToPrompt(contract) {
@@ -42403,7 +42410,7 @@ External connectors are being rolled out provider by provider, conservatively (r
42403
42410
  order: 48,
42404
42411
  title: "CLI and MCP installation guide",
42405
42412
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42406
- version: "2026-07-01.3",
42413
+ version: "2026-07-01.5",
42407
42414
  public: true,
42408
42415
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42409
42416
  stages: ["company_setup", "staffing"],
@@ -43054,6 +43061,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
43054
43061
  | \`rost_get_signal\` | \`signal.get\` | Read a measurable with its full reading history. | Seat or tenant-admin | Call with \`{"measurable_id":"<id>"}\`. |
43055
43062
  | \`rost_confirm_signal_reading\` | \`signal.confirm_reading\` | Confirm an unconfirmed reading as human-verified. | Seat or tenant-admin | Humans confirm; call with \`{"reading_id":"<id>"}\`. |
43056
43063
  | \`rost_correct_signal_reading\` | \`signal.correct_reading\` | Overwrite a reading with a human-confirmed value. | Seat or tenant-admin | Manual correction; expect confirmation. |
43064
+ | \`rost_report_a_signal_reading\` | \`signal.report\` | A per-seat Signal agent proposes one draft reading for its own seat's agent-sourced measurable (a judgment/transform pull). The reading lands unconfirmed; a human confirms it with signal.confirm_reading. Refuses non-agent-sourced or other-seat measurables and cannot overwrite a human-confirmed reading. | Seat | Call with \`{"measurable_id":"<id>","value":42,"note":"read off the source","confidence":"high"}\`. |
43057
43065
  | \`rost_add_a_measurable\` | \`measurable.create\` | Add a measurable a seat owns (name, unit, direction, target, cadence). | Seat or tenant-admin | Call with \`{"seat_id":"<id>","name":"...","unit":"...","direction":"up_good","target":0,"cadence":"weekly"}\`. |
43058
43066
  | \`rost_import_signals_from_csv\` | \`signal.import\` | Bulk-import measurable definitions + trailing historical readings from a parsed scorecard export (e.g. a ninety CSV). Owners resolve to seats; readings are human-confirmed; re-import upserts by (measurable, period, cadence); a cross-cadence row is reported and skipped, not overwritten. | Tenant | Call with the parsed \`measurables\` array. |
43059
43067
  | \`rost_list_measurable_templates\` | \`measurable_template.list\` | List the measurable template catalog (Sales/Finance/Ops/Marketing/HR) with unit, direction, cadence, and a suggested target. | Seat or tenant-admin | Call with \`{}\` or \`{"function":"sales"}\`. |
@@ -43066,6 +43074,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
43066
43074
  | \`rost_import_friction_issues_from_a_ninety_issues_list\` | \`friction.import\` | Bulk-import issues as Friction items for the named owner seat (from a ninety Issues List export). Owners resolve to seats; idempotent re-import skips an open issue already imported for the same seat + summary; whole-file re-import is skipped by content hash. | Tenant | Call with the parsed \`issues\` array. |
43067
43075
  | \`rost_import_tasks_from_a_ninety_to_dos_export\` | \`task.import\` | Bulk-import To-Dos as tasks the named owner seat owns (from a ninety To-Dos export), provenance origin_kind:manual. Owners resolve to seats; idempotent re-import skips a non-terminal task already imported for the same seat + title. | Tenant | Call with the parsed \`todos\` array. |
43068
43076
  | \`rost_import_rocks_from_a_ninety_rocks_export\` | \`cascade.import\` | Bulk-import Rocks as Cascade cycle goals under a company objective in the active cycle (from a ninety Rocks export). Owners resolve to seats; idempotent re-import skips a cycle goal already imported for the same objective + seat + title. | Tenant | Call with the parsed \`rocks\` array. |
43077
+ | \`rost_import_a_ninety_v_to_into_a_compass_draft\` | \`compass.import\` | AI-draft a Compass from a ninety V/TO (Core Values \u2192 principles, 10/3/1-Year \u2192 horizon goals, Rocks \u2192 cycle objectives), landed as a draft a human confirms by supersession \u2014 never an accepted Compass. Idempotent by document content (a re-upload of the same V/TO short-circuits without re-drafting). | Tenant | Call with the extracted V/TO \`text\` (and optional \`source_name\`). |
43069
43078
  | \`rost_list_cascade_goals\` | \`goal.list\` | List Cascade goals, optionally by cycle or seat. | Seat or tenant-admin | Call with \`{}\` or \`{"cycle_id":"<id>"}\`. |
43070
43079
  | \`rost_create_cascade_goal\` | \`goal.create\` | Create a cycle goal under an objective. | Tenant | Call with cycle, seat, parent, title, definition of done. |
43071
43080
  | \`rost_update_cascade_goal\` | \`goal.update\` | Update a goal's title or definition of done. | Tenant | Call with \`goal_id\` and the changed fields. |
@@ -43686,7 +43695,7 @@ Agents can suggest commitments and report progress. They should not create a new
43686
43695
  order: 61,
43687
43696
  title: "Signal guide",
43688
43697
  summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
43689
- version: "2026-07-01.2",
43698
+ version: "2026-07-01.3",
43690
43699
  public: true,
43691
43700
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43692
43701
  stages: ["operating_rhythm"],
@@ -43698,6 +43707,7 @@ Agents can suggest commitments and report progress. They should not create a new
43698
43707
  "signal.get",
43699
43708
  "signal.confirm_reading",
43700
43709
  "signal.correct_reading",
43710
+ "signal.report",
43701
43711
  "measurable.create",
43702
43712
  "signal.import",
43703
43713
  "measurable_template.list",
@@ -43771,6 +43781,10 @@ Once a measurable's number lives in a connected system, you can teach {{brand}}
43771
43781
 
43772
43782
  Recipes are validated data, never code: a read-only GET, a closed set of non-secret headers, and a restricted scalar path to the value. Every fetch passes one SSRF guard (HTTPS only, a steward-confirmed host allowlist set at bind, and a runtime check that the host does not resolve to a private address). Deterministic pulls write \`integration\`-sourced readings on the measurable's cadence.
43773
43783
 
43784
+ ## Collect a Signal by judgment (the Signal agent)
43785
+
43786
+ Some measurables cannot be a deterministic pull \u2014 the number lives in a PDF, in messy records that need reconciling, or is a judgment estimate of progress. For those, mark the measurable \`agent\`-sourced and let a per-seat Signal agent read it. The agent proposes each reading with \`signal.report\` (scope: seat): one draft reading for one of its OWN seat's agent-sourced measurables, with a \`value\` and a short \`note\` citing the source. The reading lands unconfirmed, exactly like a deterministic draft \u2014 a human clears it with \`signal.confirm_reading\`. \`signal.report\` refuses any measurable not owned by the acting seat and any measurable whose source is not \`agent\`, and it never confirms its own reading. Deliver it as the \`stock/signal-collector\` template (a read-only agent whose only durable grant is \`signal.report\`) or run the \`collect-seat-signals\` how-to from an occupant agent. When the agent cannot read a number confidently \u2014 ambiguous or conflicting sources \u2014 it escalates instead of guessing.
43787
+
43774
43788
  ## When to stop for confirmation
43775
43789
 
43776
43790
  \`signal.correct_reading\` is \`human_required\`; overwriting a recorded measurable is a human judgment. \`signal.confirm_reading\` is \`none\`, so a seat can confirm its own readings directly. \`measurable.create\` is \`none\` \u2014 defining a measurable is not gated. An agent records readings with evidence; a human corrects when a value is wrong.
@@ -43784,7 +43798,7 @@ Agents may record readings when the Charter allows it. Agent-reported readings s
43784
43798
  order: 62,
43785
43799
  title: "Friction guide",
43786
43800
  summary: "How to capture issues with evidence, rank them, and resolve them without losing ownership.",
43787
- version: "2026-06-29.1",
43801
+ version: "2026-07-01.1",
43788
43802
  public: true,
43789
43803
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43790
43804
  stages: ["operating_rhythm"],
@@ -43844,6 +43858,10 @@ Friction, tasks, and escalations are the issue-to-action loop. A seat files, a t
43844
43858
  - Carry the work as a task: \`task.create\` / \`rost_create_task\` (a commitment between seats). \`task.create\` is \`none\` (no confirmation gate), so an agent can file one directly; an agent's task lands as a **draft** proposal (\`origin: agent_proposal\`) for a human to review and hand off \u2014 not a live offer in the owning seat's accept/decline queue. A seat runs its queue with \`{{cli}} task list|accept|decline|complete\` (\`task.list\`, \`task.accept\`, \`task.decline\`, \`task.complete\`). Link a task to an issue with \`friction.link_task\` / \`rost_link_task_to_friction_issue\`.
43845
43859
  - Route a decision: \`escalation.raise\` (seat) / \`rost_escalate\` sends approval-scope or must-escalate work to the Steward queue. Reads are \`escalation.list\` / \`escalation.get\`. See the steward queue guide for resolution.
43846
43860
 
43861
+ ## Friction assist
43862
+
43863
+ \`friction.assist\` / \`rost_assist_friction_issue\` is a read-only advisory for an open issue \u2014 call it with the issue id. It returns the most-similar prior resolved issues with their root causes and recorded decisions, a recurring-pattern flag, and recommended options drawn from that history. It never resolves the issue or records a decision \u2014 a human still resolves via \`friction.resolve\`. The similar-issue recall is deterministic; the short narrative is best-effort and degrades to the deterministic summary when the model is slow or unavailable, so the assist stays responsive and never holds up other work.
43864
+
43847
43865
  ## When to stop for confirmation
43848
43866
 
43849
43867
  \`friction.resolve\` is \`human_required\`; resolving an issue is a human decision. \`friction.link_task\`, \`task.create\`, \`task.accept\`, \`task.decline\`, and \`task.complete\` are \`none\`, so a seat files issues, creates commitments, and runs its own task queue directly. \`friction.update_status\`, \`escalation.raise\`, \`friction.file_issue\`, and \`friction.list\` are also not gated. An agent files Friction, proposes the task, and escalates; a human resolves.
@@ -43986,7 +44004,7 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
43986
44004
  order: 72,
43987
44005
  title: "Settings guide",
43988
44006
  summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
43989
- version: "2026-06-30.1",
44007
+ version: "2026-07-01.1",
43990
44008
  public: true,
43991
44009
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43992
44010
  stages: ["company_setup", "staffing"],
@@ -44007,6 +44025,10 @@ Settings is the company control plane. Use it to manage members, invites, provid
44007
44025
 
44008
44026
  Start with members and invites, then provider and channel connections, then MCP or CLI access. Do not connect tools for an agent seat until the Charter and Steward are clear.
44009
44027
 
44028
+ ## Direct links
44029
+
44030
+ Settings is one page with anchored sections, not separate sub-pages. Documented shortcut links resolve to the right section instead of a dead end: \`/settings/integrations\` and \`/readiness\` open the Integrations section (connector readiness lives inside it, not on a standalone page), and \`/settings/policy\` opens the Product learning section.
44031
+
44010
44032
  ## What belongs in Settings
44011
44033
 
44012
44034
  - 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.
@@ -44212,7 +44234,7 @@ The runner should not store raw credentials in local notes, prompts, or logs. It
44212
44234
  order: 76,
44213
44235
  title: "Stock agents guide",
44214
44236
  summary: "How to use stock agent templates as starting points while preserving seat-specific Charters and human approval.",
44215
- version: "2026-06-15.1",
44237
+ version: "2026-07-01.1",
44216
44238
  public: true,
44217
44239
  audiences: ["human", "cli", "mcp", "in_app_agent"],
44218
44240
  stages: ["staffing"],
@@ -44239,7 +44261,7 @@ Before dry run, review the template's responsibilities, tool assumptions, escala
44239
44261
 
44240
44262
  ## Template catalog
44241
44263
 
44242
- Seven stock templates ship today. Every one is draft-first, escalates the actions in its safety boundaries, and keeps spend, external sends, and credential scope human-owned until a Steward sets a threshold. Read the live list with \`agent_template.list\` / \`rost_list_agent_templates\` or the \`rost://agents/templates\` resource.
44264
+ Eight stock templates ship today. Every one is draft-first, escalates the actions in its safety boundaries, and keeps spend, external sends, and credential scope human-owned until a Steward sets a threshold. Read the live list with \`agent_template.list\` / \`rost_list_agent_templates\` or the \`rost://agents/templates\` resource.
44243
44265
 
44244
44266
  ### AP Clerk \u2014 \`stock/ap-clerk\`
44245
44267
 
@@ -44290,6 +44312,13 @@ Seven stock templates ship today. Every one is draft-first, escalates the action
44290
44312
  - Default tools: Release artifacts read; Issue tracker draft.
44291
44313
  - Safety boundary: release approval, production changes, customer-impacting risk, security/privacy, and conflicting evidence escalate.
44292
44314
 
44315
+ ### Signal collector \u2014 \`stock/signal-collector\`
44316
+
44317
+ - Function: Ops/Finance. Tier: \`2 \xB7 Fast-follow\`.
44318
+ - Responsibilities: Read this seat's agent-sourced measurables; Propose draft readings with cited sources; Escalate any number it cannot read confidently.
44319
+ - Default tools: Signal draft readings.
44320
+ - Safety boundary: reads only this seat's agent-sourced measurables and proposes each as a draft a human confirms; ambiguous or conflicting numbers escalate rather than guess, and it never confirms its own readings.
44321
+
44293
44322
  ## Create from a template (CLI or MCP)
44294
44323
 
44295
44324
  1. List templates: \`agent_template.list\` / \`rost_list_agent_templates\` with \`{}\` (scope: tenant).
@@ -44395,7 +44424,7 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
44395
44424
  order: 78,
44396
44425
  title: "AI model data handling guide",
44397
44426
  summary: "How {{brand}} cloud agents, local MCP sessions, runners, BYOK, and connected tools handle model-bound data.",
44398
- version: "2026-06-29.1",
44427
+ version: "2026-07-01.2",
44399
44428
  public: true,
44400
44429
  audiences: ["human", "cli", "mcp", "in_app_agent"],
44401
44430
  stages: ["company_setup", "staffing", "operating_rhythm"],
@@ -44482,7 +44511,9 @@ Cloud prompts should not include raw credentials, long exports, unrelated custom
44482
44511
 
44483
44512
  ## BYOK Anthropic
44484
44513
 
44485
- Tenant BYOK changes which provider account is used for eligible \`cloud\` model calls. It does not loosen tool permissions, human gates, tenant isolation, or audit requirements.
44514
+ Tenant BYOK changes which provider account is used for eligible \`cloud\` model calls. It does not loosen tool permissions, human gates, tenant isolation, or audit requirements. The same tenant-key resolution also covers the read-only advisory analyzers (friction assist, compass-alignment drift, and the coach draft-guide): when a tenant has saved its own Anthropic key those advisory calls use it and are metered on that key, otherwise they fall back to the platform key, and when neither is available they degrade to their deterministic summary rather than failing.
44515
+
44516
+ {{brand}} also includes a capped, app-provided Claude allowance for agent-assisted setup so a new company can complete onboarding before saving its own key. That allowance is shown in the onboarding provider card and in Settings as an approximate number of included setup tokens \u2014 never a dollar amount \u2014 and is enforced server-side on every platform-key call: an agent turn or an org-intake step reserves the allowance before the provider request and settles actual usage after. When the included tokens are used, agent-assisted steps stop before calling the provider and prompt you to add your own Anthropic API key, while non-AI setup steps stay available. Saving a tenant Anthropic key (BYOK) switches those calls to your provider account and does not draw down the included allowance.
44486
44517
 
44487
44518
  Store a tenant Anthropic key only through \`tenant.anthropic_key.save\` / \`rost_save_tenant_anthropic_key\` or the generic credential ingress path. The key is handled as a vault-backed credential: {{brand}} stores a vault reference and safe metadata, not the raw key in prompts, config, logs, or command output. A human approves the credential flow.
44488
44519
 
@@ -44805,7 +44836,7 @@ Agents should not teach EOS as EOS. They should use {{brand}}'s method. When a u
44805
44836
  order: 11,
44806
44837
  title: "Compass authoring guide",
44807
44838
  summary: "Field-by-field guidance for authoring a strong Compass document directly, with the full JSON contract and worked examples.",
44808
- version: "2026-06-30.1",
44839
+ version: "2026-07-01.1",
44809
44840
  public: true,
44810
44841
  audiences: ["cli", "mcp", "in_app_agent"],
44811
44842
  stages: ["company_setup"],
@@ -44841,7 +44872,7 @@ The Compass is the company's stated direction: its purpose, principles, and the
44841
44872
 
44842
44873
  ## How to derive a Compass from company context
44843
44874
 
44844
- Attach the company's real documents as references first (\`onboarding.attach_reference\`): read each meaningful doc \u2014 strategy notes, planning decks, founder transcripts, metrics \u2014 convert it to markdown, and attach it with a \`title\`, \`kind\`, and \`source\`. Then author the Compass from what those documents actually say, citing them through \`source_ids\`. Do not invent direction the company has not expressed; where the company has not decided something, record a gap instead of guessing.
44875
+ Attach the company's real documents as references first (\`onboarding.attach_reference\`): read each meaningful doc \u2014 strategy notes, planning decks, founder transcripts, metrics \u2014 convert it to markdown, and attach it with a \`title\`, \`kind\`, and \`source\`. Then author the Compass from what those documents actually say, citing them through \`source_ids\`. Do not invent direction the company has not expressed; where the company has not decided something, record a gap instead of guessing. In the web app these attached documents appear in the Compass **Context sources** panel (\`/compass#context-sources\`, also reachable via \`/compass/context-sources\`).
44845
44876
 
44846
44877
  ## Every Compass field is a "field" object
44847
44878
 
@@ -45972,6 +46003,7 @@ var COMMAND_MANIFEST = [
45972
46003
  { "id": "compass.approve_version", "namespace": "compass", "action": "approve_version", "title": "Approve Compass version", "description": "Activate a Compass version by supersession.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "draft_id", "flag": "draft-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Compass approval is a human decision and should anchor later Cascade commitments." },
45973
46004
  { "id": "compass.draft", "namespace": "compass", "action": "draft", "title": "Draft Compass", "description": "Create a Compass draft version.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": true, "help": "Submit a full Compass document; read the Compass authoring guide for the field-by-field contract and worked examples before drafting. Drafting is safe for an agent; approving a version is a human act.", "example": { "doc": { "schema_version": 1, "purpose": { "value": "Help small manufacturers ship quality products on time.", "citations": [], "confidence": 0.9, "placeholder": false }, "principles": [{ "value": "Bias to action; decide with the information we have.", "citations": [], "confidence": 0.9, "placeholder": false }, { "value": "Customers feel the quality of every order.", "citations": [], "confidence": 0.9, "placeholder": false }], "horizon_goals": { "three_year": { "title": { "value": "Reach $10M ARR with a 25-person team", "citations": [], "confidence": 0.9, "placeholder": false }, "definition_of_done": { "value": "ARR is at or above $10M and team headcount is 25 with no key-role gaps.", "citations": [], "confidence": 0.9, "placeholder": false }, "horizon": "three_year" }, "one_year": { "title": { "value": "Hit $3M ARR and 99% on-time delivery", "citations": [], "confidence": 0.9, "placeholder": false }, "definition_of_done": { "value": "Trailing-12-month ARR \u2265 $3M and on-time delivery rate \u2265 99% for two consecutive quarters.", "citations": [], "confidence": 0.9, "placeholder": false }, "horizon": "one_year" } }, "cycle_objectives": [{ "title": { "value": "Cut order-to-ship cycle time by 20%", "citations": [], "confidence": 0.9, "placeholder": false }, "definition_of_done": { "value": "Median order-to-ship time is 20% lower than the prior cycle baseline.", "citations": [], "confidence": 0.9, "placeholder": false }, "horizon": "cycle" }], "gaps": [], "follow_up_tasks": [], "source_ids": [] } } },
45974
46005
  { "id": "compass.get_current", "namespace": "compass", "action": "get_current", "title": "Get current Compass", "description": "Return the active and draft Compass versions plus the source documents that informed them.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the active and draft Compass before drafting goals or recommending direction changes." },
46006
+ { "id": "compass.import", "namespace": "compass", "action": "import", "title": "Import a ninety V/TO into a Compass draft", "description": "AI-draft a Compass from a ninety V/TO (values -> principles, 10/3/1-year -> horizons, Rocks -> cycle objectives). Produces a DRAFT a human confirms by supersession; never writes an accepted Compass.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }, { "name": "source_name", "flag": "source-name", "type": "string", "required": false }, { "name": "text", "flag": "text", "type": "string", "required": true }], "hasComplexInput": false, "help": "AI-draft a Compass from a ninety V/TO (values -> principles, 10/3/1-year -> horizons, Rocks -> cycle objectives). Lands a draft a human confirms; idempotent by document content." },
45975
46007
  { "id": "compass.list_gaps", "namespace": "compass", "action": "list_gaps", "title": "List Compass gaps", "description": "Return unanswered and answered Compass context gaps for the latest draft or active version.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List unanswered Compass gaps so a human can answer them before direction anchors graph or Cascade work." },
45976
46008
  { "id": "compass.reject_draft", "namespace": "compass", "action": "reject_draft", "title": "Reject Compass draft", "description": "Reject and remove a draft Compass version.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "draft_id", "flag": "draft-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Reject Compass drafts when the direction, language, or company intent is not ready to anchor implementation." },
45977
46009
  { "id": "compass.set", "namespace": "compass", "action": "set", "title": "Set Compass", "description": "Compatibility command for the DER-626 MCP Compass tool.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "draft_id", "flag": "draft-id", "type": "string", "required": false }, { "name": "approve", "flag": "approve", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Set Compass drafts in the product's own vocabulary and approve only with explicit human confirmation." },
@@ -46067,6 +46099,7 @@ var COMMAND_MANIFEST = [
46067
46099
  { "id": "signal.import", "namespace": "signal", "action": "import", "title": "Import Signals from CSV", "description": "Bulk-import measurable definitions and their historical readings from a parsed scorecard export (e.g. a ninety CSV). Owners are seat names resolved to seats; readings are human-confirmed. Idempotent \u2014 re-import upserts by (measurable, period, cadence). Re-importing a measurable at a different cadence is rejected, not overwritten.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Bulk-import measurables + historical readings from a parsed scorecard export (owners resolve to seats); idempotent, human-confirmed, re-import upserts by period." },
46068
46100
  { "id": "signal.list", "namespace": "signal", "action": "list", "title": "List Signals", "description": "List measurable definitions with their latest reading and on/off-track state. Seat-scoped callers see only their own seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "List Signals to find measurable ids and current on/off-track state before recording or correcting readings." },
46069
46101
  { "id": "signal.preview", "namespace": "signal", "action": "preview", "title": "Preview a signal source", "description": "Execute a candidate rest-for-signals recipe LIVE and read-only against an allowlisted HTTPS source, returning the extracted scalar and a short-lived preview_token required by signal.bind. Guarded (SSRF + restricted JSONPath); writes a signal_pull_log row. Never mutates.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "integration_id", "flag": "integration-id", "type": "string", "required": true }, { "name": "cadence", "flag": "cadence", "type": "enum", "required": true, "enumValues": ["daily", "weekly", "monthly", "quarterly", "annual"] }, { "name": "host_allowlist", "flag": "host-allowlist", "type": "array", "required": true, "itemType": "string" }], "hasComplexInput": true, "help": "Run a candidate recipe live but read-only against an allowlisted HTTPS source; returns the extracted value + a short-lived preview_token. Never mutates; the credential is resolved from the connection at execution." },
46102
+ { "id": "signal.report", "namespace": "signal", "action": "report", "title": "Report a Signal reading", "description": "A per-seat Signal agent proposes one draft reading for one of its OWN seat's agent-sourced measurables (a judgment/transform pull \u2014 reading a number off a document, reconciling messy data, estimating progress). The reading lands unconfirmed; a human confirms it with signal.confirm_reading. Refuses any measurable not owned by the acting seat or whose source is not 'agent'.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "value", "flag": "value", "type": "number", "required": true }, { "name": "period_start", "flag": "period-start", "type": "string", "required": false }, { "name": "note", "flag": "note", "type": "string", "required": false }, { "name": "confidence", "flag": "confidence", "type": "enum", "required": false, "enumValues": ["low", "medium", "high"] }], "hasComplexInput": false, "help": "A per-seat Signal agent proposes one draft reading for its own seat's agent-sourced measurable (a judgment/transform pull). The reading lands unconfirmed; a human confirms it with signal.confirm_reading. Refuses non-agent-sourced or other-seat measurables.", "example": { "measurable_id": "01900001-0001-7001-8001-000000000001", "value": 42, "note": "Read off the Q3 close PDF, page 2 \u2014 42 reconciled invoices this week.", "confidence": "high" } },
46070
46103
  { "id": "signup.provision_tenant", "namespace": "signup", "action": "provision_tenant", "title": "Create company", "description": "Provision a new company (tenant) for the authenticated CLI user with no web step.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "company_name", "flag": "company-name", "type": "string", "required": true }], "hasComplexInput": false, "help": "Create the company headlessly when the CLI session has no tenant yet; it becomes the user's active tenant so the rest of setup runs with no web step." },
46071
46104
  { "id": "skill.assign_to_seat", "namespace": "skill", "action": "assign_to_seat", "title": "Assign skill to seat", "description": "Propose or human-approve a published immutable skill version for a Seat after checking required and optional tool dependencies.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "slug", "flag": "slug", "type": "string", "required": false }, { "name": "skill_version_id", "flag": "skill-version-id", "type": "string", "required": false }, { "name": "status", "flag": "status", "type": "enum", "required": false, "enumValues": ["proposed", "approved"] }, { "name": "rationale", "flag": "rationale", "type": "string", "required": true }, { "name": "allow_blocked_proposal", "flag": "allow-blocked-proposal", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Propose or human-approve a published Skill for a Seat after dependency checks. Missing required tools block approval; optional tools are warnings only." },
46072
46105
  { "id": "skill.assigned.list", "namespace": "skill", "action": "assigned.list", "title": "List assigned skills", "description": "List approved skill assignments for a Seat, including immutable version, dependency status, rationale, and approval time. Seat-scoped callers can only read their own assignments.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "List approved Skills assigned to a Seat before loading instructions into a run. A seat-scoped token can only read its own assigned Skills." },