@overdeck/contracts 0.68.0 → 0.69.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.cjs CHANGED
@@ -566,8 +566,7 @@ const AgentSnapshot = effect.Schema.Struct({
566
566
  })),
567
567
  resolution: effect.Schema.optional(AgentResolution),
568
568
  resolutionCount: effect.Schema.optional(effect.Schema.Number),
569
- turnEndAssessment: effect.Schema.optional(TurnEndAssessment),
570
- runtimeSnapshotSequence: effect.Schema.optional(SequenceNumber)
569
+ turnEndAssessment: effect.Schema.optional(TurnEndAssessment)
571
570
  });
572
571
  /** PAN-3151: A recorded cycle in the review convergence tracking series */
573
572
  const TurnDiffFileChange = effect.Schema.Struct({
@@ -3366,7 +3365,11 @@ const WorkLogEntry = effect.Schema.Struct({
3366
3365
  toolTitle: effect.Schema.optional(effect.Schema.String),
3367
3366
  /** Raw tool_use input dict — drives per-tool expanded rendering (PAN-1459). */
3368
3367
  toolInput: effect.Schema.optional(effect.Schema.Record(effect.Schema.String, effect.Schema.Unknown)),
3369
- sequence: effect.Schema.optional(effect.Schema.Number)
3368
+ sequence: effect.Schema.optional(effect.Schema.Number),
3369
+ /** PAN-4558: UTF-8 byte length of a `result` the wire projection removed. */
3370
+ resultBytes: effect.Schema.optional(effect.Schema.Number),
3371
+ /** PAN-4558: the wire projection removed or cut a tool body; fetch the full entry on expand. */
3372
+ bodyOmitted: effect.Schema.optional(effect.Schema.Boolean)
3370
3373
  });
3371
3374
  /** A human-origin message read from a subagent's own sidechain transcript (PAN-4247). */
3372
3375
  const SubagentHumanInput = effect.Schema.Struct({
@@ -3386,6 +3389,20 @@ const SubagentSummary = effect.Schema.Struct({
3386
3389
  /** Recent human-origin sidechain inputs, most useful when a message routed into this subagent instead of the main conversation (PAN-4247). */
3387
3390
  humanInputs: effect.Schema.optional(effect.Schema.Array(SubagentHumanInput))
3388
3391
  });
3392
+ /** PAN-4558: where a windowed response or page sits in the whole transcript. */
3393
+ const ConversationWindow = effect.Schema.Struct({
3394
+ /** Encoded timeline key of the oldest contiguous entry; pass as `before=` for the next older page. */
3395
+ cursor: effect.Schema.NullOr(effect.Schema.String),
3396
+ hasOlder: effect.Schema.Boolean,
3397
+ /** `"<dev>:<ino>"` of the transcript file the window was read from. */
3398
+ transcript: effect.Schema.optional(effect.Schema.String)
3399
+ });
3400
+ /** PAN-4558: what a resubscribing client already holds. */
3401
+ const ConversationResume = effect.Schema.Struct({
3402
+ afterSequence: effect.Schema.Number,
3403
+ openIds: effect.Schema.Array(effect.Schema.String),
3404
+ transcript: effect.Schema.String
3405
+ });
3389
3406
  /**
3390
3407
  * Response shape for GET /api/agents/:id/conversation.
3391
3408
  * Shared between the dashboard server route and the frontend TerminalPanel.
@@ -3408,7 +3425,9 @@ const ConversationResponse = effect.Schema.Struct({
3408
3425
  effortResolution: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.Struct({
3409
3426
  effort: EffortLevelSchema,
3410
3427
  source: effect.Schema.String
3411
- })))
3428
+ }))),
3429
+ /** PAN-4558: present on windowed and paged responses only. */
3430
+ window: effect.Schema.optional(ConversationWindow)
3412
3431
  });
3413
3432
  const ConversationEvent = effect.Schema.Union([
3414
3433
  effect.Schema.Struct({
@@ -3424,7 +3443,9 @@ const ConversationEvent = effect.Schema.Union([
3424
3443
  totalCost: effect.Schema.optional(effect.Schema.Number),
3425
3444
  proposedPlan: effect.Schema.optional(ProposedPlan),
3426
3445
  compactBoundaries: effect.Schema.optional(effect.Schema.Array(CompactBoundary)),
3427
- contextUsage: effect.Schema.optional(effect.Schema.NullOr(ContextUsage))
3446
+ contextUsage: effect.Schema.optional(effect.Schema.NullOr(ContextUsage)),
3447
+ /** PAN-4558: set on windowed snapshots; older history is paged in by `window.cursor`. */
3448
+ window: effect.Schema.optional(ConversationWindow)
3428
3449
  }),
3429
3450
  effect.Schema.Struct({ kind: effect.Schema.Literal("discovering") }),
3430
3451
  effect.Schema.Struct({
@@ -3486,10 +3507,17 @@ const GetSnapshotRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.getSnapshot, {
3486
3507
  success: DashboardSnapshot,
3487
3508
  error: PanRpcError
3488
3509
  });
3510
+ /**
3511
+ * PAN-4559: the server answers this instead of events when the gap after
3512
+ * fromSequence exceeds its replay cap; the client re-bootstraps via getSnapshot.
3513
+ */
3514
+ const ReplayTooFarBehind = effect.Schema.Struct({ tooFarBehind: effect.Schema.Literal(true) });
3515
+ /** Replay result: the missed events (unchanged array shape), or ReplayTooFarBehind. */
3516
+ const ReplayEventsResult = effect.Schema.Union([effect.Schema.Array(DomainEvent), ReplayTooFarBehind]);
3489
3517
  /** 5. Replay events since a given sequence number (unary) */
3490
3518
  const ReplayEventsRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.replayEvents, {
3491
3519
  payload: effect.Schema.Struct({ fromSequence: SequenceNumber }),
3492
- success: effect.Schema.Array(DomainEvent),
3520
+ success: ReplayEventsResult,
3493
3521
  error: PanRpcError
3494
3522
  });
3495
3523
  /** 6. Open a terminal session / attach PTY (unary) */
@@ -3657,7 +3685,9 @@ const ResizeTerminalRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.resizeTerminal
3657
3685
  const SubscribeConversationMessagesRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.subscribeConversationMessages, {
3658
3686
  payload: effect.Schema.Struct({
3659
3687
  conversationName: effect.Schema.String,
3660
- agentId: effect.Schema.optional(effect.Schema.String)
3688
+ agentId: effect.Schema.optional(effect.Schema.String),
3689
+ /** PAN-4558: what the client already holds; the server sends only newer or newly settled rows. */
3690
+ resume: effect.Schema.optional(ConversationResume)
3661
3691
  }),
3662
3692
  success: ConversationEvent,
3663
3693
  error: PanRpcError,
@@ -3997,23 +4027,6 @@ function removeAgentFromSessionIndex(agentIdBySessionId, agentId) {
3997
4027
  for (const [sessionId, id] of Object.entries(agentIdBySessionId ?? {})) if (id !== agentId) next[sessionId] = id;
3998
4028
  return next;
3999
4029
  }
4000
- /**
4001
- * Bump runtimeSnapshotSequence on the corresponding AgentSnapshot (if present)
4002
- * so low-frequency subscribers can cheaply detect a runtime change. No-op if
4003
- * the agent has no lifecycle snapshot yet (a runtime event arrived before
4004
- * agent.created — unusual but defensive).
4005
- */
4006
- function bumpRuntimeSnapshotSequence(agentsById, agentId, sequence) {
4007
- const agent = agentsById[agentId];
4008
- if (!agent) return agentsById;
4009
- return {
4010
- ...agentsById,
4011
- [agentId]: {
4012
- ...agent,
4013
- runtimeSnapshotSequence: sequence
4014
- }
4015
- };
4016
- }
4017
4030
  function syncSnapshot(state, snapshot) {
4018
4031
  const agentsById = {};
4019
4032
  for (const agent of snapshot.agents) agentsById[agent.id] = agent;
@@ -4755,8 +4768,7 @@ function applyEvent(state, event) {
4755
4768
  agentRuntimeById: {
4756
4769
  ...state.agentRuntimeById,
4757
4770
  [agentId]: next
4758
- },
4759
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4771
+ }
4760
4772
  };
4761
4773
  }
4762
4774
  case "agent.thinking_started": {
@@ -4781,8 +4793,7 @@ function applyEvent(state, event) {
4781
4793
  agentRuntimeById: {
4782
4794
  ...state.agentRuntimeById,
4783
4795
  [agentId]: next
4784
- },
4785
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4796
+ }
4786
4797
  };
4787
4798
  }
4788
4799
  case "agent.thinking_stopped": {
@@ -4804,8 +4815,7 @@ function applyEvent(state, event) {
4804
4815
  agentRuntimeById: {
4805
4816
  ...state.agentRuntimeById,
4806
4817
  [agentId]: next
4807
- },
4808
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4818
+ }
4809
4819
  };
4810
4820
  }
4811
4821
  case "agent.waiting_started": {
@@ -4830,8 +4840,7 @@ function applyEvent(state, event) {
4830
4840
  agentRuntimeById: {
4831
4841
  ...state.agentRuntimeById,
4832
4842
  [agentId]: next
4833
- },
4834
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4843
+ }
4835
4844
  };
4836
4845
  }
4837
4846
  case "agent.waiting_cleared": {
@@ -4853,8 +4862,7 @@ function applyEvent(state, event) {
4853
4862
  agentRuntimeById: {
4854
4863
  ...state.agentRuntimeById,
4855
4864
  [agentId]: next
4856
- },
4857
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4865
+ }
4858
4866
  };
4859
4867
  }
4860
4868
  case "agent.permission_requested": {
@@ -4931,8 +4939,7 @@ function applyEvent(state, event) {
4931
4939
  agentRuntimeById: {
4932
4940
  ...state.agentRuntimeById,
4933
4941
  [agentId]: next
4934
- },
4935
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4942
+ }
4936
4943
  };
4937
4944
  }
4938
4945
  case "agent.channel_reply": {
@@ -4955,8 +4962,7 @@ function applyEvent(state, event) {
4955
4962
  agentRuntimeById: {
4956
4963
  ...state.agentRuntimeById,
4957
4964
  [agentId]: next
4958
- },
4959
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
4965
+ }
4960
4966
  };
4961
4967
  }
