@overdeck/contracts 0.62.1 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -36,6 +36,27 @@ const BackendPane = Schema.Struct({
36
36
  /** Working directory of the pane (the issue workspace path). */
37
37
  workspace: Schema.optional(Schema.String)
38
38
  });
39
+ /**
40
+ * The agent id a pane answers for (PAN-4320). On Herdr `id` (`w1:p1`) and
41
+ * `terminalId` (`term_…`) are backend handles, never agent ids, so the
42
+ * `agentId` token decides; tmux panes carry `agentId` = session name.
43
+ */
44
+ function paneAgentKey(pane) {
45
+ return pane.agentId ?? pane.terminalId ?? pane.id;
46
+ }
47
+ /**
48
+ * Panes by agent key. When two panes answer for one agent (a restarted Herdr
49
+ * agent beside its exited pane), a non-exited pane wins, never the reverse.
50
+ */
51
+ function indexPanesByAgentKey(panes) {
52
+ const byKey = /* @__PURE__ */ new Map();
53
+ for (const pane of panes) {
54
+ const key = paneAgentKey(pane);
55
+ const prior = byKey.get(key);
56
+ if (!prior || prior.state === "exited" && pane.state !== "exited") byKey.set(key, pane);
57
+ }
58
+ return byKey;
59
+ }
39
60
  //#endregion
40
61
  //#region src/derived-issue-state.ts
41
62
  /**
@@ -61,7 +82,8 @@ const IssueState = Schema.Literals([
61
82
  const IssueAttention = Schema.Literals([
62
83
  "needs-you",
63
84
  "stuck",
64
- "api-error"
85
+ "api-error",
86
+ "work-not-started"
65
87
  ]);
66
88
  /** Latest review decision on the PR, as the forge reports it. */
