@overdeck/contracts 0.62.1 → 0.63.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
  /**
@@ -84,7 +105,9 @@ const DerivedPrState = Schema.Struct({
84
105
  reviewState: PrReviewState,
85
106
  checks: PrChecksState,
86
107
  /** Forge mergeability. `null` when the forge has not computed it yet. */
87
- mergeable: Schema.NullOr(Schema.Boolean)
108
+ mergeable: Schema.NullOr(Schema.Boolean),
109
+ /** Present only when true; survives state: closed (PAN-4290). */
110
+ merged: Schema.optional(Schema.Boolean)
88
111
  });
89
112
  /** The issue's feature branch as git reports it. */
90
113
  const DerivedBranchState = Schema.Struct({
@@ -141,6 +164,119 @@ function isIssueAttention(value) {
141
164
  return typeof value === "string" && ISSUE_ATTENTIONS.includes(value);
142
165
  }
143
166
  //#endregion
167
+ //#region src/github-quota.ts
168
+ /**
169
+ * The closed list of logical GitHub callers. A call made outside any
170
+ * `withGitHubCaller` context is recorded as `other` (or `app-rest` when it
171
+ * goes through the GitHub App REST door).
172
+ */
173
+ const GITHUB_QUOTA_CALLERS = [
174
+ "pipeline-membership",
175
+ "pr-cache",
176
+ "pr-sync",
177
+ "ci-repair",
178
+ "issue-poller",
179
+ "close-out",
180
+ "tracker-client",
181
+ "app-rest",
182
+ "quota-sampler",
183
+ "agent",
184
+ "other"
185
+ ];
186
+ const GitHubQuotaCaller = Schema.Literals(GITHUB_QUOTA_CALLERS);
187
+ /**
188
+ * Read-model pollers whose data can be stale for minutes without harm. Only
189
+ * these callers are skipped while a pause is active; every other caller
190
+ * (merge, verdict recording, tracker writes, agents) is essential and never
191
+ * paused.
192
+ */
193
+ const NON_ESSENTIAL_GITHUB_CALLERS = new Set([
194
+ "pipeline-membership",
195
+ "pr-cache",
196
+ "pr-sync",
197
+ "ci-repair",
198
+ "issue-poller",
199
+ "close-out"
200
+ ]);
201
+ /**
202
+ * The GitHub identity whose limit a call spends: `user` is the `gh` CLI token,
203
+ * `pat` is the `GITHUB_TOKEN` personal access token, `app` is a GitHub App
204
+ * installation token.
205
+ */
206
+ const GITHUB_QUOTA_POOLS = [
207
+ "user",
208
+ "pat",
209
+ "app"
210
+ ];
211
+ const GitHubQuotaPool = Schema.Literals(GITHUB_QUOTA_POOLS);
212
+ /** The limit counter inside a pool. `rest` is what GitHub calls `core`. */
213
+ const GITHUB_QUOTA_BUCKETS = ["graphql", "rest"];
214
+ const GitHubQuotaBucket = Schema.Literals(GITHUB_QUOTA_BUCKETS);
215
+ /** Primary = the hourly budget; secondary = GitHub's burst/abuse limit. */
216
+ const GitHubRateLimitKind = Schema.Literals(["primary", "secondary"]);
217
+ /** Points spent and calls made in one bucket. */
218
+ const GitHubQuotaUsage = Schema.Struct({
219
+ points: Schema.Number,
220
+ calls: Schema.Number
221
+ });
222
+ /** One caller's metered usage over the last hour. */
223
+ const GitHubQuotaCallerUsage = Schema.Struct({
224
+ caller: GitHubQuotaCaller,
225
+ graphql: GitHubQuotaUsage,
226
+ rest: GitHubQuotaUsage,
227
+ /** True when any counted call had an estimated (not GitHub-reported) cost. */
228
+ estimated: Schema.Boolean
229
+ });
230
+ /** The latest `/rate_limit` (or header) reading for one pool and bucket. */
231
+ const GitHubQuotaSample = Schema.Struct({
232
+ pool: GitHubQuotaPool,
233
+ bucket: GitHubQuotaBucket,
234
+ /** ISO time the sample was taken. */
235
+ ts: Schema.String,
236
+ remaining: Schema.Number,
237
+ limit: Schema.Number,
238
+ /** ISO time the bucket's hourly window resets. */
239
+ resetAt: Schema.optional(Schema.String)
240
+ });
241
+ /** An active pause on one pool and bucket (`~/.overdeck/github-quota/pause.json`). */
242
+ const GitHubQuotaPause = Schema.Struct({
243
+ pool: GitHubQuotaPool,
244
+ bucket: GitHubQuotaBucket,
245
+ kind: GitHubRateLimitKind,
246
+ /** The caller whose refused call started the pause. */
247
+ caller: GitHubQuotaCaller,
248
+ /** ISO time the pause started. */
249
+ since: Schema.String,
250
+ /** ISO time the pause ends. */
251
+ until: Schema.String
252
+ });
253
+ /**
254
+ * The operator-facing quota view — identical to the body of
255
+ * `GET /api/github-quota`, so the pill, the banner and the CLI read one shape.
256
+ * Derived runtime state: published with `emitOnly`, never persisted.
257
+ */
258
+ const GitHubQuotaSnapshot = Schema.Struct({
259
+ /** ISO time the snapshot was built. */
260
+ generatedAt: Schema.String,
261
+ /** The `gh` account login. Local display only; never sent to telemetry. */
262
+ login: Schema.NullOr(Schema.String),
263
+ /** Per-caller usage in the last hour, highest total points first. */
264
+ callers: Schema.Array(GitHubQuotaCallerUsage),
265
+ /** The latest sample per pool and bucket. */
266
+ samples: Schema.Array(GitHubQuotaSample),
267
+ /** Active pauses; empty when GitHub calls are not paused. */
268
+ pauses: Schema.Array(GitHubQuotaPause),
269
+ /** True when this machine's own metered usage cannot explain a primary limit. */
270
+ ownUsageLow: Schema.Boolean,
271
+ /** User-pool GraphQL points the latest sample shows spent but no metered caller claims. */
272
+ unattributed: Schema.Number,
273
+ /** Refusals observed in the last hour. */
274
+ refusals: Schema.Struct({
275
+ primary: Schema.Number,
276
+ secondary: Schema.Number
277
+ })
278
+ });
279
+ //#endregion
144
280
  //#region src/types.ts
145
281
  const IssueId = Schema.String;
146
282
  const MEMBERSHIP_UNAVAILABLE_REASONS = [
@@ -197,7 +333,8 @@ const KNOWN_HARNESSES = new Set([
197
333
  "acp",
198
334
  "kimi-code",
199
335
  "opencode",
200
- "muse"
336
+ "muse",
337
+ "prime-agent"
201
338
  ]);
202
339
  /**
203
340
  * Normalize a snapshot's runtime field to a known Harness value.
@@ -296,6 +433,7 @@ const AgentRuntimeSnapshot = Schema.Struct({
296
433
  activity: Activity,
297
434
  lastActivity: Schema.String,
298
435
  currentTool: Schema.optional(Schema.String),
436
+ currentToolDescription: Schema.optional(Schema.String),
299
437
  thinking: Schema.optional(ThinkingState),
300
438
  waiting: Schema.optional(WaitingState),
301
439
  claudeSessionId: Schema.optional(Schema.String),
@@ -559,6 +697,8 @@ const DashboardSnapshot = Schema.Struct({
559
697
  embedProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EmbedProgressSnapshot)),
560
698
  ciByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectCiSnapshot)),
561
699
  restartGate: Schema.optional(RestartGateSnapshot),
700
+ /** PAN-4264 — GitHub API quota use, samples and pauses; derived, never stored. */
701
+ githubQuota: Schema.optional(GitHubQuotaSnapshot),
562
702
  /** PAN-3751 — in-flight deploys keyed by project key. */
563
703
  deployByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectDeploySnapshot)),
564
704
  timestamp: Schema.String
@@ -1432,6 +1572,20 @@ const RestartGateChangedEvent = Schema.Struct({
1432
1572
  payload: RestartGateSnapshot
1433
1573
  });
1434
1574
  /**
1575
+ * The GitHub API quota view changed (PAN-4264).
1576
+ *
1577
+ * The payload is the complete snapshot, so the reducer is a plain replace.
1578
+ * The server derives it from the quota ledger and pause file under
1579
+ * `~/.overdeck/github-quota/` and emits it in-memory only, like
1580
+ * `restart_gate.changed`: it is never persisted and never replayed at boot.
1581
+ */
1582
+ const GitHubQuotaChangedEvent = Schema.Struct({
1583
+ type: Schema.Literal("github_quota.changed"),
1584
+ sequence: SequenceNumber,
1585
+ timestamp: Schema.String,
1586
+ payload: GitHubQuotaSnapshot
1587
+ });
1588
+ /**
1435
1589
  * The set of in-flight project deploys changed (PAN-3751).
1436
1590
  *
1437
1591
  * The payload is the COMPLETE projection keyed by project key, so the reducer
@@ -1646,6 +1800,7 @@ const AgentActivityChangedEvent = Schema.Struct({
1646
1800
  agentId: AgentId,
1647
1801
  activity: Activity,
1648
1802
  currentTool: Schema.optional(Schema.String),
1803
+ toolDescription: Schema.optional(Schema.String),
1649
1804
  hookName: Schema.optional(Schema.String)
1650
1805
  })
1651
1806
  });
@@ -2748,6 +2903,7 @@ const DomainEvent = Schema.Union([
2748
2903
  ProjectCiSuiteObservedEvent,
2749
2904
  ProjectCiHeadObservedEvent,
2750
2905
  RestartGateChangedEvent,
2906
+ GitHubQuotaChangedEvent,
2751
2907
  ProjectDeployChangedEvent,
2752
2908
  AgentCreatedEvent,
2753
2909
  AgentEnrichmentChangedEvent,
@@ -3138,13 +3294,23 @@ const WorkLogEntry = Schema.Struct({
3138
3294
  toolInput: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
3139
3295
  sequence: Schema.optional(Schema.Number)
3140
3296
  });
3297
+ /** A human-origin message read from a subagent's own sidechain transcript (PAN-4247). */
3298
+ const SubagentHumanInput = Schema.Struct({
3299
+ id: Schema.String,
3300
+ text: Schema.String,
3301
+ createdAt: Schema.String
3302
+ });
3141
3303
  const SubagentSummary = Schema.Struct({
3142
3304
  agentId: Schema.String,
3143
3305
  agentType: Schema.String,
3144
3306
  description: Schema.String,
3145
3307
  toolUseId: Schema.String,
3146
3308
  spawnDepth: Schema.Number,
3147
- status: Schema.Literals(["running", "done"])
3309
+ status: Schema.Literals(["running", "done"]),
3310
+ /** True for a background subagent, launched with `requestShape: "background"` (PAN-4247). */
3311
+ background: Schema.optional(Schema.Boolean),
3312
+ /** Recent human-origin sidechain inputs, most useful when a message routed into this subagent instead of the main conversation (PAN-4247). */
3313
+ humanInputs: Schema.optional(Schema.Array(SubagentHumanInput))
3148
3314
  });
3149
3315
  /**
3150
3316
  * Response shape for GET /api/agents/:id/conversation.
@@ -3653,6 +3819,7 @@ const INITIAL_READ_MODEL_STATE = {
3653
3819
  embedProgressBySessionId: {},
3654
3820
  ciByProjectKey: {},
3655
3821
  restartGate: null,
3822
+ githubQuota: null,
3656
3823
  deployByProjectKey: {},
3657
3824
  agentIdBySessionId: {},
3658
3825
  dashboardLifecycle: {
@@ -3784,6 +3951,7 @@ function syncSnapshot(state, snapshot) {
3784
3951
  embedProgressBySessionId: snapshot.embedProgressBySessionId ?? {},
3785
3952
  ciByProjectKey: snapshot.ciByProjectKey ?? state.ciByProjectKey,
3786
3953
  restartGate: snapshot.restartGate ?? state.restartGate,
3954
+ githubQuota: snapshot.githubQuota ?? state.githubQuota,
3787
3955
  deployByProjectKey: snapshot.deployByProjectKey ?? state.deployByProjectKey,
3788
3956
  agentIdBySessionId
3789
3957
  };
@@ -3888,6 +4056,7 @@ function applyEvent(state, event) {
3888
4056
  ...prevRuntime,
3889
4057
  activity: "stopped",
3890
4058
  currentTool: void 0,
4059
+ currentToolDescription: void 0,
3891
4060
  thinking: void 0,
3892
4061
  waiting: void 0,
3893
4062
  channelReply: void 0,
@@ -4031,6 +4200,7 @@ function applyEvent(state, event) {
4031
4200
  ...prevRuntime,
4032
4201
  activity: "stopped",
4033
4202
  currentTool: void 0,
4203
+ currentToolDescription: void 0,
4034
4204
  thinking: void 0,
4035
4205
  waiting: void 0,
4036
4206
  channelReply: void 0,
@@ -4199,6 +4369,11 @@ function applyEvent(state, event) {
4199
4369
  ...event.payload.lastOutcome === void 0 ? {} : { lastOutcome: event.payload.lastOutcome }
4200
4370
  }
4201
4371
  };
4372
+ case "github_quota.changed": return {
4373
+ ...state,
4374
+ sequence: Math.max(state.sequence, event.sequence),
4375
+ githubQuota: event.payload
4376
+ };
4202
4377
  case "project.deploy_changed": return {
4203
4378
  ...state,
4204
4379
  sequence: Math.max(state.sequence, event.sequence),
@@ -4452,12 +4627,13 @@ function applyEvent(state, event) {
4452
4627
  sequence: Math.max(state.sequence, event.sequence)
4453
4628
  };
4454
4629
  case "agent.activity_changed": {
4455
- const { agentId, activity, currentTool } = event.payload;
4630
+ const { agentId, activity, currentTool, toolDescription } = event.payload;
4456
4631
  const prev = state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence);
4457
4632
  const next = {
4458
4633
  ...prev,
4459
4634
  activity,
4460
4635
  currentTool: activity === "working" ? currentTool : void 0,
4636
+ currentToolDescription: activity === "working" ? toolDescription : void 0,
4461
4637
  thinking: activity === "thinking" ? prev.thinking : void 0,
4462
4638
  waiting: activity === "waiting" ? prev.waiting : void 0,
4463
4639
  channelReply: activity === "working" ? void 0 : prev.channelReply,
@@ -4480,6 +4656,7 @@ function applyEvent(state, event) {
4480
4656
  ...state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence),
4481
4657
  activity: "thinking",
4482
4658
  currentTool: void 0,
4659
+ currentToolDescription: void 0,
4483
4660
  thinking: {
4484
4661
  since: event.timestamp,
4485
4662
  lastToolAt
@@ -4528,6 +4705,7 @@ function applyEvent(state, event) {
4528
4705
  ...state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence),
4529
4706
  activity: "waiting",
4530
4707
  currentTool: void 0,
4708
+ currentToolDescription: void 0,
4531
4709
  thinking: void 0,
4532
4710
  waiting: {
4533
4711
  reason,
@@ -5084,6 +5262,30 @@ function deriveProjectCi(record) {
5084
5262
  };
5085
5263
  }
5086
5264
  //#endregion
5265
+ //#region src/effort.ts
5266
+ /**
5267
+ * Canonical reasoning-effort levels, end to end. `xhigh` was added in Opus 4.7
5268
+ * (between `high` and `max`); `max` predates it (Opus 4.6+/Sonnet 4.6). This is
5269
+ * the single source of truth for the enum — every other copy in the codebase
5270
+ * derives from it.
5271
+ */
5272
+ const EFFORT_LEVELS = [
5273
+ "low",
5274
+ "medium",
5275
+ "high",
5276
+ "xhigh",
5277
+ "max"
5278
+ ];
5279
+ const DEFAULT_EFFORT = "high";
5280
+ const EffortLevelSchema = Schema.Literals(EFFORT_LEVELS);
5281
+ function isEffortLevel(value) {
5282
+ return typeof value === "string" && EFFORT_LEVELS.includes(value);
5283
+ }
5284
+ /** Compares two effort levels by rank; negative when `a` is lower than `b`. */
5285
+ function compareEffort(a, b) {
5286
+ return EFFORT_LEVELS.indexOf(a) - EFFORT_LEVELS.indexOf(b);
5287
+ }
5288
+ //#endregion
5087
5289
  //#region src/flywheel.ts
5088
5290
  const FlywheelRunId = Schema.String.check(Schema.isPattern(/^RUN-\d+$/));
5089
5291
  const FlywheelHttpUrl = Schema.String.check(Schema.isPattern(/^https?:\/\/\S+$/i));
@@ -5095,15 +5297,10 @@ const FlywheelHarness = Schema.Literals([
5095
5297
  "acp",
5096
5298
  "kimi-code",
5097
5299
  "opencode",
5098
- "muse"
5099
- ]);
5100
- const FlywheelEffort = Schema.Literals([
5101
- "low",
5102
- "medium",
5103
- "high",
5104
- "xhigh",
5105
- "max"
5300
+ "muse",
5301
+ "prime-agent"
5106
5302
  ]);
5303
+ const FlywheelEffort = EffortLevelSchema;
5107
5304
  const FlywheelOrchestrator = Schema.Struct({
5108
5305
  harness: FlywheelHarness,
5109
5306
  model: Schema.String,
@@ -5364,6 +5561,8 @@ const FlywheelConversationSummary = Schema.Struct({
5364
5561
  model: Schema.NullOr(Schema.String),
5365
5562
  harness: Schema.NullOr(Schema.String),
5366
5563
  cwd: Schema.String,
5564
+ /** When the conversation row was created — the page's elapsed run time. */
5565
+ createdAt: Schema.String,
5367
5566
  sessionAlive: Schema.Boolean
5368
5567
  });
5369
5568
  const FlywheelLastTick = Schema.Struct({
@@ -5385,11 +5584,28 @@ const FlywheelJournalSummary = Schema.Struct({
5385
5584
  type: Schema.String,
5386
5585
  source: Schema.optional(Schema.String)
5387
5586
  });
5587
+ /** One live agent pane in the flywheel's project, as the backend inventory reports it. */
5588
+ const FlywheelAgentSummary = Schema.Struct({
5589
+ issueId: Schema.String,
5590
+ role: Schema.String,
5591
+ harness: Schema.String,
5592
+ model: Schema.String,
5593
+ state: Schema.String,
5594
+ agentId: Schema.optional(Schema.String)
5595
+ });
5388
5596
  const FlywheelInFlightRow = Schema.Struct({
5389
5597
  issueId: Schema.String,
5598
+ /** The tracker's title, or `null` when no tracker answered for this issue. */
5599
+ title: Schema.NullOr(Schema.String),
5390
5600
  state: IssueState,
5391
5601
  attention: Schema.optional(IssueAttention),
5392
5602
  pr: Schema.optional(DerivedPrState),
5603
+ /** Set when no configured tracker answered: the state is a guess, not a fact. */
5604
+ trackerUnknown: Schema.optional(Schema.Literal(true)),
5605
+ /** Live agent panes on this issue. `working` with 0 means nobody is driving it. */
5606
+ liveAgents: Schema.Number,
5607
+ /** The loop named this id in its newest tick marker's in-flight list. */
5608
+ inTick: Schema.Boolean,
5393
5609
  lastJournal: Schema.NullOr(FlywheelJournalSummary)
5394
5610
  });
5395
5611
  const FlywheelOrderBookSummary = Schema.Struct({
@@ -5406,6 +5622,13 @@ const FlywheelDerivedStatus = Schema.Struct({
5406
5622
  freshness: Schema.NullOr(FlywheelFreshness),
5407
5623
  policies: FlywheelPolicies,
5408
5624
  inFlight: Schema.Array(FlywheelInFlightRow),
5625
+ /** Every live agent on an in-flight issue, by issue then role. */
5626
+ agents: Schema.Array(FlywheelAgentSummary),
5627
+ /**
5628
+ * Which list the header counts: `tick` when a running loop named its own
5629
+ * in-flight ids, `census` when the rows are just the feature workspaces.
5630
+ */
5631
+ inFlightSource: Schema.Literals(["tick", "census"]),
5409
5632
  orderBook: Schema.NullOr(FlywheelOrderBookSummary),
5410
5633
  projectRoot: Schema.String,
5411
5634
  generatedAt: Schema.String
@@ -5471,7 +5694,8 @@ const CONTEXT_PREVIEW_HARNESSES = [
5471
5694
  "acp",
5472
5695
  "kimi-code",
5473
5696
  "opencode",
5474
- "muse"
5697
+ "muse",
5698
+ "prime-agent"
5475
5699
  ];
5476
5700
  const ContextLayerKind = Schema.Literals(CONTEXT_LAYER_KINDS);
5477
5701
  const ContextPreviewHarness = Schema.Literals(CONTEXT_PREVIEW_HARNESSES);
@@ -5581,6 +5805,7 @@ const ContextHarnessPreviews = Schema.Struct({
5581
5805
  "kimi-code": Schema.String,
5582
5806
  opencode: Schema.optional(Schema.String),
5583
5807
  muse: Schema.String,
5808
+ "prime-agent": Schema.String,
5584
5809
  fullPrompt: Schema.String
5585
5810
  });
5586
5811
  const ContextPreviewDiagnostic = Schema.Struct({
@@ -5639,6 +5864,7 @@ const ArtifactAgentHarness = Schema.Literals([
5639
5864
  "kimi-code",
5640
5865
  "opencode",
5641
5866
  "muse",
5867
+ "prime-agent",
5642
5868
  "user"
5643
5869
  ]);
5644
5870
  const ArtifactLifecycleState = Schema.Literals([
@@ -5816,7 +6042,8 @@ const CLAUDE_CODE_BEHAVIOR = {
5816
6042
  usesCodexHome: false,
5817
6043
  injectsPromptTimeMemory: false,
5818
6044
  workAgentMode: "claude-code",
5819
- readyTimeoutSeconds: 30
6045
+ readyTimeoutSeconds: 30,
6046
+ steerKind: "send-now-keys"
5820
6047
  };
5821
6048
  const OHMYPI_BEHAVIOR = {
5822
6049
  displayName: "Pi",
@@ -5838,7 +6065,14 @@ const OHMYPI_BEHAVIOR = {
5838
6065
  usesCodexHome: false,
5839
6066
  injectsPromptTimeMemory: true,
5840
6067
  workAgentMode: "ohmypi-rpc",
5841
- readyTimeoutSeconds: 120
6068
+ readyTimeoutSeconds: 120,
6069
+ steerKind: "control-channel",
6070
+ effortLevels: [
6071
+ "low",
6072
+ "medium",
6073
+ "high",
6074
+ "xhigh"
6075
+ ]
5842
6076
  };
5843
6077
  const CODEX_BEHAVIOR = {
5844
6078
  displayName: "Codex",
@@ -5860,7 +6094,8 @@ const CODEX_BEHAVIOR = {
5860
6094
  usesCodexHome: true,
5861
6095
  injectsPromptTimeMemory: false,
5862
6096
  workAgentMode: "codex-work-tui",
5863
- readyTimeoutSeconds: 30
6097
+ readyTimeoutSeconds: 30,
6098
+ steerKind: null
5864
6099
  };
5865
6100
  const ACP_BEHAVIOR = {
5866
6101
  displayName: "ACP",
@@ -5882,7 +6117,8 @@ const ACP_BEHAVIOR = {
5882
6117
  usesCodexHome: false,
5883
6118
  injectsPromptTimeMemory: false,
5884
6119
  workAgentMode: "acp-host",
5885
- readyTimeoutSeconds: 30
6120
+ readyTimeoutSeconds: 30,
6121
+ steerKind: null
5886
6122
  };
5887
6123
  const KIMI_CODE_BEHAVIOR = {
5888
6124
  displayName: "Kimi Code",
@@ -5904,7 +6140,8 @@ const KIMI_CODE_BEHAVIOR = {
5904
6140
  usesCodexHome: false,
5905
6141
  injectsPromptTimeMemory: false,
5906
6142
  workAgentMode: "kimi-code-tui",
5907
- readyTimeoutSeconds: 60
6143
+ readyTimeoutSeconds: 60,
6144
+ steerKind: null
5908
6145
  };
5909
6146
  const OPENCODE_BEHAVIOR = {
5910
6147
  ...ACP_BEHAVIOR,
@@ -5933,7 +6170,37 @@ const MUSE_BEHAVIOR = {
5933
6170
  usesCodexHome: false,
5934
6171
  injectsPromptTimeMemory: false,
5935
6172
  workAgentMode: "muse-tui",
5936
- readyTimeoutSeconds: 60
6173
+ readyTimeoutSeconds: 60,
6174
+ steerKind: null,
6175
+ effortLevels: [
6176
+ "low",
6177
+ "medium",
6178
+ "high",
6179
+ "xhigh"
6180
+ ]
6181
+ };
6182
+ const PRIME_AGENT_BEHAVIOR = {
6183
+ displayName: "Prime Agent",
6184
+ nativeCommands: [],
6185
+ executableName: "prime-agent",
6186
+ processNames: ["prime-agent"],
6187
+ launchCommandKind: "prime-agent-host",
6188
+ deliveryKind: "prime-agent-host-rpc",
6189
+ readinessKind: "prime-agent-host-ready",
6190
+ transcriptKind: "prime-agent-jsonl",
6191
+ sessionIdSource: "prime-agent-session-id",
6192
+ contextLayerKind: "prime-agent",
6193
+ feedKind: "prime_agent",
6194
+ supportsPtySupervisor: false,
6195
+ supportsChannelsBridge: false,
6196
+ supportsConversationStreaming: true,
6197
+ supportsPatchProjection: false,
6198
+ usesRpcFifo: false,
6199
+ usesCodexHome: false,
6200
+ injectsPromptTimeMemory: false,
6201
+ workAgentMode: "prime-agent-host",
6202
+ readyTimeoutSeconds: 60,
6203
+ steerKind: null
5937
6204
  };
5938
6205
  const BEHAVIORS = {
5939
6206
  "opencode": OPENCODE_BEHAVIOR,
@@ -5942,7 +6209,8 @@ const BEHAVIORS = {
5942
6209
  codex: CODEX_BEHAVIOR,
5943
6210
  acp: ACP_BEHAVIOR,
5944
6211
  "kimi-code": KIMI_CODE_BEHAVIOR,
5945
- muse: MUSE_BEHAVIOR
6212
+ muse: MUSE_BEHAVIOR,
6213
+ "prime-agent": PRIME_AGENT_BEHAVIOR
5946
6214
  };
5947
6215
  function getHarnessBehavior(harness) {
5948
6216
  if (harness === "ohmypi" || harness === "pi") return OHMYPI_BEHAVIOR;
@@ -5951,6 +6219,7 @@ function getHarnessBehavior(harness) {
5951
6219
  if (harness === "acp") return ACP_BEHAVIOR;
5952
6220
  if (harness === "kimi-code") return KIMI_CODE_BEHAVIOR;
5953
6221
  if (harness === "muse") return MUSE_BEHAVIOR;
6222
+ if (harness === "prime-agent") return PRIME_AGENT_BEHAVIOR;
5954
6223
  return CLAUDE_CODE_BEHAVIOR;
5955
6224
  }
5956
6225
  function getRuntimeBehavior(runtime) {
@@ -6065,7 +6334,10 @@ const TELEMETRY_EVENT_NAMES = [
6065
6334
  "agent_question_answered",
6066
6335
  "server_boot",
6067
6336
  "cli_command_run",
6068
- "pipeline_stage_changed"
6337
+ "pipeline_stage_changed",
6338
+ "github_quota_sample",
6339
+ "github_rate_limited",
6340
+ "instance_heartbeat"
6069
6341
  ];
6070
6342
  const TELEMETRY_CLI_VERBS = [
6071
6343
  "abort",
@@ -6182,6 +6454,19 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6182
6454
  "handoff",
6183
6455
  "plain"
6184
6456
  ],
6457
+ github_caller: [
6458
+ "pipeline_membership",
6459
+ "pr_cache",
6460
+ "pr_sync",
6461
+ "ci_repair",
6462
+ "issue_poller",
6463
+ "close_out",
6464
+ "tracker_client",
6465
+ "app_rest",
6466
+ "quota_sampler",
6467
+ "agent",
6468
+ "other"
6469
+ ],
6185
6470
  harness: [
6186
6471
  "claude-code",
6187
6472
  "ohmypi",
@@ -6189,7 +6474,8 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6189
6474
  "acp",
6190
6475
  "kimi-code",
6191
6476
  "opencode",
6192
- "muse"
6477
+ "muse",
6478
+ "prime-agent"
6193
6479
  ],
6194
6480
  merge_kind: ["pipeline"],
6195
6481
  model_family: [
@@ -6213,7 +6499,26 @@ const TELEMETRY_PROPERTY_DOMAINS = {
6213
6499
  "clone",
6214
6500
  "existing",
6215
6501
  "new"
6216
- ]
6502
+ ],
6503
+ quota_points_bucket: [
6504
+ "0",
6505
+ "1-49",
6506
+ "50-199",
6507
+ "200-499",
6508
+ "500-999",
6509
+ "1000-2499",
6510
+ "2500+"
6511
+ ],
6512
+ quota_remaining_bucket: [
6513
+ "0",
6514
+ "1-99",
6515
+ "100-499",
6516
+ "500-999",
6517
+ "1000-2499",
6518
+ "2500+",
6519
+ "unknown"
6520
+ ],
6521
+ rate_limit_kind: ["primary", "secondary"]
6217
6522
  };
6218
6523
  const TELEMETRY_EVENT_CATALOG = {
6219
6524
  dashboard_tab_viewed: { tab: "dashboard_tab" },
@@ -6256,8 +6561,65 @@ const TELEMETRY_EVENT_CATALOG = {
6256
6561
  stage: "pipeline_stage",
6257
6562
  harness: "harness",
6258
6563
  model: "model_family"
6564
+ },
6565
+ github_quota_sample: {
6566
+ graphql_pipeline_membership: "quota_points_bucket",
6567
+ rest_pipeline_membership: "quota_points_bucket",
6568
+ graphql_pr_cache: "quota_points_bucket",
6569
+ rest_pr_cache: "quota_points_bucket",
6570
+ graphql_pr_sync: "quota_points_bucket",
6571
+ rest_pr_sync: "quota_points_bucket",
6572
+ graphql_ci_repair: "quota_points_bucket",
6573
+ rest_ci_repair: "quota_points_bucket",
6574
+ graphql_issue_poller: "quota_points_bucket",
6575
+ rest_issue_poller: "quota_points_bucket",
6576
+ graphql_close_out: "quota_points_bucket",
6577
+ rest_close_out: "quota_points_bucket",
6578
+ graphql_tracker_client: "quota_points_bucket",
6579
+ rest_tracker_client: "quota_points_bucket",
6580
+ graphql_app_rest: "quota_points_bucket",
6581
+ rest_app_rest: "quota_points_bucket",
6582
+ graphql_agent: "quota_points_bucket",
6583
+ rest_agent: "quota_points_bucket",
6584
+ graphql_other: "quota_points_bucket",
6585
+ rest_other: "quota_points_bucket",
6586
+ graphql_unattributed: "quota_points_bucket",
6587
+ min_remaining_graphql: "quota_remaining_bucket",
6588
+ min_remaining_rest: "quota_remaining_bucket",
6589
+ primary_limit_errors: "count_bucket",
6590
+ secondary_limit_errors: "count_bucket"
6591
+ },
6592
+ github_rate_limited: {
6593
+ caller: "github_caller",
6594
+ kind: "rate_limit_kind",
6595
+ own_usage_low: "boolean"
6596
+ },
6597
+ instance_heartbeat: {
6598
+ project_count: "count_bucket",
6599
+ active_agent_count: "count_bucket",
6600
+ dashboard_running: "boolean"
6259
6601
  }
6260
6602
  };
6603
+ /** PAN-4264: GitHub quota points as a coarse bucket (raw counts are never sent). */
6604
+ function bucketQuotaPoints(points) {
6605
+ if (!(points > 0)) return "0";
6606
+ if (points < 50) return "1-49";
6607
+ if (points < 200) return "50-199";
6608
+ if (points < 500) return "200-499";
6609
+ if (points < 1e3) return "500-999";
6610
+ if (points < 2500) return "1000-2499";
6611
+ return "2500+";
6612
+ }
6613
+ /** PAN-4264: GitHub quota remaining as a coarse bucket; `unknown` without a sample. */
6614
+ function bucketQuotaRemaining(remaining) {
6615
+ if (remaining === void 0 || !Number.isFinite(remaining)) return "unknown";
6616
+ if (remaining <= 0) return "0";
6617
+ if (remaining < 100) return "1-99";
6618
+ if (remaining < 500) return "100-499";
6619
+ if (remaining < 1e3) return "500-999";
6620
+ if (remaining < 2500) return "1000-2499";
6621
+ return "2500+";
6622
+ }
6261
6623
  //#endregion
6262
6624
  //#region src/composer-commands.generated.ts
6263
6625
  const COMPOSER_COMMAND_MANIFEST = [
@@ -6485,13 +6847,65 @@ const COMPOSER_COMMAND_MANIFEST = [
6485
6847
  "id": "pan-skills",
6486
6848
  "path": ["skills"],
6487
6849
  "display": "/pan skills",
6488
- "description": "List and manage skills",
6850
+ "description": "List skills and set per-level on/off overrides",
6489
6851
  "args": [],
6852
+ "options": [],
6853
+ "aliases": [],
6854
+ "category": "Core"
6855
+ },
6856
+ {
6857
+ "id": "pan-skills-list",
6858
+ "path": ["skills", "list"],
6859
+ "display": "/pan skills list",
6860
+ "description": "List skills with effective on/off state and its source",
6861
+ "args": [],
6862
+ "options": [
6863
+ {
6864
+ "flags": "--project <key>",
6865
+ "description": "Resolve for a project",
6866
+ "required": true,
6867
+ "valueHint": "key"
6868
+ },
6869
+ {
6870
+ "flags": "--issue <id>",
6871
+ "description": "Resolve for an issue",
6872
+ "required": true,
6873
+ "valueHint": "id"
6874
+ },
6875
+ {
6876
+ "flags": "--json",
6877
+ "description": "Output as JSON",
6878
+ "required": false,
6879
+ "valueHint": null
6880
+ }
6881
+ ],
6882
+ "aliases": [],
6883
+ "category": "Core"
6884
+ },
6885
+ {
6886
+ "id": "pan-skills-set",
6887
+ "path": ["skills", "set"],
6888
+ "display": "/pan skills set",
6889
+ "description": "Set a skill on, off, or inherit (global unless --project/--issue)",
6890
+ "args": [{
6891
+ "name": "skill",
6892
+ "required": true,
6893
+ "variadic": false
6894
+ }, {
6895
+ "name": "state",
6896
+ "required": true,
6897
+ "variadic": false
6898
+ }],
6490
6899
  "options": [{
6491
- "flags": "--json",
6492
- "description": "Output as JSON",
6493
- "required": false,
6494
- "valueHint": null
6900
+ "flags": "--project <key>",
6901
+ "description": "Project override",
6902
+ "required": true,
6903
+ "valueHint": "key"
6904
+ }, {
6905
+ "flags": "--issue <id>",
6906
+ "description": "Issue override",
6907
+ "required": true,
6908
+ "valueHint": "id"
6495
6909
  }],
6496
6910
  "aliases": [],
6497
6911
  "category": "Core"
@@ -6748,7 +7162,7 @@ const COMPOSER_COMMAND_MANIFEST = [
6748
7162
  },
6749
7163
  {
6750
7164
  "flags": "--harness <harness>",
6751
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
7165
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
6752
7166
  "required": true,
6753
7167
  "valueHint": "harness"
6754
7168
  },
@@ -6848,7 +7262,17 @@ const COMPOSER_COMMAND_MANIFEST = [
6848
7262
  "required": true,
6849
7263
  "variadic": false
6850
7264
  }],
6851
- "options": [],
7265
+ "options": [{
7266
+ "flags": "--force",
7267
+ "description": "Deliver even to a critic or verifier lane that already filed its verdict",
7268
+ "required": false,
7269
+ "valueHint": null
7270
+ }, {
7271
+ "flags": "--steer",
7272
+ "description": "Interrupt the running turn and send now (Claude Code send-now; Ctrl+X Ctrl+S)",
7273
+ "required": false,
7274
+ "valueHint": null
7275
+ }],
6852
7276
  "aliases": [],
6853
7277
  "category": "Lifecycle"
6854
7278
  },
@@ -7427,7 +7851,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7427
7851
  },
7428
7852
  {
7429
7853
  "flags": "--harness <harness>",
7430
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
7854
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
7431
7855
  "required": true,
7432
7856
  "valueHint": "harness"
7433
7857
  },
@@ -7505,7 +7929,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7505
7929
  },
7506
7930
  {
7507
7931
  "flags": "--skip-freshness",
7508
- "description": "Bypass the plan-freshness preflight and spawn even if the plan names files that no longer exist",
7932
+ "description": "Bypass the plan-freshness preflight and spawn even if the plan names files deleted since it was written",
7509
7933
  "required": false,
7510
7934
  "valueHint": null
7511
7935
  }
@@ -7532,7 +7956,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7532
7956
  },
7533
7957
  {
7534
7958
  "flags": "--harness <harness>",
7535
- "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse (defaults to role/provider settings)",
7959
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code | opencode | muse | prime-agent (defaults to role/provider settings)",
7536
7960
  "required": true,
7537
7961
  "valueHint": "harness"
7538
7962
  },
@@ -10629,6 +11053,20 @@ const COMPOSER_COMMAND_MANIFEST = [
10629
11053
  "aliases": [],
10630
11054
  "category": "Admin"
10631
11055
  },
11056
+ {
11057
+ "id": "pan-admin-config-tiers",
11058
+ "path": [
11059
+ "admin",
11060
+ "config",
11061
+ "tiers"
11062
+ ],
11063
+ "display": "/pan admin config tiers",
11064
+ "description": "Show the effective model per tiered_execution tier and whether it overrides roles.work",
11065
+ "args": [],
11066
+ "options": [],
11067
+ "aliases": [],
11068
+ "category": "Admin"
11069
+ },
10632
11070
  {
10633
11071
  "id": "pan-admin-hooks",
10634
11072
  "path": ["admin", "hooks"],
@@ -11502,6 +11940,12 @@ const COMPOSER_COMMAND_MANIFEST = [
11502
11940
  "description": "Skip Herdr terminal backend install/verify (tmux-only hosts)",
11503
11941
  "required": false,
11504
11942
  "valueHint": null
11943
+ },
11944
+ {
11945
+ "flags": "--skip-ollama",
11946
+ "description": "Skip Ollama local-model detection and optional gemma4:12b pull",
11947
+ "required": false,
11948
+ "valueHint": null
11505
11949
  }
11506
11950
  ],
11507
11951
  "aliases": [],
@@ -11957,6 +12401,333 @@ const COMPOSER_COMMAND_MANIFEST = [
11957
12401
  "aliases": [],
11958
12402
  "category": "CLI"
11959
12403
  },
12404
+ {
12405
+ "id": "pan-lane",
12406
+ "path": ["lane"],
12407
+ "display": "/pan lane",
12408
+ "description": "Gauntlet lanes: launch, list, show, wait on, report from, stop and reap lane conversations",
12409
+ "args": [],
12410
+ "options": [],
12411
+ "aliases": [],
12412
+ "category": "CLI"
12413
+ },
12414
+ {
12415
+ "id": "pan-lane-start",
12416
+ "path": ["lane", "start"],
12417
+ "display": "/pan lane start",
12418
+ "description": "Launch a lane conversation under the calling conversation (any harness)",
12419
+ "args": [],
12420
+ "options": [
12421
+ {
12422
+ "flags": "--key <key>",
12423
+ "description": "Lane key inside the run (required unless --for)",
12424
+ "required": true,
12425
+ "valueHint": "key"
12426
+ },
12427
+ {
12428
+ "flags": "--for <builder-key>",
12429
+ "description": "Critic (required) or verifier: the builder lane judged; --key defaults to it",
12430
+ "required": true,
12431
+ "valueHint": "builder-key"
12432
+ },
12433
+ {
12434
+ "flags": "--role <role>",
12435
+ "description": "builder | critic | verifier | play | orchestrator (required)",
12436
+ "required": true,
12437
+ "valueHint": "role"
12438
+ },
12439
+ {
12440
+ "flags": "--brief <file>",
12441
+ "description": "The brief, from a file",
12442
+ "required": true,
12443
+ "valueHint": "file"
12444
+ },
12445
+ {
12446
+ "flags": "--prompt <text>",
12447
+ "description": "The brief, inline",
12448
+ "required": true,
12449
+ "valueHint": "text"
12450
+ },
12451
+ {
12452
+ "flags": "--run <key>",
12453
+ "description": "Run key (required from a root; inherited inside an orchestrator lane)",
12454
+ "required": true,
12455
+ "valueHint": "key"
12456
+ },
12457
+ {
12458
+ "flags": "--parent <conv>",
12459
+ "description": "Launching conversation (default: $OVERDECK_CONVERSATION)",
12460
+ "required": true,
12461
+ "valueHint": "conv"
12462
+ },
12463
+ {
12464
+ "flags": "--project <key>",
12465
+ "description": "Project (default: the parent's project)",
12466
+ "required": true,
12467
+ "valueHint": "key"
12468
+ },
12469
+ {
12470
+ "flags": "--model <model>",
12471
+ "description": "Model (default: projects.<key>.gauntlet.roles.<role>.model)",
12472
+ "required": true,
12473
+ "valueHint": "model"
12474
+ },
12475
+ {
12476
+ "flags": "--harness <harness>",
12477
+ "description": "Harness (default: role config, else routed from the model)",
12478
+ "required": true,
12479
+ "valueHint": "harness"
12480
+ },
12481
+ {
12482
+ "flags": "--effort <effort>",
12483
+ "description": "low | medium | high",
12484
+ "required": true,
12485
+ "valueHint": "effort"
12486
+ },
12487
+ {
12488
+ "flags": "--title <title>",
12489
+ "description": "Conversation title (default: <run> <key> · <role>)",
12490
+ "required": true,
12491
+ "valueHint": "title"
12492
+ },
12493
+ {
12494
+ "flags": "--branch <branch>",
12495
+ "description": "Builder branch (default: <run>/<key>, <run>/<key>-i<n> after)",
12496
+ "required": true,
12497
+ "valueHint": "branch"
12498
+ },
12499
+ {
12500
+ "flags": "--from <ref>",
12501
+ "description": "Base ref for a new builder branch",
12502
+ "required": true,
12503
+ "valueHint": "ref"
12504
+ },
12505
+ {
12506
+ "flags": "--at <ref>",
12507
+ "description": "Commit a critic or verifier judges (default with --for: the builder's newest done head)",
12508
+ "required": true,
12509
+ "valueHint": "ref"
12510
+ },
12511
+ {
12512
+ "flags": "--reuse",
12513
+ "description": "Continue in the directory of the latest earlier lane with the same run, key and role",
12514
+ "required": false,
12515
+ "valueHint": null
12516
+ },
12517
+ {
12518
+ "flags": "--replace",
12519
+ "description": "Stop the live lane with the same run, key and role first",
12520
+ "required": false,
12521
+ "valueHint": null
12522
+ },
12523
+ {
12524
+ "flags": "--no-wait",
12525
+ "description": "Return without waiting for the lane to start",
12526
+ "required": false,
12527
+ "valueHint": null
12528
+ },
12529
+ {
12530
+ "flags": "--json",
12531
+ "description": "Print the launch result as JSON",
12532
+ "required": false,
12533
+ "valueHint": null
12534
+ }
12535
+ ],
12536
+ "aliases": [],
12537
+ "category": "CLI"
12538
+ },
12539
+ {
12540
+ "id": "pan-lane-list",
12541
+ "path": ["lane", "list"],
12542
+ "display": "/pan lane list",
12543
+ "description": "List lanes with their activity, newest report, git facts and cost",
12544
+ "args": [],
12545
+ "options": [
12546
+ {
12547
+ "flags": "--run <key>",
12548
+ "description": "Only this run's lanes",
12549
+ "required": true,
12550
+ "valueHint": "key"
12551
+ },
12552
+ {
12553
+ "flags": "--parent <conv>",
12554
+ "description": "Only lanes launched by this conversation",
12555
+ "required": true,
12556
+ "valueHint": "conv"
12557
+ },
12558
+ {
12559
+ "flags": "--json",
12560
+ "description": "Print JSON",
12561
+ "required": false,
12562
+ "valueHint": null
12563
+ }
12564
+ ],
12565
+ "aliases": [],
12566
+ "category": "CLI"
12567
+ },
12568
+ {
12569
+ "id": "pan-lane-show",
12570
+ "path": ["lane", "show"],
12571
+ "display": "/pan lane show",
12572
+ "description": "Print the builder → critic chain of a run and key, then one line per lane",
12573
+ "args": [{
12574
+ "name": "lane",
12575
+ "required": false,
12576
+ "variadic": false
12577
+ }],
12578
+ "options": [
12579
+ {
12580
+ "flags": "--run <key>",
12581
+ "description": "Run key (with --key)",
12582
+ "required": true,
12583
+ "valueHint": "key"
12584
+ },
12585
+ {
12586
+ "flags": "--key <key>",
12587
+ "description": "Lane key (with --run)",
12588
+ "required": true,
12589
+ "valueHint": "key"
12590
+ },
12591
+ {
12592
+ "flags": "--json",
12593
+ "description": "Print { run, key, steps }",
12594
+ "required": false,
12595
+ "valueHint": null
12596
+ }
12597
+ ],
12598
+ "aliases": [],
12599
+ "category": "CLI"
12600
+ },
12601
+ {
12602
+ "id": "pan-lane-wait",
12603
+ "path": ["lane", "wait"],
12604
+ "display": "/pan lane wait",
12605
+ "description": "Wait for a lane report (exit 0 done, 4 blocked/failed, 2 no report, 3 timeout, 1 error)",
12606
+ "args": [{
12607
+ "name": "lane",
12608
+ "required": false,
12609
+ "variadic": false
12610
+ }],
12611
+ "options": [
12612
+ {
12613
+ "flags": "--run <key>",
12614
+ "description": "Wait for the next report of any lane in this run",
12615
+ "required": true,
12616
+ "valueHint": "key"
12617
+ },
12618
+ {
12619
+ "flags": "--parent <conv>",
12620
+ "description": "Wait for the next report of any lane launched by this conversation",
12621
+ "required": true,
12622
+ "valueHint": "conv"
12623
+ },
12624
+ {
12625
+ "flags": "--after <seq-or-cursor>",
12626
+ "description": "Report seq for one lane; cursor <atMs>.<name>.<seq> for a run or parent",
12627
+ "required": true,
12628
+ "valueHint": "seq-or-cursor"
12629
+ },
12630
+ {
12631
+ "flags": "--timeout <seconds>",
12632
+ "description": "Stop waiting after this many seconds (exit 3)",
12633
+ "required": true,
12634
+ "valueHint": "seconds"
12635
+ }
12636
+ ],
12637
+ "aliases": [],
12638
+ "category": "CLI"
12639
+ },
12640
+ {
12641
+ "id": "pan-lane-report",
12642
+ "path": ["lane", "report"],
12643
+ "display": "/pan lane report",
12644
+ "description": "Record this lane's report (run inside the lane)",
12645
+ "args": [],
12646
+ "options": [
12647
+ {
12648
+ "flags": "--file <path>",
12649
+ "description": "Read the Markdown report from a file",
12650
+ "required": true,
12651
+ "valueHint": "path"
12652
+ },
12653
+ {
12654
+ "flags": "--stdin",
12655
+ "description": "Read the Markdown report from stdin",
12656
+ "required": false,
12657
+ "valueHint": null
12658
+ },
12659
+ {
12660
+ "flags": "--status <status>",
12661
+ "description": "done | blocked | failed (default: done)",
12662
+ "required": true,
12663
+ "valueHint": "status"
12664
+ },
12665
+ {
12666
+ "flags": "--allow-unpushed",
12667
+ "description": "Let a builder report done with commits not on its upstream",
12668
+ "required": false,
12669
+ "valueHint": null
12670
+ },
12671
+ {
12672
+ "flags": "--verdict <value>",
12673
+ "description": "Critic or verifier done report: WOWED | IMPRESSED | NOT_YET | PASS | DEFECTS",
12674
+ "required": true,
12675
+ "valueHint": "value"
12676
+ },
12677
+ {
12678
+ "flags": "--defects <n>",
12679
+ "description": "Defect count (default: the verdict file's defects array length)",
12680
+ "required": true,
12681
+ "valueHint": "n"
12682
+ },
12683
+ {
12684
+ "flags": "--verdict-file <path>",
12685
+ "description": "The verdict JSON the lane wrote",
12686
+ "required": true,
12687
+ "valueHint": "path"
12688
+ }
12689
+ ],
12690
+ "aliases": [],
12691
+ "category": "CLI"
12692
+ },
12693
+ {
12694
+ "id": "pan-lane-stop",
12695
+ "path": ["lane", "stop"],
12696
+ "display": "/pan lane stop",
12697
+ "description": "Stop a lane through the conversation stop door",
12698
+ "args": [{
12699
+ "name": "lane",
12700
+ "required": true,
12701
+ "variadic": false
12702
+ }],
12703
+ "options": [],
12704
+ "aliases": [],
12705
+ "category": "CLI"
12706
+ },
12707
+ {
12708
+ "id": "pan-lane-reap",
12709
+ "path": ["lane", "reap"],
12710
+ "display": "/pan lane reap",
12711
+ "description": "Remove a lane's directory and archive its conversation (never kills, never discards work)",
12712
+ "args": [{
12713
+ "name": "lane",
12714
+ "required": true,
12715
+ "variadic": false
12716
+ }],
12717
+ "options": [{
12718
+ "flags": "--park",
12719
+ "description": "Save uncommitted work to a verified patch before removing a dirty worktree",
12720
+ "required": false,
12721
+ "valueHint": null
12722
+ }, {
12723
+ "flags": "--keep",
12724
+ "description": "Keep the conversation listed instead of archiving it",
12725
+ "required": false,
12726
+ "valueHint": null
12727
+ }],
12728
+ "aliases": [],
12729
+ "category": "CLI"
12730
+ },
11960
12731
  {
11961
12732
  "id": "pan-flywheel",
11962
12733
  "path": ["flywheel"],
@@ -12163,7 +12934,7 @@ const COMPOSER_COMMAND_MANIFEST = [
12163
12934
  },
12164
12935
  {
12165
12936
  "flags": "--agent-harness <harness>",
12166
- "description": "Agent harness: claude-code, pi, ohmypi, codex, acp, kimi-code, opencode, muse, or user",
12937
+ "description": "Agent harness: claude-code, pi, ohmypi, codex, acp, kimi-code, opencode, muse, prime-agent, or user",
12167
12938
  "required": true,
12168
12939
  "valueHint": "harness"
12169
12940
  },
@@ -13093,6 +13864,21 @@ const COMPOSER_COMMAND_MANIFEST = [
13093
13864
  "aliases": [],
13094
13865
  "category": "Core"
13095
13866
  },
13867
+ {
13868
+ "id": "pan-doctor-github-quota",
13869
+ "path": ["doctor", "github-quota"],
13870
+ "display": "/pan doctor github-quota",
13871
+ "description": "Show GitHub API quota use per caller, active pauses, and skipped projects",
13872
+ "args": [],
13873
+ "options": [{
13874
+ "flags": "--json",
13875
+ "description": "Print JSON",
13876
+ "required": false,
13877
+ "valueHint": null
13878
+ }],
13879
+ "aliases": [],
13880
+ "category": "Core"
13881
+ },
13096
13882
  {
13097
13883
  "id": "pan-resources",
13098
13884
  "path": ["resources"],
@@ -13642,6 +14428,11 @@ const DirectoryPause = Schema.Struct({
13642
14428
  reason: Schema.NullOr(Schema.String),
13643
14429
  since: Schema.NullOr(Schema.String)
13644
14430
  });
14431
+ /** A provider error (billing, usage limit, ...) detected at the end of a transcript (PAN-4222). */
14432
+ const DirectoryProviderError = Schema.Struct({
14433
+ message: Schema.String,
14434
+ at: Schema.String
14435
+ });
13645
14436
  const DirectoryEntry = Schema.Struct({
13646
14437
  id: Schema.String,
13647
14438
  kind: DirectoryEntryKind,
@@ -13666,7 +14457,29 @@ const DirectoryEntry = Schema.Struct({
13666
14457
  source: DirectoryEntrySource,
13667
14458
  transcript: Schema.NullOr(DirectoryTranscriptRef),
13668
14459
  /** The pause gate from state.json, native agents only (PAN-4197). */
13669
- pause: Schema.optional(DirectoryPause)
14460
+ pause: Schema.optional(DirectoryPause),
14461
+ /** PAN-4223: gauntlet lane facts; conversation entries that are lanes only. */
14462
+ lane: Schema.optional(Schema.Struct({
14463
+ run: Schema.String,
14464
+ key: Schema.String,
14465
+ role: Schema.String,
14466
+ iteration: Schema.Number,
14467
+ reportStatus: Schema.NullOr(Schema.Literals([
14468
+ "done",
14469
+ "blocked",
14470
+ "failed"
14471
+ ])),
14472
+ /** Critic/verifier: its verdict (or `pending`); builder: the newest critic verdict. */
14473
+ verdict: Schema.optional(Schema.NullOr(Schema.String)),
14474
+ /** Critic/verifier: the judged builder's legacy conversation id. */
14475
+ criticOf: Schema.optional(Schema.Number)
14476
+ })),
14477
+ /** PAN-4223: the predecessor's legacy conversation id; successors only (links to /conv/<id>). */
14478
+ continuesFrom: Schema.optional(Schema.Number),
14479
+ /** The id runtime events (agentRuntimeById) are keyed under, when it differs from `id` (PAN-4222). */
14480
+ runtimeId: Schema.optional(Schema.String),
14481
+ /** A provider error detected at the transcript's end, conversations only (PAN-4222). */
14482
+ providerError: Schema.optional(DirectoryProviderError)
13670
14483
  });
13671
14484
  /**
13672
14485
  * `window`: live entries plus finished ones active inside `windowHours`.
@@ -13763,6 +14576,32 @@ function isConfiguredPullRequestRepo(ref, repos) {
13763
14576
  return repos.some((repo) => repo.host === ref.host && repo.repository === ref.repository);
13764
14577
  }
13765
14578
  //#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 };
14579
+ //#region src/conversation-rows.ts
14580
+ /**
14581
+ * Conversation-row classifiers shared by the dashboard server (`src/lib`) and
14582
+ * the frontend (PAN-4301). One rule per question: which rows are singleton
14583
+ * runners, and what a lane conversation is doing right now (D10).
14584
+ */
14585
+ /** Singleton runners spawn under their bare id (see src/lib/agents/identity.ts normalizeAgentId). */
14586
+ const SINGLETON_AGENT_IDS = new Set(["flywheel-orchestrator", "sequencer-runner"]);
14587
+ function isSingletonConversation(row) {
14588
+ return SINGLETON_AGENT_IDS.has(row.name.toLowerCase()) || row.issueId != null && SINGLETON_AGENT_IDS.has(row.issueId.toLowerCase());
14589
+ }
14590
+ /** D10 `starting`: not alive, not ended, created less than this long ago. */
14591
+ const LANE_STARTING_GRACE_MS = 3 * 6e4;
14592
+ /** D10, first match wins. */
14593
+ function laneActivityOf(row, now) {
14594
+ if (row.archivedAt != null) return "stopped";
14595
+ if (row.spawnError) return "failed-to-start";
14596
+ if (row.sessionAlive) {
14597
+ if ((row.pendingInputCount ?? 0) > 0) return "needs-you";
14598
+ if (row.isWorking) return "working";
14599
+ return "idle";
14600
+ }
14601
+ if (row.status === "active" && now - Date.parse(row.createdAt) < 18e4) return "starting";
14602
+ return "stopped";
14603
+ }
14604
+ //#endregion
14605
+ 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, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryProviderError, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EFFORT_LEVELS, EditorIdSchema, EffortLevelSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, 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, 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, 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, isSingletonConversation, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, laneActivityOf, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, paneAgentKey, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
13767
14606
 
13768
14607
  //# sourceMappingURL=index.mjs.map