@rosthq/cli 0.7.88 → 0.7.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EA6Q3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -43679,6 +43679,131 @@ var errorLogSupersedeOutputSchema = external_exports.object({
|
|
|
43679
43679
|
disposition: external_exports.literal("superseded"),
|
|
43680
43680
|
resolved_at: isoDateTime4
|
|
43681
43681
|
}).strict();
|
|
43682
|
+
var staleCandidateConfidenceSchema = external_exports.enum(["low", "medium", "high"]);
|
|
43683
|
+
var staleCandidateEvidenceSchema = external_exports.array(external_exports.string());
|
|
43684
|
+
var staleCandidatesInputSchema = external_exports.object({
|
|
43685
|
+
stale_after_days: external_exports.number().int().min(1).max(365).default(14),
|
|
43686
|
+
limit: external_exports.number().int().min(1).max(200).default(50)
|
|
43687
|
+
}).strict();
|
|
43688
|
+
var errorLogStaleCandidateSchema = external_exports.object({
|
|
43689
|
+
error_log_id: uuidSchema14,
|
|
43690
|
+
source: external_exports.enum(["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"]),
|
|
43691
|
+
severity: external_exports.enum(["warning", "error", "critical"]),
|
|
43692
|
+
code: external_exports.string().nullable(),
|
|
43693
|
+
message: external_exports.string(),
|
|
43694
|
+
seat_id: uuidSchema14.nullable(),
|
|
43695
|
+
occurrence_count: external_exports.number().int(),
|
|
43696
|
+
last_seen_at: isoDateTime4,
|
|
43697
|
+
created_at: isoDateTime4,
|
|
43698
|
+
days_stale: external_exports.number().int(),
|
|
43699
|
+
linked_issue_id: uuidSchema14.nullable(),
|
|
43700
|
+
linked_issue_resolved: external_exports.boolean(),
|
|
43701
|
+
confidence: staleCandidateConfidenceSchema,
|
|
43702
|
+
evidence: staleCandidateEvidenceSchema
|
|
43703
|
+
}).strict();
|
|
43704
|
+
var errorLogStaleCandidatesOutputSchema = external_exports.object({
|
|
43705
|
+
candidates: external_exports.array(errorLogStaleCandidateSchema),
|
|
43706
|
+
total: external_exports.number().int().nonnegative()
|
|
43707
|
+
}).strict();
|
|
43708
|
+
var escalationStaleCandidateSchema = external_exports.object({
|
|
43709
|
+
escalation_id: uuidSchema14,
|
|
43710
|
+
seat_id: uuidSchema14,
|
|
43711
|
+
seat_name: external_exports.string(),
|
|
43712
|
+
reason: external_exports.string(),
|
|
43713
|
+
status: external_exports.literal("open"),
|
|
43714
|
+
created_at: isoDateTime4,
|
|
43715
|
+
updated_at: isoDateTime4,
|
|
43716
|
+
days_stale: external_exports.number().int(),
|
|
43717
|
+
referenced_refs: external_exports.array(external_exports.string()),
|
|
43718
|
+
confidence: staleCandidateConfidenceSchema,
|
|
43719
|
+
evidence: staleCandidateEvidenceSchema
|
|
43720
|
+
}).strict();
|
|
43721
|
+
var escalationStaleCandidatesOutputSchema = external_exports.object({
|
|
43722
|
+
candidates: external_exports.array(escalationStaleCandidateSchema),
|
|
43723
|
+
total: external_exports.number().int().nonnegative()
|
|
43724
|
+
}).strict();
|
|
43725
|
+
var frictionStaleCandidateSchema = external_exports.object({
|
|
43726
|
+
issue_id: uuidSchema14,
|
|
43727
|
+
summary: external_exports.string(),
|
|
43728
|
+
severity: external_exports.enum(["low", "med", "high", "critical"]),
|
|
43729
|
+
status: external_exports.enum(["open", "diagnosing"]),
|
|
43730
|
+
created_at: isoDateTime4,
|
|
43731
|
+
updated_at: isoDateTime4,
|
|
43732
|
+
days_stale: external_exports.number().int(),
|
|
43733
|
+
action_task_id: uuidSchema14.nullable(),
|
|
43734
|
+
action_task_status: external_exports.string().nullable(),
|
|
43735
|
+
action_task_done: external_exports.boolean(),
|
|
43736
|
+
confidence: staleCandidateConfidenceSchema,
|
|
43737
|
+
evidence: staleCandidateEvidenceSchema
|
|
43738
|
+
}).strict();
|
|
43739
|
+
var frictionStaleCandidatesOutputSchema = external_exports.object({
|
|
43740
|
+
candidates: external_exports.array(frictionStaleCandidateSchema),
|
|
43741
|
+
total: external_exports.number().int().nonnegative()
|
|
43742
|
+
}).strict();
|
|
43743
|
+
var errorLogBulkResolveInputSchema = external_exports.object({
|
|
43744
|
+
error_log_ids: external_exports.array(uuidSchema14).min(1).max(200),
|
|
43745
|
+
reason: external_exports.string().trim().min(1),
|
|
43746
|
+
disposition: external_exports.enum(["acknowledged", "resolved"]).default("resolved")
|
|
43747
|
+
}).strict();
|
|
43748
|
+
var errorLogBulkResolveSkippedSchema = external_exports.object({
|
|
43749
|
+
error_log_id: uuidSchema14,
|
|
43750
|
+
reason: external_exports.string()
|
|
43751
|
+
}).strict();
|
|
43752
|
+
var errorLogBulkResolveFailedSchema = external_exports.object({
|
|
43753
|
+
error_log_id: uuidSchema14,
|
|
43754
|
+
reason: external_exports.string()
|
|
43755
|
+
}).strict();
|
|
43756
|
+
var errorLogBulkResolveOutputSchema = external_exports.object({
|
|
43757
|
+
resolved: external_exports.array(uuidSchema14),
|
|
43758
|
+
skipped: external_exports.array(errorLogBulkResolveSkippedSchema),
|
|
43759
|
+
failed: external_exports.array(errorLogBulkResolveFailedSchema),
|
|
43760
|
+
resolved_count: external_exports.number().int().nonnegative(),
|
|
43761
|
+
skipped_count: external_exports.number().int().nonnegative(),
|
|
43762
|
+
failed_count: external_exports.number().int().nonnegative(),
|
|
43763
|
+
total: external_exports.number().int().nonnegative()
|
|
43764
|
+
}).strict();
|
|
43765
|
+
var escalationBulkResolveInputSchema = external_exports.object({
|
|
43766
|
+
escalation_ids: external_exports.array(uuidSchema14).min(1).max(200),
|
|
43767
|
+
reason: external_exports.string().trim().min(1)
|
|
43768
|
+
}).strict();
|
|
43769
|
+
var escalationBulkResolveSkippedSchema = external_exports.object({
|
|
43770
|
+
escalation_id: uuidSchema14,
|
|
43771
|
+
reason: external_exports.string()
|
|
43772
|
+
}).strict();
|
|
43773
|
+
var escalationBulkResolveFailedSchema = external_exports.object({
|
|
43774
|
+
escalation_id: uuidSchema14,
|
|
43775
|
+
reason: external_exports.string()
|
|
43776
|
+
}).strict();
|
|
43777
|
+
var escalationBulkResolveOutputSchema = external_exports.object({
|
|
43778
|
+
resolved: external_exports.array(uuidSchema14),
|
|
43779
|
+
skipped: external_exports.array(escalationBulkResolveSkippedSchema),
|
|
43780
|
+
failed: external_exports.array(escalationBulkResolveFailedSchema),
|
|
43781
|
+
resolved_count: external_exports.number().int().nonnegative(),
|
|
43782
|
+
skipped_count: external_exports.number().int().nonnegative(),
|
|
43783
|
+
failed_count: external_exports.number().int().nonnegative(),
|
|
43784
|
+
total: external_exports.number().int().nonnegative()
|
|
43785
|
+
}).strict();
|
|
43786
|
+
var frictionBulkResolveInputSchema = external_exports.object({
|
|
43787
|
+
issue_ids: external_exports.array(uuidSchema14).min(1).max(200),
|
|
43788
|
+
root_cause: external_exports.string().trim().min(1)
|
|
43789
|
+
}).strict();
|
|
43790
|
+
var frictionBulkResolveSkippedSchema = external_exports.object({
|
|
43791
|
+
issue_id: uuidSchema14,
|
|
43792
|
+
reason: external_exports.string()
|
|
43793
|
+
}).strict();
|
|
43794
|
+
var frictionBulkResolveFailedSchema = external_exports.object({
|
|
43795
|
+
issue_id: uuidSchema14,
|
|
43796
|
+
reason: external_exports.string()
|
|
43797
|
+
}).strict();
|
|
43798
|
+
var frictionBulkResolveOutputSchema = external_exports.object({
|
|
43799
|
+
resolved: external_exports.array(uuidSchema14),
|
|
43800
|
+
skipped: external_exports.array(frictionBulkResolveSkippedSchema),
|
|
43801
|
+
failed: external_exports.array(frictionBulkResolveFailedSchema),
|
|
43802
|
+
resolved_count: external_exports.number().int().nonnegative(),
|
|
43803
|
+
skipped_count: external_exports.number().int().nonnegative(),
|
|
43804
|
+
failed_count: external_exports.number().int().nonnegative(),
|
|
43805
|
+
total: external_exports.number().int().nonnegative()
|
|
43806
|
+
}).strict();
|
|
43682
43807
|
|
|
43683
43808
|
// ../../packages/protocol/src/working-files.ts
|
|
43684
43809
|
var WORKING_FILE_MAX_PATH_CHARS = 512;
|
|
@@ -48015,7 +48140,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48015
48140
|
order: 48,
|
|
48016
48141
|
title: "CLI and MCP installation guide",
|
|
48017
48142
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
48018
|
-
version: "2026-07-16.
|
|
48143
|
+
version: "2026-07-16.3",
|
|
48019
48144
|
public: true,
|
|
48020
48145
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48021
48146
|
stages: ["company_setup", "staffing"],
|
|
@@ -48660,6 +48785,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48660
48785
|
| \`rost_list_error_logs\` | \`error_log.list\` | List product error logs by seat, source, severity, and active/resolved state. | Tenant | Call with \`{"resolved":"active"}\` before acknowledging stale failures. |
|
|
48661
48786
|
| \`rost_resolve_error_log\` | \`error_log.resolve\` | Acknowledge or resolve an error log with a required human reason and optional task, issue, or PR link. | Tenant | Call with \`error_log_id\`, \`reason\`, and \`disposition\` \`acknowledged\` or \`resolved\`. |
|
|
48662
48787
|
| \`rost_supersede_error_log\` | \`error_log.supersede\` | Mark an older error log as superseded by a newer in-tenant error log. | Tenant | Call with \`error_log_id\`, \`new_error_log_id\`, and \`reason\`. |
|
|
48788
|
+
| \`rost_find_stale_error_logs\` | \`error_log.stale_candidates\` | List unresolved error logs that have gone flat (no new occurrences) and are candidates for bulk resolution, with a per-row confidence tier and evidence. Read-only. | Tenant | Call with optional \`stale_after_days\` and \`limit\`; feed the returned ids to \`error_log.bulk_resolve\`. |
|
|
48789
|
+
| \`rost_bulk_resolve_error_logs\` | \`error_log.bulk_resolve\` | Acknowledge or resolve a batch of stale error logs in one human-confirmed action with a required reason; per-item partial success, one resolution event each, already-resolved or missing ids skipped. | Tenant | Human decision; expect confirmation. Call with \`error_log_ids\`, \`reason\`, and \`disposition\`. |
|
|
48663
48790
|
| \`rost_list_integrations\` | \`integration.list\` | List connected integration metadata and latest health state. | Tenant | Call with \`{}\` or \`{"provider":"google"}\`; no secrets or vault refs are returned. |
|
|
48664
48791
|
| \`rost_check_integration_readiness\` | \`integration.readiness\` | Return the connector setup checklist: OAuth env/callback, tenant connection, scopes, latest test state, external verification/CASA, handler availability, and DER-coded next actions. | Tenant | Call with \`{"provider":"google"}\`; metadata only, no secrets or vault refs. |
|
|
48665
48792
|
| \`rost_get_integration_status\` | \`integration.status\` | Read one integration's metadata by provider or integration id. | Tenant | Call with \`{"provider":"google"}\` or \`{"integration_id":"<id>"}\`. |
|
|
@@ -48719,6 +48846,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48719
48846
|
| \`rost_update_friction_issue_status\` | \`friction.update_status\` | Move a non-terminal issue between open and diagnosing. | Seat or tenant-admin | Call with \`issue_id\` and \`status\`. |
|
|
48720
48847
|
| \`rost_resolve_friction_issue\` | \`friction.resolve\` | Resolve an issue with a root cause and remediation task. | Tenant | Human decision; expect confirmation. |
|
|
48721
48848
|
| \`rost_link_task_to_friction_issue\` | \`friction.link_task\` | Attach an existing task as an issue's action task. | Seat or tenant-admin | Call with \`issue_id\` and \`task_id\`. |
|
|
48849
|
+
| \`rost_find_stale_friction\` | \`friction.stale_candidates\` | List open or diagnosing Friction issues whose linked remediation task has already shipped, making them high-confidence bulk-resolution candidates, with per-row evidence. Read-only. | Tenant | Call with optional \`stale_after_days\` and \`limit\`; feed the returned ids to \`friction.bulk_resolve\`. |
|
|
48850
|
+
| \`rost_bulk_resolve_friction\` | \`friction.bulk_resolve\` | Resolve a batch of stale Friction issues in one human-confirmed action with a required root cause (already-fixed mode, no follow-up task); per-item partial success, one human decision each, already-resolved or missing ids skipped. | Tenant | Human decision; expect confirmation. Call with \`issue_ids\` and \`root_cause\`. |
|
|
48722
48851
|
| \`rost_create_task\` | \`task.create\` | Create a task (a commitment between seats). | Seat or tenant-admin | \`none\` \u2014 human-created tasks go live directly; ordinary agent-created tasks become draft proposals; bounded Trusted proposals become offered or, for same-Steward live agent seats, in progress. Agent/scheduled producers may pass an optional \`source_key\` so a repeat proposal is an idempotent no-op (\`already_filed:true\`, no duplicate task). |
|
|
48723
48852
|
| \`rost_update_task\` | \`task.update\` | Reschedule, reassign, or edit a non-terminal task. | Owner (tenant-admin) | Pass \`task_id\` plus at least one of \`due_on\`/\`owner_seat_id\`/\`title\`/\`description\`; terminal tasks reject. |
|
|
48724
48853
|
| \`rost_compile_sync_brief\` | \`sync.brief.compile\` | Compile the weekly Sync Brief (idempotent per period). | Tenant | Call with \`{}\`. |
|
|
@@ -48728,6 +48857,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
48728
48857
|
| \`rost_assign_sync_follow_up\` | \`sync.item.assign\` | Create a follow-up task from a Sync agenda item. | Tenant | Call with brief, owner seat, title, description. |
|
|
48729
48858
|
| \`rost_list_escalations\` | \`escalation.list\` | List Steward queue escalations (own steward chain for humans, own seat for agents). | Seat or tenant-admin | Call with \`{}\` or \`{"include_decided":true}\`. |
|
|
48730
48859
|
| \`rost_get_escalation\` | \`escalation.get\` | Read one escalation's secret-scrubbed evidence, recommendation, decision state, and \`replay_action_summary\` (the held tool + originating run a steward approval would replay \u2014 never the raw args). | Seat or tenant-admin | Call with \`{"id":"<escalation-id>"}\`. Resolve/reject are human-only and not exposed over MCP. |
|
|
48860
|
+
| \`rost_find_stale_escalations\` | \`escalation.stale_candidates\` | List aged open escalations on the caller's steward chain that still reference a concrete DER issue or PR, with a per-row confidence tier and evidence. Read-only. | Tenant | Call with optional \`stale_after_days\` and \`limit\`. The bulk override (\`escalation.bulk_resolve\`) is human-only and not exposed over MCP. |
|
|
48731
48861
|
| \`rost_check_compass_alignment\` | \`compass.alignment\` | Advisory drift check: scores whether cycle goals still ladder to the active vision and flags orphan/contradictory goals. Read-only \u2014 it never edits the Compass or any goal. | Tenant | Call with \`{}\`. |
|
|
48732
48862
|
| \`rost_team_health_score\` | \`team.health_score\` | Read the single rolled-up 0-100 team-health score (latest month) with its band and label. | Tenant | Call with \`{}\`. |
|
|
48733
48863
|
| \`rost_show_compass_as_markdown\` | \`compass.show_markdown\` | Render the current Compass and its open gaps as a clean markdown card for review. | Tenant | Call with \`{}\`. |
|
|
@@ -52095,21 +52225,27 @@ var COMMAND_MANIFEST = [
|
|
|
52095
52225
|
{ "id": "deliverable.create", "namespace": "deliverable", "action": "create", "title": "Create agent deliverable", "description": "Create an agent deliverable for the acting seat. The deliverable is scrubbed for secrets before storage.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "kind", "flag": "kind", "type": "enum", "required": false, "enumValues": ["brief", "work_evidence", "artifact", "report", "other"] }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "summary", "flag": "summary", "type": "string", "required": false }, { "name": "content", "flag": "content", "type": "string", "required": false }, { "name": "delivered_at", "flag": "delivered-at", "type": "string", "required": false }], "hasComplexInput": true, "help": "Create a scrubbed durable work output for the acting seat without making a durable company decision." },
|
|
52096
52226
|
{ "id": "deliverable.get", "namespace": "deliverable", "action": "get", "title": "Get agent deliverable", "description": "Return one agent deliverable by id for a seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Read one durable agent deliverable by id after checking seat-scoped access." },
|
|
52097
52227
|
{ "id": "deliverable.list", "namespace": "deliverable", "action": "list", "title": "List agent deliverables", "description": "Return agent deliverables for a seat, including derived entries from succeeded runs with outcome summaries.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "List durable agent deliverables for a seat, including explicit outputs and successful-run summaries." },
|
|
52228
|
+
{ "id": "error_log.bulk_resolve", "namespace": "error_log", "action": "bulk_resolve", "title": "Bulk resolve error logs", "description": "Acknowledge or resolve a batch of stale error logs in one human-confirmed action, with a required reason. Each error log is resolved independently (partial success) and writes its own resolution event; already-resolved or missing ids are skipped.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "error_log_ids", "flag": "error-log-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "disposition", "flag": "disposition", "type": "enum", "required": false, "enumValues": ["acknowledged", "resolved"] }], "hasComplexInput": false, "help": "Acknowledge or resolve a batch of stale error logs in one human-confirmed action with a required reason; each is resolved independently (partial success) and already-resolved or missing ids are skipped." },
|
|
52098
52229
|
{ "id": "error_log.list", "namespace": "error_log", "action": "list", "title": "List error logs", "description": "List tenant error logs with optional filtering by seat, source, severity, and resolved state.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "source", "flag": "source", "type": "enum", "required": false, "enumValues": ["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"] }, { "name": "severity", "flag": "severity", "type": "enum", "required": false, "enumValues": ["warning", "error", "critical"] }, { "name": "resolved", "flag": "resolved", "type": "enum", "required": false, "enumValues": ["active", "acknowledged", "resolved", "all"] }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List product-visible error logs by source, severity, seat, and active/resolved disposition before closing stale failures." },
|
|
52099
52230
|
{ "id": "error_log.resolve", "namespace": "error_log", "action": "resolve", "title": "Resolve error log", "description": "Acknowledge or resolve an error log with a required reason and optional linked task, Friction issue, or PR reference.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "error_log_id", "flag": "error-log-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "disposition", "flag": "disposition", "type": "enum", "required": false, "enumValues": ["acknowledged", "resolved"] }, { "name": "linked_task_id", "flag": "linked-task-id", "type": "string", "required": false }, { "name": "linked_issue_id", "flag": "linked-issue-id", "type": "string", "required": false }, { "name": "linked_pr_ref", "flag": "linked-pr-ref", "type": "string", "required": false }], "hasComplexInput": false, "help": "Acknowledge or resolve a stale error log with a required human reason and optional task, issue, or PR evidence." },
|
|
52231
|
+
{ "id": "error_log.stale_candidates", "namespace": "error_log", "action": "stale_candidates", "title": "Find stale error logs", "description": "List unresolved error logs that have gone flat (no new occurrences) and are candidates for bulk resolution, with a per-row confidence tier and human-readable evidence. Read-only \u2014 it never resolves anything.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "stale_after_days", "flag": "stale-after-days", "type": "integer", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List unresolved error logs that have gone flat, with a confidence tier and evidence, to triage a bulk close-the-loop pass. Read-only." },
|
|
52100
52232
|
{ "id": "error_log.supersede", "namespace": "error_log", "action": "supersede", "title": "Supersede error log", "description": "Mark an error log as superseded by a newer error log. Links the old error to the new one and records the reason.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "error_log_id", "flag": "error-log-id", "type": "string", "required": true }, { "name": "new_error_log_id", "flag": "new-error-log-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "linked_task_id", "flag": "linked-task-id", "type": "string", "required": false }, { "name": "linked_issue_id", "flag": "linked-issue-id", "type": "string", "required": false }, { "name": "linked_pr_ref", "flag": "linked-pr-ref", "type": "string", "required": false }], "hasComplexInput": false, "help": "Mark an older error log as superseded by a newer same-tenant error log while preserving history." },
|
|
52233
|
+
{ "id": "escalation.bulk_resolve", "namespace": "escalation", "action": "bulk_resolve", "title": "Bulk resolve escalations", "description": "Override (safely close) a batch of stale open escalations in one human-confirmed action, with a required reason. Each escalation is decided independently (partial success) and writes its own human decision; already-decided, not-routed, or missing ids are skipped. Agents cannot bulk-resolve.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": false, "fields": [{ "name": "escalation_ids", "flag": "escalation-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "reason", "flag": "reason", "type": "string", "required": true }], "hasComplexInput": false, "help": "Override (safely close) a batch of stale open escalations in one human-confirmed action; each records its own human decision and already-decided, not-routed, or missing ids are skipped. Agents cannot bulk-resolve." },
|
|
52101
52234
|
{ "id": "escalation.get", "namespace": "escalation", "action": "get", "title": "Get escalation", "description": "Read a single escalation the caller is allowed to see (own steward chain for humans, own seat for agents).", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Read one escalation's evidence and recommendation before a human resolves or rejects it." },
|
|
52102
52235
|
{ "id": "escalation.list", "namespace": "escalation", "action": "list", "title": "List escalations", "description": "List Steward queue escalations routed to the caller's steward chain (human) or raised by the caller's seat (agent).", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "include_decided", "flag": "include-decided", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "List Steward queue escalations (own chain for humans, own seat for agents) before resolving or routing them." },
|
|
52103
52236
|
{ "id": "escalation.raise", "namespace": "escalation", "action": "raise", "title": "Raise escalation", "description": "Emit an escalation event and open a Steward queue item for the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "reason", "flag": "reason", "type": "string", "required": true }, { "name": "charter_clause", "flag": "charter-clause", "type": "string", "required": true }, { "name": "recommended_action", "flag": "recommended-action", "type": "string", "required": false }], "hasComplexInput": true, "help": "Raise an escalation to the seat's Steward when a decision exceeds the seat's authority; humans decide." },
|
|
52104
52237
|
{ "id": "escalation.reject", "namespace": "escalation", "action": "reject", "title": "Reject escalation", "description": "Override an open escalation so the agent must not proceed. Writes a human decision; agents cannot reject.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "rationale", "flag": "rationale", "type": "string", "required": false }], "hasComplexInput": false, "help": "Reject (override) an escalation so the agent must not proceed; the decision records the human decider. Agents cannot reject." },
|
|
52105
52238
|
{ "id": "escalation.resolve", "namespace": "escalation", "action": "resolve", "title": "Resolve escalation", "description": "Approve an open escalation (or convert it to Friction). Writes a human decision; agents cannot resolve.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }, { "name": "action", "flag": "action", "type": "enum", "required": false, "enumValues": ["approve", "convert_to_issue"] }, { "name": "rationale", "flag": "rationale", "type": "string", "required": false }], "hasComplexInput": false, "help": "Resolve an escalation as a human Steward; the decision records decided_by as the approving human. Agents cannot resolve." },
|
|
52239
|
+
{ "id": "escalation.stale_candidates", "namespace": "escalation", "action": "stale_candidates", "title": "Find stale escalations", "description": "List open escalations routed to the caller's steward chain that have aged and still reference a concrete DER issue or PR, with a per-row confidence tier and evidence. Read-only \u2014 it never decides anything.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "stale_after_days", "flag": "stale-after-days", "type": "integer", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List aged open escalations in the caller's steward chain that still reference a concrete DER issue or PR \u2014 candidates for a bulk override. Read-only." },
|
|
52106
52240
|
{ "id": "friction.assist", "namespace": "friction", "action": "assist", "title": "Assist Friction issue", "description": "Advisory IDS assist for an issue: the most-similar prior resolved issues with their root causes and decisions, a recurring-pattern flag, and recommended options. Read-only \u2014 it never resolves the issue.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Advisory IDS assist: the most-similar prior resolved issues with their root causes and decisions, plus a recurring-pattern flag. Read-only \u2014 it never resolves the issue." },
|
|
52241
|
+
{ "id": "friction.bulk_resolve", "namespace": "friction", "action": "bulk_resolve", "title": "Bulk resolve friction", "description": "Resolve a batch of stale Friction issues in one human-confirmed action with a required root cause (already-fixed mode \u2014 no follow-up task). Each issue is resolved independently (partial success) and writes its own human decision; already-resolved or missing ids are skipped.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "issue_ids", "flag": "issue-ids", "type": "array", "required": true, "itemType": "string" }, { "name": "root_cause", "flag": "root-cause", "type": "string", "required": true }], "hasComplexInput": false, "help": "Resolve a batch of stale issues in one human-confirmed action with a required root cause (already-fixed mode); each records its own human decision and already-resolved or missing ids are skipped." },
|
|
52107
52242
|
{ "id": "friction.file_issue", "namespace": "friction", "action": "file_issue", "title": "File Friction issue", "description": "Emit an issue event and open a Friction issue raised by the acting seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "summary", "flag": "summary", "type": "string", "required": true }, { "name": "blocking_goal_id", "flag": "blocking-goal-id", "type": "string", "required": false }, { "name": "broken_measurable_id", "flag": "broken-measurable-id", "type": "string", "required": false }, { "name": "severity", "flag": "severity", "type": "enum", "required": true, "enumValues": ["low", "med", "high", "critical"] }, { "name": "source_key", "flag": "source-key", "type": "string", "required": false }], "hasComplexInput": true, "help": "File a Friction issue with evidence when a goal or measurable is blocked or broken." },
|
|
52108
52243
|
{ "id": "friction.get", "namespace": "friction", "action": "get", "title": "Get Friction issue", "description": "Get full detail for one Friction issue by id.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Get full detail for one Friction issue by id, including its root cause, action task, and resolution decision when present." },
|
|
52109
52244
|
{ "id": "friction.import", "namespace": "friction", "action": "import", "title": "Import Friction issues from a ninety Issues List", "description": "Bulk-import a ninety Issues List export into Friction. Owners are seat names resolved to seats; each issue is raised by the resolved seat and attributed to the importing human. Idempotent \u2014 re-importing the same export is a no-op, and an existing open issue with the same seat + summary is skipped.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Import a ninety Issues List export into Friction; owners resolve to seats, idempotent by file + seat/summary." },
|
|
52110
52245
|
{ "id": "friction.link_task", "namespace": "friction", "action": "link_task", "title": "Link task to Friction issue", "description": "Attach an existing tenant task as the action task for a non-terminal issue. Both ids must belong to the tenant.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "task_id", "flag": "task-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Attach an existing task as the action task for a non-terminal issue." },
|
|
52111
52246
|
{ "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." },
|
|
52112
52247
|
{ "id": "friction.resolve", "namespace": "friction", "action": "resolve", "title": "Resolve Friction issue", "description": 'Resolve an issue with a root cause. In the default "ids" resolution_mode this also creates a remediation follow-up task; "already_fixed" records only the root cause (no follow-up task). Always records a human decision (decided_by) in the same transaction.', "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "issue_id", "flag": "issue-id", "type": "string", "required": true }, { "name": "resolution_mode", "flag": "resolution-mode", "type": "enum", "required": false, "enumValues": ["ids", "already_fixed"] }, { "name": "root_cause", "flag": "root-cause", "type": "string", "required": true }, { "name": "owner_seat_id", "flag": "owner-seat-id", "type": "string", "required": false }, { "name": "task_title", "flag": "task-title", "type": "string", "required": false }, { "name": "task_description", "flag": "task-description", "type": "string", "required": false }, { "name": "done_by", "flag": "done-by", "type": "string", "required": false }, { "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." },
|
|
52248
|
+
{ "id": "friction.stale_candidates", "namespace": "friction", "action": "stale_candidates", "title": "Find stale friction", "description": "List open or diagnosing Friction issues whose linked remediation task has already shipped, making them high-confidence candidates for bulk resolution, with per-row evidence. Read-only \u2014 it never resolves anything.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "stale_after_days", "flag": "stale-after-days", "type": "integer", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List open or diagnosing issues whose remediation task already shipped \u2014 high-confidence candidates for a bulk close-the-loop pass. Read-only." },
|
|
52113
52249
|
{ "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." },
|
|
52114
52250
|
{ "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, requires a second_anchor (a prior closed period + expected value confirming the Signal matched the books), and auto-status starts OFF until a steward opts in with goal.set_auto_status. Binding a driver over an existing informs binding of the same Signal promotes it. 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": true, "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 with a second_anchor (a prior closed period + expected value confirming the Signal matched the books) to make it a childless leaf goal's status driver \u2014 this promotes an existing informs binding (auto-status starts OFF until a steward opts in)." },
|
|
52115
52251
|
{ "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." },
|