67
89
  const PrReviewState = Schema.Literals([
@@ -84,7 +106,9 @@ const DerivedPrState = Schema.Struct({
84
106
  reviewState: PrReviewState,
85
107
  checks: PrChecksState,
86
108
  /** Forge mergeability. `null` when the forge has not computed it yet. */
87
- mergeable: Schema.NullOr(Schema.Boolean)
109
+ mergeable: Schema.NullOr(Schema.Boolean),
110
+ /** Present only when true; survives state: closed (PAN-4290). */
111
+ merged: Schema.optional(Schema.Boolean)
88
112
  });
89
113
  /** The issue's feature branch as git reports it. */
90
114
  const DerivedBranchState = Schema.Struct({
@@ -92,6 +116,16 @@ const DerivedBranchState = Schema.Struct({
92
116
  aheadOfMain: Schema.Number,
93
117
  pushed: Schema.Boolean
94
118
  });
119
+ /** The workspace journal's read on a post-planning auto-start (PAN-4399). */
120
+ const DerivedWorkStart = Schema.Struct({
121
+ status: Schema.Literals(["retrying", "not-started"]),
122
+ /** ISO time of the journal entry the status was read from. */
123
+ at: Schema.String,
124
+ error: Schema.optional(Schema.String),
125
+ nextRetryAt: Schema.optional(Schema.String),
126
+ /** The retry is journaled but not actually running because the Deacon is frozen (PAN-4210). Present only when true. */
127
+ held: Schema.optional(Schema.Literal(true))
128
+ });
95
129
  /** Everything the dashboard needs to render an issue's pipeline position. */
96
130
  const DerivedIssueState = Schema.Struct({
97
131
  issueId: Schema.String,
@@ -104,7 +138,9 @@ const DerivedIssueState = Schema.Struct({
104
138
  * precedence — could not be ruled in or out. Present only in that case; an
105
139
  * unresolved tracker read is never reported as an open issue.
106
140
  */
107
- trackerUnknown: Schema.optional(Schema.Literal(true))
141
+ trackerUnknown: Schema.optional(Schema.Literal(true)),
142
+ /** A deferred or gave-up post-planning auto-start read from the workspace journal (PAN-4399). */
143
+ workStart: Schema.optional(DerivedWorkStart)
108
144
  });
109
145
  const ISSUE_STATES = [
110
146
  "backlog",
@@ -132,7 +168,8 @@ const ISSUE_STATE_PRECEDENCE = [
132
168
  const ISSUE_ATTENTIONS = [
133
169
  "needs-you",
134
170
  "stuck",
135
- "api-error"
171
+ "api-error",
172
+ "work-not-started"
136
173
  ];
137
174
  function isIssueState(value) {
138
175
  return typeof value === "string" && ISSUE_STATES.includes(value);
@@ -141,6 +178,119 @@ function isIssueAttention(value) {
141
178
  return typeof value === "string" && ISSUE_ATTENTIONS.includes(value);
142
179
  }
143
180
  //#endregion
181
+ //#region src/github-quota.ts
182
+ /**
183
+ * The closed list of logical GitHub callers. A call made outside any
184
+ * `withGitHubCaller` context is recorded as `other` (or `app-rest` when it
185
+ * goes through the GitHub App REST door).
186
+ */
187
+ const GITHUB_QUOTA_CALLERS = [
188
+ "pipeline-membership",
189
+ "pr-cache",
190
+ "pr-sync",
191
+ "ci-repair",
192
+ "issue-poller",
193
+ "close-out",
194
+ "tracker-client",
195
+ "app-rest",
196
+ "quota-sampler",
197
+ "agent",
198
+ "other"
199
+ ];
200
+ const GitHubQuotaCaller = Schema.Literals(GITHUB_QUOTA_CALLERS);
201
+ /**
202
+ * Read-model pollers whose data can be stale for minutes without harm. Only
203
+ * these callers are skipped while a pause is active; every other caller
204
+ * (merge, verdict recording, tracker writes, agents) is essential and never
205
+ * paused.
206
+ */
207
+ const NON_ESSENTIAL_GITHUB_CALLERS = new Set([
208
+ "pipeline-membership",
209
+ "pr-cache",
210
+ "pr-sync",
211
+ "ci-repair",
212
+ "issue-poller",
213
+ "close-out"
214
+ ]);
215
+ /**
216
+ * The GitHub identity whose limit a call spends: `user` is the `gh` CLI token,
217
+ * `pat` is the `GITHUB_TOKEN` personal access token, `app` is a GitHub App
218
+ * installation token.
219
+ */
220
+ const GITHUB_QUOTA_POOLS = [
221
+ "user",
222
+ "pat",
223
+ "app"
224
+ ];
225
+ const GitHubQuotaPool = Schema.Literals(GITHUB_QUOTA_POOLS);
226
+ /** The limit counter inside a pool. `rest` is what GitHub calls `core`. */
227
+ const GITHUB_QUOTA_BUCKETS = ["graphql", "rest"];
228
+ const GitHubQuotaBucket = Schema.Literals(GITHUB_QUOTA_BUCKETS);
229
+ /** Primary = the hourly budget; secondary = GitHub's burst/abuse limit. */
230
+ const GitHubRateLimitKind = Schema.Literals(["primary", "secondary"]);
231
+ /** Points spent and calls made in one bucket. */
232
+ const GitHubQuotaUsage = Schema.Struct({
233
+ points: Schema.Number,
234
+ calls: Schema.Number
235
+ });
236
+ /** One caller's metered usage over the last hour. */
237
+ const GitHubQuotaCallerUsage = Schema.Struct({
238
+ caller: GitHubQuotaCaller,
239
+ graphql: GitHubQuotaUsage,
240
+ rest: GitHubQuotaUsage,
241
+ /** True when any counted call had an estimated (not GitHub-reported) cost. */
242
+ estimated: Schema.Boolean
243
+ });
244
+ /** The latest `/rate_limit` (or header) reading for one pool and bucket. */
245
+ const GitHubQuotaSample = Schema.Struct({
246
+ pool: GitHubQuotaPool,
247
+ bucket: GitHubQuotaBucket,
248
+ /** ISO time the sample was taken. */
249
+ ts: Schema.String,
250
+ remaining: Schema.Number,
251
+ limit: Schema.Number,
252
+ /** ISO time the bucket's hourly window resets. */
253
+ resetAt: Schema.optional(Schema.String)
254
+ });
255
+ /** An active pause on one pool and bucket (`~/.overdeck/github-quota/pause.json`). */
256
+ const GitHubQuotaPause = Schema.Struct({
257
+ pool: GitHubQuotaPool,
258
+ bucket: GitHubQuotaBucket,
259
+ kind: GitHubRateLimitKind,
260
+ /** The caller whose refused call started the pause. */
261
+ caller: GitHubQuotaCaller,
262
+ /** ISO time the pause started. */
263
+ since: Schema.String,
264
+ /** ISO time the pause ends. */
265
+ until: Schema.String
266
+ });
267
+ /**
268
+ * The operator-facing quota view — identical to the body of
269
+ * `GET /api/github-quota`, so the pill, the banner and the CLI read one shape.
270
+ * Derived runtime state: published with `emitOnly`, never persisted.
271
+ */
272
+ const GitHubQuotaSnapshot = Schema.Struct({
273
+ /** ISO time the snapshot was built. */
274
+ generatedAt: Schema.String,
275
+ /** The `gh` account login. Local display only; never sent to telemetry. */
276
+ login: Schema.NullOr(Schema.String),
277
+ /** Per-caller usage in the last hour, highest total points first. */
278
+ callers: Schema.Array(GitHubQuotaCallerUsage),
279
+ /** The latest sample per pool and bucket. */
280
+ samples: Schema.Array(GitHubQuotaSample),
281
+ /** Active pauses; empty when GitHub calls are not paused. */
282
+ pauses: Schema.Array(GitHubQuotaPause),
283
+ /** True when this machine's own metered usage cannot explain a primary limit. */
284
+ ownUsageLow: Schema.Boolean,
285
+ /** User-pool GraphQL points the latest sample shows spent but no metered caller claims. */
286
+ unattributed: Schema.Number,
287
+ /** Refusals observed in the last hour. */
288
+ refusals: Schema.Struct({
289
+ primary: Schema.Number,
290
+ secondary: Schema.Number
291
+ })
292
+ });
293
+ //#endregion
144
294
  //#region src/types.ts
145
295
  const IssueId = Schema.String;
146
296
  const MEMBERSHIP_UNAVAILABLE_REASONS = [
@@ -197,7 +347,8 @@ const KNOWN_HARNESSES = new Set([
197
347
  "acp",
198
348
  "kimi-code",
199
349
  "opencode",
200
- "muse"
350
+ "muse",
351
+ "prime-agent"
201
352
  ]);
202
353
  /**
203
354
  * Normalize a snapshot's runtime field to a known Harness value.
@@ -296,6 +447,7 @@ const AgentRuntimeSnapshot = Schema.Struct({
296
447
  activity: Activity,
297
448
  lastActivity: Schema.String,
298
449
  currentTool: Schema.optional(Schema.String),
450
+ currentToolDescription: Schema.optional(Schema.String),
299
451
  thinking: Schema.optional(ThinkingState),
300
452
  waiting: Schema.optional(WaitingState),
301
453
  claudeSessionId: Schema.optional(Schema.String),
@@ -320,6 +472,13 @@ const ChannelPermissionRequestSnapshot = Schema.Struct({
320
472
  inputPreview: Schema.String,
321
473
  createdAt: Schema.String
322
474
  });
475
+ /** PAN-4371 — advisory Jev reading of why an idle agent ended its turn. kind is a string (append-only store). */
476
+ const TurnEndAssessment = Schema.Struct({
477
+ kind: Schema.String,
478
+ confidence: Schema.Number,
479
+ needsAnswer: Schema.Boolean,
480
+ model: Schema.String
481
+ });
323
482
  const AgentSnapshot = Schema.Struct({
324
483
  id: AgentId,
325
484
  issueId: IssueId,
@@ -382,6 +541,7 @@ const AgentSnapshot = Schema.Struct({
382
541
  })),
383
542
  resolution: Schema.optional(AgentResolution),
384
543
  resolutionCount: Schema.optional(Schema.Number),
544
+ turnEndAssessment: Schema.optional(TurnEndAssessment),
385
545
  runtimeSnapshotSequence: Schema.optional(SequenceNumber)
386
546
  });
387
547
  /** PAN-3151: A recorded cycle in the review convergence tracking series */
@@ -559,6 +719,8 @@ const DashboardSnapshot = Schema.Struct({
559
719
  embedProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EmbedProgressSnapshot)),
560
720
  ciByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectCiSnapshot)),
561
721
  restartGate: Schema.optional(RestartGateSnapshot),
722
+ /** PAN-4264 — GitHub API quota use, samples and pauses; derived, never stored. */
723
+ githubQuota: Schema.optional(GitHubQuotaSnapshot),
562
724
  /** PAN-3751 — in-flight deploys keyed by project key. */
563
725
  deployByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectDeploySnapshot)),
564
726
  timestamp: Schema.String
@@ -1432,6 +1594,20 @@ const RestartGateChangedEvent = Schema.Struct({
1432
1594
  payload: RestartGateSnapshot
1433
1595
  });
1434
1596
  /**
1597
+ * The GitHub API quota view changed (PAN-4264).
1598
+ *
1599
+ * The payload is the complete snapshot, so the reducer is a plain replace.
1600
+ * The server derives it from the quota ledger and pause file under
1601
+ * `~/.overdeck/github-quota/` and emits it in-memory only, like
1602
+ * `restart_gate.changed`: it is never persisted and never replayed at boot.
1603
+ */
1604
+ const GitHubQuotaChangedEvent = Schema.Struct({
1605
+ type: Schema.Literal("github_quota.changed"),
1606
+ sequence: SequenceNumber,
1607
+ timestamp: Schema.String,
1608
+ payload: GitHubQuotaSnapshot
1609
+ });
1610
+ /**
1435
1611
  * The set of in-flight project deploys changed (PAN-3751).
1436
1612
  *
1437
1613
  * The payload is the COMPLETE projection keyed by project key, so the reducer
@@ -1623,7 +1799,8 @@ const AgentEnrichmentChangedEvent = Schema.Struct({
1623
1799
  plan: Schema.String
1624
1800
  })),
1625
1801
  resolution: Schema.optional(AgentResolution),
1626
- resolutionCount: Schema.optional(Schema.Number)
1802
+ resolutionCount: Schema.optional(Schema.Number),
1803
+ turnEndAssessment: Schema.optional(TurnEndAssessment)
1627
1804
  })
1628
1805
  });
1629
1806
  /** New — agent created in database */
@@ -1646,6 +1823,7 @@ const AgentActivityChangedEvent = Schema.Struct({
1646
1823
  agentId: AgentId,
1647
1824
  activity: Activity,
1648
1825
  currentTool: Schema.optional(Schema.String),
1826
+ toolDescription: Schema.optional(Schema.String),
1649
1827
  hookName: Schema.optional(Schema.String)
1650
1828
  })
1651
1829
  });
@@ -2748,6 +2926,7 @@ const DomainEvent = Schema.Union([
2748
2926
  ProjectCiSuiteObservedEvent,
2749
2927
  ProjectCiHeadObservedEvent,
2750
2928
  RestartGateChangedEvent,
2929
+ GitHubQuotaChangedEvent,
2751
2930
  ProjectDeployChangedEvent,
2752
2931
  AgentCreatedEvent,
2753
2932
  AgentEnrichmentChangedEvent,
@@ -3138,13 +3317,23 @@ const WorkLogEntry = Schema.Struct({
3138
3317
  toolInput: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
3139
3318
  sequence: Schema.optional(Schema.Number)
3140
3319
  });
3320
+ /** A human-origin message read from a subagent's own sidechain transcript (PAN-4247). */
3321
+ const SubagentHumanInput = Schema.Struct({
3322
+ id: Schema.String,
3323
+ text: Schema.String,
3324
+ createdAt: Schema.String
3325
+ });
3141
3326
  const SubagentSummary = Schema.Struct({
3142
3327
  agentId: Schema.String,
3143
3328
  agentType: Schema.String,
3144
3329
  description: Schema.String,
3145
3330
  toolUseId: Schema.String,
3146
3331
  spawnDepth: Schema.Number,
3147
- status: Schema.Literals(["running", "done"])
3332
+ status: Schema.Literals(["running", "done"]),
3333
+ /** True for a background subagent, launched with `requestShape: "background"` (PAN-4247). */
3334
+ background: Schema.optional(Schema.Boolean),
3335
+ /** Recent human-origin sidechain inputs, most useful when a message routed into this subagent instead of the main conversation (PAN-4247). */
3336
+ humanInputs: Schema.optional(Schema.Array(SubagentHumanInput))
3148
3337
  });
3149
3338
  /**
3150
3339
  * Response shape for GET /api/agents/:id/conversation.
@@ -3653,6 +3842,7 @@ const INITIAL_READ_MODEL_STATE = {
3653
3842
  embedProgressBySessionId: {},
3654
3843
  ciByProjectKey: {},
3655
3844
  restartGate: null,
3845
+ githubQuota: null,
3656
3846
  deployByProjectKey: {},
3657
3847
  agentIdBySessionId: {},
3658
3848
  dashboardLifecycle: {
@@ -3784,6 +3974,7 @@ function syncSnapshot(state, snapshot) {
3784
3974
  embedProgressBySessionId: snapshot.embedProgressBySessionId ?? {},
3785
3975
  ciByProjectKey: snapshot.ciByProjectKey ?? state.ciByProjectKey,
3786
3976
  restartGate: snapshot.restartGate ?? state.restartGate,
3977
+ githubQuota: snapshot.githubQuota ?? state.githubQuota,
3787
3978
  deployByProjectKey: snapshot.deployByProjectKey ?? state.deployByProjectKey,
3788
3979
  agentIdBySessionId
3789
3980
  };
@@ -3863,7 +4054,8 @@ function applyEvent(state, event) {
3863
4054
  pendingAskUserQuestion: event.payload.pendingAskUserQuestion,
3864
4055
  pendingProposedPlan: event.payload.pendingProposedPlan,
3865
4056
  resolution: event.payload.resolution,
3866
- resolutionCount: event.payload.resolutionCount
4057
+ resolutionCount: event.payload.resolutionCount,
4058
+ turnEndAssessment: event.payload.turnEndAssessment
3867
4059
  }
3868
4060
  }
3869
4061
  };
@@ -3888,6 +4080,7 @@ function applyEvent(state, event) {
3888
4080
  ...prevRuntime,
3889
4081
  activity: "stopped",
3890
4082
  currentTool: void 0,
4083
+ currentToolDescription: void 0,
3891
4084
  thinking: void 0,
3892
4085
  waiting: void 0,
3893
4086
  channelReply: void 0,
@@ -4000,6 +4193,7 @@ function applyEvent(state, event) {
4000
4193
  delete base["pendingInputKinds"];
4001
4194
  delete base["pendingAskUserQuestion"];
4002
4195
  delete base["pendingProposedPlan"];
4196
+ delete base["turnEndAssessment"];
4003
4197
  }
4004
4198
  return base;
4005
4199
  })();
@@ -4031,6 +4225,7 @@ function applyEvent(state, event) {
4031
4225
  ...prevRuntime,
4032
4226
  activity: "stopped",
4033
4227
  currentTool: void 0,
4228
+ currentToolDescription: void 0,
4034
4229
  thinking: void 0,
4035
4230
  waiting: void 0,
4036
4231
  channelReply: void 0,
@@ -4199,6 +4394,11 @@ function applyEvent(state, event) {
4199
4394
  ...event.payload.lastOutcome === void 0 ? {} : { lastOutcome: event.payload.lastOutcome }
4200
4395
  }
4201
4396
  };
4397
+ case "github_quota.changed": return {
4398
+ ...state,
4399
+ sequence: Math.max(state.sequence, event.sequence),
4400
+ githubQuota: event.payload
4401
+ };
4202
4402
  case "project.deploy_changed": return {
4203
4403
  ...state,
4204
4404
  sequence: Math.max(state.sequence, event.sequence),
@@ -4452,12 +4652,13 @@ function applyEvent(state, event) {
4452
4652
  sequence: Math.max(state.sequence, event.sequence)
4453
4653
  };
4454
4654
  case "agent.activity_changed": {
4455
- const { agentId, activity, currentTool } = event.payload;
4655
+ const { agentId, activity, currentTool, toolDescription } = event.payload;
4456
4656
  const prev = state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence);
4457
4657
  const next = {
4458
4658
  ...prev,
4459
4659
  activity,
4460
4660
  currentTool: activity === "working" ? currentTool : void 0,
4661
+ currentToolDescription: activity === "working" ? toolDescription : void 0,
4461
4662
  thinking: activity === "thinking" ? prev.thinking : void 0,
4462
4663
  waiting: activity === "waiting" ? prev.waiting : void 0,
4463
4664
  channelReply: activity === "working" ? void 0 : prev.channelReply,
@@ -4480,6 +4681,7 @@ function applyEvent(state, event) {
4480
4681
  ...state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence),
4481
4682
  activity: "thinking",
4482
4683
  currentTool: void 0,
4684
+ currentToolDescription: void 0,
4483
4685
  thinking: {
4484
4686
  since: event.timestamp,
4485
4687
  lastToolAt
@@ -4528,6 +4730,7 @@ function applyEvent(state, event) {
4528
4730
  ...state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence),
4529
4731
  activity: "waiting",
4530
4732
  currentTool: void 0,
4733
+ currentToolDescription: void 0,
4531
4734
  thinking: void 0,
4532
4735
  waiting: {
4533
4736
  reason,
@@ -5084,6 +5287,30 @@ function deriveProjectCi(record) {
5084
5287
  };
5085
5288
  }
5086
5289
  //#endregion
5290
+ //#region src/effort.ts
5291
+ /**
5292
+ * Canonical reasoning-effort levels, end to end. `xhigh` was added in Opus 4.7
5293
+ * (between `high` and `max`); `max` predates it (Opus 4.6+/Sonnet 4.6). This is
5294
+ * the single source of truth for the enum — every other copy in the codebase
5295
+ * derives from it.
5296
+ */
5297
+ const EFFORT_LEVELS = [
5298
+ "low",
5299
+ "medium",
5300
+ "high",
5301
+ "xhigh",
5302
+ "max"
5303
+ ];
5304
+ const DEFAULT_EFFORT = "high";
5305
+ const EffortLevelSchema = Schema.Literals(EFFORT_LEVELS);
5306
+ function isEffortLevel(value) {
5307
+ return typeof value === "string" && EFFORT_LEVELS.includes(value);
5308
+ }
5309
+ /** Compares two effort levels by rank; negative when `a` is lower than `b`. */
5310
+ function compareEffort(a, b) {
5311
+ return EFFORT_LEVELS.indexOf(a) - EFFORT_LEVELS.indexOf(b);
5312
+ }
5313
+ //#endregion
5087
5314
  //#region src/flywheel.ts
5088
5315
  const FlywheelRunId = Schema.String.check(Schema.isPattern(/^RUN-\d+$/));
5089
5316
  const FlywheelHttpUrl = Schema.String.check(Schema.isPattern(/^https?:\/\/\S+$/i));
@@ -5095,15 +5322,10 @@ const FlywheelHarness = Schema.Literals([
5095
5322
  "acp",
5096
5323
  "kimi-code",
5097
5324
  "opencode",
5098
- "muse"
5099
- ]);
5100
- const FlywheelEffort = Schema.Literals([
5101
- "low",
5102
- "medium",
5103
- "high",
5104
- "xhigh",
5105
- "max"
5325
+ "muse",
5326
+ "prime-agent"
5106
5327
  ]);
5328
+ const FlywheelEffort = EffortLevelSchema;
5107
5329
  const FlywheelOrchestrator = Schema.Struct({
5108
5330
  harness: FlywheelHarness,
5109
5331
  model: Schema.String,
@@ -5364,6 +5586,8 @@ const FlywheelConversationSummary = Schema.Struct({
5364
5586
  model: Schema.NullOr(Schema.String),
5365
5587
  harness: Schema.NullOr(Schema.String),
5366
5588
  cwd: Schema.String,
5589
+ /** When the conversation row was created — the page's elapsed run time. */
5590
+ createdAt: Schema.String,
5367
5591
  sessionAlive: Schema.Boolean
5368
5592
  });
5369
5593
  const FlywheelLastTick = Schema.Struct({
@@ -5385,11 +5609,28 @@ const FlywheelJournalSummary = Schema.Struct({
5385
5609
  type: Schema.String,
5386
5610
  source: Schema.optional(Schema.String)
5387
5611
  });
5612
+ /** One live agent pane in the flywheel's project, as the backend inventory reports it. */
5613
+ const FlywheelAgentSummary = Schema.Struct({
5614
+ issueId: Schema.String,
5615
+ role: Schema.String,
5616
+ harness: Schema.String,
5617
+ model: Schema.String,
5618
+ state: Schema.String,
5619
+ agentId: Schema.optional(Schema.String)
5620
+ });
5388
5621
  const FlywheelInFlightRow = Schema.Struct({
5389
5622
  issueId: Schema.String,
5623
+ /** The tracker's title, or `null` when no tracker answered for this issue. */
5624
+ title: Schema.NullOr(Schema.String),
5390
5625
  state: IssueState,
5391
5626
  attention: Schema.optional(IssueAttention),
5392
5627
  pr: Schema.optional(DerivedPrState),
5628
+ /** Set when no configured tracker answered: the state is a guess, not a fact. */
5629
+ trackerUnknown: Schema.optional(Schema.Literal(true)),
5630
+ /** Live agent panes on this issue. `working` with 0 means nobody is driving it. */
5631
+ liveAgents: Schema.Number,
5632
+ /** The loop named this id in its newest tick marker's in-flight list. */
5633
+ inTick: Schema.Boolean,
5393
5634
  lastJournal: Schema.NullOr(FlywheelJournalSummary)
5394
5635
  });
5395
5636
  const FlywheelOrderBookSummary = Schema.Struct({
@@ -5406,6 +5647,13 @@ const FlywheelDerivedStatus = Schema.Struct({
5406
5647
  freshness: Schema.NullOr(FlywheelFreshness),
5407
5648
  policies: FlywheelPolicies,
5408
5649
  inFlight: Schema.Array(FlywheelInFlightRow),
5650
+ /** Every live agent on an in-flight issue, by issue then role. */
5651
+ agents: Schema.Array(FlywheelAgentSummary),
5652
+ /**
5653
+ * Which list the header counts: `tick` when a running loop named its own
5654
+ * in-flight ids, `census` when the rows are just the feature workspaces.
5655
+ */
5656
+ inFlightSource: Schema.Literals(["tick", "census"]),
5409
5657
  orderBook: Schema.NullOr(FlywheelOrderBookSummary),
5410
5658
  projectRoot: Schema.String,
5411
5659
  generatedAt: Schema.String
@@ -5471,7 +5719,8 @@ const CONTEXT_PREVIEW_HARNESSES = [
5471
5719
  "acp",
5472
5720
  "kimi-code",
5473
5721
  "opencode",
5474
- "muse"
5722
+ "muse",
5723
+ "prime-agent"
5475
5724
  ];
5476
5725
  const ContextLayerKind = Schema.Literals(CONTEXT_LAYER_KINDS);
5477
5726
  const ContextPreviewHarness = Schema.Literals(CONTEXT_PREVIEW_HARNESSES);
@@ -5581,6 +5830,7 @@ const ContextHarnessPreviews = Schema.Struct({
5581
5830
  "kimi-code": Schema.String,
5582
5831
  opencode: Schema.optional(Schema.String),
5583
5832
  muse: Schema.String,
5833
+ "prime-agent": Schema.String,
5584
5834
  fullPrompt: Schema.String
5585
5835
  });
5586
5836
  const ContextPreviewDiagnostic = Schema.Struct({
@@ -5639,6 +5889,7 @@ const ArtifactAgentHarness = Schema.Literals([
5639
5889
  "kimi-code",
5640
5890
  "opencode",
5641
5891
  "muse",
5892
+ "prime-agent",
5642
5893
  "user"
5643
5894
  ]);
5644
5895
  const ArtifactLifecycleState = Schema.Literals([
@@ -5816,7 +6067,8 @@ const CLAUDE_CODE_BEHAVIOR = {
5816
6067
  usesCodexHome: false,
5817
6068
  injectsPromptTimeMemory: false,
5818
6069
  workAgentMode: "claude-code",
5819
- readyTimeoutSeconds: 30
6070
+ readyTimeoutSeconds: 30,
6071
+ steerKind: "send-now-keys"
5820
6072
  };
5821
6073
  const OHMYPI_BEHAVIOR = {
5822
6074
  displayName: "Pi",
@@ -5838,7 +6090,14 @@ const OHMYPI_BEHAVIOR = {
5838
6090
  usesCodexHome: false,
5839
6091
  injectsPromptTimeMemory: true,
5840
6092
  workAgentMode: "ohmypi-rpc",
5841
- readyTimeoutSeconds: 120
6093
+ readyTimeoutSeconds: 120,
6094
+ steerKind: "control-channel",
6095
+ effortLevels: [
6096
+ "low",
6097
+ "medium",
6098
+ "high",
6099
+ "xhigh"
6100
+ ]
5842
6101
  };
5843
6102
  const CODEX_BEHAVIOR = {
5844
6103
  displayName: "Codex",
@@ -5860,7 +6119,8 @@ const CODEX_BEHAVIOR = {
5860
6119
  usesCodexHome: true,
5861
6120
  injectsPromptTimeMemory: false,
5862
6121
  workAgentMode: "codex-work-tui",
5863
- readyTimeoutSeconds: 30
6122
+ readyTimeoutSeconds: 30,
6123
+ steerKind: null
5864
6124
  };
5865
6125
  const ACP_BEHAVIOR = {
5866
6126
  displayName: "ACP",
@@ -5882,7 +6142,8 @@ const ACP_BEHAVIOR = {
5882
6142
  usesCodexHome: false,
5883
6143
  injectsPromptTimeMemory: false,
5884
6144
  workAgentMode: "acp-host",
5885
- readyTimeoutSeconds: 30
6145
+ readyTimeoutSeconds: 30,
6146
+ steerKind: null
5886
6147
  };
5887
6148
  const KIMI_CODE_BEHAVIOR = {
5888
6149
  displayName: "Kimi Code",
@@ -5904,7 +6165,8 @@ const KIMI_CODE_BEHAVIOR = {
5904
6165
  usesCodexHome: false,
5905
6166
  injectsPromptTimeMemory: false,
5906
6167
  workAgentMode: "kimi-code-tui",
5907
- readyTimeoutSeconds: 60
6168
+ readyTimeoutSeconds: 60,
6169
+ steerKind: null
5908
6170
  };
5909
6171
  const OPENCODE_BEHAVIOR = {
5910
6172
  ...ACP_BEHAVIOR,
@@ -5933,7 +6195,37 @@ const MUSE_BEHAVIOR = {
5933
6195
  usesCodexHome: false,
5934
6196
  injectsPromptTimeMemory: false,
5935
6197
  workAgentMode: "muse-tui",
5936
- readyTimeoutSeconds: 60
6198
+ readyTimeoutSeconds: 60,
6199
+ steerKind: null,
6200
+ effortLevels: [
6201
+ "low",
6202
+ "medium",
6203
+ "high",
6204
+ "xhigh"
6205
+ ]
6206
+ };
6207
+ const PRIME_AGENT_BEHAVIOR = {
6208
+ displayName: "Prime Agent",
6209
+ nativeCommands: [],
6210
+ executableName: "prime-agent",
6211
+ processNames: ["prime-agent"],
6212
+ launchCommandKind: "prime-agent-host",
6213
+ deliveryKind: "prime-agent-host-rpc",
6214
+ readinessKind: "prime-agent-host-ready",
6215
+ transcriptKind: "prime-agent-jsonl",
6216
+ sessionIdSource: "prime-agent-session-id",
6217
+ contextLayerKind: "prime-agent",
6218
+ feedKind: "prime_agent",
6219
+ supportsPtySupervisor: false,
6220
+ supportsChannelsBridge: false,
6221
+ supportsConversationStreaming: true,
6222
+ supportsPatchProjection: false,
6223
+ usesRpcFifo: false,
6224
+ usesCodexHome: false,
6225
+ injectsPromptTimeMemory: false,
6226
+ workAgentMode: "prime-agent-host",
6227
+ readyTimeoutSeconds: 60,
6228
+ steerKind: null
5937
6229
  };
5938
6230
  const BEHAVIORS = {
5939
6231
  "opencode": OPENCODE_BEHAVIOR,
@@ -5942,7 +6234,8 @@ const BEHAVIORS = {
5942
6234
  codex: CODEX_BEHAVIOR,
5943
6235
  acp: ACP_BEHAVIOR,
5944
6236
  "kimi-code": KIMI_CODE_BEHAVIOR,
5945
- muse: MUSE_BEHAVIOR
6237
+ muse: MUSE_BEHAVIOR,
6238
+ "prime-agent": PRIME_AGENT_BEHAVIOR
5946
6239
  };
5947
6240
  function getHarnessBehavior(harness) {
5948
6241
  if (harness === "ohmypi" || harness === "pi") return OHMYPI_BEHAVIOR;
@@ -5951,6 +6244,7 @@ function getHarnessBehavior(harness) {
5951
6244
  if (harness === "acp") return ACP_BEHAVIOR;
5952
6245
  if (harness === "kimi-code") return KIMI_CODE_BEHAVIOR;
5953
6246
  if (harness === "muse") return MUSE_BEHAVIOR;
6247
+ if (harness === "prime-agent") return PRIME_AGENT_BEHAVIOR;
5954
6248
  return CLAUDE_CODE_BEHAVIOR;
5955
6249
  }
5956
6250
  function getRuntimeBehavior(runtime) {
@@ -6065,7 +6359,10 @@ const TELEMETRY_EVENT_NAMES = [
6065
6359
  "agent_question_answered",
6066
6360
  "server_boot",
6067
6361
  "cli_command_run",
6068
- "pipeline_stage_changed"
6362
+ "pipeline_stage_changed",
6363
+ "github_quota_sample",
6364
+ "github_rate_limited",
6365
+ "instance_heartbeat"
6069
6366
  ];
6070
6367
  const TELEMETRY_CLI_VERBS = [
6071
6368
  "abort",
@@ -6182,6 +6479,19 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6182
6479
  "handoff",
6183
6480
  "plain"
6184
6481
  ],
6482
+ github_caller: [
6483
+ "pipeline_membership",
6484
+ "pr_cache",
6485
+ "pr_sync",
6486
+ "ci_repair",
6487
+ "issue_poller",
6488
+ "close_out",
6489
+ "tracker_client",
6490
+ "app_rest",
6491
+ "quota_sampler",
6492
+ "agent",
6493
+ "other"
6494
+ ],
6185
6495
  harness: [
6186
6496
  "claude-code",
6187
6497
  "ohmypi",
@@ -6189,7 +6499,8 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6189
6499
  "acp",
6190
6500
  "kimi-code",
6191
6501
  "opencode",
6192
- "muse"
6502
+ "muse",
6503
+ "prime-agent"
6193
6504
  ],
6194
6505
  merge_kind: ["pipeline"],
6195
6506
  model_family: [
@@ -6213,7 +6524,26 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6213
6524
  "clone",
6214
6525
  "existing",
6215
6526
  "new"
6216
- ]
6527
+ ],
6528
+ quota_points_bucket: [
6529
+ "0",
6530
+ "1-49",
6531
+ "50-199",
6532
+ "200-499",
6533
+ "500-999",
6534
+ "1000-2499",
6535
+ "2500+"
6536
+ ],
6537
+ quota_remaining_bucket: [
6538
+ "0",
6539
+ "1-99",
6540
+ "100-499",
6541
+ "500-999",
6542
+ "1000-2499",
6543
+ "2500+",
6544
+ "unknown"
6545
+ ],
6546
+ rate_limit_kind: ["primary", "secondary"]
6217
6547
  };
6218
6548
  const TELEMETRY_EVENT_CATALOG = {
6219
6549
  dashboard_tab_viewed: { tab: "dashboard_tab" },
@@ -6256,8 +6586,65 @@ const TELEMETRY_EVENT_CATALOG = {
6256
6586
  stage: "pipeline_stage",
6257
6587
  harness: "harness",
6258
6588
  model: "model_family"
6589
+ },
6590
+ github_quota_sample: {
6591
+ graphql_pipeline_membership: "quota_points_bucket",
6592
+ rest_pipeline_membership: "quota_points_bucket",
6593
+ graphql_pr_cache: "quota_points_bucket",
6594
+ rest_pr_cache: "quota_points_bucket",
6595
+ graphql_pr_sync: "quota_points_bucket",
6596
+ rest_pr_sync: "quota_points_bucket",
6597
+ graphql_ci_repair: "quota_points_bucket",
6598
+ rest_ci_repair: "quota_points_bucket",
6599
+ graphql_issue_poller: "quota_points_bucket",
6600
+ rest_issue_poller: "quota_points_bucket",
6601
+ graphql_close_out: "quota_points_bucket",
6602
+ rest_close_out: "quota_points_bucket",
6603
+ graphql_tracker_client: "quota_points_bucket",
6604
+ rest_tracker_client: "quota_points_bucket",
6605
+ graphql_app_rest: "quota_points_bucket",
6606
+ rest_app_rest: "quota_points_bucket",
6607
+ graphql_agent: "quota_points_bucket",
6608
+ rest_agent: "quota_points_bucket",
6609
+ graphql_other: "quota_points_bucket",
6610
+ rest_other: "quota_points_bucket",
6611
+ graphql_unattributed: "quota_points_bucket",
6612
+ min_remaining_graphql: "quota_remaining_bucket",
6613
+ min_remaining_rest: "quota_remaining_bucket",
6614
+ primary_limit_errors: "count_bucket",
6615
+ secondary_limit_errors: "count_bucket"
6616
+ },
6617
+ github_rate_limited: {
6618
+ caller: "github_caller",
6619
+ kind: "rate_limit_kind",
6620
+ own_usage_low: "boolean"
6621
+ },
6622
+ instance_heartbeat: {
6623
+ project_count: "count_bucket",
6624
+ active_agent_count: "count_bucket",
6625
+ dashboard_running: "boolean"
6259
6626
  }
6260
6627
  };
6628
+ /** PAN-4264: GitHub quota points as a coarse bucket (raw counts are never sent). */
6629
+ function bucketQuotaPoints(points) {
6630
+ if (!(points > 0)) return "0";
6631
+ if (points < 50) return "1-49";
6632
+ if (points < 200) return "50-199";
6633
+ if (points < 500) return "200-499";
6634
+ if (points < 1e3) return "500-999";
6635
+ if (points < 2500) return "1000-2499";
6636
+ return "2500+";
6637
+ }
6638
+ /** PAN-4264: GitHub quota remaining as a coarse bucket; `unknown` without a sample. */
6639
+ function bucketQuotaRemaining(remaining) {
6640
+ if (remaining === void 0 || !Number.isFinite(remaining)) return "unknown";
6641
+ if (remaining <= 0) return "0";
6642
+ if (remaining < 100) return "1-99";
6643
+ if (remaining < 500) return "100-499";
6644
+ if (remaining < 1e3) return "500-999";
6645
+ if (remaining < 2500) return "1000-2499";
6646
+ return "2500+";
6647
+ }
6261
6648
  //#endregion
6262
6649
  //#region src/composer-commands.generated.ts
6263
6650
  const COMPOSER_COMMAND_MANIFEST = [
@@ -6485,168 +6872,451 @@ const COMPOSER_COMMAND_MANIFEST = [
6485
6872
  "id": "pan-skills",
6486
6873
  "path": ["skills"],
6487
6874
  "display": "/pan skills",
6488
- "description": "List and manage skills",
6875
+ "description": "List skills and set per-level on/off overrides",
6489
6876
  "args": [],
6490
- "options": [{
6491
- "flags": "--json",
6492
- "description": "Output as JSON",
6493
- "required": false,
6494
- "valueHint": null
6495
- }],
6877
+ "options": [],
6496
6878
  "aliases": [],
6497
6879
  "category": "Core"
6498
6880
  },
6499
6881
  {
6500
- "id": "pan-issues",
6501
- "path": ["issues"],
6502
- "display": "/pan issues",
6503
- "description": "List and triage work across configured trackers",
6882
+ "id": "pan-skills-list",
6883
+ "path": ["skills", "list"],
6884
+ "display": "/pan skills list",
6885
+ "description": "List skills with effective on/off state and its source",
6504
6886
  "args": [],
6505
6887
  "options": [
6506
6888
  {
6507
- "flags": "--all",
6508
- "description": "Include closed issues",
6509
- "required": false,
6510
- "valueHint": null
6889
+ "flags": "--project <key>",
6890
+ "description": "Resolve for a project",
6891
+ "required": true,
6892
+ "valueHint": "key"
6511
6893
  },
6512
6894
  {
6513
- "flags": "--mine",
6514
- "description": "Show only my assigned issues",
6515
- "required": false,
6516
- "valueHint": null
6895
+ "flags": "--issue <id>",
6896
+ "description": "Resolve for an issue",
6897
+ "required": true,
6898
+ "valueHint": "id"
6517
6899
  },
6518
6900
  {
6519
6901
  "flags": "--json",
6520
6902
  "description": "Output as JSON",
6521
6903
  "required": false,
6522
6904
  "valueHint": null
6523
- },
6905
+ }
6906
+ ],
6907
+ "aliases": [],
6908
+ "category": "Core"
6909
+ },
6910
+ {
6911
+ "id": "pan-skills-set",
6912
+ "path": ["skills", "set"],
6913
+ "display": "/pan skills set",
6914
+ "description": "Set a skill (<skill> <state>) or a pack (--pack <id> <state>) on, off, or inherit",
6915
+ "args": [{
6916
+ "name": "args",
6917
+ "required": true,
6918
+ "variadic": true
6919
+ }],
6920
+ "options": [
6524
6921
  {
6525
- "flags": "--tracker <type>",
6526
- "description": "Query specific tracker (linear/github/gitlab)",
6922
+ "flags": "--project <key>",
6923
+ "description": "Project override",
6527
6924
  "required": true,
6528
- "valueHint": "type"
6925
+ "valueHint": "key"
6529
6926
  },
6530
6927
  {
6531
- "flags": "--all-trackers",
6532
- "description": "Query all configured trackers",
6533
- "required": false,
6534
- "valueHint": null
6928
+ "flags": "--issue <id>",
6929
+ "description": "Issue override",
6930
+ "required": true,
6931
+ "valueHint": "id"
6535
6932
  },
6536
6933
  {
6537
- "flags": "--triage",
6538
- "description": "Show triage queue",
6539
- "required": false,
6540
- "valueHint": null
6934
+ "flags": "--pack <id>",
6935
+ "description": "Set a whole skill pack instead of one skill",
6936
+ "required": true,
6937
+ "valueHint": "id"
6541
6938
  }
6542
6939
  ],
6543
6940
  "aliases": [],
6544
- "category": "Lifecycle"
6941
+ "category": "Core"
6545
6942
  },
6546
6943
  {
6547
- "id": "pan-show",
6548
- "path": ["show"],
6549
- "display": "/pan show",
6550
- "description": "Unified lens: derived issue state, CV, context, health for one issue",
6944
+ "id": "pan-skills-pack",
6945
+ "path": ["skills", "pack"],
6946
+ "display": "/pan skills pack",
6947
+ "description": "Register, update, and cache external skill packs pinned to a commit",
6948
+ "args": [],
6949
+ "options": [],
6950
+ "aliases": [],
6951
+ "category": "Core"
6952
+ },
6953
+ {
6954
+ "id": "pan-skills-pack-add",
6955
+ "path": [
6956
+ "skills",
6957
+ "pack",
6958
+ "add"
6959
+ ],
6960
+ "display": "/pan skills pack add",
6961
+ "description": "Register a git skill pack at the commit a ref resolves to (enables nothing)",
6551
6962
  "args": [{
6552
6963
  "name": "id",
6553
6964
  "required": true,
6554
6965
  "variadic": false
6966
+ }, {
6967
+ "name": "url",
6968
+ "required": true,
6969
+ "variadic": false
6555
6970
  }],
6556
6971
  "options": [
6557
6972
  {
6558
- "flags": "--cv",
6559
- "description": "Agent work history only",
6560
- "required": false,
6561
- "valueHint": null
6562
- },
6563
- {
6564
- "flags": "--context",
6565
- "description": "Context engineering state only",
6566
- "required": false,
6567
- "valueHint": null
6973
+ "flags": "--ref <ref>",
6974
+ "description": "Tag or branch to pin",
6975
+ "required": true,
6976
+ "valueHint": "ref"
6568
6977
  },
6569
6978
  {
6570
- "flags": "--health",
6571
- "description": "Health + heartbeat only",
6572
- "required": false,
6573
- "valueHint": null
6979
+ "flags": "--adapter <adapter>",
6980
+ "description": "plain or claude-plugin",
6981
+ "required": true,
6982
+ "valueHint": "adapter"
6574
6983
  },
6575
6984
  {
6576
- "flags": "--json",
6577
- "description": "Output as JSON",
6985
+ "flags": "--yes",
6986
+ "description": "Trust the resolved commit without asking",
6578
6987
  "required": false,
6579
6988
  "valueHint": null
6580
6989
  }
6581
6990
  ],
6582
6991
  "aliases": [],
6583
- "category": "Observation"
6992
+ "category": "Core"
6584
6993
  },
6585
6994
  {
6586
- "id": "pan-open",
6587
- "path": ["open"],
6588
- "display": "/pan open",
6589
- "description": "Open an issue workspace in your preferred editor",
6995
+ "id": "pan-skills-pack-update",
6996
+ "path": [
6997
+ "skills",
6998
+ "pack",
6999
+ "update"
7000
+ ],
7001
+ "display": "/pan skills pack update",
7002
+ "description": "Move a pack to the commit its ref (or --ref) now resolves to",
6590
7003
  "args": [{
6591
7004
  "name": "id",
6592
7005
  "required": true,
6593
7006
  "variadic": false
6594
7007
  }],
6595
7008
  "options": [{
6596
- "flags": "-e, --editor <editor>",
6597
- "description": "Editor to use (cursor, windsurf, vscode, zed, etc.)",
7009
+ "flags": "--ref <ref>",
7010
+ "description": "Switch to a different tag or branch",
6598
7011
  "required": true,
6599
- "valueHint": "editor"
7012
+ "valueHint": "ref"
7013
+ }, {
7014
+ "flags": "--yes",
7015
+ "description": "Trust the new commit without asking",
7016
+ "required": false,
7017
+ "valueHint": null
6600
7018
  }],
6601
7019
  "aliases": [],
6602
- "category": "Observation"
7020
+ "category": "Core"
6603
7021
  },
6604
7022
  {
6605
- "id": "pan-review",
6606
- "path": ["review"],
6607
- "display": "/pan review",
6608
- "description": "Review-loop management: request re-review, abort reviewers, restart a round",
7023
+ "id": "pan-skills-pack-list",
7024
+ "path": [
7025
+ "skills",
7026
+ "pack",
7027
+ "list"
7028
+ ],
7029
+ "display": "/pan skills pack list",
7030
+ "description": "List registered skill packs",
6609
7031
  "args": [],
6610
- "options": [],
7032
+ "options": [{
7033
+ "flags": "--json",
7034
+ "description": "Output as JSON",
7035
+ "required": false,
7036
+ "valueHint": null
7037
+ }, {
7038
+ "flags": "--offline",
7039
+ "description": "Skip the update check (no network)",
7040
+ "required": false,
7041
+ "valueHint": null
7042
+ }],
6611
7043
  "aliases": [],
6612
- "category": "Review"
7044
+ "category": "Core"
6613
7045
  },
6614
7046
  {
6615
- "id": "pan-review-request",
6616
- "path": ["review", "request"],
6617
- "display": "/pan review request",
6618
- "description": "Request re-review after fixing feedback",
7047
+ "id": "pan-skills-pack-remove",
7048
+ "path": [
7049
+ "skills",
7050
+ "pack",
7051
+ "remove"
7052
+ ],
7053
+ "display": "/pan skills pack remove",
7054
+ "description": "Unregister a pack, clear its global toggles, and delete its cache",
6619
7055
  "args": [{
6620
7056
  "name": "id",
6621
7057
  "required": true,
6622
7058
  "variadic": false
6623
7059
  }],
6624
- "options": [{
6625
- "flags": "-m, --message <text>",
6626
- "description": "Message describing the fixes applied",
6627
- "required": true,
6628
- "valueHint": "text"
6629
- }],
7060
+ "options": [],
6630
7061
  "aliases": [],
6631
- "category": "Review"
7062
+ "category": "Core"
6632
7063
  },
6633
7064
  {
6634
- "id": "pan-review-abort",
6635
- "path": ["review", "abort"],
6636
- "display": "/pan review abort",
6637
- "description": "Kill all running reviewer sessions and leave the worker idle",
7065
+ "id": "pan-skills-pack-sync",
7066
+ "path": [
7067
+ "skills",
7068
+ "pack",
7069
+ "sync"
7070
+ ],
7071
+ "display": "/pan skills pack sync",
7072
+ "description": "Re-fetch packs and extract their trusted commits (all packs when omitted)",
6638
7073
  "args": [{
6639
7074
  "name": "id",
6640
- "required": true,
7075
+ "required": false,
6641
7076
  "variadic": false
6642
7077
  }],
6643
7078
  "options": [],
6644
7079
  "aliases": [],
6645
- "category": "Review"
7080
+ "category": "Core"
6646
7081
  },
6647
7082
  {
6648
- "id": "pan-review-restart",
6649
- "path": ["review", "restart"],
7083
+ "id": "pan-skills-pack-gc",
7084
+ "path": [
7085
+ "skills",
7086
+ "pack",
7087
+ "gc"
7088
+ ],
7089
+ "display": "/pan skills pack gc",
7090
+ "description": "Remove unused skill pack mounts and dangling launch links",
7091
+ "args": [],
7092
+ "options": [{
7093
+ "flags": "--max-age-days <n>",
7094
+ "description": "Keep unused mounts younger than this",
7095
+ "required": true,
7096
+ "valueHint": "n"
7097
+ }],
7098
+ "aliases": [],
7099
+ "category": "Core"
7100
+ },
7101
+ {
7102
+ "id": "pan-pair",
7103
+ "path": ["pair"],
7104
+ "display": "/pan pair",
7105
+ "description": "Print a one-time URL that pairs another device with this dashboard (see configuration/remote-access.mdx)",
7106
+ "args": [],
7107
+ "options": [
7108
+ {
7109
+ "flags": "--label <name>",
7110
+ "description": "Name to record for the pairing in the activity log",
7111
+ "required": true,
7112
+ "valueHint": "name"
7113
+ },
7114
+ {
7115
+ "flags": "--url <base>",
7116
+ "description": "Base URL the other device can reach (default: this dashboard's API URL)",
7117
+ "required": true,
7118
+ "valueHint": "base"
7119
+ },
7120
+ {
7121
+ "flags": "--json",
7122
+ "description": "Print { url, credential, expiresAt } as JSON",
7123
+ "required": false,
7124
+ "valueHint": null
7125
+ }
7126
+ ],
7127
+ "aliases": [],
7128
+ "category": "CLI"
7129
+ },
7130
+ {
7131
+ "id": "pan-devices",
7132
+ "path": ["devices"],
7133
+ "display": "/pan devices",
7134
+ "description": "List or revoke paired devices (see configuration/remote-access.mdx)",
7135
+ "args": [],
7136
+ "options": [],
7137
+ "aliases": [],
7138
+ "category": "CLI"
7139
+ },
7140
+ {
7141
+ "id": "pan-devices-list",
7142
+ "path": ["devices", "list"],
7143
+ "display": "/pan devices list",
7144
+ "description": "List paired devices with created, last-used and revoked times",
7145
+ "args": [],
7146
+ "options": [{
7147
+ "flags": "--json",
7148
+ "description": "Print the devices as JSON",
7149
+ "required": false,
7150
+ "valueHint": null
7151
+ }],
7152
+ "aliases": [],
7153
+ "category": "CLI"
7154
+ },
7155
+ {
7156
+ "id": "pan-devices-revoke",
7157
+ "path": ["devices", "revoke"],
7158
+ "display": "/pan devices revoke",
7159
+ "description": "Revoke a paired device and close its live connections",
7160
+ "args": [{
7161
+ "name": "id",
7162
+ "required": true,
7163
+ "variadic": false
7164
+ }],
7165
+ "options": [],
7166
+ "aliases": [],
7167
+ "category": "CLI"
7168
+ },
7169
+ {
7170
+ "id": "pan-issues",
7171
+ "path": ["issues"],
7172
+ "display": "/pan issues",
7173
+ "description": "List and triage work across configured trackers",
7174
+ "args": [],
7175
+ "options": [
7176
+ {
7177
+ "flags": "--all",
7178
+ "description": "Include closed issues",
7179
+ "required": false,
7180
+ "valueHint": null
7181
+ },
7182
+ {
7183
+ "flags": "--mine",
7184
+ "description": "Show only my assigned issues",
7185
+ "required": false,
7186
+ "valueHint": null
7187
+ },
7188
+ {
7189
+ "flags": "--json",
7190
+ "description": "Output as JSON",
7191
+ "required": false,
7192
+ "valueHint": null
7193
+ },
7194
+ {
7195
+ "flags": "--tracker <type>",
7196
+ "description": "Query specific tracker (linear/github/gitlab)",
7197
+ "required": true,
7198
+ "valueHint": "type"
7199
+ },
7200
+ {
7201
+ "flags": "--all-trackers",
7202
+ "description": "Query all configured trackers",
7203
+ "required": false,
7204
+ "valueHint": null
7205
+ },
7206
+ {
7207
+ "flags": "--triage",
7208
+ "description": "Show triage queue",
7209
+ "required": false,
7210
+ "valueHint": null
7211
+ }
7212
+ ],
7213
+ "aliases": [],
7214
+ "category": "Lifecycle"
7215
+ },
7216
+ {
7217
+ "id": "pan-show",
7218
+ "path": ["show"],
7219
+ "display": "/pan show",
7220
+ "description": "Unified lens: derived issue state, CV, context, health for one issue",
7221
+ "args": [{
7222
+ "name": "id",
7223
+ "required": true,
7224
+ "variadic": false
7225
+ }],
7226
+ "options": [
7227
+ {
7228
+ "flags": "--cv",
7229
+ "description": "Agent work history only",
7230
+ "required": false,
7231
+ "valueHint": null
7232
+ },
7233
+ {
7234
+ "flags": "--context",
7235
+ "description": "Context engineering state only",
7236
+ "required": false,
7237
+ "valueHint": null
7238
+ },
7239
+ {
7240
+ "flags": "--health",
7241
+ "description": "Health + heartbeat only",
7242
+ "required": false,
7243
+ "valueHint": null
7244
+ },
7245
+ {
7246
+ "flags": "--json",
7247
+ "description": "Output as JSON",
7248
+ "required": false,
7249
+ "valueHint": null
7250
+ }
7251
+ ],
7252
+ "aliases": [],
7253
+ "category": "Observation"
7254
+ },
7255
+ {
7256
+ "id": "pan-open",
7257
+ "path": ["open"],
7258
+ "display": "/pan open",
7259
+ "description": "Open an issue workspace in your preferred editor",
7260
+ "args": [{
7261
+ "name": "id",
7262
+ "required": true,
7263
+ "variadic": false
7264
+ }],
7265
+ "options": [{
7266
+ "flags": "-e, --editor <editor>",
7267
+ "description": "Editor to use (cursor, windsurf, vscode, zed, etc.)",
7268
+ "required": true,
7269
+ "valueHint": "editor"
7270
+ }],
7271
+ "aliases": [],
7272
+ "category": "Observation"
7273
+ },
7274
+ {
7275
+ "id": "pan-review",
7276
+ "path": ["review"],
7277
+ "display": "/pan review",
7278
+ "description": "Review-loop management: request re-review, abort reviewers, restart a round",
7279
+ "args": [],
7280
+ "options": [],
7281
+ "aliases": [],
7282
+ "category": "Review"
7283
+ },
7284
+ {
7285
+ "id": "pan-review-request",
7286
+ "path": ["review", "request"],
7287
+ "display": "/pan review request",
7288
+ "description": "Request re-review after fixing feedback",
7289
+ "args": [{
7290
+ "name": "id",
7291
+ "required": true,
7292
+ "variadic": false
7293
+ }],
7294
+ "options": [{
7295
+ "flags": "-m, --message <text>",
7296
+ "description": "Message describing the fixes applied",
7297
+ "required": true,
7298
+ "valueHint": "text"
7299
+ }],
7300
+ "aliases": [],
7301
+ "category": "Review"
7302
+ },
7303
+ {
7304
+ "id": "pan-review-abort",
7305
+ "path": ["review", "abort"],
7306
+ "display": "/pan review abort",
7307
+ "description": "Kill all running reviewer sessions and leave the worker idle",
7308
+ "args": [{
7309
+ "name": "id",
7310
+ "required": true,
7311
+ "variadic": false
7312
+ }],
7313
+ "options": [],
7314
+ "aliases": [],
7315
+ "category": "Review"
7316
+ },
7317
+ {
7318
+ "id": "pan-review-restart",
7319
+ "path": ["review", "restart"],
6650
7320
  "display": "/pan review restart",
6651
7321
  "description": "Resume review and re-dispatch reviewers missing a report",
6652
7322
  "args": [{
@@ -6748,7 +7418,7 @@ const COMPOSER_COMMAND_MANIFEST = [
6748
7418
  },
6749
7419
  {
6750
7420
  "flags": "--harness <harness>",
6751
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
7421
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
6752
7422
  "required": true,
6753
7423
  "valueHint": "harness"
6754
7424
  },
@@ -6810,6 +7480,12 @@ const COMPOSER_COMMAND_MANIFEST = [
6810
7480
  "description": "Bypass the PRD-first gate for a genuinely trivial issue (loud; prefer writing the PRD)",
6811
7481
  "required": false,
6812
7482
  "valueHint": null
7483
+ },
7484
+ {
7485
+ "flags": "--critic",
7486
+ "description": "Require an independent different-family plan critique before promotion (automatic for architecture, substrate-improvement and security labels)",
7487
+ "required": false,
7488
+ "valueHint": null
6813
7489
  }
6814
7490
  ],
6815
7491
  "aliases": [],
@@ -6848,7 +7524,17 @@ const COMPOSER_COMMAND_MANIFEST = [
6848
7524
  "required": true,
6849
7525
  "variadic": false
6850
7526
  }],
6851
- "options": [],
7527
+ "options": [{
7528
+ "flags": "--force",
7529
+ "description": "Deliver even to a critic or verifier lane that already filed its verdict",
7530
+ "required": false,
7531
+ "valueHint": null
7532
+ }, {
7533
+ "flags": "--steer",
7534
+ "description": "Interrupt the running turn and send now (Claude Code send-now; Ctrl+X Ctrl+S)",
7535
+ "required": false,
7536
+ "valueHint": null
7537
+ }],
6852
7538
  "aliases": [],
6853
7539
  "category": "Lifecycle"
6854
7540
  },
@@ -7006,6 +7692,12 @@ const COMPOSER_COMMAND_MANIFEST = [
7006
7692
  "required": true,
7007
7693
  "valueHint": "path"
7008
7694
  },
7695
+ {
7696
+ "flags": "--allow-primary",
7697
+ "description": "Operator only: allow --cwd to be a project's primary checkout (refused for agent sessions)",
7698
+ "required": false,
7699
+ "valueHint": null
7700
+ },
7009
7701
  {
7010
7702
  "flags": "--project <key>",
7011
7703
  "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
@@ -7055,6 +7747,12 @@ const COMPOSER_COMMAND_MANIFEST = [
7055
7747
  "required": true,
7056
7748
  "valueHint": "path"
7057
7749
  },
7750
+ {
7751
+ "flags": "--allow-primary",
7752
+ "description": "Operator only: allow --cwd to be a project's primary checkout (refused for agent sessions)",
7753
+ "required": false,
7754
+ "valueHint": null
7755
+ },
7058
7756
  {
7059
7757
  "flags": "--project <key>",
7060
7758
  "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
@@ -7427,7 +8125,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7427
8125
  },
7428
8126
  {
7429
8127
  "flags": "--harness <harness>",
7430
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
8128
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
7431
8129
  "required": true,
7432
8130
  "valueHint": "harness"
7433
8131
  },
@@ -7505,7 +8203,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7505
8203
  },
7506
8204
  {
7507
8205
  "flags": "--skip-freshness",
7508
- "description": "Bypass the plan-freshness preflight and spawn even if the plan names files that no longer exist",
8206
+ "description": "Bypass the plan-freshness preflight and spawn even if the plan names files deleted since it was written",
7509
8207
  "required": false,
7510
8208
  "valueHint": null
7511
8209
  }
@@ -7532,7 +8230,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7532
8230
  },
7533
8231
  {
7534
8232
  "flags": "--harness <harness>",
7535
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
8233
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
7536
8234
  "required": true,
7537
8235
  "valueHint": "harness"
7538
8236
  },
@@ -7885,6 +8583,11 @@ const COMPOSER_COMMAND_MANIFEST = [
7885
8583
  "description": "Print JSON",
7886
8584
  "required": false,
7887
8585
  "valueHint": null
8586
+ }, {
8587
+ "flags": "--steal",
8588
+ "description": "Claim even when a running agent holds this item or an overlapping one (foreman/operator override)",
8589
+ "required": false,
8590
+ "valueHint": null
7888
8591
  }],
7889
8592
  "aliases": [],
7890
8593
  "category": "Lifecycle"
@@ -8543,542 +9246,972 @@ const COMPOSER_COMMAND_MANIFEST = [
8543
9246
  "category": "Workspace"
8544
9247
  },
8545
9248
  {
8546
- "id": "pan-test",
8547
- "path": ["test"],
8548
- "display": "/pan test",
8549
- "description": "Test running and management",
9249
+ "id": "pan-vault",
9250
+ "path": ["vault"],
9251
+ "display": "/pan vault",
9252
+ "description": "Session Vault: encrypted off-machine storage and cross-machine resume for agent conversations",
8550
9253
  "args": [],
8551
9254
  "options": [],
8552
9255
  "aliases": [],
8553
- "category": "Core"
9256
+ "category": "CLI"
8554
9257
  },
8555
9258
  {
8556
- "id": "pan-test-run",
8557
- "path": ["test", "run"],
8558
- "display": "/pan test run",
8559
- "description": "Run tests for a project or workspace",
9259
+ "id": "pan-vault-setup",
9260
+ "path": ["vault", "setup"],
9261
+ "display": "/pan vault setup",
9262
+ "description": "Enable the vault against your own git remote and print the recovery phrase once",
8560
9263
  "args": [{
8561
- "name": "target",
8562
- "required": false,
9264
+ "name": "git-url",
9265
+ "required": true,
8563
9266
  "variadic": false
8564
9267
  }],
8565
9268
  "options": [
8566
9269
  {
8567
- "flags": "--project <name>",
8568
- "description": "Project name from registry",
8569
- "required": true,
8570
- "valueHint": "name"
9270
+ "flags": "--hooks",
9271
+ "description": "Also register the Claude Code Stop hook that saves after each turn",
9272
+ "required": false,
9273
+ "valueHint": null
8571
9274
  },
8572
9275
  {
8573
- "flags": "--tests <names>",
8574
- "description": "Comma-separated test names to run",
9276
+ "flags": "--passphrase-file <path>",
9277
+ "description": "Also enable passphrase unlock with the passphrase in this file",
8575
9278
  "required": true,
8576
- "valueHint": "names"
9279
+ "valueHint": "path"
8577
9280
  },
8578
9281
  {
8579
- "flags": "--no-notify",
8580
- "description": "Skip desktop notification",
9282
+ "flags": "--generate-passphrase",
9283
+ "description": "Also enable passphrase unlock with a generated 6-word passphrase, printed once",
8581
9284
  "required": false,
8582
9285
  "valueHint": null
8583
- }
9286
+ },
9287
+ {
9288
+ "flags": "--no-passphrase",
9289
+ "description": "Do not offer passphrase unlock",
9290
+ "required": false,
9291
+ "valueHint": null
9292
+ }
8584
9293
  ],
8585
9294
  "aliases": [],
8586
- "category": "Core"
9295
+ "category": "CLI"
8587
9296
  },
8588
9297
  {
8589
- "id": "pan-test-list",
8590
- "path": ["test", "list"],
8591
- "display": "/pan test list",
8592
- "description": "List configured tests for a project",
9298
+ "id": "pan-vault-join",
9299
+ "path": ["vault", "join"],
9300
+ "display": "/pan vault join",
9301
+ "description": "Join an existing vault from another machine with the vault passphrase or the recovery phrase",
8593
9302
  "args": [{
8594
- "name": "project",
8595
- "required": false,
9303
+ "name": "git-url",
9304
+ "required": true,
8596
9305
  "variadic": false
8597
9306
  }],
8598
- "options": [],
8599
- "aliases": [],
8600
- "category": "Core"
8601
- },
8602
- {
8603
- "id": "pan-tts",
8604
- "path": ["tts"],
8605
- "display": "/pan tts",
8606
- "description": "Local TTS daemon helpers",
8607
- "args": [],
8608
- "options": [],
9307
+ "options": [{
9308
+ "flags": "--phrase-file <path>",
9309
+ "description": "Read the 24-word recovery phrase from a file instead of prompting",
9310
+ "required": true,
9311
+ "valueHint": "path"
9312
+ }, {
9313
+ "flags": "--passphrase-file <path>",
9314
+ "description": "Read the vault passphrase from a file instead of prompting",
9315
+ "required": true,
9316
+ "valueHint": "path"
9317
+ }],
8609
9318
  "aliases": [],
8610
- "category": "Core"
9319
+ "category": "CLI"
8611
9320
  },
8612
9321
  {
8613
- "id": "pan-tts-voices",
8614
- "path": ["tts", "voices"],
8615
- "display": "/pan tts voices",
8616
- "description": "List and inspect saved TTS voices",
9322
+ "id": "pan-vault-passphrase",
9323
+ "path": ["vault", "passphrase"],
9324
+ "display": "/pan vault passphrase",
9325
+ "description": "Turn passphrase unlock for new machines on (set) or off (remove); the vault key stays the same",
8617
9326
  "args": [],
8618
9327
  "options": [],
8619
9328
  "aliases": [],
8620
- "category": "Core"
9329
+ "category": "CLI"
8621
9330
  },
8622
9331
  {
8623
- "id": "pan-tts-voices-list",
9332
+ "id": "pan-vault-passphrase-set",
8624
9333
  "path": [
8625
- "tts",
8626
- "voices",
8627
- "list"
9334
+ "vault",
9335
+ "passphrase",
9336
+ "set"
8628
9337
  ],
8629
- "display": "/pan tts voices list",
8630
- "description": "List saved TTS voices",
9338
+ "display": "/pan vault passphrase set",
9339
+ "description": "Wrap the vault key under a passphrase so a new machine can join without the recovery phrase",
8631
9340
  "args": [],
8632
- "options": [],
8633
- "aliases": [],
8634
- "category": "Core"
8635
- },
8636
- {
8637
- "id": "pan-tts-voices-show",
8638
- "path": [
8639
- "tts",
8640
- "voices",
8641
- "show"
8642
- ],
8643
- "display": "/pan tts voices show",
8644
- "description": "Show saved TTS voice details",
8645
- "args": [{
8646
- "name": "name",
9341
+ "options": [{
9342
+ "flags": "--passphrase-file <path>",
9343
+ "description": "Read the passphrase from a file instead of prompting",
8647
9344
  "required": true,
8648
- "variadic": false
9345
+ "valueHint": "path"
9346
+ }, {
9347
+ "flags": "--generate",
9348
+ "description": "Generate a 6-word passphrase and print it once",
9349
+ "required": false,
9350
+ "valueHint": null
8649
9351
  }],
8650
- "options": [],
8651
9352
  "aliases": [],
8652
- "category": "Core"
9353
+ "category": "CLI"
8653
9354
  },
8654
9355
  {
8655
- "id": "pan-tts-voices-play",
9356
+ "id": "pan-vault-passphrase-remove",
8656
9357
  "path": [
8657
- "tts",
8658
- "voices",
8659
- "play"
9358
+ "vault",
9359
+ "passphrase",
9360
+ "remove"
8660
9361
  ],
8661
- "display": "/pan tts voices play",
8662
- "description": "Speak with a saved TTS voice",
8663
- "args": [{
8664
- "name": "name",
8665
- "required": true,
8666
- "variadic": false
8667
- }, {
8668
- "name": "text",
8669
- "required": false,
8670
- "variadic": false
8671
- }],
9362
+ "display": "/pan vault passphrase remove",
9363
+ "description": "Delete the passphrase unlock object; joining then needs the recovery phrase",
9364
+ "args": [],
8672
9365
  "options": [],
8673
9366
  "aliases": [],
8674
- "category": "Core"
9367
+ "category": "CLI"
8675
9368
  },
8676
9369
  {
8677
- "id": "pan-tts-voices-delete",
8678
- "path": [
8679
- "tts",
8680
- "voices",
8681
- "delete"
9370
+ "id": "pan-vault-rotate-key",
9371
+ "path": ["vault", "rotate-key"],
9372
+ "display": "/pan vault rotate-key",
9373
+ "description": "Replace the vault key after losing a device: re-encrypt refs under a new key, keep old chunks readable, print a new recovery phrase",
9374
+ "args": [],
9375
+ "options": [
9376
+ {
9377
+ "flags": "--yes",
9378
+ "description": "Rotate without the confirmation prompt",
9379
+ "required": false,
9380
+ "valueHint": null
9381
+ },
9382
+ {
9383
+ "flags": "--passphrase-file <path>",
9384
+ "description": "Re-wrap passphrase unlock under the new key with the passphrase in this file",
9385
+ "required": true,
9386
+ "valueHint": "path"
9387
+ },
9388
+ {
9389
+ "flags": "--generate-passphrase",
9390
+ "description": "Re-wrap passphrase unlock under the new key with a generated 6-word passphrase, printed once",
9391
+ "required": false,
9392
+ "valueHint": null
9393
+ },
9394
+ {
9395
+ "flags": "--no-passphrase",
9396
+ "description": "Turn passphrase unlock off",
9397
+ "required": false,
9398
+ "valueHint": null
9399
+ }
8682
9400
  ],
8683
- "display": "/pan tts voices delete",
8684
- "description": "Delete a saved TTS voice",
8685
- "args": [{
8686
- "name": "name",
8687
- "required": true,
8688
- "variadic": false
8689
- }],
8690
- "options": [],
8691
9401
  "aliases": [],
8692
- "category": "Core"
9402
+ "category": "CLI"
8693
9403
  },
8694
9404
  {
8695
- "id": "pan-tts-voices-set-default",
8696
- "path": [
8697
- "tts",
8698
- "voices",
8699
- "set-default"
8700
- ],
8701
- "display": "/pan tts voices set-default",
8702
- "description": "Set the system TTS voice",
8703
- "args": [{
8704
- "name": "name",
8705
- "required": true,
8706
- "variadic": false
9405
+ "id": "pan-vault-status",
9406
+ "path": ["vault", "status"],
9407
+ "display": "/pan vault status",
9408
+ "description": "Show backend, this machine, owned records, last sync and the machine list",
9409
+ "args": [],
9410
+ "options": [{
9411
+ "flags": "--json",
9412
+ "description": "Output in JSON format",
9413
+ "required": false,
9414
+ "valueHint": null
8707
9415
  }],
8708
- "options": [],
8709
9416
  "aliases": [],
8710
- "category": "Core"
9417
+ "category": "CLI"
8711
9418
  },
8712
9419
  {
8713
- "id": "pan-tts-voices-map",
8714
- "path": [
8715
- "tts",
8716
- "voices",
8717
- "map"
8718
- ],
8719
- "display": "/pan tts voices map",
8720
- "description": "Map a TTS event key to a saved voice",
9420
+ "id": "pan-vault-save",
9421
+ "path": ["vault", "save"],
9422
+ "display": "/pan vault save",
9423
+ "description": "Settle one transcript (by session id or path) or many into the vault",
8721
9424
  "args": [{
8722
- "name": "event",
8723
- "required": true,
8724
- "variadic": false
8725
- }, {
8726
- "name": "name",
8727
- "required": true,
9425
+ "name": "session-id-or-path",
9426
+ "required": false,
8728
9427
  "variadic": false
8729
9428
  }],
8730
- "options": [],
8731
- "aliases": [],
8732
- "category": "Core"
8733
- },
8734
- {
8735
- "id": "pan-tts-start",
8736
- "path": ["tts", "start"],
8737
- "display": "/pan tts start",
8738
- "description": "Start the local Qwen TTS daemon",
8739
- "args": [],
8740
9429
  "options": [
8741
9430
  {
8742
- "flags": "--detach",
8743
- "description": "Run the daemon detached in the background",
9431
+ "flags": "--all",
9432
+ "description": "Settle every discovered transcript",
8744
9433
  "required": false,
8745
9434
  "valueHint": null
8746
9435
  },
8747
9436
  {
8748
- "flags": "--foreground",
8749
- "description": "Run the daemon in the foreground",
8750
- "required": false,
8751
- "valueHint": null
9437
+ "flags": "--since <date>",
9438
+ "description": "With --all: only transcripts modified on or after this date",
9439
+ "required": true,
9440
+ "valueHint": "date"
8752
9441
  },
8753
9442
  {
8754
- "flags": "--no-wait-for-health",
8755
- "description": "Return without waiting for /health",
8756
- "required": false,
8757
- "valueHint": null
9443
+ "flags": "--harness <harness>",
9444
+ "description": "With --all: only this harness (claude-code, codex, ...)",
9445
+ "required": true,
9446
+ "valueHint": "harness"
8758
9447
  },
8759
9448
  {
8760
- "flags": "--timeout-ms <ms>",
8761
- "description": "Health wait timeout in milliseconds",
8762
- "required": true,
8763
- "valueHint": "ms"
9449
+ "flags": "--hook",
9450
+ "description": "Claude Code Stop-hook mode: read {session_id, transcript_path} JSON from stdin, print nothing, exit 0",
9451
+ "required": false,
9452
+ "valueHint": null
8764
9453
  }
8765
9454
  ],
8766
9455
  "aliases": [],
8767
- "category": "Core"
8768
- },
8769
- {
8770
- "id": "pan-tts-stop",
8771
- "path": ["tts", "stop"],
8772
- "display": "/pan tts stop",
8773
- "description": "Stop the local Qwen TTS daemon",
8774
- "args": [],
8775
- "options": [],
8776
- "aliases": [],
8777
- "category": "Core"
9456
+ "category": "CLI"
8778
9457
  },
8779
9458
  {
8780
- "id": "pan-tts-status",
8781
- "path": ["tts", "status"],
8782
- "display": "/pan tts status",
8783
- "description": "Show local Qwen TTS daemon status",
9459
+ "id": "pan-vault-sync",
9460
+ "path": ["vault", "sync"],
9461
+ "display": "/pan vault sync",
9462
+ "description": "Settle owned transcripts that grew, register this machine and refresh the list",
8784
9463
  "args": [],
8785
9464
  "options": [],
8786
9465
  "aliases": [],
8787
- "category": "Core"
9466
+ "category": "CLI"
8788
9467
  },
8789
9468
  {
8790
- "id": "pan-tts-restart",
8791
- "path": ["tts", "restart"],
8792
- "display": "/pan tts restart",
8793
- "description": "Restart the local Qwen TTS daemon",
9469
+ "id": "pan-vault-list",
9470
+ "path": ["vault", "list"],
9471
+ "display": "/pan vault list",
9472
+ "description": "List saved conversations from the local cache (never contacts the backend)",
8794
9473
  "args": [],
8795
9474
  "options": [{
8796
- "flags": "--no-wait-for-health",
8797
- "description": "Return without waiting for /health",
9475
+ "flags": "--json",
9476
+ "description": "Output in JSON format",
8798
9477
  "required": false,
8799
9478
  "valueHint": null
8800
- }, {
8801
- "flags": "--timeout-ms <ms>",
8802
- "description": "Health wait timeout in milliseconds",
8803
- "required": true,
8804
- "valueHint": "ms"
8805
9479
  }],
8806
9480
  "aliases": [],
8807
- "category": "Core"
8808
- },
8809
- {
8810
- "id": "pan-tts-install-systemd",
8811
- "path": ["tts", "install-systemd"],
8812
- "display": "/pan tts install-systemd",
8813
- "description": "Install a user systemd unit for the local Qwen TTS daemon",
8814
- "args": [],
8815
- "options": [],
8816
- "aliases": [],
8817
- "category": "Core"
9481
+ "category": "CLI"
8818
9482
  },
8819
9483
  {
8820
- "id": "pan-tts-test",
8821
- "path": ["tts", "test"],
8822
- "display": "/pan tts test",
8823
- "description": "Speak a test phrase using the configured system (priority) voice",
9484
+ "id": "pan-vault-show",
9485
+ "path": ["vault", "show"],
9486
+ "display": "/pan vault show",
9487
+ "description": "Print a saved conversation read-only with its versions",
8824
9488
  "args": [{
8825
- "name": "text",
8826
- "required": false,
9489
+ "name": "id",
9490
+ "required": true,
8827
9491
  "variadic": false
8828
9492
  }],
8829
9493
  "options": [{
8830
- "flags": "--status",
8831
- "description": "Use the status voice instead of the system (priority) voice",
9494
+ "flags": "--json",
9495
+ "description": "Output in JSON format",
8832
9496
  "required": false,
8833
9497
  "valueHint": null
8834
9498
  }],
8835
9499
  "aliases": [],
8836
- "category": "Core"
8837
- },
8838
- {
8839
- "id": "pan-release",
8840
- "path": ["release"],
8841
- "display": "/pan release",
8842
- "description": "Intentional release flow for stable and canary publishes",
8843
- "args": [],
8844
- "options": [],
8845
- "aliases": [],
8846
- "category": "Flywheel"
9500
+ "category": "CLI"
8847
9501
  },
8848
9502
  {
8849
- "id": "pan-release-check",
8850
- "path": ["release", "check"],
8851
- "display": "/pan release check",
8852
- "description": "Run release preflight checks",
8853
- "args": [],
8854
- "options": [],
8855
- "aliases": [],
8856
- "category": "Flywheel"
8857
- },
8858
- {
8859
- "id": "pan-release-stable",
8860
- "path": ["release", "stable"],
8861
- "display": "/pan release stable",
8862
- "description": "Create a stable release commit and tag",
8863
- "args": [],
8864
- "options": [{
8865
- "flags": "--version <version>",
8866
- "description": "Stable semver version (x.y.z)",
9503
+ "id": "pan-vault-resume",
9504
+ "path": ["vault", "resume"],
9505
+ "display": "/pan vault resume",
9506
+ "description": "Continue a saved conversation here: <id> or <id>@<version>; adopts it and launches the harness",
9507
+ "args": [{
9508
+ "name": "id",
8867
9509
  "required": true,
8868
- "valueHint": "version"
8869
- }, {
8870
- "flags": "--skip-tests",
8871
- "description": "Skip the test suite in preflight (build + guards still run)",
8872
- "required": false,
8873
- "valueHint": null
9510
+ "variadic": false
8874
9511
  }],
9512
+ "options": [
9513
+ {
9514
+ "flags": "--cwd <dir>",
9515
+ "description": "Working directory to resume in (default: the saved cwd)",
9516
+ "required": true,
9517
+ "valueHint": "dir"
9518
+ },
9519
+ {
9520
+ "flags": "--no-launch",
9521
+ "description": "Print the launch command instead of running it",
9522
+ "required": false,
9523
+ "valueHint": null
9524
+ },
9525
+ {
9526
+ "flags": "--on-drift <choice>",
9527
+ "description": "When the cwd state differs from the saved state: continue | note | cancel",
9528
+ "required": true,
9529
+ "valueHint": "choice"
9530
+ },
9531
+ {
9532
+ "flags": "--no-code",
9533
+ "description": "Do not apply the saved code snapshot; only continue the conversation",
9534
+ "required": false,
9535
+ "valueHint": null
9536
+ },
9537
+ {
9538
+ "flags": "--worktree <dir>",
9539
+ "description": "Apply the code snapshot into a new git worktree at <dir> instead of the target checkout",
9540
+ "required": true,
9541
+ "valueHint": "dir"
9542
+ }
9543
+ ],
8875
9544
  "aliases": [],
8876
- "category": "Flywheel"
9545
+ "category": "CLI"
8877
9546
  },
8878
9547
  {
8879
- "id": "pan-release-canary",
8880
- "path": ["release", "canary"],
8881
- "display": "/pan release canary",
8882
- "description": "Create a canary release commit and tag",
8883
- "args": [],
9548
+ "id": "pan-vault-exclude",
9549
+ "path": ["vault", "exclude"],
9550
+ "display": "/pan vault exclude",
9551
+ "description": "Exclude conversations by cwd path, git origin or session id; an excluded saved record becomes a tombstone",
9552
+ "args": [{
9553
+ "name": "path",
9554
+ "required": false,
9555
+ "variadic": false
9556
+ }],
8884
9557
  "options": [{
8885
- "flags": "--version <version>",
8886
- "description": "Canary semver version (x.y.z-canary.n)",
9558
+ "flags": "--origin <url>",
9559
+ "description": "Exclude conversations whose git origin is this URL",
8887
9560
  "required": true,
8888
- "valueHint": "version"
9561
+ "valueHint": "url"
8889
9562
  }, {
8890
- "flags": "--skip-tests",
8891
- "description": "Skip the test suite in preflight (build + guards still run)",
8892
- "required": false,
8893
- "valueHint": null
9563
+ "flags": "--session <id>",
9564
+ "description": "Exclude one session by native session id or vault id",
9565
+ "required": true,
9566
+ "valueHint": "id"
8894
9567
  }],
8895
9568
  "aliases": [],
8896
- "category": "Flywheel"
9569
+ "category": "CLI"
8897
9570
  },
8898
9571
  {
8899
- "id": "pan-release-sourcemaps",
8900
- "path": ["release", "sourcemaps"],
8901
- "display": "/pan release sourcemaps",
8902
- "description": "Upload the built dashboard sourcemaps to PostHog",
8903
- "args": [],
9572
+ "id": "pan-vault-include",
9573
+ "path": ["vault", "include"],
9574
+ "display": "/pan vault include",
9575
+ "description": "Remove an exclusion added with pan vault exclude",
9576
+ "args": [{
9577
+ "name": "path",
9578
+ "required": false,
9579
+ "variadic": false
9580
+ }],
8904
9581
  "options": [{
8905
- "flags": "--version <version>",
8906
- "description": "Release version associated with the built dashboard",
9582
+ "flags": "--origin <url>",
9583
+ "description": "Include conversations whose git origin is this URL again",
8907
9584
  "required": true,
8908
- "valueHint": "version"
9585
+ "valueHint": "url"
9586
+ }, {
9587
+ "flags": "--session <id>",
9588
+ "description": "Include one session again",
9589
+ "required": true,
9590
+ "valueHint": "id"
8909
9591
  }],
8910
9592
  "aliases": [],
8911
- "category": "Flywheel"
9593
+ "category": "CLI"
8912
9594
  },
8913
9595
  {
8914
- "id": "pan-release-notes",
8915
- "path": ["release", "notes"],
8916
- "display": "/pan release notes",
8917
- "description": "Draft release notes from git history",
9596
+ "id": "pan-vault-allow-secret",
9597
+ "path": ["vault", "allow-secret"],
9598
+ "display": "/pan vault allow-secret",
9599
+ "description": "Allow one blocked transcript line, or the blocked code lines of one file, for that record only",
8918
9600
  "args": [{
8919
- "name": "from",
8920
- "required": false,
9601
+ "name": "id-or-path",
9602
+ "required": true,
8921
9603
  "variadic": false
8922
9604
  }, {
8923
- "name": "to",
9605
+ "name": "line",
8924
9606
  "required": false,
8925
9607
  "variadic": false
8926
9608
  }],
8927
9609
  "options": [{
8928
- "flags": "--write <path>",
8929
- "description": "Write the generated notes to a file",
9610
+ "flags": "--file <path>",
9611
+ "description": "Allow the blocked lines of this file in the code snapshot (path relative to the repository root)",
8930
9612
  "required": true,
8931
9613
  "valueHint": "path"
8932
9614
  }],
8933
9615
  "aliases": [],
8934
- "category": "Flywheel"
9616
+ "category": "CLI"
8935
9617
  },
8936
9618
  {
8937
- "id": "pan-rollout",
8938
- "path": ["rollout"],
8939
- "display": "/pan rollout",
8940
- "description": "Post-merge release status and retry",
9619
+ "id": "pan-vault-evict",
9620
+ "path": ["vault", "evict"],
9621
+ "display": "/pan vault evict",
9622
+ "description": "Review the pending-deletion batch (default) or act on it; nothing is deleted without --confirm",
8941
9623
  "args": [],
8942
- "options": [],
9624
+ "options": [
9625
+ {
9626
+ "flags": "--review",
9627
+ "description": "Scan and print the batch with its fingerprint (default)",
9628
+ "required": false,
9629
+ "valueHint": null
9630
+ },
9631
+ {
9632
+ "flags": "--confirm <fingerprint>",
9633
+ "description": "Delete the reviewed files if the batch still matches this fingerprint",
9634
+ "required": true,
9635
+ "valueHint": "fingerprint"
9636
+ },
9637
+ {
9638
+ "flags": "--decline <vaultId>",
9639
+ "description": "Remove an entry from the batch and do not offer it again",
9640
+ "required": true,
9641
+ "valueHint": "vaultId"
9642
+ },
9643
+ {
9644
+ "flags": "--reoffer <vaultId>",
9645
+ "description": "Allow a declined entry to be offered again",
9646
+ "required": true,
9647
+ "valueHint": "vaultId"
9648
+ },
9649
+ {
9650
+ "flags": "--clear",
9651
+ "description": "Empty the batch without deleting or declining anything",
9652
+ "required": false,
9653
+ "valueHint": null
9654
+ }
9655
+ ],
8943
9656
  "aliases": [],
8944
- "category": "Flywheel"
9657
+ "category": "CLI"
8945
9658
  },
8946
9659
  {
8947
- "id": "pan-rollout-status",
8948
- "path": ["rollout", "status"],
8949
- "display": "/pan rollout status",
8950
- "description": "Print the release set for an issue (overall + per-component status)",
9660
+ "id": "pan-vault-restore",
9661
+ "path": ["vault", "restore"],
9662
+ "display": "/pan vault restore",
9663
+ "description": "Rebuild an evicted transcript byte for byte at its original path",
8951
9664
  "args": [{
8952
- "name": "issueId",
9665
+ "name": "id",
8953
9666
  "required": true,
8954
9667
  "variadic": false
8955
9668
  }],
8956
- "options": [],
8957
- "aliases": [],
8958
- "category": "Flywheel"
8959
- },
8960
- {
8961
- "id": "pan-rollout-retry",
8962
- "path": ["rollout", "retry"],
8963
- "display": "/pan rollout retry",
8964
- "description": "Re-run the release engine for an issue and print the resulting status",
8965
- "args": [{
8966
- "name": "issueId",
9669
+ "options": [{
9670
+ "flags": "--to <path>",
9671
+ "description": "Write the rebuilt file here instead of the recorded path",
8967
9672
  "required": true,
8968
- "variadic": false
9673
+ "valueHint": "path"
8969
9674
  }],
8970
- "options": [],
8971
9675
  "aliases": [],
8972
- "category": "Flywheel"
9676
+ "category": "CLI"
8973
9677
  },
8974
9678
  {
8975
- "id": "pan-memory",
8976
- "path": ["memory"],
8977
- "display": "/pan memory",
8978
- "description": "Search and inspect Overdeck memory",
9679
+ "id": "pan-test",
9680
+ "path": ["test"],
9681
+ "display": "/pan test",
9682
+ "description": "Test running and management",
8979
9683
  "args": [],
8980
9684
  "options": [],
8981
9685
  "aliases": [],
8982
- "category": "Observation"
9686
+ "category": "Core"
8983
9687
  },
8984
9688
  {
8985
- "id": "pan-memory-search",
8986
- "path": ["memory", "search"],
8987
- "display": "/pan memory search",
8988
- "description": "Search memory observations",
9689
+ "id": "pan-test-run",
9690
+ "path": ["test", "run"],
9691
+ "display": "/pan test run",
9692
+ "description": "Run tests for a project or workspace",
8989
9693
  "args": [{
8990
- "name": "query",
8991
- "required": true,
9694
+ "name": "target",
9695
+ "required": false,
8992
9696
  "variadic": false
8993
9697
  }],
8994
9698
  "options": [
8995
9699
  {
8996
- "flags": "--project <id>",
8997
- "description": "Project ID",
8998
- "required": true,
8999
- "valueHint": "id"
9000
- },
9001
- {
9002
- "flags": "--workspace <id|name>",
9003
- "description": "Workspace id or name",
9004
- "required": true,
9005
- "valueHint": "id|name"
9006
- },
9007
- {
9008
- "flags": "--issue <id>",
9009
- "description": "Issue ID",
9010
- "required": true,
9011
- "valueHint": "id"
9012
- },
9013
- {
9014
- "flags": "--tag <tag>",
9015
- "description": "Filter by tag",
9700
+ "flags": "--project <name>",
9701
+ "description": "Project name from registry",
9016
9702
  "required": true,
9017
- "valueHint": "tag"
9018
- },
9019
- {
9020
- "flags": "--sibling",
9021
- "description": "Search same-project sibling issues instead of the selected issue",
9022
- "required": false,
9023
- "valueHint": null
9024
- },
9025
- {
9026
- "flags": "--global",
9027
- "description": "Search across all registered projects instead of just one",
9028
- "required": false,
9029
- "valueHint": null
9030
- },
9031
- {
9032
- "flags": "--target [path]",
9033
- "description": "Search all workspaces whose path targets a directory (bare flag = cwd); mutually exclusive with --workspace/--issue/--global",
9034
- "required": false,
9035
- "valueHint": "path"
9036
- },
9037
- {
9038
- "flags": "--include-archived",
9039
- "description": "Include observations hidden by reset markers",
9040
- "required": false,
9041
- "valueHint": null
9703
+ "valueHint": "name"
9042
9704
  },
9043
9705
  {
9044
- "flags": "--limit <n>",
9045
- "description": "Maximum results",
9706
+ "flags": "--tests <names>",
9707
+ "description": "Comma-separated test names to run",
9046
9708
  "required": true,
9047
- "valueHint": "n"
9709
+ "valueHint": "names"
9048
9710
  },
9049
9711
  {
9050
- "flags": "--json",
9051
- "description": "Output JSON",
9712
+ "flags": "--no-notify",
9713
+ "description": "Skip desktop notification",
9052
9714
  "required": false,
9053
9715
  "valueHint": null
9054
9716
  }
9055
9717
  ],
9056
9718
  "aliases": [],
9057
- "category": "Observation"
9719
+ "category": "Core"
9058
9720
  },
9059
9721
  {
9060
- "id": "pan-memory-status",
9061
- "path": ["memory", "status"],
9062
- "display": "/pan memory status",
9063
- "description": "Show current memory status for an issue, a workspace, or the current directory",
9722
+ "id": "pan-test-list",
9723
+ "path": ["test", "list"],
9724
+ "display": "/pan test list",
9725
+ "description": "List configured tests for a project",
9064
9726
  "args": [{
9065
- "name": "issue",
9727
+ "name": "project",
9066
9728
  "required": false,
9067
9729
  "variadic": false
9068
9730
  }],
9069
- "options": [
9070
- {
9071
- "flags": "--project <id>",
9072
- "description": "Project ID",
9073
- "required": true,
9074
- "valueHint": "id"
9075
- },
9076
- {
9077
- "flags": "--workspace <id|name>",
9078
- "description": "Workspace id or name instead of an issue positional",
9079
- "required": true,
9080
- "valueHint": "id|name"
9081
- },
9731
+ "options": [],
9732
+ "aliases": [],
9733
+ "category": "Core"
9734
+ },
9735
+ {
9736
+ "id": "pan-tts",
9737
+ "path": ["tts"],
9738
+ "display": "/pan tts",
9739
+ "description": "Local TTS daemon helpers",
9740
+ "args": [],
9741
+ "options": [],
9742
+ "aliases": [],
9743
+ "category": "Core"
9744
+ },
9745
+ {
9746
+ "id": "pan-tts-voices",
9747
+ "path": ["tts", "voices"],
9748
+ "display": "/pan tts voices",
9749
+ "description": "List and inspect saved TTS voices",
9750
+ "args": [],
9751
+ "options": [],
9752
+ "aliases": [],
9753
+ "category": "Core"
9754
+ },
9755
+ {
9756
+ "id": "pan-tts-voices-list",
9757
+ "path": [
9758
+ "tts",
9759
+ "voices",
9760
+ "list"
9761
+ ],
9762
+ "display": "/pan tts voices list",
9763
+ "description": "List saved TTS voices",
9764
+ "args": [],
9765
+ "options": [],
9766
+ "aliases": [],
9767
+ "category": "Core"
9768
+ },
9769
+ {
9770
+ "id": "pan-tts-voices-show",
9771
+ "path": [
9772
+ "tts",
9773
+ "voices",
9774
+ "show"
9775
+ ],
9776
+ "display": "/pan tts voices show",
9777
+ "description": "Show saved TTS voice details",
9778
+ "args": [{
9779
+ "name": "name",
9780
+ "required": true,
9781
+ "variadic": false
9782
+ }],
9783
+ "options": [],
9784
+ "aliases": [],
9785
+ "category": "Core"
9786
+ },
9787
+ {
9788
+ "id": "pan-tts-voices-play",
9789
+ "path": [
9790
+ "tts",
9791
+ "voices",
9792
+ "play"
9793
+ ],
9794
+ "display": "/pan tts voices play",
9795
+ "description": "Speak with a saved TTS voice",
9796
+ "args": [{
9797
+ "name": "name",
9798
+ "required": true,
9799
+ "variadic": false
9800
+ }, {
9801
+ "name": "text",
9802
+ "required": false,
9803
+ "variadic": false
9804
+ }],
9805
+ "options": [],
9806
+ "aliases": [],
9807
+ "category": "Core"
9808
+ },
9809
+ {
9810
+ "id": "pan-tts-voices-delete",
9811
+ "path": [
9812
+ "tts",
9813
+ "voices",
9814
+ "delete"
9815
+ ],
9816
+ "display": "/pan tts voices delete",
9817
+ "description": "Delete a saved TTS voice",
9818
+ "args": [{
9819
+ "name": "name",
9820
+ "required": true,
9821
+ "variadic": false
9822
+ }],
9823
+ "options": [],
9824
+ "aliases": [],
9825
+ "category": "Core"
9826
+ },
9827
+ {
9828
+ "id": "pan-tts-voices-set-default",
9829
+ "path": [
9830
+ "tts",
9831
+ "voices",
9832
+ "set-default"
9833
+ ],
9834
+ "display": "/pan tts voices set-default",
9835
+ "description": "Set the system TTS voice",
9836
+ "args": [{
9837
+ "name": "name",
9838
+ "required": true,
9839
+ "variadic": false
9840
+ }],
9841
+ "options": [],
9842
+ "aliases": [],
9843
+ "category": "Core"
9844
+ },
9845
+ {
9846
+ "id": "pan-tts-voices-map",
9847
+ "path": [
9848
+ "tts",
9849
+ "voices",
9850
+ "map"
9851
+ ],
9852
+ "display": "/pan tts voices map",
9853
+ "description": "Map a TTS event key to a saved voice",
9854
+ "args": [{
9855
+ "name": "event",
9856
+ "required": true,
9857
+ "variadic": false
9858
+ }, {
9859
+ "name": "name",
9860
+ "required": true,
9861
+ "variadic": false
9862
+ }],
9863
+ "options": [],
9864
+ "aliases": [],
9865
+ "category": "Core"
9866
+ },
9867
+ {
9868
+ "id": "pan-tts-start",
9869
+ "path": ["tts", "start"],
9870
+ "display": "/pan tts start",
9871
+ "description": "Start the local Qwen TTS daemon",
9872
+ "args": [],
9873
+ "options": [
9874
+ {
9875
+ "flags": "--detach",
9876
+ "description": "Run the daemon detached in the background",
9877
+ "required": false,
9878
+ "valueHint": null
9879
+ },
9880
+ {
9881
+ "flags": "--foreground",
9882
+ "description": "Run the daemon in the foreground",
9883
+ "required": false,
9884
+ "valueHint": null
9885
+ },
9886
+ {
9887
+ "flags": "--no-wait-for-health",
9888
+ "description": "Return without waiting for /health",
9889
+ "required": false,
9890
+ "valueHint": null
9891
+ },
9892
+ {
9893
+ "flags": "--timeout-ms <ms>",
9894
+ "description": "Health wait timeout in milliseconds",
9895
+ "required": true,
9896
+ "valueHint": "ms"
9897
+ }
9898
+ ],
9899
+ "aliases": [],
9900
+ "category": "Core"
9901
+ },
9902
+ {
9903
+ "id": "pan-tts-stop",
9904
+ "path": ["tts", "stop"],
9905
+ "display": "/pan tts stop",
9906
+ "description": "Stop the local Qwen TTS daemon",
9907
+ "args": [],
9908
+ "options": [],
9909
+ "aliases": [],
9910
+ "category": "Core"
9911
+ },
9912
+ {
9913
+ "id": "pan-tts-status",
9914
+ "path": ["tts", "status"],
9915
+ "display": "/pan tts status",
9916
+ "description": "Show local Qwen TTS daemon status",
9917
+ "args": [],
9918
+ "options": [],
9919
+ "aliases": [],
9920
+ "category": "Core"
9921
+ },
9922
+ {
9923
+ "id": "pan-tts-restart",
9924
+ "path": ["tts", "restart"],
9925
+ "display": "/pan tts restart",
9926
+ "description": "Restart the local Qwen TTS daemon",
9927
+ "args": [],
9928
+ "options": [{
9929
+ "flags": "--no-wait-for-health",
9930
+ "description": "Return without waiting for /health",
9931
+ "required": false,
9932
+ "valueHint": null
9933
+ }, {
9934
+ "flags": "--timeout-ms <ms>",
9935
+ "description": "Health wait timeout in milliseconds",
9936
+ "required": true,
9937
+ "valueHint": "ms"
9938
+ }],
9939
+ "aliases": [],
9940
+ "category": "Core"
9941
+ },
9942
+ {
9943
+ "id": "pan-tts-install-systemd",
9944
+ "path": ["tts", "install-systemd"],
9945
+ "display": "/pan tts install-systemd",
9946
+ "description": "Install a user systemd unit for the local Qwen TTS daemon",
9947
+ "args": [],
9948
+ "options": [],
9949
+ "aliases": [],
9950
+ "category": "Core"
9951
+ },
9952
+ {
9953
+ "id": "pan-tts-test",
9954
+ "path": ["tts", "test"],
9955
+ "display": "/pan tts test",
9956
+ "description": "Speak a test phrase using the configured system (priority) voice",
9957
+ "args": [{
9958
+ "name": "text",
9959
+ "required": false,
9960
+ "variadic": false
9961
+ }],
9962
+ "options": [{
9963
+ "flags": "--status",
9964
+ "description": "Use the status voice instead of the system (priority) voice",
9965
+ "required": false,
9966
+ "valueHint": null
9967
+ }],
9968
+ "aliases": [],
9969
+ "category": "Core"
9970
+ },
9971
+ {
9972
+ "id": "pan-release",
9973
+ "path": ["release"],
9974
+ "display": "/pan release",
9975
+ "description": "Intentional release flow for stable and canary publishes",
9976
+ "args": [],
9977
+ "options": [],
9978
+ "aliases": [],
9979
+ "category": "Flywheel"
9980
+ },
9981
+ {
9982
+ "id": "pan-release-check",
9983
+ "path": ["release", "check"],
9984
+ "display": "/pan release check",
9985
+ "description": "Run release preflight checks",
9986
+ "args": [],
9987
+ "options": [],
9988
+ "aliases": [],
9989
+ "category": "Flywheel"
9990
+ },
9991
+ {
9992
+ "id": "pan-release-stable",
9993
+ "path": ["release", "stable"],
9994
+ "display": "/pan release stable",
9995
+ "description": "Create a stable release commit and tag",
9996
+ "args": [],
9997
+ "options": [{
9998
+ "flags": "--version <version>",
9999
+ "description": "Stable semver version (x.y.z)",
10000
+ "required": true,
10001
+ "valueHint": "version"
10002
+ }, {
10003
+ "flags": "--skip-tests",
10004
+ "description": "Skip the test suite in preflight (build + guards still run)",
10005
+ "required": false,
10006
+ "valueHint": null
10007
+ }],
10008
+ "aliases": [],
10009
+ "category": "Flywheel"
10010
+ },
10011
+ {
10012
+ "id": "pan-release-canary",
10013
+ "path": ["release", "canary"],
10014
+ "display": "/pan release canary",
10015
+ "description": "Create a canary release commit and tag",
10016
+ "args": [],
10017
+ "options": [{
10018
+ "flags": "--version <version>",
10019
+ "description": "Canary semver version (x.y.z-canary.n)",
10020
+ "required": true,
10021
+ "valueHint": "version"
10022
+ }, {
10023
+ "flags": "--skip-tests",
10024
+ "description": "Skip the test suite in preflight (build + guards still run)",
10025
+ "required": false,
10026
+ "valueHint": null
10027
+ }],
10028
+ "aliases": [],
10029
+ "category": "Flywheel"
10030
+ },
10031
+ {
10032
+ "id": "pan-release-sourcemaps",
10033
+ "path": ["release", "sourcemaps"],
10034
+ "display": "/pan release sourcemaps",
10035
+ "description": "Upload the built dashboard sourcemaps to PostHog",
10036
+ "args": [],
10037
+ "options": [{
10038
+ "flags": "--version <version>",
10039
+ "description": "Release version associated with the built dashboard",
10040
+ "required": true,
10041
+ "valueHint": "version"
10042
+ }],
10043
+ "aliases": [],
10044
+ "category": "Flywheel"
10045
+ },
10046
+ {
10047
+ "id": "pan-release-notes",
10048
+ "path": ["release", "notes"],
10049
+ "display": "/pan release notes",
10050
+ "description": "Draft release notes from git history",
10051
+ "args": [{
10052
+ "name": "from",
10053
+ "required": false,
10054
+ "variadic": false
10055
+ }, {
10056
+ "name": "to",
10057
+ "required": false,
10058
+ "variadic": false
10059
+ }],
10060
+ "options": [{
10061
+ "flags": "--write <path>",
10062
+ "description": "Write the generated notes to a file",
10063
+ "required": true,
10064
+ "valueHint": "path"
10065
+ }],
10066
+ "aliases": [],
10067
+ "category": "Flywheel"
10068
+ },
10069
+ {
10070
+ "id": "pan-rollout",
10071
+ "path": ["rollout"],
10072
+ "display": "/pan rollout",
10073
+ "description": "Post-merge release status and retry",
10074
+ "args": [],
10075
+ "options": [],
10076
+ "aliases": [],
10077
+ "category": "Flywheel"
10078
+ },
10079
+ {
10080
+ "id": "pan-rollout-status",
10081
+ "path": ["rollout", "status"],
10082
+ "display": "/pan rollout status",
10083
+ "description": "Print the release set for an issue (overall + per-component status)",
10084
+ "args": [{
10085
+ "name": "issueId",
10086
+ "required": true,
10087
+ "variadic": false
10088
+ }],
10089
+ "options": [],
10090
+ "aliases": [],
10091
+ "category": "Flywheel"
10092
+ },
10093
+ {
10094
+ "id": "pan-rollout-retry",
10095
+ "path": ["rollout", "retry"],
10096
+ "display": "/pan rollout retry",
10097
+ "description": "Re-run the release engine for an issue and print the resulting status",
10098
+ "args": [{
10099
+ "name": "issueId",
10100
+ "required": true,
10101
+ "variadic": false
10102
+ }],
10103
+ "options": [],
10104
+ "aliases": [],
10105
+ "category": "Flywheel"
10106
+ },
10107
+ {
10108
+ "id": "pan-memory",
10109
+ "path": ["memory"],
10110
+ "display": "/pan memory",
10111
+ "description": "Search and inspect Overdeck memory",
10112
+ "args": [],
10113
+ "options": [],
10114
+ "aliases": [],
10115
+ "category": "Observation"
10116
+ },
10117
+ {
10118
+ "id": "pan-memory-search",
10119
+ "path": ["memory", "search"],
10120
+ "display": "/pan memory search",
10121
+ "description": "Search memory observations",
10122
+ "args": [{
10123
+ "name": "query",
10124
+ "required": true,
10125
+ "variadic": false
10126
+ }],
10127
+ "options": [
10128
+ {
10129
+ "flags": "--project <id>",
10130
+ "description": "Project ID",
10131
+ "required": true,
10132
+ "valueHint": "id"
10133
+ },
10134
+ {
10135
+ "flags": "--workspace <id|name>",
10136
+ "description": "Workspace id or name",
10137
+ "required": true,
10138
+ "valueHint": "id|name"
10139
+ },
10140
+ {
10141
+ "flags": "--issue <id>",
10142
+ "description": "Issue ID",
10143
+ "required": true,
10144
+ "valueHint": "id"
10145
+ },
10146
+ {
10147
+ "flags": "--tag <tag>",
10148
+ "description": "Filter by tag",
10149
+ "required": true,
10150
+ "valueHint": "tag"
10151
+ },
10152
+ {
10153
+ "flags": "--sibling",
10154
+ "description": "Search same-project sibling issues instead of the selected issue",
10155
+ "required": false,
10156
+ "valueHint": null
10157
+ },
10158
+ {
10159
+ "flags": "--global",
10160
+ "description": "Search across all registered projects instead of just one",
10161
+ "required": false,
10162
+ "valueHint": null
10163
+ },
10164
+ {
10165
+ "flags": "--target [path]",
10166
+ "description": "Search all workspaces whose path targets a directory (bare flag = cwd); mutually exclusive with --workspace/--issue/--global",
10167
+ "required": false,
10168
+ "valueHint": "path"
10169
+ },
10170
+ {
10171
+ "flags": "--include-archived",
10172
+ "description": "Include observations hidden by reset markers",
10173
+ "required": false,
10174
+ "valueHint": null
10175
+ },
10176
+ {
10177
+ "flags": "--limit <n>",
10178
+ "description": "Maximum results",
10179
+ "required": true,
10180
+ "valueHint": "n"
10181
+ },
10182
+ {
10183
+ "flags": "--json",
10184
+ "description": "Output JSON",
10185
+ "required": false,
10186
+ "valueHint": null
10187
+ }
10188
+ ],
10189
+ "aliases": [],
10190
+ "category": "Observation"
10191
+ },
10192
+ {
10193
+ "id": "pan-memory-status",
10194
+ "path": ["memory", "status"],
10195
+ "display": "/pan memory status",
10196
+ "description": "Show current memory status for an issue, a workspace, or the current directory",
10197
+ "args": [{
10198
+ "name": "issue",
10199
+ "required": false,
10200
+ "variadic": false
10201
+ }],
10202
+ "options": [
10203
+ {
10204
+ "flags": "--project <id>",
10205
+ "description": "Project ID",
10206
+ "required": true,
10207
+ "valueHint": "id"
10208
+ },
10209
+ {
10210
+ "flags": "--workspace <id|name>",
10211
+ "description": "Workspace id or name instead of an issue positional",
10212
+ "required": true,
10213
+ "valueHint": "id|name"
10214
+ },
9082
10215
  {
9083
10216
  "flags": "--history <n>",
9084
10217
  "description": "Also print up to N archived statuses, newest first (max 50)",
@@ -10629,6 +11762,20 @@ const COMPOSER_COMMAND_MANIFEST = [
10629
11762
  "aliases": [],
10630
11763
  "category": "Admin"
10631
11764
  },
11765
+ {
11766
+ "id": "pan-admin-config-tiers",
11767
+ "path": [
11768
+ "admin",
11769
+ "config",
11770
+ "tiers"
11771
+ ],
11772
+ "display": "/pan admin config tiers",
11773
+ "description": "Show the effective model per tiered_execution tier and whether it overrides roles.work",
11774
+ "args": [],
11775
+ "options": [],
11776
+ "aliases": [],
11777
+ "category": "Admin"
11778
+ },
10632
11779
  {
10633
11780
  "id": "pan-admin-hooks",
10634
11781
  "path": ["admin", "hooks"],
@@ -11502,6 +12649,12 @@ const COMPOSER_COMMAND_MANIFEST = [
11502
12649
  "description": "Skip Herdr terminal backend install/verify (tmux-only hosts)",
11503
12650
  "required": false,
11504
12651
  "valueHint": null
12652
+ },
12653
+ {
12654
+ "flags": "--skip-ollama",
12655
+ "description": "Skip Ollama local-model detection and optional gemma4:12b pull",
12656
+ "required": false,
12657
+ "valueHint": null
11505
12658
  }
11506
12659
  ],
11507
12660
  "aliases": [],
@@ -11582,141 +12735,427 @@ const COMPOSER_COMMAND_MANIFEST = [
11582
12735
  "valueHint": "path"
11583
12736
  }],
11584
12737
  "aliases": [],
11585
- "category": "Lifecycle"
12738
+ "category": "Lifecycle"
12739
+ },
12740
+ {
12741
+ "id": "pan-scope-approve",
12742
+ "path": ["scope", "approve"],
12743
+ "display": "/pan scope approve",
12744
+ "description": "Move xBRIEF to active/ and set status approved",
12745
+ "args": [{
12746
+ "name": "issueId",
12747
+ "required": true,
12748
+ "variadic": false
12749
+ }],
12750
+ "options": [{
12751
+ "flags": "--project <path>",
12752
+ "description": "Project path (defaults to resolved from issue)",
12753
+ "required": true,
12754
+ "valueHint": "path"
12755
+ }],
12756
+ "aliases": [],
12757
+ "category": "Lifecycle"
12758
+ },
12759
+ {
12760
+ "id": "pan-scope-complete",
12761
+ "path": ["scope", "complete"],
12762
+ "display": "/pan scope complete",
12763
+ "description": "Move xBRIEF to completed/",
12764
+ "args": [{
12765
+ "name": "issueId",
12766
+ "required": true,
12767
+ "variadic": false
12768
+ }],
12769
+ "options": [{
12770
+ "flags": "--project <path>",
12771
+ "description": "Project path (defaults to resolved from issue)",
12772
+ "required": true,
12773
+ "valueHint": "path"
12774
+ }],
12775
+ "aliases": [],
12776
+ "category": "Lifecycle"
12777
+ },
12778
+ {
12779
+ "id": "pan-scope-cancel",
12780
+ "path": ["scope", "cancel"],
12781
+ "display": "/pan scope cancel",
12782
+ "description": "Move xBRIEF to cancelled/",
12783
+ "args": [{
12784
+ "name": "issueId",
12785
+ "required": true,
12786
+ "variadic": false
12787
+ }],
12788
+ "options": [{
12789
+ "flags": "--project <path>",
12790
+ "description": "Project path (defaults to resolved from issue)",
12791
+ "required": true,
12792
+ "valueHint": "path"
12793
+ }],
12794
+ "aliases": [],
12795
+ "category": "Lifecycle"
12796
+ },
12797
+ {
12798
+ "id": "pan-scope-restore",
12799
+ "path": ["scope", "restore"],
12800
+ "display": "/pan scope restore",
12801
+ "description": "Restore xBRIEF from completed/ or cancelled/ to active/",
12802
+ "args": [{
12803
+ "name": "issueId",
12804
+ "required": true,
12805
+ "variadic": false
12806
+ }],
12807
+ "options": [{
12808
+ "flags": "--project <path>",
12809
+ "description": "Project path (defaults to resolved from issue)",
12810
+ "required": true,
12811
+ "valueHint": "path"
12812
+ }],
12813
+ "aliases": [],
12814
+ "category": "Lifecycle"
12815
+ },
12816
+ {
12817
+ "id": "pan-spawn",
12818
+ "path": ["spawn"],
12819
+ "display": "/pan spawn",
12820
+ "description": "Create a worker pane for one xBRIEF item in its own item worktree",
12821
+ "args": [],
12822
+ "options": [
12823
+ {
12824
+ "flags": "--issue <id>",
12825
+ "description": "Issue the worker belongs to",
12826
+ "required": true,
12827
+ "valueHint": "id"
12828
+ },
12829
+ {
12830
+ "flags": "--item <item>",
12831
+ "description": "xBRIEF item the worker takes",
12832
+ "required": true,
12833
+ "valueHint": "item"
12834
+ },
12835
+ {
12836
+ "flags": "--model <model>",
12837
+ "description": "Model the worker runs on",
12838
+ "required": true,
12839
+ "valueHint": "model"
12840
+ },
12841
+ {
12842
+ "flags": "--harness <harness>",
12843
+ "description": "Coding-agent harness (default: claude-code)",
12844
+ "required": true,
12845
+ "valueHint": "harness"
12846
+ },
12847
+ {
12848
+ "flags": "--shared",
12849
+ "description": "Run the worker in the issue workspace instead of an item worktree (foreman/operator only; serial use)",
12850
+ "required": false,
12851
+ "valueHint": null
12852
+ }
12853
+ ],
12854
+ "aliases": [],
12855
+ "category": "CLI"
12856
+ },
12857
+ {
12858
+ "id": "pan-worker",
12859
+ "path": ["worker"],
12860
+ "display": "/pan worker",
12861
+ "description": "Registered workers: spawn an issue-linked agent and get its report back; register external agents",
12862
+ "args": [],
12863
+ "options": [],
12864
+ "aliases": [],
12865
+ "category": "CLI"
12866
+ },
12867
+ {
12868
+ "id": "pan-worker-run",
12869
+ "path": ["worker", "run"],
12870
+ "display": "/pan worker run",
12871
+ "description": "Start a worker for an issue and wait for its report (exit 0 done, 4 blocked/failed, 2 no report, 3 timeout, 1 error)",
12872
+ "args": [],
12873
+ "options": [
12874
+ {
12875
+ "flags": "--issue <id>",
12876
+ "description": "Issue the worker belongs to (required)",
12877
+ "required": true,
12878
+ "valueHint": "id"
12879
+ },
12880
+ {
12881
+ "flags": "--prompt <text>",
12882
+ "description": "The brief, inline",
12883
+ "required": true,
12884
+ "valueHint": "text"
12885
+ },
12886
+ {
12887
+ "flags": "--brief <file>",
12888
+ "description": "The brief, from a file",
12889
+ "required": true,
12890
+ "valueHint": "file"
12891
+ },
12892
+ {
12893
+ "flags": "--model <model>",
12894
+ "description": "Model override (default: roles.worker.model)",
12895
+ "required": true,
12896
+ "valueHint": "model"
12897
+ },
12898
+ {
12899
+ "flags": "--harness <harness>",
12900
+ "description": "Harness override (default: routed from the model)",
12901
+ "required": true,
12902
+ "valueHint": "harness"
12903
+ },
12904
+ {
12905
+ "flags": "--read-only",
12906
+ "description": "Run in the issue workspace with git writes blocked",
12907
+ "required": false,
12908
+ "valueHint": null
12909
+ },
12910
+ {
12911
+ "flags": "--cwd <path>",
12912
+ "description": "Working directory inside the issue workspace",
12913
+ "required": true,
12914
+ "valueHint": "path"
12915
+ },
12916
+ {
12917
+ "flags": "--parent <id>",
12918
+ "description": "Spawning agent or conversation (default: $OVERDECK_AGENT_ID, then $OVERDECK_CONVERSATION)",
12919
+ "required": true,
12920
+ "valueHint": "id"
12921
+ },
12922
+ {
12923
+ "flags": "--name <label>",
12924
+ "description": "Label shown in the Agents Directory",
12925
+ "required": true,
12926
+ "valueHint": "label"
12927
+ },
12928
+ {
12929
+ "flags": "--detach",
12930
+ "description": "Print the worker id and return without waiting",
12931
+ "required": false,
12932
+ "valueHint": null
12933
+ },
12934
+ {
12935
+ "flags": "--timeout <seconds>",
12936
+ "description": "Stop waiting after this many seconds (exit 3; the worker keeps running)",
12937
+ "required": true,
12938
+ "valueHint": "seconds"
12939
+ },
12940
+ {
12941
+ "flags": "--stop-after-report",
12942
+ "description": "Stop the worker after its first report",
12943
+ "required": false,
12944
+ "valueHint": null
12945
+ }
12946
+ ],
12947
+ "aliases": [],
12948
+ "category": "CLI"
11586
12949
  },
11587
12950
  {
11588
- "id": "pan-scope-approve",
11589
- "path": ["scope", "approve"],
11590
- "display": "/pan scope approve",
11591
- "description": "Move xBRIEF to active/ and set status approved",
12951
+ "id": "pan-worker-wait",
12952
+ "path": ["worker", "wait"],
12953
+ "display": "/pan worker wait",
12954
+ "description": "Wait for a worker's report (same exit codes as run); the status line names its seq",
11592
12955
  "args": [{
11593
- "name": "issueId",
12956
+ "name": "worker-id",
11594
12957
  "required": true,
11595
12958
  "variadic": false
11596
12959
  }],
11597
12960
  "options": [{
11598
- "flags": "--project <path>",
11599
- "description": "Project path (defaults to resolved from issue)",
11600
- "required": true,
11601
- "valueHint": "path"
11602
- }],
11603
- "aliases": [],
11604
- "category": "Lifecycle"
11605
- },
11606
- {
11607
- "id": "pan-scope-complete",
11608
- "path": ["scope", "complete"],
11609
- "display": "/pan scope complete",
11610
- "description": "Move xBRIEF to completed/",
11611
- "args": [{
11612
- "name": "issueId",
12961
+ "flags": "--after <seq>",
12962
+ "description": "Return the next report after this seq (default: the newest report, whenever written)",
11613
12963
  "required": true,
11614
- "variadic": false
11615
- }],
11616
- "options": [{
11617
- "flags": "--project <path>",
11618
- "description": "Project path (defaults to resolved from issue)",
12964
+ "valueHint": "seq"
12965
+ }, {
12966
+ "flags": "--timeout <seconds>",
12967
+ "description": "Stop waiting after this many seconds (exit 3)",
11619
12968
  "required": true,
11620
- "valueHint": "path"
12969
+ "valueHint": "seconds"
11621
12970
  }],
11622
12971
  "aliases": [],
11623
- "category": "Lifecycle"
12972
+ "category": "CLI"
11624
12973
  },
11625
12974
  {
11626
- "id": "pan-scope-cancel",
11627
- "path": ["scope", "cancel"],
11628
- "display": "/pan scope cancel",
11629
- "description": "Move xBRIEF to cancelled/",
12975
+ "id": "pan-worker-report",
12976
+ "path": ["worker", "report"],
12977
+ "display": "/pan worker report",
12978
+ "description": "Record a worker's report (run by the worker itself)",
11630
12979
  "args": [{
11631
- "name": "issueId",
12980
+ "name": "worker-id",
11632
12981
  "required": true,
11633
12982
  "variadic": false
11634
12983
  }],
11635
- "options": [{
11636
- "flags": "--project <path>",
11637
- "description": "Project path (defaults to resolved from issue)",
11638
- "required": true,
11639
- "valueHint": "path"
11640
- }],
12984
+ "options": [
12985
+ {
12986
+ "flags": "--file <path>",
12987
+ "description": "Read the Markdown report from a file",
12988
+ "required": true,
12989
+ "valueHint": "path"
12990
+ },
12991
+ {
12992
+ "flags": "--stdin",
12993
+ "description": "Read the Markdown report from stdin",
12994
+ "required": false,
12995
+ "valueHint": null
12996
+ },
12997
+ {
12998
+ "flags": "--status <status>",
12999
+ "description": "done | blocked | failed (default: done)",
13000
+ "required": true,
13001
+ "valueHint": "status"
13002
+ }
13003
+ ],
11641
13004
  "aliases": [],
11642
- "category": "Lifecycle"
13005
+ "category": "CLI"
11643
13006
  },
11644
13007
  {
11645
- "id": "pan-scope-restore",
11646
- "path": ["scope", "restore"],
11647
- "display": "/pan scope restore",
11648
- "description": "Restore xBRIEF from completed/ or cancelled/ to active/",
11649
- "args": [{
11650
- "name": "issueId",
11651
- "required": true,
11652
- "variadic": false
11653
- }],
11654
- "options": [{
11655
- "flags": "--project <path>",
11656
- "description": "Project path (defaults to resolved from issue)",
11657
- "required": true,
11658
- "valueHint": "path"
11659
- }],
13008
+ "id": "pan-worker-list",
13009
+ "path": ["worker", "list"],
13010
+ "display": "/pan worker list",
13011
+ "description": "List workers with their parent, live state and newest report",
13012
+ "args": [],
13013
+ "options": [
13014
+ {
13015
+ "flags": "--issue <id>",
13016
+ "description": "Only this issue's workers",
13017
+ "required": true,
13018
+ "valueHint": "id"
13019
+ },
13020
+ {
13021
+ "flags": "--parent <id>",
13022
+ "description": "Only workers of this parent",
13023
+ "required": true,
13024
+ "valueHint": "id"
13025
+ },
13026
+ {
13027
+ "flags": "--json",
13028
+ "description": "Print JSON",
13029
+ "required": false,
13030
+ "valueHint": null
13031
+ }
13032
+ ],
11660
13033
  "aliases": [],
11661
- "category": "Lifecycle"
13034
+ "category": "CLI"
11662
13035
  },
11663
13036
  {
11664
- "id": "pan-spawn",
11665
- "path": ["spawn"],
11666
- "display": "/pan spawn",
11667
- "description": "Create a worker pane for one xBRIEF item in the issue workspace",
13037
+ "id": "pan-worker-register",
13038
+ "path": ["worker", "register"],
13039
+ "display": "/pan worker register",
13040
+ "description": "Record an agent another tool launched so the Agents Directory shows it (read-only; prints its id)",
11668
13041
  "args": [],
11669
13042
  "options": [
11670
13043
  {
11671
- "flags": "--issue <id>",
11672
- "description": "Issue the worker belongs to",
13044
+ "flags": "--source <name>",
13045
+ "description": "Who launched it ([a-z0-9-], not codex-plugin) (required)",
13046
+ "required": true,
13047
+ "valueHint": "name"
13048
+ },
13049
+ {
13050
+ "flags": "--external-id <id>",
13051
+ "description": "The launcher's id for it (required)",
11673
13052
  "required": true,
11674
13053
  "valueHint": "id"
11675
13054
  },
11676
13055
  {
11677
- "flags": "--item <item>",
11678
- "description": "xBRIEF item the worker takes",
13056
+ "flags": "--harness <harness>",
13057
+ "description": "codex, claude-code, … (required)",
11679
13058
  "required": true,
11680
- "valueHint": "item"
13059
+ "valueHint": "harness"
11681
13060
  },
11682
13061
  {
11683
13062
  "flags": "--model <model>",
11684
- "description": "Model the worker runs on",
13063
+ "description": "Model it runs",
11685
13064
  "required": true,
11686
13065
  "valueHint": "model"
11687
13066
  },
11688
13067
  {
11689
- "flags": "--harness <harness>",
11690
- "description": "Coding-agent harness (default: claude-code)",
13068
+ "flags": "--cwd <path>",
13069
+ "description": "Its working directory",
11691
13070
  "required": true,
11692
- "valueHint": "harness"
13071
+ "valueHint": "path"
13072
+ },
13073
+ {
13074
+ "flags": "--issue <id>",
13075
+ "description": "Issue it works on",
13076
+ "required": true,
13077
+ "valueHint": "id"
13078
+ },
13079
+ {
13080
+ "flags": "--parent <id>",
13081
+ "description": "Spawning agent id, conversation tmux session, or claude-session:<uuid>",
13082
+ "required": true,
13083
+ "valueHint": "id"
13084
+ },
13085
+ {
13086
+ "flags": "--label <text>",
13087
+ "description": "Label shown in the Agents Directory",
13088
+ "required": true,
13089
+ "valueHint": "text"
13090
+ },
13091
+ {
13092
+ "flags": "--pid <n>",
13093
+ "description": "Its process id (liveness is read from it)",
13094
+ "required": true,
13095
+ "valueHint": "n"
13096
+ },
13097
+ {
13098
+ "flags": "--transcript <path>",
13099
+ "description": "Its transcript file",
13100
+ "required": true,
13101
+ "valueHint": "path"
13102
+ },
13103
+ {
13104
+ "flags": "--session-id <id>",
13105
+ "description": "Its session or thread id",
13106
+ "required": true,
13107
+ "valueHint": "id"
13108
+ },
13109
+ {
13110
+ "flags": "--json",
13111
+ "description": "Print { id, created }",
13112
+ "required": false,
13113
+ "valueHint": null
11693
13114
  }
11694
13115
  ],
11695
13116
  "aliases": [],
11696
13117
  "category": "CLI"
11697
13118
  },
11698
13119
  {
11699
- "id": "pan-worker",
11700
- "path": ["worker"],
11701
- "display": "/pan worker",
11702
- "description": "Registered workers: spawn an issue-linked agent and get its report back; register external agents",
13120
+ "id": "pan-lane",
13121
+ "path": ["lane"],
13122
+ "display": "/pan lane",
13123
+ "description": "Gauntlet lanes: launch, list, show, wait on, report from, stop and reap lane conversations",
11703
13124
  "args": [],
11704
13125
  "options": [],
11705
13126
  "aliases": [],
11706
13127
  "category": "CLI"
11707
13128
  },
11708
13129
  {
11709
- "id": "pan-worker-run",
11710
- "path": ["worker", "run"],
11711
- "display": "/pan worker run",
11712
- "description": "Start a worker for an issue and wait for its report (exit 0 done, 4 blocked/failed, 2 no report, 3 timeout, 1 error)",
13130
+ "id": "pan-lane-start",
13131
+ "path": ["lane", "start"],
13132
+ "display": "/pan lane start",
13133
+ "description": "Launch a lane conversation under the calling conversation (any harness)",
11713
13134
  "args": [],
11714
13135
  "options": [
11715
13136
  {
11716
- "flags": "--issue <id>",
11717
- "description": "Issue the worker belongs to (required)",
13137
+ "flags": "--key <key>",
13138
+ "description": "Lane key inside the run (required unless --for)",
13139
+ "required": true,
13140
+ "valueHint": "key"
13141
+ },
13142
+ {
13143
+ "flags": "--for <builder-key>",
13144
+ "description": "Critic (required) or verifier: the builder lane judged; --key defaults to it",
13145
+ "required": true,
13146
+ "valueHint": "builder-key"
13147
+ },
13148
+ {
13149
+ "flags": "--role <role>",
13150
+ "description": "builder | critic | verifier | play | orchestrator (required)",
13151
+ "required": true,
13152
+ "valueHint": "role"
13153
+ },
13154
+ {
13155
+ "flags": "--brief <file>",
13156
+ "description": "The brief, from a file",
11718
13157
  "required": true,
11719
- "valueHint": "id"
13158
+ "valueHint": "file"
11720
13159
  },
11721
13160
  {
11722
13161
  "flags": "--prompt <text>",
@@ -11725,62 +13164,92 @@ const COMPOSER_COMMAND_MANIFEST = [
11725
13164
  "valueHint": "text"
11726
13165
  },
11727
13166
  {
11728
- "flags": "--brief <file>",
11729
- "description": "The brief, from a file",
13167
+ "flags": "--run <key>",
13168
+ "description": "Run key (required from a root; inherited inside an orchestrator lane)",
11730
13169
  "required": true,
11731
- "valueHint": "file"
13170
+ "valueHint": "key"
13171
+ },
13172
+ {
13173
+ "flags": "--parent <conv>",
13174
+ "description": "Launching conversation (default: $OVERDECK_CONVERSATION)",
13175
+ "required": true,
13176
+ "valueHint": "conv"
13177
+ },
13178
+ {
13179
+ "flags": "--project <key>",
13180
+ "description": "Project (default: the parent's project)",
13181
+ "required": true,
13182
+ "valueHint": "key"
11732
13183
  },
11733
13184
  {
11734
13185
  "flags": "--model <model>",
11735
- "description": "Model override (default: roles.worker.model)",
13186
+ "description": "Model (default: projects.<key>.gauntlet.roles.<role>.model)",
11736
13187
  "required": true,
11737
13188
  "valueHint": "model"
11738
13189
  },
11739
13190
  {
11740
13191
  "flags": "--harness <harness>",
11741
- "description": "Harness override (default: routed from the model)",
13192
+ "description": "Harness (default: role config, else routed from the model)",
11742
13193
  "required": true,
11743
13194
  "valueHint": "harness"
11744
13195
  },
11745
13196
  {
11746
- "flags": "--read-only",
11747
- "description": "Run in the issue workspace with git writes blocked",
11748
- "required": false,
11749
- "valueHint": null
13197
+ "flags": "--effort <effort>",
13198
+ "description": "low | medium | high",
13199
+ "required": true,
13200
+ "valueHint": "effort"
11750
13201
  },
11751
13202
  {
11752
- "flags": "--cwd <path>",
11753
- "description": "Working directory inside the issue workspace",
13203
+ "flags": "--title <title>",
13204
+ "description": "Conversation title (default: <run> <key> · <role>)",
11754
13205
  "required": true,
11755
- "valueHint": "path"
13206
+ "valueHint": "title"
11756
13207
  },
11757
13208
  {
11758
- "flags": "--parent <id>",
11759
- "description": "Spawning agent or conversation (default: $OVERDECK_AGENT_ID, then $OVERDECK_CONVERSATION)",
13209
+ "flags": "--branch <branch>",
13210
+ "description": "Builder branch (default: <run>/<key>, <run>/<key>-i<n> after)",
11760
13211
  "required": true,
11761
- "valueHint": "id"
13212
+ "valueHint": "branch"
11762
13213
  },
11763
13214
  {
11764
- "flags": "--name <label>",
11765
- "description": "Label shown in the Agents Directory",
13215
+ "flags": "--from <ref>",
13216
+ "description": "Base ref for a new builder branch",
11766
13217
  "required": true,
11767
- "valueHint": "label"
13218
+ "valueHint": "ref"
11768
13219
  },
11769
13220
  {
11770
- "flags": "--detach",
11771
- "description": "Print the worker id and return without waiting",
13221
+ "flags": "--at <ref>",
13222
+ "description": "Commit a critic or verifier judges (default with --for: the builder's newest done head)",
13223
+ "required": true,
13224
+ "valueHint": "ref"
13225
+ },
13226
+ {
13227
+ "flags": "--reuse",
13228
+ "description": "Continue in the directory of the latest earlier lane with the same run, key and role",
11772
13229
  "required": false,
11773
13230
  "valueHint": null
11774
13231
  },
11775
13232
  {
11776
- "flags": "--timeout <seconds>",
11777
- "description": "Stop waiting after this many seconds (exit 3; the worker keeps running)",
11778
- "required": true,
11779
- "valueHint": "seconds"
13233
+ "flags": "--replace",
13234
+ "description": "Stop the live lane with the same run, key and role first",
13235
+ "required": false,
13236
+ "valueHint": null
11780
13237
  },
11781
13238
  {
11782
- "flags": "--stop-after-report",
11783
- "description": "Stop the worker after its first report",
13239
+ "flags": "--force",
13240
+ "description": "Launch even while the host is CPU-saturated",
13241
+ "required": false,
13242
+ "valueHint": null
13243
+ },
13244
+ {
13245
+ "flags": "--no-wait",
13246
+ "description": "Return without waiting for the lane to start",
13247
+ "required": false,
13248
+ "valueHint": null
13249
+ },
13250
+ {
13251
+ "flags": "--json",
13252
+ "description": "Print the launch result as JSON",
11784
13253
  "required": false,
11785
13254
  "valueHint": null
11786
13255
  }
@@ -11789,84 +13258,60 @@ const COMPOSER_COMMAND_MANIFEST = [
11789
13258
  "category": "CLI"
11790
13259
  },
11791
13260
  {
11792
- "id": "pan-worker-wait",
11793
- "path": ["worker", "wait"],
11794
- "display": "/pan worker wait",
11795
- "description": "Wait for a worker's report (same exit codes as run); the status line names its seq",
11796
- "args": [{
11797
- "name": "worker-id",
11798
- "required": true,
11799
- "variadic": false
11800
- }],
11801
- "options": [{
11802
- "flags": "--after <seq>",
11803
- "description": "Return the next report after this seq (default: the newest report, whenever written)",
11804
- "required": true,
11805
- "valueHint": "seq"
11806
- }, {
11807
- "flags": "--timeout <seconds>",
11808
- "description": "Stop waiting after this many seconds (exit 3)",
11809
- "required": true,
11810
- "valueHint": "seconds"
11811
- }],
11812
- "aliases": [],
11813
- "category": "CLI"
11814
- },
11815
- {
11816
- "id": "pan-worker-report",
11817
- "path": ["worker", "report"],
11818
- "display": "/pan worker report",
11819
- "description": "Record a worker's report (run by the worker itself)",
11820
- "args": [{
11821
- "name": "worker-id",
11822
- "required": true,
11823
- "variadic": false
11824
- }],
13261
+ "id": "pan-lane-list",
13262
+ "path": ["lane", "list"],
13263
+ "display": "/pan lane list",
13264
+ "description": "List lanes with their activity, newest report, git facts and cost",
13265
+ "args": [],
11825
13266
  "options": [
11826
13267
  {
11827
- "flags": "--file <path>",
11828
- "description": "Read the Markdown report from a file",
13268
+ "flags": "--run <key>",
13269
+ "description": "Only this run's lanes",
11829
13270
  "required": true,
11830
- "valueHint": "path"
13271
+ "valueHint": "key"
11831
13272
  },
11832
13273
  {
11833
- "flags": "--stdin",
11834
- "description": "Read the Markdown report from stdin",
11835
- "required": false,
11836
- "valueHint": null
13274
+ "flags": "--parent <conv>",
13275
+ "description": "Only lanes launched by this conversation",
13276
+ "required": true,
13277
+ "valueHint": "conv"
11837
13278
  },
11838
13279
  {
11839
- "flags": "--status <status>",
11840
- "description": "done | blocked | failed (default: done)",
11841
- "required": true,
11842
- "valueHint": "status"
13280
+ "flags": "--json",
13281
+ "description": "Print JSON",
13282
+ "required": false,
13283
+ "valueHint": null
11843
13284
  }
11844
13285
  ],
11845
13286
  "aliases": [],
11846
13287
  "category": "CLI"
11847
13288
  },
11848
13289
  {
11849
- "id": "pan-worker-list",
11850
- "path": ["worker", "list"],
11851
- "display": "/pan worker list",
11852
- "description": "List workers with their parent, live state and newest report",
11853
- "args": [],
13290
+ "id": "pan-lane-show",
13291
+ "path": ["lane", "show"],
13292
+ "display": "/pan lane show",
13293
+ "description": "Print the builder → critic chain of a run and key, then one line per lane",
13294
+ "args": [{
13295
+ "name": "lane",
13296
+ "required": false,
13297
+ "variadic": false
13298
+ }],
11854
13299
  "options": [
11855
13300
  {
11856
- "flags": "--issue <id>",
11857
- "description": "Only this issue's workers",
13301
+ "flags": "--run <key>",
13302
+ "description": "Run key (with --key)",
11858
13303
  "required": true,
11859
- "valueHint": "id"
13304
+ "valueHint": "key"
11860
13305
  },
11861
13306
  {
11862
- "flags": "--parent <id>",
11863
- "description": "Only workers of this parent",
13307
+ "flags": "--key <key>",
13308
+ "description": "Lane key (with --run)",
11864
13309
  "required": true,
11865
- "valueHint": "id"
13310
+ "valueHint": "key"
11866
13311
  },
11867
13312
  {
11868
13313
  "flags": "--json",
11869
- "description": "Print JSON",
13314
+ "description": "Print { run, key, steps }",
11870
13315
  "required": false,
11871
13316
  "valueHint": null
11872
13317
  }
@@ -11875,88 +13320,135 @@ const COMPOSER_COMMAND_MANIFEST = [
11875
13320
  "category": "CLI"
11876
13321
  },
11877
13322
  {
11878
- "id": "pan-worker-register",
11879
- "path": ["worker", "register"],
11880
- "display": "/pan worker register",
11881
- "description": "Record an agent another tool launched so the Agents Directory shows it (read-only; prints its id)",
11882
- "args": [],
13323
+ "id": "pan-lane-wait",
13324
+ "path": ["lane", "wait"],
13325
+ "display": "/pan lane wait",
13326
+ "description": "Wait for a lane report (exit 0 done, 4 blocked/failed, 2 no report, 3 timeout, 1 error)",
13327
+ "args": [{
13328
+ "name": "lane",
13329
+ "required": false,
13330
+ "variadic": false
13331
+ }],
11883
13332
  "options": [
11884
13333
  {
11885
- "flags": "--source <name>",
11886
- "description": "Who launched it ([a-z0-9-], not codex-plugin) (required)",
13334
+ "flags": "--run <key>",
13335
+ "description": "Wait for the next report of any lane in this run",
11887
13336
  "required": true,
11888
- "valueHint": "name"
13337
+ "valueHint": "key"
11889
13338
  },
11890
13339
  {
11891
- "flags": "--external-id <id>",
11892
- "description": "The launcher's id for it (required)",
13340
+ "flags": "--parent <conv>",
13341
+ "description": "Wait for the next report of any lane launched by this conversation",
11893
13342
  "required": true,
11894
- "valueHint": "id"
13343
+ "valueHint": "conv"
11895
13344
  },
11896
13345
  {
11897
- "flags": "--harness <harness>",
11898
- "description": "codex, claude-code, … (required)",
13346
+ "flags": "--after <seq-or-cursor>",
13347
+ "description": "Report seq for one lane; cursor <atMs>.<name>.<seq> for a run or parent",
11899
13348
  "required": true,
11900
- "valueHint": "harness"
13349
+ "valueHint": "seq-or-cursor"
11901
13350
  },
11902
13351
  {
11903
- "flags": "--model <model>",
11904
- "description": "Model it runs",
13352
+ "flags": "--timeout <seconds>",
13353
+ "description": "Stop waiting after this many seconds (exit 3)",
11905
13354
  "required": true,
11906
- "valueHint": "model"
11907
- },
13355
+ "valueHint": "seconds"
13356
+ }
13357
+ ],
13358
+ "aliases": [],
13359
+ "category": "CLI"
13360
+ },
13361
+ {
13362
+ "id": "pan-lane-report",
13363
+ "path": ["lane", "report"],
13364
+ "display": "/pan lane report",
13365
+ "description": "Record this lane's report (run inside the lane)",
13366
+ "args": [],
13367
+ "options": [
11908
13368
  {
11909
- "flags": "--cwd <path>",
11910
- "description": "Its working directory",
13369
+ "flags": "--file <path>",
13370
+ "description": "Read the Markdown report from a file",
11911
13371
  "required": true,
11912
13372
  "valueHint": "path"
11913
13373
  },
11914
13374
  {
11915
- "flags": "--issue <id>",
11916
- "description": "Issue it works on",
11917
- "required": true,
11918
- "valueHint": "id"
13375
+ "flags": "--stdin",
13376
+ "description": "Read the Markdown report from stdin",
13377
+ "required": false,
13378
+ "valueHint": null
11919
13379
  },
11920
13380
  {
11921
- "flags": "--parent <id>",
11922
- "description": "Spawning agent id, conversation tmux session, or claude-session:<uuid>",
13381
+ "flags": "--status <status>",
13382
+ "description": "done | blocked | failed (default: done)",
11923
13383
  "required": true,
11924
- "valueHint": "id"
13384
+ "valueHint": "status"
11925
13385
  },
11926
13386
  {
11927
- "flags": "--label <text>",
11928
- "description": "Label shown in the Agents Directory",
11929
- "required": true,
11930
- "valueHint": "text"
13387
+ "flags": "--allow-unpushed",
13388
+ "description": "Let a builder report done with commits not on its upstream",
13389
+ "required": false,
13390
+ "valueHint": null
11931
13391
  },
11932
13392
  {
11933
- "flags": "--pid <n>",
11934
- "description": "Its process id (liveness is read from it)",
13393
+ "flags": "--verdict <value>",
13394
+ "description": "Critic or verifier done report: WOWED | IMPRESSED | NOT_YET | PASS | DEFECTS",
11935
13395
  "required": true,
11936
- "valueHint": "n"
13396
+ "valueHint": "value"
11937
13397
  },
11938
13398
  {
11939
- "flags": "--transcript <path>",
11940
- "description": "Its transcript file",
13399
+ "flags": "--defects <n>",
13400
+ "description": "Defect count (default: the verdict file's defects array length)",
11941
13401
  "required": true,
11942
- "valueHint": "path"
13402
+ "valueHint": "n"
11943
13403
  },
11944
13404
  {
11945
- "flags": "--session-id <id>",
11946
- "description": "Its session or thread id",
13405
+ "flags": "--verdict-file <path>",
13406
+ "description": "The verdict JSON the lane wrote",
11947
13407
  "required": true,
11948
- "valueHint": "id"
11949
- },
11950
- {
11951
- "flags": "--json",
11952
- "description": "Print { id, created }",
11953
- "required": false,
11954
- "valueHint": null
13408
+ "valueHint": "path"
11955
13409
  }
11956
13410
  ],
11957
13411
  "aliases": [],
11958
13412
  "category": "CLI"
11959
13413
  },
13414
+ {
13415
+ "id": "pan-lane-stop",
13416
+ "path": ["lane", "stop"],
13417
+ "display": "/pan lane stop",
13418
+ "description": "Stop a lane through the conversation stop door",
13419
+ "args": [{
13420
+ "name": "lane",
13421
+ "required": true,
13422
+ "variadic": false
13423
+ }],
13424
+ "options": [],
13425
+ "aliases": [],
13426
+ "category": "CLI"
13427
+ },
13428
+ {
13429
+ "id": "pan-lane-reap",
13430
+ "path": ["lane", "reap"],
13431
+ "display": "/pan lane reap",
13432
+ "description": "Remove a lane's directory and archive its conversation (never kills, never discards work)",
13433
+ "args": [{
13434
+ "name": "lane",
13435
+ "required": true,
13436
+ "variadic": false
13437
+ }],
13438
+ "options": [{
13439
+ "flags": "--park",
13440
+ "description": "Save uncommitted work to a verified patch before removing a dirty worktree",
13441
+ "required": false,
13442
+ "valueHint": null
13443
+ }, {
13444
+ "flags": "--keep",
13445
+ "description": "Keep the conversation listed instead of archiving it",
13446
+ "required": false,
13447
+ "valueHint": null
13448
+ }],
13449
+ "aliases": [],
13450
+ "category": "CLI"
13451
+ },
11960
13452
  {
11961
13453
  "id": "pan-flywheel",
11962
13454
  "path": ["flywheel"],
@@ -12163,7 +13655,7 @@ const COMPOSER_COMMAND_MANIFEST = [
12163
13655
  },
12164
13656
  {
12165
13657
  "flags": "--agent-harness <harness>",
12166
- "description": "Agent harness: claude-code, pi, ohmypi, codex, acp, kimi-code, opencode, muse, or user",
13658
+ "description": "Agent harness: claude-code, pi, ohmypi, codex, acp, kimi-code, opencode, muse, prime-agent, or user",
12167
13659
  "required": true,
12168
13660
  "valueHint": "harness"
12169
13661
  },
@@ -13093,6 +14585,21 @@ const COMPOSER_COMMAND_MANIFEST = [
13093
14585
  "aliases": [],
13094
14586
  "category": "Core"
13095
14587
  },
14588
+ {
14589
+ "id": "pan-doctor-github-quota",
14590
+ "path": ["doctor", "github-quota"],
14591
+ "display": "/pan doctor github-quota",
14592
+ "description": "Show GitHub API quota use per caller, active pauses, and skipped projects",
14593
+ "args": [],
14594
+ "options": [{
14595
+ "flags": "--json",
14596
+ "description": "Print JSON",
14597
+ "required": false,
14598
+ "valueHint": null
14599
+ }],
14600
+ "aliases": [],
14601
+ "category": "Core"
14602
+ },
13096
14603
  {
13097
14604
  "id": "pan-resources",
13098
14605
  "path": ["resources"],
@@ -13642,6 +15149,11 @@ const DirectoryPause = Schema.Struct({
13642
15149
  reason: Schema.NullOr(Schema.String),
13643
15150
  since: Schema.NullOr(Schema.String)
13644
15151
  });
15152
+ /** A provider error (billing, usage limit, ...) detected at the end of a transcript (PAN-4222). */
15153
+ const DirectoryProviderError = Schema.Struct({
15154
+ message: Schema.String,
15155
+ at: Schema.String
15156
+ });
13645
15157
  const DirectoryEntry = Schema.Struct({
13646
15158
  id: Schema.String,
13647
15159
  kind: DirectoryEntryKind,
@@ -13666,7 +15178,29 @@ const DirectoryEntry = Schema.Struct({
13666
15178
  source: DirectoryEntrySource,
13667
15179
  transcript: Schema.NullOr(DirectoryTranscriptRef),
13668
15180
  /** The pause gate from state.json, native agents only (PAN-4197). */
13669
- pause: Schema.optional(DirectoryPause)
15181
+ pause: Schema.optional(DirectoryPause),
15182
+ /** PAN-4223: gauntlet lane facts; conversation entries that are lanes only. */
15183
+ lane: Schema.optional(Schema.Struct({
15184
+ run: Schema.String,
15185
+ key: Schema.String,
15186
+ role: Schema.String,
15187
+ iteration: Schema.Number,
15188
+ reportStatus: Schema.NullOr(Schema.Literals([
15189
+ "done",
15190
+ "blocked",
15191
+ "failed"
15192
+ ])),
15193
+ /** Critic/verifier: its verdict (or `pending`); builder: the newest critic verdict. */
15194
+ verdict: Schema.optional(Schema.NullOr(Schema.String)),
15195
+ /** Critic/verifier: the judged builder's legacy conversation id. */
15196
+ criticOf: Schema.optional(Schema.Number)
15197
+ })),
15198
+ /** PAN-4223: the predecessor's legacy conversation id; successors only (links to /conv/<id>). */
15199
+ continuesFrom: Schema.optional(Schema.Number),
15200
+ /** The id runtime events (agentRuntimeById) are keyed under, when it differs from `id` (PAN-4222). */
15201
+ runtimeId: Schema.optional(Schema.String),
15202
+ /** A provider error detected at the transcript's end, conversations only (PAN-4222). */
15203
+ providerError: Schema.optional(DirectoryProviderError)
13670
15204
  });
13671
15205
  /**
13672
15206
  * `window`: live entries plus finished ones active inside `windowHours`.
@@ -13763,6 +15297,73 @@ function isConfiguredPullRequestRepo(ref, repos) {
13763
15297
  return repos.some((repo) => repo.host === ref.host && repo.repository === ref.repository);
13764
15298
  }
13765
15299
  //#endregion
13766
- export { ACP_BEHAVIOR, AGENT_ROLES, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentDirectoryResponse, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BackendPane, BackendPaneChangedEvent, BackendPaneRemovedEvent, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPANION_TERMINAL_CLOSE_BODY_KEYS, COMPANION_TERMINAL_OPEN_BODY_KEYS, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationPullRequests, ConversationPullRequestsChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DerivedBranchState, DerivedIssueState, DerivedPrState, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EditorIdSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelBugRateCriterion, FlywheelConversationSummary, FlywheelDerivedStatus, FlywheelEffort, FlywheelFreshness, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelInFlightRow, FlywheelJournalSummary, FlywheelLastTick, FlywheelOrchestrator, FlywheelOrderBookSummary, FlywheelOrders, FlywheelP0Criterion, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelPolicies, FlywheelRunId, FlywheelRunState, FlywheelScope, FlywheelStats, FlywheelStatsCriterionStatus, FlywheelStatsTrend, FlywheelStatsWindow, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugRow, FlywheelSubstrateBugStatus, FlywheelSubstrateSeverity, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, ISSUE_ATTENTIONS, ISSUE_STATES, ISSUE_STATE_PRECEDENCE, IssueAttention, IssueId, IssueState, IssueStateChangedEvent, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesDeltaEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MUSE_BEHAVIOR, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, ModelOrigin, ModelOriginEntry, OHMYPI_BEHAVIOR, OPENCODE_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PIPELINE_MEMBERSHIP_LOADING_CODE, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, PrChecksState, PrReviewState, ProjectCiHeadObservedEvent, ProjectCiSnapshot, ProjectCiSuite, ProjectCiSuiteObservedEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectDeployChangedEvent, ProjectDeployPhase, ProjectDeploySnapshot, ProjectSessionTree, ProposedPlan, PullRequestKey, PullRequestLink, PullRequestLinkListing, PullRequestLinkSource, PullRequestLinkedConversation, PullRequestSnapshot, PullRequestState, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, RestartGateChangedEvent, RestartGateKind, RestartGateOutcome, RestartGateRequest, RestartGateSnapshot, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TERMINAL_BACKEND_NAMES, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, ThinkingState, TickMarker, TickMarkerPhase, TurnDiffFileChange, TurnDiffSummary, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, applyIssueDelta, canonicalPullRequestUrl, companionTerminalKindFor, compareIssueIds, createIssueDelta, decodeFlywheelDerivedStatus, decodeFlywheelStats, deriveProjectCi, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, isAgentRole, isAgentSessionName, isChannelReplyKind, isConfiguredPullRequestRepo, isIssueAttention, isIssueState, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
15300
+ //#region src/conversation-rows.ts
15301
+ /**
15302
+ * Conversation-row classifiers shared by the dashboard server (`src/lib`) and
15303
+ * the frontend (PAN-4301). One rule per question: which rows are singleton
15304
+ * runners, and what a lane conversation is doing right now (D10).
15305
+ */
15306
+ /** Singleton runners spawn under their bare id (see src/lib/agents/identity.ts normalizeAgentId). */
15307
+ const SINGLETON_AGENT_IDS = new Set(["flywheel-orchestrator", "sequencer-runner"]);
15308
+ function isSingletonConversation(row) {
15309
+ return SINGLETON_AGENT_IDS.has(row.name.toLowerCase()) || row.issueId != null && SINGLETON_AGENT_IDS.has(row.issueId.toLowerCase());
15310
+ }
15311
+ /** D10 `starting`: not alive, not ended, created less than this long ago. */
15312
+ const LANE_STARTING_GRACE_MS = 3 * 6e4;
15313
+ /** D10, first match wins. */
15314
+ function laneActivityOf(row, now) {
15315
+ if (row.archivedAt != null) return "stopped";
15316
+ if (row.spawnError) return "failed-to-start";
15317
+ if (row.sessionAlive) {
15318
+ if ((row.pendingInputCount ?? 0) > 0) return "needs-you";
15319
+ if (row.isWorking) return "working";
15320
+ return "idle";
15321
+ }
15322
+ if (row.status === "active" && now - Date.parse(row.createdAt) < 18e4) return "starting";
15323
+ return "stopped";
15324
+ }
15325
+ //#endregion
15326
+ //#region src/environment.ts
15327
+ /** Wire protocol version a client and server must agree on. */
15328
+ const ENVIRONMENT_PROTOCOL_VERSION = 1;
15329
+ const EnvironmentId = Schema.String.pipe(Schema.brand("EnvironmentId"));
15330
+ const EnvironmentCapabilities = Schema.Struct({
15331
+ /** `POST /api/pairing/*` is available. */
15332
+ pairing: Schema.Boolean,
15333
+ /** `GET/DELETE /api/devices` is available. */
15334
+ deviceSessions: Schema.Boolean,
15335
+ /** `/ws/*` upgrades require a credential (PAN-1166). */
15336
+ terminalAuth: Schema.Boolean
15337
+ });
15338
+ const EnvironmentDescriptor = Schema.Struct({
15339
+ descriptorVersion: Schema.Literal(1),
15340
+ environmentId: EnvironmentId,
15341
+ label: Schema.String,
15342
+ platform: Schema.Struct({
15343
+ os: Schema.String,
15344
+ arch: Schema.String
15345
+ }),
15346
+ /** Exact package version of the serving Overdeck. */
15347
+ serverVersion: Schema.String,
15348
+ /** The server's `ENVIRONMENT_PROTOCOL_VERSION`. */
15349
+ protocolVersion: Schema.Number,
15350
+ capabilities: EnvironmentCapabilities
15351
+ });
15352
+ /** A server-local id qualified by the environment that owns it. */
15353
+ const ScopedRef = (localId) => Schema.Struct({
15354
+ environmentId: EnvironmentId,
15355
+ localId
15356
+ });
15357
+ const ScopedProjectRef = ScopedRef(Schema.String);
15358
+ const ScopedIssueRef = ScopedRef(Schema.String);
15359
+ const ScopedAgentRef = ScopedRef(Schema.String);
15360
+ const ScopedConversationRef = ScopedRef(Schema.String);
15361
+ const ScopedTerminalRef = ScopedRef(Schema.String);
15362
+ /** True only when the server speaks exactly the client's protocol version. */
15363
+ function isProtocolCompatible(descriptor, clientProtocolVersion) {
15364
+ return descriptor.protocolVersion === clientProtocolVersion;
15365
+ }
15366
+ //#endregion
15367
+ export { ACP_BEHAVIOR, AGENT_ROLES, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentDirectoryResponse, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BackendPane, BackendPaneChangedEvent, BackendPaneRemovedEvent, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPANION_TERMINAL_CLOSE_BODY_KEYS, COMPANION_TERMINAL_OPEN_BODY_KEYS, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationPullRequests, ConversationPullRequestsChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_EFFORT, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DerivedBranchState, DerivedIssueState, DerivedPrState, DerivedWorkStart, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryProviderError, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EFFORT_LEVELS, ENVIRONMENT_PROTOCOL_VERSION, EditorIdSchema, EffortLevelSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, EnvironmentCapabilities, EnvironmentDescriptor, EnvironmentId, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelAgentSummary, FlywheelBugRateCriterion, FlywheelConversationSummary, FlywheelDerivedStatus, FlywheelEffort, FlywheelFreshness, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelInFlightRow, FlywheelJournalSummary, FlywheelLastTick, FlywheelOrchestrator, FlywheelOrderBookSummary, FlywheelOrders, FlywheelP0Criterion, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelPolicies, FlywheelRunId, FlywheelRunState, FlywheelScope, FlywheelStats, FlywheelStatsCriterionStatus, FlywheelStatsTrend, FlywheelStatsWindow, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugRow, FlywheelSubstrateBugStatus, FlywheelSubstrateSeverity, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GITHUB_QUOTA_BUCKETS, GITHUB_QUOTA_CALLERS, GITHUB_QUOTA_POOLS, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GitHubQuotaBucket, GitHubQuotaCaller, GitHubQuotaCallerUsage, GitHubQuotaChangedEvent, GitHubQuotaPause, GitHubQuotaPool, GitHubQuotaSample, GitHubQuotaSnapshot, GitHubQuotaUsage, GitHubRateLimitKind, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, ISSUE_ATTENTIONS, ISSUE_STATES, ISSUE_STATE_PRECEDENCE, IssueAttention, IssueId, IssueState, IssueStateChangedEvent, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesDeltaEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LANE_STARTING_GRACE_MS, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MUSE_BEHAVIOR, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, ModelOrigin, ModelOriginEntry, NON_ESSENTIAL_GITHUB_CALLERS, OHMYPI_BEHAVIOR, OPENCODE_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PIPELINE_MEMBERSHIP_LOADING_CODE, PRIME_AGENT_BEHAVIOR, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, PrChecksState, PrReviewState, ProjectCiHeadObservedEvent, ProjectCiSnapshot, ProjectCiSuite, ProjectCiSuiteObservedEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectDeployChangedEvent, ProjectDeployPhase, ProjectDeploySnapshot, ProjectSessionTree, ProposedPlan, PullRequestKey, PullRequestLink, PullRequestLinkListing, PullRequestLinkSource, PullRequestLinkedConversation, PullRequestSnapshot, PullRequestState, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, RestartGateChangedEvent, RestartGateKind, RestartGateOutcome, RestartGateRequest, RestartGateSnapshot, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, SINGLETON_AGENT_IDS, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, ScopedAgentRef, ScopedConversationRef, ScopedIssueRef, ScopedProjectRef, ScopedRef, ScopedTerminalRef, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentHumanInput, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TERMINAL_BACKEND_NAMES, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, ThinkingState, TickMarker, TickMarkerPhase, TurnDiffFileChange, TurnDiffSummary, TurnEndAssessment, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, applyIssueDelta, bucketQuotaPoints, bucketQuotaRemaining, canonicalPullRequestUrl, companionTerminalKindFor, compareEffort, compareIssueIds, createIssueDelta, decodeFlywheelDerivedStatus, decodeFlywheelStats, deriveProjectCi, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, indexPanesByAgentKey, isAgentRole, isAgentSessionName, isChannelReplyKind, isConfiguredPullRequestRepo, isEffortLevel, isIssueAttention, isIssueState, isProtocolCompatible, isSingletonConversation, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, laneActivityOf, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, paneAgentKey, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
13767
15368
 
13768
15369
  //# sourceMappingURL=index.mjs.map