4962
4968
  case "agent.model_set": {
@@ -4990,7 +4996,6 @@ function applyEvent(state, event) {
4990
4996
  ...state.agentRuntimeById,
4991
4997
  [agentId]: next
4992
4998
  },
4993
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),
4994
4999
  agentIdBySessionId: nextAgentIdBySessionId
4995
5000
  };
4996
5001
  }
@@ -5008,8 +5013,7 @@ function applyEvent(state, event) {
5008
5013
  agentRuntimeById: {
5009
5014
  ...state.agentRuntimeById,
5010
5015
  [agentId]: next
5011
- },
5012
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
5016
+ }
5013
5017
  };
5014
5018
  }
5015
5019
  case "agent.context_saturation_changed": {
@@ -5025,8 +5029,7 @@ function applyEvent(state, event) {
5025
5029
  agentRuntimeById: {
5026
5030
  ...state.agentRuntimeById,
5027
5031
  [agentId]: next
5028
- },
5029
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
5032
+ }
5030
5033
  };
5031
5034
  }
5032
5035
  case "agent.resolution_changed": {
@@ -5045,8 +5048,7 @@ function applyEvent(state, event) {
5045
5048
  agentRuntimeById: {
5046
5049
  ...state.agentRuntimeById,
5047
5050
  [agentId]: next
5048
- },
5049
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
5051
+ }
5050
5052
  };
5051
5053
  }
5052
5054
  case "agent.state_restored": {
@@ -5061,8 +5063,7 @@ function applyEvent(state, event) {
5061
5063
  agentRuntimeById: {
5062
5064
  ...state.agentRuntimeById,
5063
5065
  [agentId]: next
5064
- },
5065
- agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence)
5066
+ }
5066
5067
  };
5067
5068
  }
