@rosthq/cli 0.7.66 → 0.7.68
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/generated/command-manifest.d.ts.map +1 -1
- package/dist/index.js +60 -15
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EA0O3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -40844,14 +40844,19 @@ var goalListAtRiskOutputSchema = external_exports.object({
|
|
|
40844
40844
|
}).strict();
|
|
40845
40845
|
var goalSignalStateSchema = external_exports.enum(["ok", "risk", "crit", "pending"]);
|
|
40846
40846
|
var goalStatusSourceSchema = external_exports.enum(["human", "agent", "rollup", "signal"]);
|
|
40847
|
+
var goalMeasurableRoleSchema = external_exports.enum(["drives_status", "informs"]);
|
|
40847
40848
|
var goalBindMeasurableInputSchema = external_exports.object({
|
|
40848
40849
|
goal_id: uuidSchema8,
|
|
40849
|
-
measurable_id: uuidSchema8
|
|
40850
|
+
measurable_id: uuidSchema8,
|
|
40851
|
+
// DER-1643: new operator bindings default to the conservative 'informs' role.
|
|
40852
|
+
// 'drives_status' is the deliberate leaf-only status driver (childless goal only,
|
|
40853
|
+
// one per goal) and stays human-confirmed.
|
|
40854
|
+
role: goalMeasurableRoleSchema.default("informs")
|
|
40850
40855
|
}).strict();
|
|
40851
40856
|
var goalBindMeasurableOutputSchema = external_exports.object({
|
|
40852
40857
|
goal_id: uuidSchema8,
|
|
40853
40858
|
measurable_id: uuidSchema8,
|
|
40854
|
-
role:
|
|
40859
|
+
role: goalMeasurableRoleSchema,
|
|
40855
40860
|
// Per-binding steward opt-in; a fresh binding is always created OFF.
|
|
40856
40861
|
auto_status_enabled: external_exports.boolean(),
|
|
40857
40862
|
// The current signal indicator + the status it would compute (surfaced even
|
|
@@ -40860,11 +40865,17 @@ var goalBindMeasurableOutputSchema = external_exports.object({
|
|
|
40860
40865
|
computed_status: goalStatusSchema.nullable(),
|
|
40861
40866
|
// True when a human status pin currently diverges from what the signal computes
|
|
40862
40867
|
// ("computed says X / you pinned Y").
|
|
40863
|
-
pinned_divergence: external_exports.boolean()
|
|
40868
|
+
pinned_divergence: external_exports.boolean(),
|
|
40869
|
+
// DER-1633: false for a fresh binding; true when this exact (goal, Signal) pair was
|
|
40870
|
+
// already bound — the command is an idempotent no-op (no new event, no duplicate
|
|
40871
|
+
// confirmation). Lets a caller distinguish "just bound" from "already bound".
|
|
40872
|
+
already_bound: external_exports.boolean()
|
|
40864
40873
|
}).strict();
|
|
40865
40874
|
var goalUnbindMeasurableInputSchema = external_exports.object({
|
|
40866
40875
|
goal_id: uuidSchema8,
|
|
40867
|
-
measurable_id: uuidSchema8
|
|
40876
|
+
measurable_id: uuidSchema8,
|
|
40877
|
+
// Which binding to remove; defaults to the status driver (the historical unbind).
|
|
40878
|
+
role: goalMeasurableRoleSchema.default("drives_status")
|
|
40868
40879
|
}).strict();
|
|
40869
40880
|
var goalUnbindMeasurableOutputSchema = external_exports.object({
|
|
40870
40881
|
goal_id: uuidSchema8,
|
|
@@ -40887,6 +40898,27 @@ var goalSetAutoStatusOutputSchema = external_exports.object({
|
|
|
40887
40898
|
status_source: goalStatusSourceSchema,
|
|
40888
40899
|
applied_from_signal: external_exports.boolean()
|
|
40889
40900
|
}).strict();
|
|
40901
|
+
var goalMeasurableBindingSchema = external_exports.object({
|
|
40902
|
+
measurable_id: uuidSchema8,
|
|
40903
|
+
name: external_exports.string(),
|
|
40904
|
+
unit: external_exports.string(),
|
|
40905
|
+
role: external_exports.literal("drives_status"),
|
|
40906
|
+
auto_status_enabled: external_exports.boolean(),
|
|
40907
|
+
// Current signal indicator + the status it would compute from the latest CONFIRMED
|
|
40908
|
+
// reading (null while awaiting a confirmed reading).
|
|
40909
|
+
signal_state: goalSignalStateSchema,
|
|
40910
|
+
computed_status: goalStatusSchema.nullable(),
|
|
40911
|
+
// The latest confirmed reading's value (null while awaiting one) — enough to render
|
|
40912
|
+
// "measured by <Signal>: <value> <unit>" instead of a bare "Not measured".
|
|
40913
|
+
last_reading_value: external_exports.number().nullable()
|
|
40914
|
+
}).strict();
|
|
40915
|
+
var goalListMeasurablesInputSchema = external_exports.object({
|
|
40916
|
+
goal_id: uuidSchema8
|
|
40917
|
+
}).strict();
|
|
40918
|
+
var goalListMeasurablesOutputSchema = external_exports.object({
|
|
40919
|
+
goal_id: uuidSchema8,
|
|
40920
|
+
bindings: external_exports.array(goalMeasurableBindingSchema)
|
|
40921
|
+
}).strict();
|
|
40890
40922
|
var issueStatusSchema = external_exports.enum(["open", "diagnosing", "resolved", "dropped"]);
|
|
40891
40923
|
var frictionListInputSchema = external_exports.object({
|
|
40892
40924
|
status: external_exports.enum(["open", "diagnosing", "resolved", "dropped", "active", "all"]).optional()
|
|
@@ -42297,7 +42329,7 @@ var fleetDigestAgentSchema = fleetOverviewRowSchema.extend({
|
|
|
42297
42329
|
spend_7d_usd: external_exports.string(),
|
|
42298
42330
|
spend_30d_usd: external_exports.string(),
|
|
42299
42331
|
cost_drift_percent: external_exports.number().int().nullable(),
|
|
42300
|
-
health_status: external_exports.enum(["needs_review", "stale", "setup_gap", "awaiting_data", "healthy"]),
|
|
42332
|
+
health_status: external_exports.enum(["needs_review", "stale", "setup_gap", "awaiting_data", "awaiting_data_overdue", "healthy"]),
|
|
42301
42333
|
health_reasons: external_exports.array(external_exports.string()),
|
|
42302
42334
|
recent_failed_runs: external_exports.array(fleetDigestRunSchema),
|
|
42303
42335
|
unresolved_errors: external_exports.array(fleetDigestErrorSchema),
|
|
@@ -44426,7 +44458,8 @@ var syncBriefExceptionSchema = external_exports.object({
|
|
|
44426
44458
|
latest_value: external_exports.number().nullable(),
|
|
44427
44459
|
target: external_exports.number(),
|
|
44428
44460
|
unit: external_exports.string(),
|
|
44429
|
-
period_start: dateSchema.nullable()
|
|
44461
|
+
period_start: dateSchema.nullable(),
|
|
44462
|
+
freshness: external_exports.enum(["fresh", "due", "stale", "awaiting_first_reading", "not_expected"]).optional()
|
|
44430
44463
|
}).strict();
|
|
44431
44464
|
var syncBriefGoalDeltaSchema = external_exports.object({
|
|
44432
44465
|
goal_id: uuidSchema15,
|
|
@@ -44704,10 +44737,20 @@ var statusRecordOutputSchema = external_exports.object({
|
|
|
44704
44737
|
event_id: uuidSchema17,
|
|
44705
44738
|
type: external_exports.literal("status")
|
|
44706
44739
|
}).strict();
|
|
44740
|
+
var duplicateFrictionCandidateSchema = external_exports.object({
|
|
44741
|
+
issue_id: uuidSchema17,
|
|
44742
|
+
summary: external_exports.string().min(1),
|
|
44743
|
+
// pg_trgm similarity in [0, 1]; higher is more similar.
|
|
44744
|
+
similarity: external_exports.number().min(0).max(1)
|
|
44745
|
+
}).strict();
|
|
44707
44746
|
var frictionFileIssueOutputSchema = external_exports.object({
|
|
44708
44747
|
event_id: uuidSchema17,
|
|
44709
44748
|
issue_id: uuidSchema17,
|
|
44710
|
-
type: external_exports.literal("issue")
|
|
44749
|
+
type: external_exports.literal("issue"),
|
|
44750
|
+
// DER-1522: likely-duplicate candidates detected before creation. Recommend,
|
|
44751
|
+
// never block — filing always proceeds; empty when nothing crossed the
|
|
44752
|
+
// conservative threshold (or the actor is not an agent).
|
|
44753
|
+
duplicate_candidates: external_exports.array(duplicateFrictionCandidateSchema).default([])
|
|
44711
44754
|
}).strict();
|
|
44712
44755
|
var workLogInputSchema = external_exports.object({
|
|
44713
44756
|
note: external_exports.string().min(1)
|
|
@@ -46218,7 +46261,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
46218
46261
|
order: 48,
|
|
46219
46262
|
title: "CLI and MCP installation guide",
|
|
46220
46263
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
46221
|
-
version: "2026-07-
|
|
46264
|
+
version: "2026-07-12.2",
|
|
46222
46265
|
public: true,
|
|
46223
46266
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
46224
46267
|
stages: ["company_setup", "staffing"],
|
|
@@ -46891,12 +46934,13 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
46891
46934
|
| \`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. |
|
|
46892
46935
|
| \`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\`). |
|
|
46893
46936
|
| \`rost_list_cascade_goals\` | \`goal.list\` | List Cascade goals, optionally by cycle or seat. | Seat or tenant-admin | Call with \`{}\` or \`{"cycle_id":"<id>"}\`. |
|
|
46937
|
+
| \`rost_list_a_cascade_goals_signals\` | \`goal.list_measurables\` | List the goal's status-driving Signal binding (role drives_status; 0-or-1 per goal) with its current indicator and latest confirmed reading. Driver-only \u2014 informs bindings (direct indicators) are not returned. Read-only. | Seat or tenant-admin | Call with \`{"goal_id":"<id>"}\`. |
|
|
46894
46938
|
| \`rost_create_cascade_goal\` | \`goal.create\` | Create a cycle goal under an objective. | Tenant | Call with cycle, seat, parent, title, definition of done. |
|
|
46895
46939
|
| \`rost_update_cascade_goal\` | \`goal.update\` | Update a goal's title or definition of done. | Tenant | Call with \`goal_id\` and the changed fields. |
|
|
46896
46940
|
| \`rost_set_cascade_goal_status\` | \`goal.set_status\` | Set a goal's status (on/off/done). | Seat or tenant-admin | Seats may set only their own goals. |
|
|
46897
46941
|
| \`rost_set_cascade_goal_progress\` | \`goal.set_progress\` | Report a goal's quantified progress (0-100). An agent's progress is a proposal a human approves before the goal moves. | Seat or tenant-admin | Seats set only their own goals; expect confirmation. |
|
|
46898
|
-
| \`rost_bind_a_signal_to_a_cascade_goal\` | \`goal.bind_measurable\` | Bind a measurable to a
|
|
46899
|
-
| \`rost_unbind_a_signal_from_a_cascade_goal\` | \`goal.unbind_measurable\` | Remove a goal\u2194measurable binding. | Seat or tenant-admin | Call with \`{"goal_id":"<id>","measurable_id":"<id>"}\`. |
|
|
46942
|
+
| \`rost_bind_a_signal_to_a_cascade_goal\` | \`goal.bind_measurable\` | Bind a measurable to a goal. Defaults to role \`informs\` \u2014 a conservative indicator allowed at any goal level (many per goal) that never changes status. Pass role \`drives_status\` to make it the goal's status driver (childless leaf only, one per goal). Human-gated. | Seat or tenant-admin | Call with \`{"goal_id":"<id>","measurable_id":"<id>"}\` (add \`"role":"drives_status"\` for the driver); expect confirmation. |
|
|
46943
|
+
| \`rost_unbind_a_signal_from_a_cascade_goal\` | \`goal.unbind_measurable\` | Remove a goal\u2194measurable binding (role defaults to \`drives_status\`; pass \`"role":"informs"\` to remove an indicator). | Seat or tenant-admin | Call with \`{"goal_id":"<id>","measurable_id":"<id>"}\`. |
|
|
46900
46944
|
| \`rost_toggle_signal_driven_auto_status\` | \`goal.set_auto_status\` | Per-goal steward opt-in (default OFF) that lets the bound measurable's latest confirmed reading compute the goal's status. Enabling applies the current signal immediately. Human-gated. | Seat or tenant-admin | Call with \`{"goal_id":"<id>","enabled":true}\`; expect confirmation. |
|
|
46901
46945
|
| \`rost_list_at_risk_cascade_goals\` | \`goal.list_at_risk\` | List goals projected off pace (at-risk or projected-miss) with days behind pace. Read-only; status-only goals excluded. | Tenant | Call with \`{}\`. |
|
|
46902
46946
|
| \`rost_reparent_cascade_goal\` | \`goal.reparent\` | Move a goal under a new parent. | Tenant | Authority change; expect confirmation. |
|
|
@@ -47463,7 +47507,7 @@ Retrieve the narrowest relevant guide before making a setup recommendation. Pref
|
|
|
47463
47507
|
order: 60,
|
|
47464
47508
|
title: "Cascade guide",
|
|
47465
47509
|
summary: "How to connect company goals to seat-level work without turning {{brand}} into a project-management tool.",
|
|
47466
|
-
version: "2026-07-
|
|
47510
|
+
version: "2026-07-12.1",
|
|
47467
47511
|
public: true,
|
|
47468
47512
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47469
47513
|
stages: ["operating_rhythm"],
|
|
@@ -47541,9 +47585,9 @@ On human and function seat pages, goal visibility includes both direct goals and
|
|
|
47541
47585
|
|
|
47542
47586
|
## Drive a goal's status from a Signal
|
|
47543
47587
|
|
|
47544
|
-
A
|
|
47588
|
+
A Signal can be linked to a goal for visibility, or set to compute its status. Bind a Signal with \`goal.bind_measurable\`. By default the binding is **informative** (role \`informs\`): it appears as a direct indicator on the goal, is allowed at any level (company objective, parent, or leaf), can be one of many on the same goal, and never changes the goal's status. To let a Signal **drive** a leaf goal's status instead, bind it with \`--role drives_status\` (the goal must be a childless seat goal or milestone \u2014 a company objective or a goal with children rolls up from its children, so a driver there is rejected). A goal can have at most one driving Signal, and choosing a driver is a deliberate, human-gated act.
|
|
47545
47589
|
|
|
47546
|
-
|
|
47590
|
+
A \`drives_status\` binding starts as an indicator only: nothing changes until a steward opts in with \`goal.set_auto_status --enabled true\`. Once opted in, the goal's status is computed from the measurable's latest confirmed reading against its target and direction \u2014 on target reads on-track, below target reads off-track. Only confirmed readings drive status; an agent's draft reading never auto-flips a goal. A human who sets the status by hand pins it, and that pin wins over the computed value until they change it or re-run \`goal.set_auto_status\`. Remove a binding with \`goal.unbind_measurable\`; the goal keeps its last status. Until a binding is opted in, an off-track Signal never raises an at-risk alert on its own.
|
|
47547
47591
|
|
|
47548
47592
|
## What does not belong
|
|
47549
47593
|
|
|
@@ -50146,16 +50190,17 @@ var COMMAND_MANIFEST = [
|
|
|
50146
50190
|
{ "id": "friction.list", "namespace": "friction", "action": "list", "title": "List Friction issues", "description": "List Friction issues ranked by status, impact, and severity. Defaults to active (open + diagnosing).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "status", "flag": "status", "type": "enum", "required": false, "enumValues": ["open", "diagnosing", "resolved", "dropped", "active", "all"] }], "hasComplexInput": false, "help": "List Friction issues ranked by impact and severity to find the issue id before updating or resolving it." },
|
|
50147
50191
|
{ "id": "friction.resolve", "namespace": "friction", "action": "resolve", "title": "Resolve Friction issue", "description": "Resolve an issue with a root cause and remediation task. This records a human decision (decided_by) and creates the follow-up task in one transaction.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "root_cause", "flag": "root-cause", "type": "string", "required": true }, { "name": "owner_seat_id", "flag": "owner-seat-id", "type": "string", "required": true }, { "name": "task_title", "flag": "task-title", "type": "string", "required": true }, { "name": "task_description", "flag": "task-description", "type": "string", "required": true }, { "name": "done_by", "flag": "done-by", "type": "string", "required": true }, { "name": "resolving_seat_id", "flag": "resolving-seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Resolve an issue with a root cause and remediation task; resolution is a human decision." },
|
|
50148
50192
|
{ "id": "friction.update_status", "namespace": "friction", "action": "update_status", "title": "Update Friction issue status", "description": "Move a non-terminal issue between open and diagnosing. Terminal issues (resolved/dropped) cannot be reopened here.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "status", "flag": "status", "type": "enum", "required": true, "enumValues": ["open", "diagnosing"] }], "hasComplexInput": false, "help": "Move a non-terminal issue between open and diagnosing while it is being worked." },
|
|
50149
|
-
{ "id": "goal.bind_measurable", "namespace": "goal", "action": "bind_measurable", "title": "Bind a Signal to a Cascade goal", "description": "Bind a measurable to a goal
|
|
50193
|
+
{ "id": "goal.bind_measurable", "namespace": "goal", "action": "bind_measurable", "title": "Bind a Signal to a Cascade goal", "description": "Bind a measurable to a goal. Role defaults to 'informs' \u2014 a conservative informative indicator allowed at any goal level (many per goal) that never changes goal status. Role 'drives_status' makes it the goal's status driver: allowed only on a childless seat goal or milestone, at most one per goal, and auto-status starts OFF until a steward opts in with goal.set_auto_status. Binding is human-gated.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "role", "flag": "role", "type": "enum", "required": false, "enumValues": ["drives_status", "informs"] }], "hasComplexInput": false, "help": "Bind a Signal to a goal. Defaults to role informs (a conservative indicator at any level that never changes status); pass role drives_status to make it a childless leaf goal's status driver (auto-status starts OFF until a steward opts in)." },
|
|
50150
50194
|
{ "id": "goal.create", "namespace": "goal", "action": "create", "title": "Create Cascade goal", "description": "Create a cycle goal under an existing objective. The parent chain must terminate at a Compass objective in the same cycle (enforced server-side).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "cycle_id", "flag": "cycle-id", "type": "string", "required": true }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "parent_goal_id", "flag": "parent-goal-id", "type": "string", "required": true }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "definition_of_done", "flag": "definition-of-done", "type": "string", "required": true }, { "name": "status", "flag": "status", "type": "enum", "required": false, "enumValues": ["on", "off"] }], "hasComplexInput": false, "help": "Create cycle goals under an existing objective; the parent chain must terminate at a Compass objective." },
|
|
50151
50195
|
{ "id": "goal.drop", "namespace": "goal", "action": "drop", "title": "Drop Cascade goal", "description": "Drop (retire) a goal by setting status to dropped. Dropping retires the commitment, so it is human-gated. The row is retained for audit (never deleted).", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Drop a goal to retire a commitment; the goal is retained for audit and dropping is human-gated." },
|
|
50152
50196
|
{ "id": "goal.list", "namespace": "goal", "action": "list", "title": "List Cascade goals", "description": "List goals in the tenant, optionally filtered by cycle or seat. Seat-scoped callers see only their own seat's goals.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "cycle_id", "flag": "cycle-id", "type": "string", "required": false }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "List Cascade goals to find goal ids, parentage, and seat ownership before mutating the tree." },
|
|
50153
50197
|
{ "id": "goal.list_at_risk", "namespace": "goal", "action": "list_at_risk", "title": "List at-risk Cascade goals", "description": "List goals projected to miss their cycle pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals (no progress) are excluded.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List goals projected off pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals are excluded." },
|
|
50198
|
+
{ "id": "goal.list_measurables", "namespace": "goal", "action": "list_measurables", "title": "List a Cascade goal's Signals", "description": "List the status-driver Signal bound to a Cascade goal (role drives_status), with its current signal indicator and latest confirmed reading. Read-only. Informative (informs) bindings appear in the goal-detail panel's Direct indicators, not here.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "List the Signals bound to a goal (role drives_status) with each one's current indicator and latest confirmed reading." },
|
|
50154
50199
|
{ "id": "goal.reparent", "namespace": "goal", "action": "reparent", "title": "Reparent Cascade goal", "description": "Move a goal under a different parent. Reparenting changes accountable structure, so it is human-gated. One-root and no-cycle are enforced server-side.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "parent_goal_id", "flag": "parent-goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Reparent a goal only when it clarifies accountable structure; reparenting changes authority and is human-gated." },
|
|
50155
50200
|
{ "id": "goal.set_auto_status", "namespace": "goal", "action": "set_auto_status", "title": "Toggle Signal-driven auto-status", "description": "Opt a goal's drives_status binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the goal's status; a human status pin still wins. Human-gated opt-in.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "enabled", "flag": "enabled", "type": "boolean", "required": true }], "hasComplexInput": false, "help": "Opt a goal's Signal binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the status; a human status pin still wins." },
|
|
50156
50201
|
{ "id": "goal.set_progress", "namespace": "goal", "action": "set_progress", "title": "Set Cascade goal progress", "description": "Set a goal's quantified progress (0\u2013100). Seat-scoped callers may set progress only for their own goals. An agent's progress is a proposal a human approves before it lands.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "progress_pct", "flag": "progress-pct", "type": "integer", "required": true }], "hasComplexInput": false, "help": "Report a goal's quantified progress (0-100). An agent's progress is a proposal a human approves before the goal moves." },
|
|
50157
50202
|
{ "id": "goal.set_status", "namespace": "goal", "action": "set_status", "title": "Set Cascade goal status", "description": "Set a goal's status (on/off/done). Seat-scoped callers may set status only for their own goals.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "status", "flag": "status", "type": "enum", "required": true, "enumValues": ["on", "off", "done"] }], "hasComplexInput": false, "help": "Set a goal's status; seat tokens may only set status for their own goals." },
|
|
50158
|
-
{ "id": "goal.unbind_measurable", "namespace": "goal", "action": "unbind_measurable", "title": "Unbind a Signal from a Cascade goal", "description": "Remove a measurable's
|
|
50203
|
+
{ "id": "goal.unbind_measurable", "namespace": "goal", "action": "unbind_measurable", "title": "Unbind a Signal from a Cascade goal", "description": "Remove a measurable's binding from a goal. Role defaults to 'drives_status'; pass role 'informs' to remove an informative indicator. Removing a driver keeps the goal's last status; unbinding only stops future signal-driven updates.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "role", "flag": "role", "type": "enum", "required": false, "enumValues": ["drives_status", "informs"] }], "hasComplexInput": false, "help": "Remove a Signal's drives_status binding from a goal; the goal keeps its last status and stops receiving signal-driven updates." },
|
|
50159
50204
|
{ "id": "goal.update", "namespace": "goal", "action": "update", "title": "Update Cascade goal", "description": "Update a goal's title or definition of done. Topology (parent/seat) and status have dedicated commands.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "title", "flag": "title", "type": "string", "required": false }, { "name": "definition_of_done", "flag": "definition-of-done", "type": "string", "required": false }], "hasComplexInput": false, "help": "Update a goal's title or definition of done; topology and status have dedicated commands." },
|
|
50160
50205
|
{ "id": "graph.get", "namespace": "graph", "action": "get", "title": "Get Responsibility Graph", "description": "Return the tenant's Responsibility Graph: seats, edges, root, occupants, and status rollups.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the Responsibility Graph to discover seat ids, parentage, occupants, and status before mutating or routing work." },
|
|
50161
50206
|
{ "id": "integration.connect_rest", "namespace": "integration", "action": "connect_rest", "title": "Connect REST integration", "description": "Create or rotate the tenant Baserow REST integration using a vault-backed secret. Stores endpoint metadata only; never returns secrets or vault refs.", "requiredScope": "tenant_admin", "confirmation": "credential_flow", "exposeOverMcp": false, "fields": [{ "name": "provider", "flag": "provider", "type": "enum", "required": true, "enumValues": ["baserow"] }, { "name": "endpoint_url", "flag": "endpoint-url", "type": "string", "required": true }, { "name": "scope_description", "flag": "scope-description", "type": "string", "required": true }, { "name": "secret_name", "flag": "secret-name", "type": "string", "required": true }, { "name": "account_label", "flag": "account-label", "type": "string", "required": false }], "hasComplexInput": false, "secretBlocked": true, "help": "Create or rotate a vault-backed Baserow REST integration for Signal pulls. Use the credential flow; never pass secrets through CLI argv." },
|