@rosthq/cli 0.7.99 → 0.7.101
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 +218 -88
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -44318,6 +44318,14 @@ var syncBriefScopeGetOutputSchema = external_exports.object({
|
|
|
44318
44318
|
var syncBriefScopeUpdateInputSchema = external_exports.object({
|
|
44319
44319
|
sync_brief_scope: syncBriefScopeSchema
|
|
44320
44320
|
}).strict();
|
|
44321
|
+
var memberVisibilityModeSchema = external_exports.enum(["all", "seat_subtree"]);
|
|
44322
|
+
var memberVisibilityGetInputSchema = external_exports.object({}).strict();
|
|
44323
|
+
var memberVisibilityGetOutputSchema = external_exports.object({
|
|
44324
|
+
member_visibility_mode: memberVisibilityModeSchema
|
|
44325
|
+
}).strict();
|
|
44326
|
+
var memberVisibilityUpdateInputSchema = external_exports.object({
|
|
44327
|
+
member_visibility_mode: memberVisibilityModeSchema
|
|
44328
|
+
}).strict();
|
|
44321
44329
|
var productLearningModeSchema = external_exports.enum(["enabled", "disabled", "enterprise_contract"]);
|
|
44322
44330
|
var tenantProductLearningPolicySchema = external_exports.object({
|
|
44323
44331
|
mode: productLearningModeSchema,
|
|
@@ -44399,6 +44407,7 @@ var settingsGetOutputSchema = external_exports.object({
|
|
|
44399
44407
|
has_anthropic_key: external_exports.boolean(),
|
|
44400
44408
|
notifications: notificationSettingsSchema,
|
|
44401
44409
|
sync_brief_scope: syncBriefScopeSchema,
|
|
44410
|
+
member_visibility_mode: memberVisibilityModeSchema,
|
|
44402
44411
|
product_learning: tenantProductLearningPolicySchema,
|
|
44403
44412
|
integrations: external_exports.array(integrationSummarySchema)
|
|
44404
44413
|
}).strict();
|
|
@@ -44767,6 +44776,28 @@ var signalReadingProposalSchema = external_exports.object({
|
|
|
44767
44776
|
}
|
|
44768
44777
|
});
|
|
44769
44778
|
|
|
44779
|
+
// ../../packages/protocol/src/signal-draft-first-readings.ts
|
|
44780
|
+
var uuidSchema17 = external_exports.string().uuid();
|
|
44781
|
+
var signalDraftFirstReadingsInputSchema = external_exports.object({
|
|
44782
|
+
measurable_id: uuidSchema17
|
|
44783
|
+
}).strict();
|
|
44784
|
+
var signalDraftFirstReadingsOutputSchema = external_exports.object({
|
|
44785
|
+
measurable_id: uuidSchema17,
|
|
44786
|
+
// The live pull outcome, surfaced verbatim so the UI can explain a no-datapoint
|
|
44787
|
+
// result honestly ("source polled, nothing came back") rather than silently.
|
|
44788
|
+
outcome: external_exports.enum(["ok", "blocked", "error"]),
|
|
44789
|
+
// 0 or 1: a single-value recipe pull yields at most one current-period reading.
|
|
44790
|
+
// Never fabricates back-dated history the source cannot actually produce.
|
|
44791
|
+
drafted: external_exports.number().int().min(0).max(1),
|
|
44792
|
+
// Present only when drafted === 1.
|
|
44793
|
+
reading_id: uuidSchema17.optional(),
|
|
44794
|
+
value: external_exports.number().finite().optional(),
|
|
44795
|
+
period_start: external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/, "expected YYYY-MM-DD").optional(),
|
|
44796
|
+
// Present only when drafted === 0: a short, non-secret machine reason
|
|
44797
|
+
// (e.g. "non_numeric", "blocked", "error") the UI maps to guidance.
|
|
44798
|
+
reason: external_exports.string().min(1).max(200).optional()
|
|
44799
|
+
}).strict();
|
|
44800
|
+
|
|
44770
44801
|
// ../../packages/protocol/src/secret-broker.ts
|
|
44771
44802
|
var uuid10 = external_exports.string().uuid();
|
|
44772
44803
|
var VAULT_REF_PROVIDER = /^(?:infisical|doppler|local-dev):\/\/\S+$/;
|
|
@@ -46321,7 +46352,7 @@ var softwareFactoryBudgetExhaustedEventSchema = external_exports.object({
|
|
|
46321
46352
|
}).strict();
|
|
46322
46353
|
|
|
46323
46354
|
// ../../packages/protocol/src/sync-brief.ts
|
|
46324
|
-
var
|
|
46355
|
+
var uuidSchema18 = external_exports.string().uuid();
|
|
46325
46356
|
var dateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
|
|
46326
46357
|
var syncBriefGapSchema = external_exports.object({
|
|
46327
46358
|
section: external_exports.enum(["exceptions", "goal_deltas", "task_review", "friction", "agent_activity"]),
|
|
@@ -46334,8 +46365,8 @@ var sectionSchema = (itemSchema) => external_exports.object({
|
|
|
46334
46365
|
flagged_gaps: external_exports.array(syncBriefGapSchema)
|
|
46335
46366
|
}).strict();
|
|
46336
46367
|
var syncBriefExceptionSchema = external_exports.object({
|
|
46337
|
-
measurable_id:
|
|
46338
|
-
seat_id:
|
|
46368
|
+
measurable_id: uuidSchema18,
|
|
46369
|
+
seat_id: uuidSchema18,
|
|
46339
46370
|
seat_name: external_exports.string().min(1),
|
|
46340
46371
|
name: external_exports.string().min(1),
|
|
46341
46372
|
state: external_exports.enum(["risk", "crit", "pending"]),
|
|
@@ -46346,8 +46377,8 @@ var syncBriefExceptionSchema = external_exports.object({
|
|
|
46346
46377
|
freshness: external_exports.enum(["fresh", "due", "stale", "awaiting_first_reading", "not_expected"]).optional()
|
|
46347
46378
|
}).strict();
|
|
46348
46379
|
var syncBriefGoalDeltaSchema = external_exports.object({
|
|
46349
|
-
goal_id:
|
|
46350
|
-
seat_id:
|
|
46380
|
+
goal_id: uuidSchema18,
|
|
46381
|
+
seat_id: uuidSchema18.nullable(),
|
|
46351
46382
|
seat_name: external_exports.string().nullable(),
|
|
46352
46383
|
title: external_exports.string().min(1),
|
|
46353
46384
|
status: external_exports.enum(["on", "off", "done", "dropped"]),
|
|
@@ -46361,22 +46392,22 @@ var syncBriefTaskReviewSchema = external_exports.object({
|
|
|
46361
46392
|
previous_done_rate: external_exports.number().min(0).max(1),
|
|
46362
46393
|
delta: external_exports.number().min(-1).max(1),
|
|
46363
46394
|
stalled: external_exports.array(external_exports.object({
|
|
46364
|
-
task_id:
|
|
46365
|
-
owner_seat_id:
|
|
46395
|
+
task_id: uuidSchema18,
|
|
46396
|
+
owner_seat_id: uuidSchema18,
|
|
46366
46397
|
owner_seat_name: external_exports.string().min(1),
|
|
46367
46398
|
title: external_exports.string().min(1),
|
|
46368
46399
|
due_on: dateSchema,
|
|
46369
46400
|
stalled_at: external_exports.string().nullable()
|
|
46370
46401
|
}).strict()),
|
|
46371
46402
|
overdue_by_owner: external_exports.array(external_exports.object({
|
|
46372
|
-
owner_seat_id:
|
|
46403
|
+
owner_seat_id: uuidSchema18,
|
|
46373
46404
|
owner_seat_name: external_exports.string().min(1),
|
|
46374
46405
|
overdue_count: external_exports.number().int().nonnegative()
|
|
46375
46406
|
}).strict())
|
|
46376
46407
|
}).strict();
|
|
46377
46408
|
var syncBriefIssueSchema = external_exports.object({
|
|
46378
|
-
issue_id:
|
|
46379
|
-
raised_by_seat_id:
|
|
46409
|
+
issue_id: uuidSchema18,
|
|
46410
|
+
raised_by_seat_id: uuidSchema18,
|
|
46380
46411
|
raised_by_seat_name: external_exports.string().min(1),
|
|
46381
46412
|
summary: external_exports.string().min(1),
|
|
46382
46413
|
severity: external_exports.enum(["low", "med", "high", "critical"]),
|
|
@@ -46393,15 +46424,15 @@ var syncBriefActionItemTrendSchema = external_exports.object({
|
|
|
46393
46424
|
has_prior: external_exports.boolean()
|
|
46394
46425
|
}).strict();
|
|
46395
46426
|
var syncBriefCascadeAtRiskSchema = external_exports.object({
|
|
46396
|
-
goal_id:
|
|
46427
|
+
goal_id: uuidSchema18,
|
|
46397
46428
|
title: external_exports.string().min(1),
|
|
46398
|
-
seat_id:
|
|
46429
|
+
seat_id: uuidSchema18.nullable(),
|
|
46399
46430
|
progress_pct: external_exports.number().int().min(0).max(100),
|
|
46400
46431
|
classification: external_exports.enum(["at_risk", "projected_miss"]),
|
|
46401
46432
|
behind_days: external_exports.number().nullable()
|
|
46402
46433
|
}).strict();
|
|
46403
46434
|
var syncBriefRunHeartbeatStalledSeatSchema = external_exports.object({
|
|
46404
|
-
seat_id:
|
|
46435
|
+
seat_id: uuidSchema18,
|
|
46405
46436
|
current_phase: external_exports.string().nullable(),
|
|
46406
46437
|
stalled_run_count: external_exports.number().int().nonnegative()
|
|
46407
46438
|
}).strict();
|
|
@@ -46414,8 +46445,8 @@ var syncBriefRunHeartbeatRollupSchema = external_exports.object({
|
|
|
46414
46445
|
stalled_seats: external_exports.array(syncBriefRunHeartbeatStalledSeatSchema)
|
|
46415
46446
|
}).strict();
|
|
46416
46447
|
var syncBriefAgentActivitySchema = external_exports.object({
|
|
46417
|
-
agent_id:
|
|
46418
|
-
seat_id:
|
|
46448
|
+
agent_id: uuidSchema18,
|
|
46449
|
+
seat_id: uuidSchema18,
|
|
46419
46450
|
seat_name: external_exports.string().min(1),
|
|
46420
46451
|
run_count: external_exports.number().int().nonnegative(),
|
|
46421
46452
|
failed_run_count: external_exports.number().int().nonnegative(),
|
|
@@ -46428,11 +46459,11 @@ var syncBriefAgentActivitySchema = external_exports.object({
|
|
|
46428
46459
|
var syncBriefSchema = external_exports.object({
|
|
46429
46460
|
schema_version: external_exports.literal(1),
|
|
46430
46461
|
tenant: external_exports.object({
|
|
46431
|
-
id:
|
|
46462
|
+
id: uuidSchema18,
|
|
46432
46463
|
name: external_exports.string().min(1)
|
|
46433
46464
|
}).strict(),
|
|
46434
46465
|
cluster: external_exports.object({
|
|
46435
|
-
id:
|
|
46466
|
+
id: uuidSchema18,
|
|
46436
46467
|
name: external_exports.string().min(1)
|
|
46437
46468
|
}).strict().nullable(),
|
|
46438
46469
|
period: external_exports.object({
|
|
@@ -46549,11 +46580,11 @@ var usageSnapshotOutputSchema = external_exports.object({
|
|
|
46549
46580
|
}).strict();
|
|
46550
46581
|
|
|
46551
46582
|
// ../../packages/protocol/src/event-payloads.ts
|
|
46552
|
-
var
|
|
46583
|
+
var uuidSchema19 = external_exports.string().uuid();
|
|
46553
46584
|
var evidenceSchema = external_exports.array(external_exports.unknown());
|
|
46554
46585
|
var statusEventPayloadSchema = external_exports.object({
|
|
46555
46586
|
measurables: external_exports.array(external_exports.object({
|
|
46556
|
-
id:
|
|
46587
|
+
id: uuidSchema19,
|
|
46557
46588
|
value: external_exports.number().finite(),
|
|
46558
46589
|
// DER-1045: an optional, non-secret citation for an agent-proposed reading
|
|
46559
46590
|
// (signal.report) — where the number came from + the agent's confidence.
|
|
@@ -46582,13 +46613,13 @@ var statusEventPayloadSchema = external_exports.object({
|
|
|
46582
46613
|
}).strict().optional()
|
|
46583
46614
|
}).strict()).optional(),
|
|
46584
46615
|
goals: external_exports.array(external_exports.object({
|
|
46585
|
-
id:
|
|
46616
|
+
id: uuidSchema19,
|
|
46586
46617
|
state: external_exports.enum(["on", "off"]),
|
|
46587
46618
|
note: external_exports.string().min(1).optional()
|
|
46588
46619
|
}).strict()).optional()
|
|
46589
46620
|
}).strict();
|
|
46590
46621
|
var escalationCategorySchema = external_exports.enum(["safety_refusal"]);
|
|
46591
|
-
var
|
|
46622
|
+
var escalationRaiseInputSchema = external_exports.object({
|
|
46592
46623
|
reason: external_exports.string().min(1),
|
|
46593
46624
|
charter_clause: external_exports.string().min(1),
|
|
46594
46625
|
evidence: evidenceSchema,
|
|
@@ -46598,14 +46629,105 @@ var escalationEventPayloadSchema = external_exports.object({
|
|
|
46598
46629
|
// explicitly escalated with a category (today: a safety refusal).
|
|
46599
46630
|
category: escalationCategorySchema.optional()
|
|
46600
46631
|
}).strict();
|
|
46632
|
+
var escalationEventPayloadSchema = escalationRaiseInputSchema.extend({
|
|
46633
|
+
run_id: external_exports.string().uuid().optional()
|
|
46634
|
+
}).strict();
|
|
46601
46635
|
var issueEventPayloadSchema = external_exports.object({
|
|
46602
46636
|
summary: external_exports.string().min(1),
|
|
46603
|
-
blocking_goal_id:
|
|
46604
|
-
broken_measurable_id:
|
|
46637
|
+
blocking_goal_id: uuidSchema19.optional(),
|
|
46638
|
+
broken_measurable_id: uuidSchema19.optional(),
|
|
46605
46639
|
evidence: evidenceSchema,
|
|
46606
46640
|
severity: external_exports.enum(["low", "med", "high", "critical"])
|
|
46607
46641
|
}).strict();
|
|
46608
46642
|
|
|
46643
|
+
// ../../packages/protocol/src/event-internal-payloads.ts
|
|
46644
|
+
var uuidSchema20 = external_exports.string().uuid();
|
|
46645
|
+
var internalEventObjectSchema = external_exports.record(external_exports.string(), external_exports.unknown()).refine((payload) => !Array.isArray(payload), "Internal event payload must be an object");
|
|
46646
|
+
var actionEventPayloadSchema = external_exports.object({ action: external_exports.string().min(1) }).passthrough();
|
|
46647
|
+
function authoritativePrefixUnion(branches, authoritative) {
|
|
46648
|
+
return external_exports.union(branches).superRefine((payload, ctx) => {
|
|
46649
|
+
const action = payload.action;
|
|
46650
|
+
if (typeof action !== "string") return;
|
|
46651
|
+
for (const { prefix, strict } of authoritative) {
|
|
46652
|
+
if (!action.startsWith(prefix)) continue;
|
|
46653
|
+
const result = strict.safeParse(payload);
|
|
46654
|
+
if (!result.success) {
|
|
46655
|
+
ctx.addIssue({
|
|
46656
|
+
code: external_exports.ZodIssueCode.custom,
|
|
46657
|
+
message: `Malformed "${action}" payload: an action beginning with "${prefix}" must satisfy the strict ${prefix}* schema and may not fall through to a permissive branch (${result.error.issues.map((issue2) => issue2.message).join("; ")})`
|
|
46658
|
+
});
|
|
46659
|
+
}
|
|
46660
|
+
return;
|
|
46661
|
+
}
|
|
46662
|
+
});
|
|
46663
|
+
}
|
|
46664
|
+
var inviteCreatedEventPayloadSchema = external_exports.object({
|
|
46665
|
+
action: external_exports.literal("invite.created"),
|
|
46666
|
+
invite_id: uuidSchema20,
|
|
46667
|
+
email: external_exports.string().email(),
|
|
46668
|
+
role: memberRoleSchema,
|
|
46669
|
+
member_type: memberTypeSchema,
|
|
46670
|
+
access_profile: memberAccessProfileSchema,
|
|
46671
|
+
aicos_access_scope: aicosAccessScopeSchema,
|
|
46672
|
+
invited_by: uuidSchema20
|
|
46673
|
+
}).strict();
|
|
46674
|
+
var inviteRevokedEventPayloadSchema = external_exports.object({
|
|
46675
|
+
action: external_exports.literal("invite.revoked"),
|
|
46676
|
+
invite_id: uuidSchema20,
|
|
46677
|
+
revoked_by: uuidSchema20
|
|
46678
|
+
}).strict();
|
|
46679
|
+
var inviteAcceptedEventPayloadSchema = external_exports.object({
|
|
46680
|
+
action: external_exports.literal("invite.accepted"),
|
|
46681
|
+
invite_id: uuidSchema20,
|
|
46682
|
+
user_id: uuidSchema20,
|
|
46683
|
+
membership_id: uuidSchema20,
|
|
46684
|
+
linked_seat_ids: external_exports.array(uuidSchema20)
|
|
46685
|
+
}).strict();
|
|
46686
|
+
var inviteLifecycleEventPayloadSchema = external_exports.union([
|
|
46687
|
+
inviteCreatedEventPayloadSchema,
|
|
46688
|
+
inviteRevokedEventPayloadSchema,
|
|
46689
|
+
inviteAcceptedEventPayloadSchema
|
|
46690
|
+
]);
|
|
46691
|
+
var internalEventWriterPayloadSchema = authoritativePrefixUnion(
|
|
46692
|
+
[
|
|
46693
|
+
inviteCreatedEventPayloadSchema,
|
|
46694
|
+
inviteRevokedEventPayloadSchema,
|
|
46695
|
+
inviteAcceptedEventPayloadSchema,
|
|
46696
|
+
actionEventPayloadSchema,
|
|
46697
|
+
internalEventObjectSchema
|
|
46698
|
+
],
|
|
46699
|
+
[{ prefix: "invite.", strict: inviteLifecycleEventPayloadSchema }]
|
|
46700
|
+
);
|
|
46701
|
+
var provisioningEventPayloadSchema = authoritativePrefixUnion(
|
|
46702
|
+
[
|
|
46703
|
+
inviteCreatedEventPayloadSchema,
|
|
46704
|
+
inviteRevokedEventPayloadSchema,
|
|
46705
|
+
inviteAcceptedEventPayloadSchema,
|
|
46706
|
+
actionEventPayloadSchema,
|
|
46707
|
+
internalEventObjectSchema
|
|
46708
|
+
],
|
|
46709
|
+
// Only "invite." is authoritative today (the sole prefix with typed branches).
|
|
46710
|
+
// Non-invite provisioning actions (e.g. tenant.created) keep riding the
|
|
46711
|
+
// permissive branches unchanged, preserving parse-compat with stored rows.
|
|
46712
|
+
[{ prefix: "invite.", strict: inviteLifecycleEventPayloadSchema }]
|
|
46713
|
+
);
|
|
46714
|
+
var decisionEventPayloadSchema = external_exports.union([
|
|
46715
|
+
actionEventPayloadSchema,
|
|
46716
|
+
internalEventObjectSchema
|
|
46717
|
+
]);
|
|
46718
|
+
var systemEventPayloadSchema = external_exports.union([
|
|
46719
|
+
actionEventPayloadSchema,
|
|
46720
|
+
internalEventObjectSchema
|
|
46721
|
+
]);
|
|
46722
|
+
var charterEventPayloadSchema = external_exports.union([
|
|
46723
|
+
actionEventPayloadSchema,
|
|
46724
|
+
internalEventObjectSchema
|
|
46725
|
+
]);
|
|
46726
|
+
var taskEventPayloadSchema = external_exports.union([
|
|
46727
|
+
actionEventPayloadSchema,
|
|
46728
|
+
internalEventObjectSchema
|
|
46729
|
+
]);
|
|
46730
|
+
|
|
46609
46731
|
// ../../packages/protocol/src/held-tool-action.ts
|
|
46610
46732
|
var heldToolActionReplaySchema = external_exports.object({
|
|
46611
46733
|
tool_name: external_exports.string().min(1),
|
|
@@ -46614,14 +46736,14 @@ var heldToolActionReplaySchema = external_exports.object({
|
|
|
46614
46736
|
}).strict();
|
|
46615
46737
|
|
|
46616
46738
|
// ../../packages/protocol/src/operating.ts
|
|
46617
|
-
var
|
|
46739
|
+
var uuidSchema21 = external_exports.string().uuid();
|
|
46618
46740
|
var taskListInputSchema = external_exports.object({}).strict();
|
|
46619
46741
|
var operatingTaskSchema = external_exports.object({
|
|
46620
|
-
id:
|
|
46742
|
+
id: uuidSchema21,
|
|
46621
46743
|
title: external_exports.string(),
|
|
46622
46744
|
description: external_exports.string().nullable(),
|
|
46623
|
-
from_seat_id:
|
|
46624
|
-
goal_id:
|
|
46745
|
+
from_seat_id: uuidSchema21.nullable(),
|
|
46746
|
+
goal_id: uuidSchema21.nullable(),
|
|
46625
46747
|
acceptance_criteria: external_exports.unknown(),
|
|
46626
46748
|
due_on: external_exports.string().nullable(),
|
|
46627
46749
|
status: external_exports.string()
|
|
@@ -46630,54 +46752,54 @@ var taskListOutputSchema = external_exports.object({
|
|
|
46630
46752
|
tasks: external_exports.array(operatingTaskSchema)
|
|
46631
46753
|
}).strict();
|
|
46632
46754
|
var taskAcceptInputSchema = external_exports.object({
|
|
46633
|
-
id:
|
|
46755
|
+
id: uuidSchema21
|
|
46634
46756
|
}).strict();
|
|
46635
46757
|
var taskConfirmProposalInputSchema = external_exports.object({
|
|
46636
|
-
id:
|
|
46758
|
+
id: uuidSchema21
|
|
46637
46759
|
}).strict();
|
|
46638
46760
|
var taskMutationOutputSchema = external_exports.object({
|
|
46639
46761
|
task: external_exports.object({
|
|
46640
|
-
id:
|
|
46762
|
+
id: uuidSchema21,
|
|
46641
46763
|
status: external_exports.string()
|
|
46642
46764
|
}).strict()
|
|
46643
46765
|
}).strict();
|
|
46644
46766
|
var taskDeclineInputSchema = external_exports.object({
|
|
46645
|
-
id:
|
|
46767
|
+
id: uuidSchema21,
|
|
46646
46768
|
reason: external_exports.string().min(1)
|
|
46647
46769
|
}).strict();
|
|
46648
46770
|
var taskDeclineOutputSchema = external_exports.object({
|
|
46649
46771
|
task: external_exports.object({
|
|
46650
|
-
id:
|
|
46772
|
+
id: uuidSchema21,
|
|
46651
46773
|
status: external_exports.string(),
|
|
46652
46774
|
decline_reason: external_exports.string()
|
|
46653
46775
|
}).strict()
|
|
46654
46776
|
}).strict();
|
|
46655
46777
|
var taskCompleteInputSchema = external_exports.object({
|
|
46656
|
-
id:
|
|
46778
|
+
id: uuidSchema21,
|
|
46657
46779
|
summary: external_exports.string().min(1),
|
|
46658
46780
|
artifacts: external_exports.unknown().optional()
|
|
46659
46781
|
}).strict();
|
|
46660
46782
|
var taskCompleteOutputSchema = external_exports.object({
|
|
46661
|
-
task_id:
|
|
46662
|
-
event_id:
|
|
46783
|
+
task_id: uuidSchema21,
|
|
46784
|
+
event_id: uuidSchema21,
|
|
46663
46785
|
type: external_exports.literal("handoff")
|
|
46664
46786
|
}).strict();
|
|
46665
46787
|
var statusRecordOutputSchema = external_exports.object({
|
|
46666
|
-
event_id:
|
|
46788
|
+
event_id: uuidSchema21,
|
|
46667
46789
|
type: external_exports.literal("status")
|
|
46668
46790
|
}).strict();
|
|
46669
46791
|
var frictionFileIssueInputSchema = issueEventPayloadSchema.extend({
|
|
46670
46792
|
source_key: external_exports.string().trim().min(1).max(200).optional()
|
|
46671
46793
|
}).strict();
|
|
46672
46794
|
var duplicateFrictionCandidateSchema = external_exports.object({
|
|
46673
|
-
issue_id:
|
|
46795
|
+
issue_id: uuidSchema21,
|
|
46674
46796
|
summary: external_exports.string().min(1),
|
|
46675
46797
|
// pg_trgm similarity in [0, 1]; higher is more similar.
|
|
46676
46798
|
similarity: external_exports.number().min(0).max(1)
|
|
46677
46799
|
}).strict();
|
|
46678
46800
|
var frictionFileIssueOutputSchema = external_exports.object({
|
|
46679
|
-
event_id:
|
|
46680
|
-
issue_id:
|
|
46801
|
+
event_id: uuidSchema21,
|
|
46802
|
+
issue_id: uuidSchema21,
|
|
46681
46803
|
type: external_exports.literal("issue"),
|
|
46682
46804
|
// DER-1522: likely-duplicate candidates detected before creation. Recommend,
|
|
46683
46805
|
// never block — filing always proceeds; empty when nothing crossed the
|
|
@@ -46691,12 +46813,12 @@ var workLogInputSchema = external_exports.object({
|
|
|
46691
46813
|
note: external_exports.string().min(1)
|
|
46692
46814
|
}).strict();
|
|
46693
46815
|
var workLogOutputSchema = external_exports.object({
|
|
46694
|
-
event_id:
|
|
46816
|
+
event_id: uuidSchema21,
|
|
46695
46817
|
type: external_exports.literal("task")
|
|
46696
46818
|
}).strict();
|
|
46697
46819
|
var escalationRaiseOutputSchema = external_exports.object({
|
|
46698
|
-
event_id:
|
|
46699
|
-
escalation_id:
|
|
46820
|
+
event_id: uuidSchema21,
|
|
46821
|
+
escalation_id: uuidSchema21,
|
|
46700
46822
|
type: external_exports.literal("escalation")
|
|
46701
46823
|
}).strict();
|
|
46702
46824
|
var deliverableKindSchema2 = external_exports.enum(["brief", "work_evidence", "artifact", "report", "other"]);
|
|
@@ -46755,7 +46877,7 @@ var deliverableRejectOutputSchema = external_exports.object({
|
|
|
46755
46877
|
}).strict();
|
|
46756
46878
|
|
|
46757
46879
|
// ../../packages/protocol/src/steward.ts
|
|
46758
|
-
var
|
|
46880
|
+
var uuidSchema22 = external_exports.string().uuid();
|
|
46759
46881
|
var escalationStatusSchema = external_exports.enum([
|
|
46760
46882
|
"open",
|
|
46761
46883
|
"approved",
|
|
@@ -46764,18 +46886,18 @@ var escalationStatusSchema = external_exports.enum([
|
|
|
46764
46886
|
]);
|
|
46765
46887
|
var stewardReplayActionSummarySchema = external_exports.object({
|
|
46766
46888
|
tool_name: external_exports.string(),
|
|
46767
|
-
run_id:
|
|
46889
|
+
run_id: uuidSchema22
|
|
46768
46890
|
}).strict();
|
|
46769
46891
|
var stewardProposedToolCallSchema = external_exports.object({
|
|
46770
46892
|
tool_name: external_exports.string(),
|
|
46771
46893
|
args_summary: external_exports.unknown()
|
|
46772
46894
|
}).strict();
|
|
46773
46895
|
var stewardEscalationSchema = external_exports.object({
|
|
46774
|
-
id:
|
|
46775
|
-
seat_id:
|
|
46896
|
+
id: uuidSchema22,
|
|
46897
|
+
seat_id: uuidSchema22,
|
|
46776
46898
|
seat_name: external_exports.string(),
|
|
46777
46899
|
seat_type: external_exports.enum(["human", "agent", "hybrid"]),
|
|
46778
|
-
steward_seat_id:
|
|
46900
|
+
steward_seat_id: uuidSchema22,
|
|
46779
46901
|
steward_seat_name: external_exports.string(),
|
|
46780
46902
|
reason: external_exports.string(),
|
|
46781
46903
|
charter_clause: external_exports.string(),
|
|
@@ -46794,11 +46916,11 @@ var stewardEscalationSchema = external_exports.object({
|
|
|
46794
46916
|
proposed_tool_call: stewardProposedToolCallSchema.optional(),
|
|
46795
46917
|
recommended_action: external_exports.string().nullable(),
|
|
46796
46918
|
status: escalationStatusSchema,
|
|
46797
|
-
decided_by:
|
|
46919
|
+
decided_by: uuidSchema22.nullable(),
|
|
46798
46920
|
decided_by_name: external_exports.string().nullable(),
|
|
46799
46921
|
decided_at: external_exports.string().nullable(),
|
|
46800
46922
|
decision_note: external_exports.string().nullable(),
|
|
46801
|
-
issue_id:
|
|
46923
|
+
issue_id: uuidSchema22.nullable(),
|
|
46802
46924
|
created_at: external_exports.string(),
|
|
46803
46925
|
updated_at: external_exports.string()
|
|
46804
46926
|
}).strict();
|
|
@@ -46809,27 +46931,27 @@ var escalationListOutputSchema = external_exports.object({
|
|
|
46809
46931
|
escalations: external_exports.array(stewardEscalationSchema)
|
|
46810
46932
|
}).strict();
|
|
46811
46933
|
var escalationGetInputSchema = external_exports.object({
|
|
46812
|
-
id:
|
|
46934
|
+
id: uuidSchema22
|
|
46813
46935
|
}).strict();
|
|
46814
46936
|
var escalationGetOutputSchema = external_exports.object({
|
|
46815
46937
|
escalation: stewardEscalationSchema
|
|
46816
46938
|
}).strict();
|
|
46817
46939
|
var escalationResolveActionSchema = external_exports.enum(["approve", "convert_to_issue"]);
|
|
46818
46940
|
var escalationResolveInputSchema = external_exports.object({
|
|
46819
|
-
id:
|
|
46941
|
+
id: uuidSchema22,
|
|
46820
46942
|
action: escalationResolveActionSchema.optional(),
|
|
46821
46943
|
rationale: external_exports.string().trim().min(1).optional()
|
|
46822
46944
|
}).strict();
|
|
46823
46945
|
var escalationRejectInputSchema = external_exports.object({
|
|
46824
|
-
id:
|
|
46946
|
+
id: uuidSchema22,
|
|
46825
46947
|
rationale: external_exports.string().trim().min(1).optional()
|
|
46826
46948
|
}).strict();
|
|
46827
46949
|
var escalationDecisionOutputSchema = external_exports.object({
|
|
46828
|
-
escalation_id:
|
|
46950
|
+
escalation_id: uuidSchema22,
|
|
46829
46951
|
status: escalationStatusSchema,
|
|
46830
|
-
decision_id:
|
|
46831
|
-
decided_by:
|
|
46832
|
-
issue_id:
|
|
46952
|
+
decision_id: uuidSchema22,
|
|
46953
|
+
decided_by: uuidSchema22,
|
|
46954
|
+
issue_id: uuidSchema22.nullable(),
|
|
46833
46955
|
// DER-1478: true when the resolved escalation carries a durable replay_action
|
|
46834
46956
|
// (an approval-gated connector write) that the approvals path should actuate
|
|
46835
46957
|
// after this decision is recorded. Omitted (not false) for non-connector
|
|
@@ -47010,7 +47132,7 @@ var workDetailsSchemas = {
|
|
|
47010
47132
|
};
|
|
47011
47133
|
|
|
47012
47134
|
// ../../packages/protocol/src/agent-grant-intervention.ts
|
|
47013
|
-
var
|
|
47135
|
+
var uuidSchema23 = external_exports.string().uuid();
|
|
47014
47136
|
var agentGrantBlockerKindSchema = external_exports.enum([
|
|
47015
47137
|
"rost_capability",
|
|
47016
47138
|
"os_permission",
|
|
@@ -47027,16 +47149,16 @@ var agentGrantInterventionStatusSchema = external_exports.enum([
|
|
|
47027
47149
|
]);
|
|
47028
47150
|
var agentGrantKindSchema = external_exports.enum(["allow_once", "permanent"]);
|
|
47029
47151
|
var agentGrantInterventionSchema = external_exports.object({
|
|
47030
|
-
id:
|
|
47031
|
-
seat_id:
|
|
47152
|
+
id: uuidSchema23,
|
|
47153
|
+
seat_id: uuidSchema23,
|
|
47032
47154
|
seat_name: external_exports.string().nullable(),
|
|
47033
|
-
agent_id:
|
|
47155
|
+
agent_id: uuidSchema23.nullable(),
|
|
47034
47156
|
// The source blocked attempt (audit link); null once the run is retention-purged.
|
|
47035
|
-
run_id:
|
|
47157
|
+
run_id: uuidSchema23.nullable(),
|
|
47036
47158
|
// The runner the blocker lives on, for os_permission repairs ("Open on Runner").
|
|
47037
|
-
runner_id:
|
|
47159
|
+
runner_id: uuidSchema23.nullable(),
|
|
47038
47160
|
// The linked continuation attempt, populated when a continuation is enqueued.
|
|
47039
|
-
continuation_run_id:
|
|
47161
|
+
continuation_run_id: uuidSchema23.nullable(),
|
|
47040
47162
|
blocker_kind: agentGrantBlockerKindSchema,
|
|
47041
47163
|
status: agentGrantInterventionStatusSchema,
|
|
47042
47164
|
// The specific capability/scope requested (e.g. "gmail.send"), when applicable.
|
|
@@ -47051,7 +47173,7 @@ var agentGrantInterventionSchema = external_exports.object({
|
|
|
47051
47173
|
// True once the blocked attempt released its lease/compute (AC #2 clean termination).
|
|
47052
47174
|
compute_released: external_exports.boolean(),
|
|
47053
47175
|
grant_kind: agentGrantKindSchema.nullable(),
|
|
47054
|
-
decided_by:
|
|
47176
|
+
decided_by: uuidSchema23.nullable(),
|
|
47055
47177
|
decided_by_name: external_exports.string().nullable(),
|
|
47056
47178
|
decided_at: external_exports.string().nullable(),
|
|
47057
47179
|
expires_at: external_exports.string().nullable(),
|
|
@@ -47060,7 +47182,7 @@ var agentGrantInterventionSchema = external_exports.object({
|
|
|
47060
47182
|
}).strict();
|
|
47061
47183
|
var agentGrantInterventionListInputSchema = external_exports.object({
|
|
47062
47184
|
// Optional seat filter (a seat-scoped caller is additionally clamped to its own seat).
|
|
47063
|
-
seat_id:
|
|
47185
|
+
seat_id: uuidSchema23.optional(),
|
|
47064
47186
|
// When true, include decided/terminal records (declined/resumed/expired) too;
|
|
47065
47187
|
// by default only the actionable open blocked/granted records are returned.
|
|
47066
47188
|
include_decided: external_exports.boolean().optional()
|
|
@@ -47069,14 +47191,14 @@ var agentGrantInterventionListOutputSchema = external_exports.object({
|
|
|
47069
47191
|
interventions: external_exports.array(agentGrantInterventionSchema)
|
|
47070
47192
|
}).strict();
|
|
47071
47193
|
var agentGrantInterventionGetInputSchema = external_exports.object({
|
|
47072
|
-
id:
|
|
47194
|
+
id: uuidSchema23
|
|
47073
47195
|
}).strict();
|
|
47074
47196
|
var agentGrantInterventionGetOutputSchema = external_exports.object({
|
|
47075
47197
|
intervention: agentGrantInterventionSchema
|
|
47076
47198
|
}).strict();
|
|
47077
47199
|
var agentGrantInterventionDecideActionSchema = external_exports.enum(["grant", "decline"]);
|
|
47078
47200
|
var agentGrantInterventionDecideInputSchema = external_exports.object({
|
|
47079
|
-
intervention_id:
|
|
47201
|
+
intervention_id: uuidSchema23,
|
|
47080
47202
|
action: agentGrantInterventionDecideActionSchema,
|
|
47081
47203
|
// Defaults to allow_once. `permanent` never auto-widens — it returns
|
|
47082
47204
|
// requires_charter_resign so the surface routes the human to a Charter re-sign.
|
|
@@ -47088,12 +47210,12 @@ var agentGrantInterventionDecideInputSchema = external_exports.object({
|
|
|
47088
47210
|
rationale: external_exports.string().trim().min(1).max(2e3).optional()
|
|
47089
47211
|
}).strict();
|
|
47090
47212
|
var agentGrantInterventionDecideOutputSchema = external_exports.object({
|
|
47091
|
-
intervention_id:
|
|
47213
|
+
intervention_id: uuidSchema23,
|
|
47092
47214
|
status: agentGrantInterventionStatusSchema,
|
|
47093
|
-
continuation_run_id:
|
|
47215
|
+
continuation_run_id: uuidSchema23.nullable(),
|
|
47094
47216
|
// The human decision row written for a grant/decline (invariant #7). Null only
|
|
47095
47217
|
// when a permanent grant deferred to a Charter re-sign (no one-time decision made).
|
|
47096
|
-
decision_id:
|
|
47218
|
+
decision_id: uuidSchema23.nullable(),
|
|
47097
47219
|
// True when the human chose the permanent option — the surface must route to a
|
|
47098
47220
|
// Charter re-sign; no authority was widened by this call (invariant #10).
|
|
47099
47221
|
requires_charter_resign: external_exports.boolean(),
|
|
@@ -47107,12 +47229,12 @@ var agentGrantInterventionDecideOutputSchema = external_exports.object({
|
|
|
47107
47229
|
enqueue_failed: external_exports.boolean()
|
|
47108
47230
|
}).strict();
|
|
47109
47231
|
var agentGrantInterventionResumeInputSchema = external_exports.object({
|
|
47110
|
-
intervention_id:
|
|
47232
|
+
intervention_id: uuidSchema23
|
|
47111
47233
|
}).strict();
|
|
47112
47234
|
var agentGrantInterventionResumeOutputSchema = external_exports.object({
|
|
47113
|
-
intervention_id:
|
|
47235
|
+
intervention_id: uuidSchema23,
|
|
47114
47236
|
status: agentGrantInterventionStatusSchema,
|
|
47115
|
-
continuation_run_id:
|
|
47237
|
+
continuation_run_id: uuidSchema23.nullable(),
|
|
47116
47238
|
enqueue_failed: external_exports.boolean()
|
|
47117
47239
|
}).strict();
|
|
47118
47240
|
|
|
@@ -47130,7 +47252,7 @@ var eventTypes = [
|
|
|
47130
47252
|
"task"
|
|
47131
47253
|
];
|
|
47132
47254
|
var publicMessageTypes = ["status", "handoff", "escalation", "issue"];
|
|
47133
|
-
var
|
|
47255
|
+
var uuidSchema24 = external_exports.string().uuid();
|
|
47134
47256
|
var evidenceSchema2 = external_exports.array(external_exports.unknown());
|
|
47135
47257
|
var internalEventPayloadSchema = external_exports.record(external_exports.string(), external_exports.unknown()).refine((payload) => !Array.isArray(payload), "Internal event payload must be an object");
|
|
47136
47258
|
var handoffEventPayloadSchema = external_exports.object({
|
|
@@ -47140,24 +47262,24 @@ var handoffEventPayloadSchema = external_exports.object({
|
|
|
47140
47262
|
acceptance_criteria: external_exports.array(external_exports.string().min(1)),
|
|
47141
47263
|
due: external_exports.string().datetime({ offset: true })
|
|
47142
47264
|
}).strict(),
|
|
47143
|
-
to_seat_id:
|
|
47265
|
+
to_seat_id: uuidSchema24
|
|
47144
47266
|
}).strict();
|
|
47145
47267
|
var intakeEventPayloadSchema = external_exports.discriminatedUnion("action", [
|
|
47146
47268
|
external_exports.object({
|
|
47147
47269
|
action: external_exports.literal("uploaded"),
|
|
47148
|
-
document_id:
|
|
47270
|
+
document_id: uuidSchema24,
|
|
47149
47271
|
storage_ref: external_exports.string().min(1)
|
|
47150
47272
|
}).strict(),
|
|
47151
47273
|
external_exports.object({
|
|
47152
47274
|
action: external_exports.literal("parsed"),
|
|
47153
|
-
document_id:
|
|
47275
|
+
document_id: uuidSchema24,
|
|
47154
47276
|
mode: external_exports.enum(["source_tree", "function_first"]),
|
|
47155
47277
|
seat_count: external_exports.number().int().nonnegative(),
|
|
47156
47278
|
edge_count: external_exports.number().int().nonnegative()
|
|
47157
47279
|
}).strict(),
|
|
47158
47280
|
external_exports.object({
|
|
47159
47281
|
action: external_exports.literal("failed"),
|
|
47160
|
-
document_id:
|
|
47282
|
+
document_id: uuidSchema24,
|
|
47161
47283
|
reason: external_exports.string().min(1)
|
|
47162
47284
|
}).strict(),
|
|
47163
47285
|
external_exports.object({
|
|
@@ -47263,9 +47385,9 @@ var publicMessageTypeSchema = external_exports.enum(publicMessageTypes);
|
|
|
47263
47385
|
var eventEnvelopeBaseSchema = external_exports.object({
|
|
47264
47386
|
protocol: external_exports.literal(EVENT_PROTOCOL),
|
|
47265
47387
|
type: eventTypeSchema,
|
|
47266
|
-
seat_id:
|
|
47388
|
+
seat_id: uuidSchema24.nullable(),
|
|
47267
47389
|
occurred_at: external_exports.string().datetime({ offset: true }),
|
|
47268
|
-
goal_ancestry: external_exports.array(
|
|
47390
|
+
goal_ancestry: external_exports.array(uuidSchema24)
|
|
47269
47391
|
}).strict();
|
|
47270
47392
|
var statusEventEnvelopeSchema = eventEnvelopeBaseSchema.extend({
|
|
47271
47393
|
type: external_exports.literal("status"),
|
|
@@ -47289,7 +47411,7 @@ var intakeEventEnvelopeSchema = eventEnvelopeBaseSchema.extend({
|
|
|
47289
47411
|
}).strict();
|
|
47290
47412
|
var internalEventEnvelopeSchema = eventEnvelopeBaseSchema.extend({
|
|
47291
47413
|
type: external_exports.enum(["decision", "provisioning", "system", "charter", "task"]),
|
|
47292
|
-
payload:
|
|
47414
|
+
payload: internalEventWriterPayloadSchema
|
|
47293
47415
|
}).strict();
|
|
47294
47416
|
var eventEnvelopeSchema = external_exports.discriminatedUnion("type", [
|
|
47295
47417
|
statusEventEnvelopeSchema,
|
|
@@ -47695,7 +47817,7 @@ Treat AICOS as a coordinator over the operating system. It can become more usefu
|
|
|
47695
47817
|
order: 20,
|
|
47696
47818
|
title: "Responsibility Graph playbook",
|
|
47697
47819
|
summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
|
|
47698
|
-
version: "2026-07-
|
|
47820
|
+
version: "2026-07-18.1",
|
|
47699
47821
|
public: true,
|
|
47700
47822
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47701
47823
|
stages: ["graph_design", "staffing"],
|
|
@@ -47784,7 +47906,7 @@ Agent creation at \`/agents/new\` begins with four doors: **Describe the job** o
|
|
|
47784
47906
|
|
|
47785
47907
|
## Review an agent seat's delivered work
|
|
47786
47908
|
|
|
47787
|
-
Agent seat pages show the operator-facing output trail, not just low-level run telemetry. The completed work area combines explicit \`agent_deliverables\`, successful \`work.log\` evidence, and recent successful run summaries into one readable list. Each item shows what was delivered, when it happened, what kind of work it was, and safe evidence links labelled as internal, Linear, GitHub, or external. Secret-shaped values are redacted before display, and run or task context is shown only when it belongs to the same seat. Forge artifact batches can also carry a metadata-only integrity verdict so duplicate hashes, zero-byte files, size outliers, and manifest count mismatches are visible without exposing file contents.
|
|
47909
|
+
Agent seat pages show the operator-facing output trail, not just low-level run telemetry. The completed work area combines explicit \`agent_deliverables\`, successful \`work.log\` evidence, and recent successful run summaries into one readable list. Each item shows what was delivered, when it happened, what kind of work it was, and safe evidence links labelled as internal, Linear, GitHub, or external. Secret-shaped values are redacted before display, and run or task context is shown only when it belongs to the same seat. Forge artifact batches can also carry a metadata-only integrity verdict so duplicate hashes, zero-byte files, size outliers, and manifest count mismatches are visible without exposing file contents. Each recorded deliverable also carries a status badge \u2014 awaiting decision, accepted, or rejected \u2014 and its accepted USD value once one is recorded; a still-undecided deliverable links through to \`/approvals\` to accept or reject it there, since this tab is read-only status, not the decision surface. Run-derived (not yet explicitly recorded) items always read as awaiting decision and never link to \`/approvals\`, since there is no deliverable there yet to decide on.
|
|
47788
47910
|
|
|
47789
47911
|
The **Activity** tab layers a curated business-activity narrative above the Trust Card's forensic execution trace: period-scoped counter tiles (today, this week, or 30 days) summarise the seat's \`work.record\` activity by kind \u2014 a "held for your approval" tile is always shown, and an operator can pick which other kinds appear via a per-seat, browser-local tile picker. Below the tiles, a run-grouped activity feed lists each \`work.list\` record \u2014 verb, object, outcome, evidence link, and time \u2014 with a drill-down for entity refs, the \`template_ref\` used for external comms when one was recorded, and the raw structured details. A sessions browser lists the seat's runs and, for the selected one, its persisted transcript (\`session_transcripts\`) and artifacts rail: binary artifacts (Supabase Storage) get a freshly minted 60-second signed download link at render time, pointer artifacts (Gmail draft, Drive doc, PR, or an internal reference) link out when an external URL is known. The task queue and Trust Card below are unchanged. All of this sits behind the same sensitive-data access gate as the Trust Card; a restricted viewer sees an explicit unavailable state, never a guessed empty feed. The \`/agents\` fleet page mirrors the same row grammar in a tenant-wide **Work** view \u2014 every seat's activity in one filterable stream, each row linking back to that seat's Activity tab with the originating session focused.
|
|
47790
47912
|
|
|
@@ -48521,7 +48643,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
48521
48643
|
order: 48,
|
|
48522
48644
|
title: "CLI and MCP installation guide",
|
|
48523
48645
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
48524
|
-
version: "2026-07-18.
|
|
48646
|
+
version: "2026-07-18.3",
|
|
48525
48647
|
public: true,
|
|
48526
48648
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48527
48649
|
stages: ["company_setup", "staffing"],
|
|
@@ -49184,6 +49306,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
49184
49306
|
| \`rost_rename_company\` | \`tenant.rename\` | Rename the current company. | Tenant-admin | Call with \`company_name\`; expect human confirmation. |
|
|
49185
49307
|
| \`rost_get_sync_brief_scope\` | \`settings.sync_brief_scope.get\` | Read the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant | Call with \`{}\`. |
|
|
49186
49308
|
| \`rost_update_sync_brief_scope\` | \`settings.sync_brief_scope.update\` | Set the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant-admin | Owner-only; call with \`{"sync_brief_scope":"company_wide"}\` or \`{"sync_brief_scope":"per_cluster"}\`. |
|
|
49309
|
+
| \`rost_get_member_visibility_mode\` | \`settings.member_visibility.get\` | Read the tenant's member visibility mode (all or seat_subtree). | Tenant | Call with \`{}\`. |
|
|
49310
|
+
| \`rost_update_member_visibility_mode\` | \`settings.member_visibility.update\` | Set the tenant's member visibility mode (all or seat_subtree). | Tenant-admin | Owner-only; call with \`{"member_visibility_mode":"all"}\` or \`{"member_visibility_mode":"seat_subtree"}\`. |
|
|
49187
49311
|
| \`rost_get_product_learning_policy\` | \`settings.product_learning.get\` | Read whether product/page/recommendation analytics are allowed. | Tenant | Call with \`{}\`; audit/security logs are always enabled. |
|
|
49188
49312
|
| \`rost_update_product_learning_policy\` | \`settings.product_learning.update\` | Set product-learning mode. | Tenant-admin | Human-gated; call with \`{"mode":"enabled"}\`, \`{"mode":"disabled"}\`, or \`{"mode":"enterprise_contract"}\`. |
|
|
49189
49313
|
| \`rost_get_company_autonomy_ceiling\` | \`settings.agent_policy.get\` | Read the company autonomy ceiling (Company Guardrails): profile, enforcement, and max_autonomous_risk. | Tenant | Call with \`{}\`; metadata only. |
|
|
@@ -49357,6 +49481,7 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
|
|
|
49357
49481
|
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with title, severity, and impact. Agent/scheduled producers may pass an optional \`source_key\` for deterministic idempotency \u2014 a repeat filing with the same key returns the existing open issue with \`already_filed:true\` and creates nothing new. |
|
|
49358
49482
|
| \`rost_log_work\` | \`work.log\` | Record a lightweight free-text work breadcrumb for the seat. For structured, per-entity, queryable business activity (a client might ask "which ones?"), use \`rost_record_work\` instead. | Seat | Call with summary and evidence. |
|
|
49359
49483
|
| \`rost_report_a_signal_reading\` | \`signal.report\` | Propose one draft reading for this seat's own agent-sourced measurable. The reading lands unconfirmed for human review. | Seat | Call with \`{"measurable_id":"<id>","value":42,"note":"read off the source","confidence":"high"}\`. |
|
|
49484
|
+
| \`rost_draft_first_readings_from_a_connected_source\` | \`signal.draft_first_readings\` | Pull this seat's measurable's connected source ONCE (read-only, SSRF-guarded) and land the value as a DRAFT reading for the current period, for a human to confirm. For a measurable that has a source but no confirmed reading yet. Never publishes and never fabricates a value \u2014 a non-numeric or blocked pull drafts nothing. | Seat | Call with \`{"measurable_id":"<id>"}\`. |
|
|
49360
49485
|
| \`rost_create_agent_deliverable\` | \`deliverable.create\` | Create a scrubbed durable work output for the acting seat. | Seat | Call with title, kind, summary/content, and optional safe links. |
|
|
49361
49486
|
| \`rost_attach_agent_deliverable\` | \`deliverable.attach\` | Attach a scrubbed deliverable to a source run, task, or work order after server-side seat validation. | Seat | Call with title, kind, and the source ids that belong to the acting seat. |
|
|
49362
49487
|
| \`rost_record_work\` | \`work.record\` | Append structured business-activity records to the seat's append-only work ledger, in a batch, right after each action succeeds. Prefer this over \`rost_log_work\` for durable, per-entity, queryable activity (verb + entity ref + outcome + evidence). Secret-redacted; idempotent on \`dedup_key\`; corrections are superseding records. | Seat | Call with \`{"records":[{"verb":"contacted","object":{"kind":"supplier","external_id":"sup_42","label":"Acme Foods"},"summary":"Emailed Acme for a monk fruit quote.","dedup_key":"gmail:msg-abc"}]}\`. |
|
|
@@ -49931,7 +50056,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
49931
50056
|
order: 61,
|
|
49932
50057
|
title: "Signal guide",
|
|
49933
50058
|
summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
|
|
49934
|
-
version: "2026-07-
|
|
50059
|
+
version: "2026-07-18.3",
|
|
49935
50060
|
public: true,
|
|
49936
50061
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
49937
50062
|
stages: ["operating_rhythm"],
|
|
@@ -49944,6 +50069,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
49944
50069
|
"signal.confirm_reading",
|
|
49945
50070
|
"signal.correct_reading",
|
|
49946
50071
|
"signal.report",
|
|
50072
|
+
"signal.draft_first_readings",
|
|
49947
50073
|
"measurable.create",
|
|
49948
50074
|
"signal.import",
|
|
49949
50075
|
"measurable_template.list",
|
|
@@ -49989,6 +50115,7 @@ Avoid vanity numbers, manual-only status fields, and metrics nobody can act on.
|
|
|
49989
50115
|
- Add a measurable: \`measurable.create\` (scope: seat) defines a measurable a seat owns \u2014 name, unit, direction, target, cadence. The seat owns it; readings attach to it afterward.
|
|
49990
50116
|
- Record a reading: \`{{cli}} status record --measurable-id <id> --value <n>\` (\`status.record\`, scope: seat) writes a status event with the reading. This is not gated. An agent's \`status.record\` never downgrades a human-confirmed reading: a routine agent read that lands on a period a human already confirmed leaves the confirmed value and its confirmation intact (invariants #7/#8 \u2014 agents recommend; humans decide).
|
|
49991
50117
|
- Confirm a reading: \`{{cli}} signal confirm\` / \`signal.confirm_reading\` / \`rost_confirm_signal_reading\` marks a reading human-verified. \`signal.correct_reading\` / \`rost_correct_signal_reading\` overwrites a reading with a human-confirmed value.
|
|
50118
|
+
- Draft first readings from a connected source: \`signal.draft_first_readings\` pulls a measurable's bound source once (read-only, SSRF-guarded \u2014 the same pull path as \`signal.preview\`) and lands the value as a DRAFT reading for the current period, for a human to confirm. It is for a measurable that has a connected source but no confirmed reading yet: the Signal page shows a "Draft first readings" button on those rows so the row stops being a permanent blank. Nothing is published \u2014 a human clears the draft with \`signal.confirm_reading\` (invariant #7) \u2014 and it never fabricates a value: a non-numeric or blocked pull drafts nothing and says so.
|
|
49992
50119
|
|
|
49993
50120
|
## Run Signal without an agent
|
|
49994
50121
|
|
|
@@ -50394,7 +50521,7 @@ Do not claim that a live charge happened unless Stripe test/live evidence proves
|
|
|
50394
50521
|
public: true,
|
|
50395
50522
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50396
50523
|
stages: ["company_setup", "staffing"],
|
|
50397
|
-
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "tenant.model_gateway_policy.update", "aicos.brain_settings.get", "aicos.brain_settings.update"],
|
|
50524
|
+
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.member_visibility.get", "settings.member_visibility.update", "settings.product_learning.get", "settings.product_learning.update", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "tenant.model_gateway_policy.update", "aicos.brain_settings.get", "aicos.brain_settings.update"],
|
|
50398
50525
|
legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
|
|
50399
50526
|
sources: [
|
|
50400
50527
|
{
|
|
@@ -50512,7 +50639,7 @@ Agents may explain which setting is needed and why. They should not ask users to
|
|
|
50512
50639
|
order: 73,
|
|
50513
50640
|
title: "Members and invites guide",
|
|
50514
50641
|
summary: "How to invite humans into the company without confusing user access with seat accountability.",
|
|
50515
|
-
version: "2026-07-
|
|
50642
|
+
version: "2026-07-18.1",
|
|
50516
50643
|
public: true,
|
|
50517
50644
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
50518
50645
|
stages: ["company_setup", "staffing"],
|
|
@@ -50537,7 +50664,7 @@ Invite the person as a tenant member. Then assign them to one or more seats only
|
|
|
50537
50664
|
|
|
50538
50665
|
Tenant roles control app access. Seats control operating accountability. Do not attach goals, tasks, or measurables directly to a user when the work belongs to a seat.
|
|
50539
50666
|
|
|
50540
|
-
Owners and admins can invite people and manage member roles. Use \`external_implementer\` plus setup-limited access for a temporary implementation partner helping configure onboarding, Responsibility Graph, Compass, Charters, and agent setup. Setup-limited access is intentionally not enough for sensitive operating surfaces: Settings member/invite/token/runner/credential metadata, run and tool-call history, runner diagnostics, integration metadata and tests, system health,
|
|
50667
|
+
Owners and admins can invite people and manage member roles. Use \`external_implementer\` plus setup-limited access for a temporary implementation partner helping configure onboarding, Responsibility Graph, Compass, Charters, and agent setup. Setup-limited access is intentionally not enough for sensitive operating surfaces: Settings member/invite/token/runner/credential metadata, run and tool-call history, runner diagnostics, integration metadata and tests, system health, and owner/operating pages require owner/admin or full setup access. Scorecard (Signal) and Issues (Friction) reads are the exception: every active member can open them, scoped by the tenant member-visibility mode \u2014 either every member sees all Signals and Frictions, or each member sees only the seats they occupy plus everything downstream. Write actions on those pages stay role-gated. Do not grant external implementers sensitive run history, hidden tool arguments, credentials, Memory, or company-operating data unless an owner explicitly expands their profile.
|
|
50541
50668
|
|
|
50542
50669
|
## Working across several client companies
|
|
50543
50670
|
|
|
@@ -52727,6 +52854,8 @@ var COMMAND_MANIFEST = [
|
|
|
52727
52854
|
{ "id": "settings.confirmation_policy.get", "namespace": "settings", "action": "confirmation_policy.get", "title": "Get CLI confirmation mode", "description": "Read this company's CLI confirmation mode (DER-1490): careful (the strict default \u2014 the CLI cannot silently auto-approve a confirmation) or trusted_operator (an owner opt-in permitting silent auto-approval of non-dangerous confirmations). Returns metadata only.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read this company's CLI confirmation mode: careful (the strict default \u2014 the CLI cannot silently auto-approve a confirmation) or trusted_operator (an owner opt-in permitting silent auto-approval of non-dangerous confirmations)." },
|
|
52728
52855
|
{ "id": "settings.confirmation_policy.update", "namespace": "settings", "action": "confirmation_policy.update", "title": "Set CLI confirmation mode", "description": "Set this company's CLI confirmation mode (DER-1490): careful (strict \u2014 no silent CLI auto-approval) or trusted_operator (owner opt-in permitting silent auto-approval of non-dangerous confirmations; dangerous confirmations always require an interactive review). Owner-only and human-gated: choosing trusted_operator establishes an ADR-0018 \xA76 standing authorization.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "cli_mode", "flag": "cli-mode", "type": "enum", "required": true, "enumValues": ["trusted_operator", "careful"] }], "hasComplexInput": false, "help": "Set the CLI confirmation mode to careful or trusted_operator. Owner-only and human-gated; trusted_operator establishes a standing authorization and dangerous confirmations still require an interactive review." },
|
|
52729
52856
|
{ "id": "settings.get", "namespace": "settings", "action": "get", "title": "Get tenant settings", "description": "Read tenant operating settings: plan, status, spend/budgets, integration status, and notification preferences. Returns metadata only.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read tenant operating settings: plan, spend, budgets, integration status, and notification preferences. No secrets." },
|
|
52857
|
+
{ "id": "settings.member_visibility.get", "namespace": "settings", "action": "member_visibility.get", "title": "Get member visibility mode", "description": "Read the tenant's member visibility mode: all (every member sees all Signals/Frictions) or seat_subtree (a member sees only their occupied seats plus downstream seats).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read whether members see all Signals/Frictions tenant-wide (all) or only their occupied seats plus downstream seats (seat_subtree)." },
|
|
52858
|
+
{ "id": "settings.member_visibility.update", "namespace": "settings", "action": "member_visibility.update", "title": "Update member visibility mode", "description": "Set the tenant's member visibility mode (all or seat_subtree). Governs how non-owner members see Signals (Scorecard) and Frictions (Issues); write actions stay role-gated.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "member_visibility_mode", "flag": "member-visibility-mode", "type": "enum", "required": true, "enumValues": ["all", "seat_subtree"] }], "hasComplexInput": false, "help": "Set member visibility to all or seat_subtree; owner-only. Governs how non-owner members see the Scorecard and Issues; write actions stay role-gated." },
|
|
52730
52859
|
{ "id": "settings.product_learning.get", "namespace": "settings", "action": "product_learning.get", "title": "Get product-learning policy", "description": "Read whether product/page/recommendation analytics may be recorded for this tenant. Security and audit logs remain enabled in every mode.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read whether product/page/recommendation analytics are allowed for the tenant; security and audit logs always stay enabled." },
|
|
52731
52860
|
{ "id": "settings.product_learning.update", "namespace": "settings", "action": "product_learning.update", "title": "Update product-learning policy", "description": "Set tenant product-learning participation. Disabled and enterprise-contract modes block generic product analytics writes, but not security/audit logs.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "mode", "flag": "mode", "type": "enum", "required": true, "enumValues": ["enabled", "disabled", "enterprise_contract"] }], "hasComplexInput": false, "help": "Set tenant product-learning mode to enabled, disabled, or enterprise_contract; the change is human-gated." },
|
|
52732
52861
|
{ "id": "settings.sync_brief_scope.get", "namespace": "settings", "action": "sync_brief_scope.get", "title": "Get Sync Brief scope", "description": "Read the tenant's Sync Brief scope: company_wide (one weekly brief) or per_cluster (one brief per cluster).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read whether weekly Sync Briefs compile company-wide (one brief) or per cluster (one brief per cluster)." },
|
|
@@ -52738,6 +52867,7 @@ var COMMAND_MANIFEST = [
|
|
|
52738
52867
|
{ "id": "signal.bind_confirm", "namespace": "signal", "action": "bind_confirm", "title": "Confirm and activate a signal binding", "description": "Human-only activation of a draft signal binding (draft \u2192 active). Agents can never self-activate \u2014 an agent caller produces a pending confirmation. A drives_status binding requires a second-anchor confirmation. Once active, the scheduled pull auto-fills the measurable.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "binding_id", "flag": "binding-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Human-only: activate a draft signal binding (draft -> active) so scheduled pulls begin; an agent that calls it produces a pending confirmation." },
|
|
52739
52868
|
{ "id": "signal.confirm_reading", "namespace": "signal", "action": "confirm_reading", "title": "Confirm Signal reading", "description": "Confirm an unconfirmed reading as human-verified. Humans confirm; agents cannot. Idempotent on an already-confirmed reading.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "reading_id", "flag": "reading-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Confirm an unconfirmed reading as human-verified; confirmation is a human act, not an agent one." },
|
|
52740
52869
|
{ "id": "signal.correct_reading", "namespace": "signal", "action": "correct_reading", "title": "Correct Signal reading", "description": "Overwrite a reading for a period with a human-confirmed value. A manual correction is a human decision and is gated behind confirmation.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "period_start", "flag": "period-start", "type": "string", "required": true }, { "name": "value", "flag": "value", "type": "number", "required": true }], "hasComplexInput": false, "help": "Correct a reading only as a human; manual corrections that change confirmed data require confirmation." },
|
|
52870
|
+
{ "id": "signal.draft_first_readings", "namespace": "signal", "action": "draft_first_readings", "title": "Draft first readings from a connected source", "description": "Pull a measurable's connected source ONCE (read-only, SSRF-guarded) and land the value as a DRAFT reading for the current period, for a human to confirm. For a measurable that has a source but no confirmed reading yet. Never publishes a reading and never fabricates a value \u2014 a non-numeric or blocked pull drafts nothing.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Pull a measurable's connected source once (read-only, SSRF-guarded) and land the value as a DRAFT reading for the current period, for a human to confirm with signal.confirm_reading. For a measurable that has a source but no confirmed reading yet. Never publishes and never fabricates a value \u2014 a non-numeric or blocked pull drafts nothing.", "example": { "measurable_id": "01900001-0001-7001-8001-000000000001" } },
|
|
52741
52871
|
{ "id": "signal.get", "namespace": "signal", "action": "get", "title": "Get Signal", "description": "Return a measurable definition with its full reading history (confirmed and unconfirmed).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Read a measurable's full reading history before confirming or correcting a value." },
|
|
52742
52872
|
{ "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." },
|
|
52743
52873
|
{ "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." },
|