5068
5069
  case "activity.entry": {
@@ -6073,6 +6074,170 @@ const FeatureRegistryEntry = effect.Schema.Struct({
6073
6074
  tags: effect.Schema.Array(effect.Schema.String)
6074
6075
  });
6075
6076
  //#endregion
6077
+ //#region src/harness-capabilities.ts
6078
+ const HARNESS_CAPABILITY_KEYS = [
6079
+ "contextChannel",
6080
+ "initialPromptMustLand",
6081
+ "stopRuntimeOnStartFailure",
6082
+ "resumeContractMustLand",
6083
+ "reapsPrivateDaemonOnStop",
6084
+ "attachmentDelivery",
6085
+ "nativeManualCompact",
6086
+ "paneInputGuard",
6087
+ "transcriptDeliveryReceipt",
6088
+ "hostEffortFlag",
6089
+ "binaryLabel",
6090
+ "installHint",
6091
+ "binaryConfigKey",
6092
+ "launchPreflight",
6093
+ "workspaceResolution",
6094
+ "correlatesBySessionId"
6095
+ ];
6096
+ const CLAUDE_CODE_CAPABILITIES = {
6097
+ contextChannel: "append-system-prompt-file",
6098
+ initialPromptMustLand: false,
6099
+ stopRuntimeOnStartFailure: false,
6100
+ resumeContractMustLand: false,
6101
+ reapsPrivateDaemonOnStop: false,
6102
+ attachmentDelivery: "native",
6103
+ nativeManualCompact: true,
6104
+ paneInputGuard: true,
6105
+ transcriptDeliveryReceipt: true,
6106
+ hostEffortFlag: false,
6107
+ binaryLabel: "Claude Code",
6108
+ installHint: "curl -fsSL https://claude.ai/install.sh | bash",
6109
+ binaryConfigKey: null,
6110
+ launchPreflight: "claude-code-model-minimum",
6111
+ workspaceResolution: "claude-project-hash",
6112
+ correlatesBySessionId: false
6113
+ };
6114
+ const OHMYPI_CAPABILITIES = {
6115
+ contextChannel: "append-system-prompt",
6116
+ initialPromptMustLand: false,
6117
+ stopRuntimeOnStartFailure: false,
6118
+ resumeContractMustLand: false,
6119
+ reapsPrivateDaemonOnStop: false,
6120
+ attachmentDelivery: "inline-paths",
6121
+ nativeManualCompact: false,
6122
+ paneInputGuard: false,
6123
+ transcriptDeliveryReceipt: false,
6124
+ hostEffortFlag: false,
6125
+ binaryLabel: "OhMyPi",
6126
+ installHint: null,
6127
+ binaryConfigKey: null,
6128
+ launchPreflight: null,
6129
+ workspaceResolution: "first-message-only",
6130
+ correlatesBySessionId: true
6131
+ };
6132
+ const CODEX_CAPABILITIES = {
6133
+ contextChannel: "developer_instructions",
6134
+ initialPromptMustLand: false,
6135
+ stopRuntimeOnStartFailure: false,
6136
+ resumeContractMustLand: false,
6137
+ reapsPrivateDaemonOnStop: false,
6138
+ attachmentDelivery: "inline-paths",
6139
+ nativeManualCompact: false,
6140
+ paneInputGuard: false,
6141
+ transcriptDeliveryReceipt: false,
6142
+ hostEffortFlag: false,
6143
+ binaryLabel: "Codex CLI",
6144
+ installHint: null,
6145
+ binaryConfigKey: null,
6146
+ launchPreflight: null,
6147
+ workspaceResolution: "agent-dir",
6148
+ correlatesBySessionId: true
6149
+ };
6150
+ const ACP_CAPABILITIES = {
6151
+ contextChannel: "acp-initial-context",
6152
+ initialPromptMustLand: true,
6153
+ stopRuntimeOnStartFailure: true,
6154
+ resumeContractMustLand: false,
6155
+ reapsPrivateDaemonOnStop: false,
6156
+ attachmentDelivery: "inline-paths",
6157
+ nativeManualCompact: false,
6158
+ paneInputGuard: false,
6159
+ transcriptDeliveryReceipt: false,
6160
+ hostEffortFlag: false,
6161
+ binaryLabel: "Kimi Code CLI",
6162
+ installHint: null,
6163
+ binaryConfigKey: "acp.kimi.binaryPath",
6164
+ launchPreflight: null,
6165
+ workspaceResolution: "agent-dir",
6166
+ correlatesBySessionId: true
6167
+ };
6168
+ const KIMI_CODE_CAPABILITIES = {
6169
+ contextChannel: "initial-message-envelope",
6170
+ initialPromptMustLand: true,
6171
+ stopRuntimeOnStartFailure: true,
6172
+ resumeContractMustLand: true,
6173
+ reapsPrivateDaemonOnStop: false,
6174
+ attachmentDelivery: "inline-paths",
6175
+ nativeManualCompact: false,
6176
+ paneInputGuard: false,
6177
+ transcriptDeliveryReceipt: false,
6178
+ hostEffortFlag: false,
6179
+ binaryLabel: "Kimi Code CLI",
6180
+ installHint: null,
6181
+ binaryConfigKey: "kimiCode.binaryPath",
6182
+ launchPreflight: null,
6183
+ workspaceResolution: "first-message-only",
6184
+ correlatesBySessionId: true
6185
+ };
6186
+ const OPENCODE_CAPABILITIES = {
6187
+ contextChannel: "acp-initial-context",
6188
+ initialPromptMustLand: true,
6189
+ stopRuntimeOnStartFailure: true,
6190
+ resumeContractMustLand: false,
6191
+ reapsPrivateDaemonOnStop: false,
6192
+ attachmentDelivery: "inline-paths",
6193
+ nativeManualCompact: false,
6194
+ paneInputGuard: false,
6195
+ transcriptDeliveryReceipt: false,
6196
+ hostEffortFlag: true,
6197
+ binaryLabel: "OpenCode",
6198
+ installHint: null,
6199
+ binaryConfigKey: null,
6200
+ launchPreflight: null,
6201
+ workspaceResolution: "agent-dir",
6202
+ correlatesBySessionId: true
6203
+ };
6204
+ const MUSE_CAPABILITIES = {
6205
+ contextChannel: "append-system-prompt-file",
6206
+ initialPromptMustLand: false,
6207
+ stopRuntimeOnStartFailure: true,
6208
+ resumeContractMustLand: false,
6209
+ reapsPrivateDaemonOnStop: false,
6210
+ attachmentDelivery: "inline-paths",
6211
+ nativeManualCompact: false,
6212
+ paneInputGuard: false,
6213
+ transcriptDeliveryReceipt: false,
6214
+ hostEffortFlag: false,
6215
+ binaryLabel: "Muse Code",
6216
+ installHint: null,
6217
+ binaryConfigKey: null,
6218
+ launchPreflight: null,
6219
+ workspaceResolution: "first-message-only",
6220
+ correlatesBySessionId: true
6221
+ };
6222
+ const PRIME_AGENT_CAPABILITIES = {
6223
+ contextChannel: "prime-agent-append-system-prompt",
6224
+ initialPromptMustLand: true,
6225
+ stopRuntimeOnStartFailure: true,
6226
+ resumeContractMustLand: false,
6227
+ reapsPrivateDaemonOnStop: true,
6228
+ attachmentDelivery: "inline-paths",
6229
+ nativeManualCompact: false,
6230
+ paneInputGuard: false,
6231
+ transcriptDeliveryReceipt: false,
6232
+ hostEffortFlag: false,
6233
+ binaryLabel: "Prime Agent",
6234
+ installHint: null,
6235
+ binaryConfigKey: null,
6236
+ launchPreflight: null,
6237
+ workspaceResolution: "first-message-only",
6238
+ correlatesBySessionId: true
6239
+ };
6240
+ //#endregion
6076
6241
  //#region src/harness-behavior.ts
6077
6242
  const AGENT_SESSION_PREFIXES = [
6078
6243
  "agent-",
@@ -6088,6 +6253,7 @@ function isAgentSessionName(name) {
6088
6253
  }
6089
6254
  const CLAUDE_CODE_BEHAVIOR = {
6090
6255
  displayName: "Claude Code",
6256
+ capabilities: CLAUDE_CODE_CAPABILITIES,
6091
6257
  nativeCommands: [
6092
6258
  {
6093
6259
  name: "/model",
@@ -6132,6 +6298,7 @@ const CLAUDE_CODE_BEHAVIOR = {
6132
6298
  };
6133
6299
  const OHMYPI_BEHAVIOR = {
6134
6300
  displayName: "Pi",
6301
+ capabilities: OHMYPI_CAPABILITIES,
6135
6302
  nativeCommands: [],
6136
6303
  executableName: "omp",
6137
6304
  processNames: ["omp"],
@@ -6161,6 +6328,7 @@ const OHMYPI_BEHAVIOR = {
6161
6328
  };
6162
6329
  const CODEX_BEHAVIOR = {
6163
6330
  displayName: "Codex",
6331
+ capabilities: CODEX_CAPABILITIES,
6164
6332
  nativeCommands: [],
6165
6333
  executableName: "codex",
6166
6334
  processNames: ["codex"],
@@ -6184,6 +6352,7 @@ const CODEX_BEHAVIOR = {
6184
6352
  };
6185
6353
  const ACP_BEHAVIOR = {
6186
6354
  displayName: "ACP",
6355
+ capabilities: ACP_CAPABILITIES,
6187
6356
  nativeCommands: [],
6188
6357
  executableName: "acp-host",
6189
6358
  processNames: ["acp-host", "kimi"],
@@ -6207,6 +6376,7 @@ const ACP_BEHAVIOR = {
6207
6376
  };
6208
6377
  const KIMI_CODE_BEHAVIOR = {
6209
6378
  displayName: "Kimi Code",
6379
+ capabilities: KIMI_CODE_CAPABILITIES,
6210
6380
  nativeCommands: [],
6211
6381
  executableName: "kimi",
6212
6382
  processNames: ["kimi"],
@@ -6231,12 +6401,14 @@ const KIMI_CODE_BEHAVIOR = {
6231
6401
  const OPENCODE_BEHAVIOR = {
6232
6402
  ...ACP_BEHAVIOR,
6233
6403
  displayName: "OpenCode",
6404
+ capabilities: OPENCODE_CAPABILITIES,
6234
6405
  contextLayerKind: "opencode",
6235
6406
  executableName: "opencode",
6236
6407
  processNames: ["acp-host", "opencode"]
6237
6408
  };
6238
6409
  const MUSE_BEHAVIOR = {
6239
6410
  displayName: "Muse Code",
6411
+ capabilities: MUSE_CAPABILITIES,
6240
6412
  nativeCommands: [],
6241
6413
  executableName: "muse",
6242
6414
  processNames: ["muse", "muse-bin"],
@@ -6266,6 +6438,7 @@ const MUSE_BEHAVIOR = {
6266
6438
  };
6267
6439
  const PRIME_AGENT_BEHAVIOR = {
6268
6440
  displayName: "Prime Agent",
6441
+ capabilities: PRIME_AGENT_CAPABILITIES,
6269
6442
  nativeCommands: [],
6270
6443
  executableName: "prime-agent",
6271
6444
  processNames: ["prime-agent"],
@@ -6297,15 +6470,18 @@ const BEHAVIORS = {
6297
6470
  muse: MUSE_BEHAVIOR,
6298
6471
  "prime-agent": PRIME_AGENT_BEHAVIOR
6299
6472
  };
6473
+ const LEGACY_PI_HARNESS = "pi";
6474
+ /** True for the legacy stored harness alias `pi` (PAN-1989), which now means ohmypi. */
6475
+ function isLegacyPiHarnessName(raw) {
6476
+ return raw === LEGACY_PI_HARNESS;
6477
+ }
6478
+ /** Map a stored or requested harness string to a RuntimeName; legacy `pi` → `ohmypi`; anything else → null. */
6479
+ function normalizeHarnessName(raw) {
6480
+ if (isLegacyPiHarnessName(raw)) return "ohmypi";
6481
+ return typeof raw === "string" && KNOWN_HARNESSES.has(raw) ? raw : null;
6482
+ }
6300
6483
  function getHarnessBehavior(harness) {
6301
- if (harness === "ohmypi" || harness === "pi") return OHMYPI_BEHAVIOR;
6302
- if (harness === "codex") return CODEX_BEHAVIOR;
6303
- if (harness === "opencode") return OPENCODE_BEHAVIOR;
6304
- if (harness === "acp") return ACP_BEHAVIOR;
6305
- if (harness === "kimi-code") return KIMI_CODE_BEHAVIOR;
6306
- if (harness === "muse") return MUSE_BEHAVIOR;
6307
- if (harness === "prime-agent") return PRIME_AGENT_BEHAVIOR;
6308
- return CLAUDE_CODE_BEHAVIOR;
6484
+ return BEHAVIORS[normalizeHarnessName(harness) ?? "claude-code"];
6309
6485
  }
6310
6486
  function getRuntimeBehavior(runtime) {
6311
6487
  return BEHAVIORS[runtime];
@@ -6624,7 +6800,8 @@ const TELEMETRY_EVENT_CATALOG = {
6624
6800
  fork_intent: "fork_kind",
6625
6801
  fork_mode: "fork_kind",
6626
6802
  fast_summary: "boolean",
6627
- launch_harness: "harness"
6803
+ launch_harness: "harness",
6804
+ fresh_start: "boolean"
6628
6805
  },
6629
6806
  plan_approved: { subject_kind: "decision_subject" },
6630
6807
  plan_changes_requested: { subject_kind: "decision_subject" },
@@ -8143,6 +8320,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8143
8320
  "description": "Create and launch the new conversation without sending the kickoff; start it with Send in the dashboard or pan handoff start <conv>",
8144
8321
  "required": false,
8145
8322
  "valueHint": null
8323
+ },
8324
+ {
8325
+ "flags": "--fresh",
8326
+ "description": "Start a clean conversation: no handoff document, no summary, no parent link; the focus is its first message. Project, cwd, model and effort still default from the source",
8327
+ "required": false,
8328
+ "valueHint": null
8146
8329
  }
8147
8330
  ],
8148
8331
  "aliases": [],
@@ -10897,6 +11080,328 @@ const COMPOSER_COMMAND_MANIFEST = [
10897
11080
  "aliases": [],
10898
11081
  "category": "Observation"
10899
11082
  },
11083
+ {
11084
+ "id": "pan-memory-show",
11085
+ "path": ["memory", "show"],
11086
+ "display": "/pan memory show",
11087
+ "description": "Print a curated memory fact",
11088
+ "args": [{
11089
+ "name": "id",
11090
+ "required": true,
11091
+ "variadic": false
11092
+ }],
11093
+ "options": [
11094
+ {
11095
+ "flags": "--project <key>",
11096
+ "description": "Project key (defaults to the project owning the cwd)",
11097
+ "required": true,
11098
+ "valueHint": "key"
11099
+ },
11100
+ {
11101
+ "flags": "--user",
11102
+ "description": "Read from the operator store (travels with you; synced when set up)",
11103
+ "required": false,
11104
+ "valueHint": null
11105
+ },
11106
+ {
11107
+ "flags": "--machine",
11108
+ "description": "Read from the machine store (this machine only)",
11109
+ "required": false,
11110
+ "valueHint": null
11111
+ },
11112
+ {
11113
+ "flags": "--here",
11114
+ "description": "Read from the cwd checkout's store instead of the primary checkout",
11115
+ "required": false,
11116
+ "valueHint": null
11117
+ }
11118
+ ],
11119
+ "aliases": [],
11120
+ "category": "Observation"
11121
+ },
11122
+ {
11123
+ "id": "pan-memory-list",
11124
+ "path": ["memory", "list"],
11125
+ "display": "/pan memory list",
11126
+ "description": "List curated memory facts",
11127
+ "args": [],
11128
+ "options": [
11129
+ {
11130
+ "flags": "--type <type>",
11131
+ "description": "Filter by fact type (feedback|project|reference|user)",
11132
+ "required": true,
11133
+ "valueHint": "type"
11134
+ },
11135
+ {
11136
+ "flags": "--query <q>",
11137
+ "description": "Filter by a fact-matching query (see pan memory search)",
11138
+ "required": true,
11139
+ "valueHint": "q"
11140
+ },
11141
+ {
11142
+ "flags": "--review",
11143
+ "description": "Show only facts carrying a review marker (default: active facts only)",
11144
+ "required": false,
11145
+ "valueHint": null
11146
+ },
11147
+ {
11148
+ "flags": "--project <key>",
11149
+ "description": "Project key (defaults to the project owning the cwd)",
11150
+ "required": true,
11151
+ "valueHint": "key"
11152
+ },
11153
+ {
11154
+ "flags": "--user",
11155
+ "description": "List the operator store (travels with you; synced when set up)",
11156
+ "required": false,
11157
+ "valueHint": null
11158
+ },
11159
+ {
11160
+ "flags": "--machine",
11161
+ "description": "List the machine store (this machine only)",
11162
+ "required": false,
11163
+ "valueHint": null
11164
+ },
11165
+ {
11166
+ "flags": "--here",
11167
+ "description": "List the cwd checkout's store instead of the primary checkout",
11168
+ "required": false,
11169
+ "valueHint": null
11170
+ },
11171
+ {
11172
+ "flags": "--json",
11173
+ "description": "Output JSON",
11174
+ "required": false,
11175
+ "valueHint": null
11176
+ }
11177
+ ],
11178
+ "aliases": [],
11179
+ "category": "Observation"
11180
+ },
11181
+ {
11182
+ "id": "pan-memory-add",
11183
+ "path": ["memory", "add"],
11184
+ "display": "/pan memory add",
11185
+ "description": "Add a curated memory fact",
11186
+ "args": [{
11187
+ "name": "id",
11188
+ "required": true,
11189
+ "variadic": false
11190
+ }],
11191
+ "options": [
11192
+ {
11193
+ "flags": "--type <type>",
11194
+ "description": "Fact type (feedback|project|reference|user)",
11195
+ "required": true,
11196
+ "valueHint": "type"
11197
+ },
11198
+ {
11199
+ "flags": "--description <text>",
11200
+ "description": "One-line index description (<= 200 chars)",
11201
+ "required": true,
11202
+ "valueHint": "text"
11203
+ },
11204
+ {
11205
+ "flags": "--title <text>",
11206
+ "description": "Fact title (defaults to the id, dashes as spaces, capitalized)",
11207
+ "required": true,
11208
+ "valueHint": "text"
11209
+ },
11210
+ {
11211
+ "flags": "--body <text>",
11212
+ "description": "Fact body",
11213
+ "required": true,
11214
+ "valueHint": "text"
11215
+ },
11216
+ {
11217
+ "flags": "--body-file <path>",
11218
+ "description": "Read the fact body from a file",
11219
+ "required": true,
11220
+ "valueHint": "path"
11221
+ },
11222
+ {
11223
+ "flags": "--tags <a,b>",
11224
+ "description": "Comma-separated tags",
11225
+ "required": true,
11226
+ "valueHint": "a,b"
11227
+ },
11228
+ {
11229
+ "flags": "--project <key>",
11230
+ "description": "Project key (defaults to the project owning the cwd)",
11231
+ "required": true,
11232
+ "valueHint": "key"
11233
+ },
11234
+ {
11235
+ "flags": "--user",
11236
+ "description": "Write to the operator store (travels with you; synced when set up)",
11237
+ "required": false,
11238
+ "valueHint": null
11239
+ },
11240
+ {
11241
+ "flags": "--machine",
11242
+ "description": "Write to the machine store (this machine only)",
11243
+ "required": false,
11244
+ "valueHint": null
11245
+ },
11246
+ {
11247
+ "flags": "--json",
11248
+ "description": "Output JSON",
11249
+ "required": false,
11250
+ "valueHint": null
11251
+ }
11252
+ ],
11253
+ "aliases": [],
11254
+ "category": "Observation"
11255
+ },
11256
+ {
11257
+ "id": "pan-memory-edit",
11258
+ "path": ["memory", "edit"],
11259
+ "display": "/pan memory edit",
11260
+ "description": "Edit a curated memory fact",
11261
+ "args": [{
11262
+ "name": "id",
11263
+ "required": true,
11264
+ "variadic": false
11265
+ }],
11266
+ "options": [
11267
+ {
11268
+ "flags": "--type <type>",
11269
+ "description": "Fact type (feedback|project|reference|user)",
11270
+ "required": true,
11271
+ "valueHint": "type"
11272
+ },
11273
+ {
11274
+ "flags": "--title <text>",
11275
+ "description": "Fact title",
11276
+ "required": true,
11277
+ "valueHint": "text"
11278
+ },
11279
+ {
11280
+ "flags": "--description <text>",
11281
+ "description": "One-line index description (<= 200 chars)",
11282
+ "required": true,
11283
+ "valueHint": "text"
11284
+ },
11285
+ {
11286
+ "flags": "--body <text>",
11287
+ "description": "Fact body",
11288
+ "required": true,
11289
+ "valueHint": "text"
11290
+ },
11291
+ {
11292
+ "flags": "--body-file <path>",
11293
+ "description": "Read the fact body from a file",
11294
+ "required": true,
11295
+ "valueHint": "path"
11296
+ },
11297
+ {
11298
+ "flags": "--tags <a,b>",
11299
+ "description": "Comma-separated tags",
11300
+ "required": true,
11301
+ "valueHint": "a,b"
11302
+ },
11303
+ {
11304
+ "flags": "--clear-review",
11305
+ "description": "Remove the review marker, re-activating the fact",
11306
+ "required": false,
11307
+ "valueHint": null
11308
+ },
11309
+ {
11310
+ "flags": "--project <key>",
11311
+ "description": "Project key (defaults to the project owning the cwd)",
11312
+ "required": true,
11313
+ "valueHint": "key"
11314
+ },
11315
+ {
11316
+ "flags": "--user",
11317
+ "description": "Edit the operator store (travels with you; synced when set up)",
11318
+ "required": false,
11319
+ "valueHint": null
11320
+ },
11321
+ {
11322
+ "flags": "--machine",
11323
+ "description": "Edit the machine store (this machine only)",
11324
+ "required": false,
11325
+ "valueHint": null
11326
+ },
11327
+ {
11328
+ "flags": "--json",
11329
+ "description": "Output JSON",
11330
+ "required": false,
11331
+ "valueHint": null
11332
+ }
11333
+ ],
11334
+ "aliases": [],
11335
+ "category": "Observation"
11336
+ },
11337
+ {
11338
+ "id": "pan-memory-retire",
11339
+ "path": ["memory", "retire"],
11340
+ "display": "/pan memory retire",
11341
+ "description": "Remove a curated memory fact (git history is the archive)",
11342
+ "args": [{
11343
+ "name": "id",
11344
+ "required": true,
11345
+ "variadic": false
11346
+ }],
11347
+ "options": [
11348
+ {
11349
+ "flags": "--project <key>",
11350
+ "description": "Project key (defaults to the project owning the cwd)",
11351
+ "required": true,
11352
+ "valueHint": "key"
11353
+ },
11354
+ {
11355
+ "flags": "--user",
11356
+ "description": "Retire from the operator store (travels with you; synced when set up)",
11357
+ "required": false,
11358
+ "valueHint": null
11359
+ },
11360
+ {
11361
+ "flags": "--machine",
11362
+ "description": "Retire from the machine store (this machine only)",
11363
+ "required": false,
11364
+ "valueHint": null
11365
+ },
11366
+ {
11367
+ "flags": "--json",
11368
+ "description": "Output JSON",
11369
+ "required": false,
11370
+ "valueHint": null
11371
+ }
11372
+ ],
11373
+ "aliases": [],
11374
+ "category": "Observation"
11375
+ },
11376
+ {
11377
+ "id": "pan-memory-sync",
11378
+ "path": ["memory", "sync"],
11379
+ "display": "/pan memory sync",
11380
+ "description": "Sync the operator memory store with your private git remote",
11381
+ "args": [],
11382
+ "options": [
11383
+ {
11384
+ "flags": "--setup <git-url>",
11385
+ "description": "Turn on sync: use this private git repository as the remote, then sync",
11386
+ "required": true,
11387
+ "valueHint": "git-url"
11388
+ },
11389
+ {
11390
+ "flags": "--status",
11391
+ "description": "Show sync state without touching the network",
11392
+ "required": false,
11393
+ "valueHint": null
11394
+ },
11395
+ {
11396
+ "flags": "--json",
11397
+ "description": "Output JSON",
11398
+ "required": false,
11399
+ "valueHint": null
11400
+ }
11401
+ ],
11402
+ "aliases": [],
11403
+ "category": "Observation"
11404
+ },
10900
11405
  {
10901
11406
  "id": "pan-briefing",
10902
11407
  "path": ["briefing"],
@@ -15799,6 +16304,83 @@ function laneActivityOf(row, now) {
15799
16304
  return "stopped";
15800
16305
  }
15801
16306
  //#endregion
16307
+ //#region src/conversation-window.ts
16308
+ /**
16309
+ * Conversation window contract shared by the dashboard server and the
16310
+ * frontend (PAN-4558). A cold open carries only the newest slice of a
16311
+ * transcript; older history is paged in by cursor. The constants bound every
16312
+ * open, and the timeline key gives entries one total order on both sides.
16313
+ */
16314
+ /** Most timeline rows a window or page carries. */
16315
+ const CONVERSATION_WINDOW_MAX_ROWS = 75;
16316
+ /** Most encoded entry bytes a window carries (960 KiB, leaving 64 KiB for metadata). */
16317
+ const CONVERSATION_WINDOW_MAX_BYTES = 983040;
16318
+ /** Whole-payload ceiling for an initial HTTP body or first WS event. */
16319
+ const CONVERSATION_PAYLOAD_BUDGET_BYTES = 1048576;
16320
+ /** Default `limit` for a paged read. */
16321
+ const CONVERSATION_PAGE_DEFAULT_LIMIT = 75;
16322
+ /** Largest `limit` a paged read accepts; larger values clamp to it. */
16323
+ const CONVERSATION_PAGE_MAX_LIMIT = 200;
16324
+ /** A tool `result` (or `detail`/`toolInput` string) above this many UTF-8 bytes leaves the wire. */
16325
+ const TOOL_BODY_INLINE_MAX_BYTES = 4096;
16326
+ /** Characters kept from an oversized `detail`/`toolInput` string. */
16327
+ const TOOL_BODY_PREVIEW_CHARS = 512;
16328
+ /** Most open entry ids a resume may name. */
16329
+ const RESUME_OPEN_IDS_MAX = 200;
16330
+ /** Most open tool calls pinned into a window beyond its contiguous slice. */
16331
+ const WINDOW_PINNED_OPEN_TOOLS_MAX = 10;
16332
+ function timelineKeyOfMessage(m) {
16333
+ return [
16334
+ m.createdAt,
16335
+ m.sequence ?? 0,
16336
+ 0,
16337
+ m.id
16338
+ ];
16339
+ }
16340
+ function timelineKeyOfWork(e) {
16341
+ return [
16342
+ e.createdAt,
16343
+ e.sequence ?? 0,
16344
+ 1,
16345
+ e.id
16346
+ ];
16347
+ }
16348
+ function compareStrings(a, b) {
16349
+ return a < b ? -1 : a > b ? 1 : 0;
16350
+ }
16351
+ /** Total order: createdAt (string compare), then sequence, then message before work, then id. */
16352
+ function compareTimelineKeys(a, b) {
16353
+ return compareStrings(a[0], b[0]) || a[1] - b[1] || a[2] - b[2] || compareStrings(a[3], b[3]);
16354
+ }
16355
+ function encodeTimelineCursor(key) {
16356
+ return JSON.stringify(key);
16357
+ }
16358
+ /** Returns null for anything that is not an encoded 4-tuple of string, finite number, 0|1, string. */
16359
+ function decodeTimelineCursor(cursor) {
16360
+ let value;
16361
+ try {
16362
+ value = JSON.parse(cursor);
16363
+ } catch {
16364
+ return null;
16365
+ }
16366
+ if (!Array.isArray(value) || value.length !== 4) return null;
16367
+ const [createdAt, sequence, kindRank, id] = value;
16368
+ if (typeof createdAt !== "string") return null;
16369
+ if (typeof sequence !== "number" || !Number.isFinite(sequence)) return null;
16370
+ if (kindRank !== 0 && kindRank !== 1) return null;
16371
+ if (typeof id !== "string") return null;
16372
+ return [
16373
+ createdAt,
16374
+ sequence,
16375
+ kindRank,
16376
+ id
16377
+ ];
16378
+ }
16379
+ /** A tool entry has a result when it carries one inline or the wire projection elided it. */
16380
+ function hasToolResult(e) {
16381
+ return !!e.result || (e.resultBytes ?? 0) > 0;
16382
+ }
16383
+ //#endregion
15802
16384
  //#region src/environment.ts
15803
16385
  /** Wire protocol version a client and server must agree on. */
15804
16386
  const ENVIRONMENT_PROTOCOL_VERSION = 1;
@@ -15841,6 +16423,7 @@ function isProtocolCompatible(descriptor, clientProtocolVersion) {
15841
16423
  }
15842
16424
  //#endregion
15843
16425
  exports.ACP_BEHAVIOR = ACP_BEHAVIOR;
16426
+ exports.ACP_CAPABILITIES = ACP_CAPABILITIES;
15844
16427
  exports.AGENT_ROLES = AGENT_ROLES;
15845
16428
  exports.Activity = Activity;
15846
16429
  exports.ActivityDetailedEvent = ActivityDetailedEvent;
@@ -15907,7 +16490,9 @@ exports.BackendPaneRemovedEvent = BackendPaneRemovedEvent;
15907
16490
  exports.BeadsFreshnessChangedEvent = BeadsFreshnessChangedEvent;
15908
16491
  exports.CHANNEL_REPLY_KIND_VALUES = CHANNEL_REPLY_KIND_VALUES;
15909
16492
  exports.CLAUDE_CODE_BEHAVIOR = CLAUDE_CODE_BEHAVIOR;
16493
+ exports.CLAUDE_CODE_CAPABILITIES = CLAUDE_CODE_CAPABILITIES;
15910
16494
  exports.CODEX_BEHAVIOR = CODEX_BEHAVIOR;
16495
+ exports.CODEX_CAPABILITIES = CODEX_CAPABILITIES;
15911
16496
  exports.COMPANION_TERMINAL_CLOSE_BODY_KEYS = COMPANION_TERMINAL_CLOSE_BODY_KEYS;
15912
16497
  exports.COMPANION_TERMINAL_OPEN_BODY_KEYS = COMPANION_TERMINAL_OPEN_BODY_KEYS;
15913
16498
  exports.COMPOSER_COMMAND_INSERT_OVERRIDES = COMPOSER_COMMAND_INSERT_OVERRIDES;
@@ -15915,6 +16500,11 @@ exports.COMPOSER_COMMAND_MANIFEST = COMPOSER_COMMAND_MANIFEST;
15915
16500
  exports.COMPOSER_COMMAND_VARIANTS = COMPOSER_COMMAND_VARIANTS;
15916
16501
  exports.CONTEXT_LAYER_KINDS = CONTEXT_LAYER_KINDS;
15917
16502
  exports.CONTEXT_PREVIEW_HARNESSES = CONTEXT_PREVIEW_HARNESSES;
16503
+ exports.CONVERSATION_PAGE_DEFAULT_LIMIT = CONVERSATION_PAGE_DEFAULT_LIMIT;
16504
+ exports.CONVERSATION_PAGE_MAX_LIMIT = CONVERSATION_PAGE_MAX_LIMIT;
16505
+ exports.CONVERSATION_PAYLOAD_BUDGET_BYTES = CONVERSATION_PAYLOAD_BUDGET_BYTES;
16506
+ exports.CONVERSATION_WINDOW_MAX_BYTES = CONVERSATION_WINDOW_MAX_BYTES;
16507
+ exports.CONVERSATION_WINDOW_MAX_ROWS = CONVERSATION_WINDOW_MAX_ROWS;
15918
16508
  exports.ChannelPermissionRequestSnapshot = ChannelPermissionRequestSnapshot;
15919
16509
  exports.ChannelReplyArtifactRef = ChannelReplyArtifactRef;
15920
16510
  exports.ChannelReplyKind = ChannelReplyKind;
@@ -15949,7 +16539,9 @@ exports.ConversationPermissionChangedEvent = ConversationPermissionChangedEvent;
15949
16539
  exports.ConversationPullRequests = ConversationPullRequests;
15950
16540
  exports.ConversationPullRequestsChangedEvent = ConversationPullRequestsChangedEvent;
15951
16541
  exports.ConversationResponse = ConversationResponse;
16542
+ exports.ConversationResume = ConversationResume;
15952
16543
  exports.ConversationTitleChangedEvent = ConversationTitleChangedEvent;
16544
+ exports.ConversationWindow = ConversationWindow;
15953
16545
  exports.CostEventRecordedEvent = CostEventRecordedEvent;
15954
16546
  exports.DEFAULT_EFFORT = DEFAULT_EFFORT;
15955
16547
  exports.DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE = DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE;
@@ -16058,6 +16650,7 @@ exports.GitHubQuotaUsage = GitHubQuotaUsage;
16058
16650
  exports.GitHubRateLimitKind = GitHubRateLimitKind;
16059
16651
  exports.GlobalContextLayerRecord = GlobalContextLayerRecord;
16060
16652
  exports.GlobalContextLayerTarget = GlobalContextLayerTarget;
16653
+ exports.HARNESS_CAPABILITY_KEYS = HARNESS_CAPABILITY_KEYS;
16061
16654
  exports.HOOK_INVENTORY = HOOK_INVENTORY;
16062
16655
  exports.HealthReason = HealthReason;
16063
16656
  exports.HealthState = HealthState;
@@ -16080,6 +16673,7 @@ exports.IssuesDeltaEvent = IssuesDeltaEvent;
16080
16673
  exports.IssuesSnapshotEvent = IssuesSnapshotEvent;
16081
16674
  exports.IssuesUpdatedEvent = IssuesUpdatedEvent;
16082
16675
  exports.KIMI_CODE_BEHAVIOR = KIMI_CODE_BEHAVIOR;
16676
+ exports.KIMI_CODE_CAPABILITIES = KIMI_CODE_CAPABILITIES;
16083
16677
  exports.KNOWN_HARNESSES = KNOWN_HARNESSES;
16084
16678
  exports.LANE_STARTING_GRACE_MS = LANE_STARTING_GRACE_MS;
16085
16679
  exports.LegacySystemHealthSummary = LegacySystemHealthSummary;
@@ -16096,6 +16690,7 @@ exports.MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH = MAX_CHANNEL_REPLY_ARTIFACT_URI_L
16096
16690
  exports.MAX_CHANNEL_REPLY_SUMMARY_LENGTH = MAX_CHANNEL_REPLY_SUMMARY_LENGTH;
16097
16691
  exports.MEMBERSHIP_UNAVAILABLE_REASONS = MEMBERSHIP_UNAVAILABLE_REASONS;
16098
16692
  exports.MUSE_BEHAVIOR = MUSE_BEHAVIOR;
16693
+ exports.MUSE_CAPABILITIES = MUSE_CAPABILITIES;
16099
16694
  exports.MemoryAgentRole = MemoryAgentRole;
16100
16695
  exports.MemoryHealthChangedEvent = MemoryHealthChangedEvent;
16101
16696
  exports.MemoryIdentity = MemoryIdentity;
@@ -16112,7 +16707,9 @@ exports.ModelOrigin = ModelOrigin;
16112
16707
  exports.ModelOriginEntry = ModelOriginEntry;
16113
16708
  exports.NON_ESSENTIAL_GITHUB_CALLERS = NON_ESSENTIAL_GITHUB_CALLERS;
16114
16709
  exports.OHMYPI_BEHAVIOR = OHMYPI_BEHAVIOR;
16710
+ exports.OHMYPI_CAPABILITIES = OHMYPI_CAPABILITIES;
16115
16711
  exports.OPENCODE_BEHAVIOR = OPENCODE_BEHAVIOR;
16712
+ exports.OPENCODE_CAPABILITIES = OPENCODE_CAPABILITIES;
16116
16713
  exports.OVERDECK_AGENT_PROTOCOL_VERSION = OVERDECK_AGENT_PROTOCOL_VERSION;
16117
16714
  exports.OVERDECK_DASHBOARD_PROTOCOL_VERSION = OVERDECK_DASHBOARD_PROTOCOL_VERSION;
16118
16715
  exports.OpenInEditorInput = OpenInEditorInput;
@@ -16126,6 +16723,7 @@ exports.OrderBookSettings = OrderBookSettings;
16126
16723
  exports.OrderBookStatus = OrderBookStatus;
16127
16724
  exports.PIPELINE_MEMBERSHIP_LOADING_CODE = PIPELINE_MEMBERSHIP_LOADING_CODE;
16128
16725
  exports.PRIME_AGENT_BEHAVIOR = PRIME_AGENT_BEHAVIOR;
16726
+ exports.PRIME_AGENT_CAPABILITIES = PRIME_AGENT_CAPABILITIES;
16129
16727
  exports.PanRpcError = PanRpcError;
16130
16728
  exports.PanRpcGroup = PanRpcGroup;
16131
16729
  exports.PendingTurn = PendingTurn;
@@ -16161,6 +16759,7 @@ exports.PullRequestLinkSource = PullRequestLinkSource;
16161
16759
  exports.PullRequestLinkedConversation = PullRequestLinkedConversation;
16162
16760
  exports.PullRequestSnapshot = PullRequestSnapshot;
16163
16761
  exports.PullRequestState = PullRequestState;
16762
+ exports.RESUME_OPEN_IDS_MAX = RESUME_OPEN_IDS_MAX;
16164
16763
  exports.RagDecision = RagDecision;
16165
16764
  exports.RagDecisionSource = RagDecisionSource;
16166
16765
  exports.ReadFileAtPathInput = ReadFileAtPathInput;
@@ -16169,7 +16768,9 @@ exports.ReadFileAtPathRpc = ReadFileAtPathRpc;
16169
16768
  exports.ReadWorkspaceFileInput = ReadWorkspaceFileInput;
16170
16769
  exports.ReadWorkspaceFileResult = ReadWorkspaceFileResult;
16171
16770
  exports.ReadWorkspaceFileRpc = ReadWorkspaceFileRpc;
16771
+ exports.ReplayEventsResult = ReplayEventsResult;
16172
16772
  exports.ReplayEventsRpc = ReplayEventsRpc;
16773
+ exports.ReplayTooFarBehind = ReplayTooFarBehind;
16173
16774
  exports.ResetMarker = ResetMarker;
16174
16775
  exports.ResetMarkerScope = ResetMarkerScope;
16175
16776
  exports.ResizeTerminalRpc = ResizeTerminalRpc;
@@ -16249,6 +16850,8 @@ exports.TELEMETRY_EVENT_CATALOG = TELEMETRY_EVENT_CATALOG;
16249
16850
  exports.TELEMETRY_EVENT_NAMES = TELEMETRY_EVENT_NAMES;
16250
16851
  exports.TELEMETRY_PROPERTY_DOMAINS = TELEMETRY_PROPERTY_DOMAINS;
16251
16852
  exports.TERMINAL_BACKEND_NAMES = TERMINAL_BACKEND_NAMES;
16853
+ exports.TOOL_BODY_INLINE_MAX_BYTES = TOOL_BODY_INLINE_MAX_BYTES;
16854
+ exports.TOOL_BODY_PREVIEW_CHARS = TOOL_BODY_PREVIEW_CHARS;
16252
16855
  exports.TerminalCloseRpc = TerminalCloseRpc;
16253
16856
  exports.TerminalOpenRpc = TerminalOpenRpc;
16254
16857
  exports.TerminalOutput = TerminalOutput;
@@ -16261,6 +16864,7 @@ exports.TickMarkerPhase = TickMarkerPhase;
16261
16864
  exports.TurnDiffFileChange = TurnDiffFileChange;
16262
16865
  exports.TurnDiffSummary = TurnDiffSummary;
16263
16866
  exports.TurnEndAssessment = TurnEndAssessment;
16867
+ exports.WINDOW_PINNED_OPEN_TOOLS_MAX = WINDOW_PINNED_OPEN_TOOLS_MAX;
16264
16868
  exports.WIRED_HOOK_INVENTORY = WIRED_HOOK_INVENTORY;
16265
16869
  exports.WIRED_HOOK_NAMES = WIRED_HOOK_NAMES;
16266
16870
  exports.WS_METHODS = WS_METHODS;
@@ -16288,16 +16892,20 @@ exports.canonicalPullRequestUrl = canonicalPullRequestUrl;
16288
16892
  exports.companionTerminalKindFor = companionTerminalKindFor;
16289
16893
  exports.compareEffort = compareEffort;
16290
16894
  exports.compareIssueIds = compareIssueIds;
16895
+ exports.compareTimelineKeys = compareTimelineKeys;
16291
16896
  exports.createIssueDelta = createIssueDelta;
16292
16897
  exports.decodeFlywheelDerivedStatus = decodeFlywheelDerivedStatus;
16293
16898
  exports.decodeFlywheelStats = decodeFlywheelStats;
16899
+ exports.decodeTimelineCursor = decodeTimelineCursor;
16294
16900
  exports.deriveProjectCi = deriveProjectCi;
16295
16901
  exports.encodeFlywheelStats = encodeFlywheelStats;
16902
+ exports.encodeTimelineCursor = encodeTimelineCursor;
16296
16903
  exports.getHarness = getHarness;
16297
16904
  exports.getHarnessBehavior = getHarnessBehavior;
16298
16905
  exports.getMaxMemoryObservationsPerIssue = getMaxMemoryObservationsPerIssue;
16299
16906
  exports.getMaxTurnDiffSummariesPerAgent = getMaxTurnDiffSummariesPerAgent;
16300
16907
  exports.getRuntimeBehavior = getRuntimeBehavior;
16908
+ exports.hasToolResult = hasToolResult;
16301
16909
  exports.indexPanesByAgentKey = indexPanesByAgentKey;
16302
16910
  exports.isAgentRole = isAgentRole;
16303
16911
  exports.isAgentSessionName = isAgentSessionName;
@@ -16306,12 +16914,14 @@ exports.isConfiguredPullRequestRepo = isConfiguredPullRequestRepo;
16306
16914
  exports.isEffortLevel = isEffortLevel;
16307
16915
  exports.isIssueAttention = isIssueAttention;
16308
16916
  exports.isIssueState = isIssueState;
16917
+ exports.isLegacyPiHarnessName = isLegacyPiHarnessName;
16309
16918
  exports.isProtocolCompatible = isProtocolCompatible;
16310
16919
  exports.isSingletonConversation = isSingletonConversation;
16311
16920
  exports.isTerminalBackendName = isTerminalBackendName;
16312
16921
  exports.isTerminalTurnDiffSummaryStatus = isTerminalTurnDiffSummaryStatus;
16313
16922
  exports.laneActivityOf = laneActivityOf;
16314
16923
  exports.normalizeChannelReplyPayload = normalizeChannelReplyPayload;
16924
+ exports.normalizeHarnessName = normalizeHarnessName;
16315
16925
  exports.omitTurnDiffSummariesForAgent = omitTurnDiffSummariesForAgent;
16316
16926
  exports.paneAgentKey = paneAgentKey;
16317
16927
  exports.parsePullRequestRef = parsePullRequestRef;
@@ -16319,6 +16929,8 @@ exports.projectLegacySystemHealthSummary = projectLegacySystemHealthSummary;
16319
16929
  exports.repoFromRemoteUrl = repoFromRemoteUrl;
16320
16930
  exports.resolveEffectivePullRequest = resolveEffectivePullRequest;
16321
16931
  exports.syncSnapshot = syncSnapshot;
16932
+ exports.timelineKeyOfMessage = timelineKeyOfMessage;
16933
+ exports.timelineKeyOfWork = timelineKeyOfWork;
16322
16934
  exports.trimMemoryObservations = trimMemoryObservations;
16323
16935
  exports.trimTurnDiffSummaries = trimTurnDiffSummaries;
16324
16936
  exports.withPaneLivenessAlias = withPaneLivenessAlias;