@cortexkit/opencode-magic-context 0.49.8 → 0.49.9

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.
Files changed (105) hide show
  1. package/dist/agents/hidden-agent-registrations.d.ts +5 -3
  2. package/dist/agents/hidden-agent-registrations.d.ts.map +1 -1
  3. package/dist/auto-search-worker.js +1 -1
  4. package/dist/config/schema/agent-overrides.d.ts +13 -13
  5. package/dist/config/schema/magic-context.d.ts +500 -500
  6. package/dist/{context-x0ccfv0f.js → context-ey3ap3cc.js} +29 -24
  7. package/dist/features/magic-context/primer-clustering.d.ts.map +1 -1
  8. package/dist/features/magic-context/smart-notes/compiler-prompt.d.ts +1 -1
  9. package/dist/features/magic-context/smart-notes/compiler-prompt.d.ts.map +1 -1
  10. package/dist/features/magic-context/smart-notes/compiler.d.ts.map +1 -1
  11. package/dist/hooks/magic-context/__fixtures__/tail-hygiene-refresh.d.ts +34 -0
  12. package/dist/hooks/magic-context/__fixtures__/tail-hygiene-refresh.d.ts.map +1 -0
  13. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  14. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +1 -0
  15. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -1
  16. package/dist/hooks/magic-context/dropped-input-guard.d.ts.map +1 -1
  17. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +2 -0
  18. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  19. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  20. package/dist/hooks/magic-context/provider-visible-parts.d.ts +10 -4
  21. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -1
  22. package/dist/hooks/magic-context/supersession-reclaim.d.ts +5 -3
  23. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -1
  24. package/dist/hooks/magic-context/tail-hygiene-output-count.d.ts +18 -0
  25. package/dist/hooks/magic-context/tail-hygiene-output-count.d.ts.map +1 -0
  26. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +5 -1
  27. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  28. package/dist/hooks/magic-context/tool-reclaim.d.ts +5 -2
  29. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -1
  30. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +1 -0
  31. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  32. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  33. package/dist/{index-b4gcb3rk.js → index-0x9cn9w1.js} +2 -2
  34. package/dist/{index-ydjgz36f.js → index-16vwdyy5.js} +1 -1
  35. package/dist/{index-xf6k8szp.js → index-21919gcq.js} +3 -3
  36. package/dist/{index-hxrvx6cy.js → index-3403gbzj.js} +129 -103
  37. package/dist/{index-gzg9ekc1.js → index-6k86es2p.js} +129 -15
  38. package/dist/{index-8kk7yh6m.js → index-9jvab89d.js} +1 -1
  39. package/dist/{index-qgp5vnt4.js → index-a865mj02.js} +1 -1
  40. package/dist/{index-xpn05jxq.js → index-f8cn4xqa.js} +287 -58
  41. package/dist/{index-2rw244rh.js → index-ffa8x2as.js} +4 -4
  42. package/dist/{index-bd9cjab3.js → index-g7jkrz0x.js} +35 -15
  43. package/dist/{index-pjgzdezw.js → index-nenz4gpb.js} +3 -3
  44. package/dist/{index-zf9nydbd.js → index-swgpe402.js} +4 -4
  45. package/dist/{index-9g1c4bt9.js → index-wpwpn7nj.js} +88 -8
  46. package/dist/{index-w1ejb9qr.js → index-x57ep4fp.js} +33 -19
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +50 -46
  49. package/dist/{message-index-zs882h8e.js → message-index-6r1x9cqh.js} +5 -5
  50. package/dist/{message-index-bounded-hxjp56qk.js → message-index-bounded-fskdyc81.js} +5 -5
  51. package/dist/migration-worker.js +4 -4
  52. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  53. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  54. package/dist/raw-ordinal-warmup-worker.js +3 -3
  55. package/dist/{read-session-chunk-t9r7r0sg.js → read-session-chunk-zgpvs423.js} +4 -4
  56. package/dist/{recomp-orchestrator-gr36zvd2.js → recomp-orchestrator-77xc8wpe.js} +10 -10
  57. package/dist/{search-qjen1pmz.js → search-72fkjwk2.js} +8 -8
  58. package/dist/shared/hidden-zen-read.d.ts +24 -0
  59. package/dist/shared/hidden-zen-read.d.ts.map +1 -0
  60. package/dist/shared/reclaim-distance.d.ts +33 -0
  61. package/dist/shared/reclaim-distance.d.ts.map +1 -0
  62. package/dist/shared/stable-json.d.ts +7 -0
  63. package/dist/shared/stable-json.d.ts.map +1 -1
  64. package/dist/shared/tail-hygiene-json.d.ts +22 -0
  65. package/dist/shared/tail-hygiene-json.d.ts.map +1 -0
  66. package/dist/shared/transcript.d.ts +5 -0
  67. package/dist/shared/transcript.d.ts.map +1 -1
  68. package/dist/{storage-tags-a513rkj3.js → storage-tags-35m4gms2.js} +2 -2
  69. package/dist/{transform-postprocess-phase-yv463b7y.js → transform-postprocess-phase-r8d406j0.js} +10 -10
  70. package/dist/v2/auto-search-worker.js +1 -1
  71. package/dist/v2/{context-wd82v9z6.js → context-z2yagwy4.js} +168 -35
  72. package/dist/v2/hidden-completion.d.ts.map +1 -1
  73. package/dist/v2/hooks/hidden-child.d.ts +2 -2
  74. package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
  75. package/dist/v2/{message-index-yd94vt9n.js → message-index-9ezq6wze.js} +5 -5
  76. package/dist/v2/{message-index-bounded-madg2kfr.js → message-index-bounded-rqc603f2.js} +5 -5
  77. package/dist/v2/migration-worker.js +4 -4
  78. package/dist/v2/raw-ordinal-warmup-worker.js +3 -3
  79. package/dist/v2/{read-session-chunk-7qs791f3.js → read-session-chunk-7f87tg2q.js} +4 -4
  80. package/dist/v2/{recomp-orchestrator-ee91r9s6.js → recomp-orchestrator-s5tdpsbs.js} +9 -9
  81. package/dist/v2/{search-pn15rr52.js → search-2td1b1wy.js} +8 -8
  82. package/dist/v2/{server-08k4zkfk.js → server-23znwjqk.js} +4 -4
  83. package/dist/v2/{server-y5g32dhq.js → server-2hxypdx5.js} +4 -4
  84. package/dist/v2/{server-yak3sxya.js → server-4zwx20yg.js} +1 -1
  85. package/dist/v2/{server-shme41gj.js → server-89fcbe37.js} +35 -15
  86. package/dist/v2/{server-q360kdb8.js → server-c9w52qss.js} +30 -13
  87. package/dist/v2/{server-4gz0xkrc.js → server-f27he3j1.js} +1 -1
  88. package/dist/v2/{server-xj4mewze.js → server-gc8x2xdb.js} +66 -8
  89. package/dist/v2/{server-jjsf29aq.js → server-kmapq3v0.js} +286 -57
  90. package/dist/v2/{server-adfte03x.js → server-xqf2d2mg.js} +1 -1
  91. package/dist/v2/{server-j3dm74ey.js → server-z0rjemg1.js} +2 -2
  92. package/dist/v2/server.js +2 -2
  93. package/dist/v2/{storage-tags-spa92sgj.js → storage-tags-c4zfcxv4.js} +2 -2
  94. package/dist/v2/{wrapup-orchestrator-5wxy1ggv.js → wrapup-orchestrator-wg8dmmm9.js} +9 -9
  95. package/dist/{wrapup-orchestrator-gv08c6f9.js → wrapup-orchestrator-b1z99yg5.js} +11 -11
  96. package/package.json +1 -1
  97. package/src/agents/hidden-agent-registrations.ts +22 -4
  98. package/src/shared/hidden-zen-read.test.ts +99 -0
  99. package/src/shared/hidden-zen-read.ts +88 -0
  100. package/src/shared/reclaim-distance.test.ts +111 -0
  101. package/src/shared/reclaim-distance.ts +91 -0
  102. package/src/shared/stable-json.ts +56 -14
  103. package/src/shared/tail-hygiene-json.test.ts +117 -0
  104. package/src/shared/tail-hygiene-json.ts +217 -0
  105. package/src/shared/transcript.ts +7 -0
@@ -468,32 +468,32 @@ function tagOrderConstraintIndex(db) {
468
468
  // src/shared/stable-json.ts
469
469
  function stableStringify(value, seen = new WeakSet) {
470
470
  const pieces = [];
471
- writeStable(value, seen, pieces);
471
+ writeStable(value, seen, (piece) => pieces.push(piece));
472
472
  return pieces.join("");
473
473
  }
474
- function writeStable(value, seen, pieces) {
474
+ function writeStable(value, seen, write) {
475
475
  if (value === undefined) {
476
- pieces.push("undefined");
476
+ write("undefined");
477
477
  return;
478
478
  }
479
479
  if (value === null || typeof value !== "object") {
480
- pieces.push(JSON.stringify(value) ?? String(value));
480
+ write(JSON.stringify(value) ?? String(value));
481
481
  return;
482
482
  }
483
483
  if (seen.has(value)) {
484
- pieces.push('"[Circular]"');
484
+ write('"[Circular]"');
485
485
  return;
486
486
  }
487
487
  seen.add(value);
488
488
  if (Array.isArray(value)) {
489
- pieces.push("[");
489
+ write("[");
490
490
  for (let index = 0;index < value.length; index += 1) {
491
491
  if (index > 0)
492
- pieces.push(",");
492
+ write(",");
493
493
  if (index in value)
494
- writeStable(value[index], seen, pieces);
494
+ writeStable(value[index], seen, write);
495
495
  }
496
- pieces.push("]");
496
+ write("]");
497
497
  return;
498
498
  }
499
499
  const entries = Object.entries(value).sort(([a], [b]) => {
@@ -503,14 +503,34 @@ function writeStable(value, seen, pieces) {
503
503
  return 1;
504
504
  return 0;
505
505
  });
506
- pieces.push("{");
506
+ if (entries.length > 0 && entries.length <= 16 && entries.every(([key, child]) => key.length <= 4096 && !/^(0|[1-9]\d*)$/.test(key) && (child === null || typeof child === "number" || typeof child === "boolean" || typeof child === "string" && child.length <= 4096))) {
507
+ write(JSON.stringify(Object.fromEntries(entries)));
508
+ return;
509
+ }
510
+ write("{");
507
511
  entries.forEach(([key, child], index) => {
508
512
  if (index > 0)
509
- pieces.push(",");
510
- pieces.push(JSON.stringify(key), ":");
511
- writeStable(child, seen, pieces);
513
+ write(",");
514
+ write(JSON.stringify(key));
515
+ write(":");
516
+ writeStable(child, seen, write);
512
517
  });
513
- pieces.push("}");
518
+ write("}");
519
+ }
520
+ function stableStringifyHash(value, prefix = "") {
521
+ const sink = jsonHashSink(prefix);
522
+ writeStable(value, new WeakSet, sink.write);
523
+ return sink.digest();
524
+ }
525
+ function jsonHashSink(prefix = "") {
526
+ let hash = 2166136261;
527
+ const write = (piece) => {
528
+ for (let index = 0;index < piece.length; index++) {
529
+ hash = Math.imul(hash ^ piece.charCodeAt(index), 16777619);
530
+ }
531
+ };
532
+ write(prefix);
533
+ return { write, digest: () => (hash >>> 0).toString(16).padStart(8, "0") };
514
534
  }
515
535
 
516
- export { TAG_TOMBSTONE_OWNER_PREFIX, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions, getTableColumnNames, ensureColumn, healAllNullColumns, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, deleteTemporalDecision, installV95PerfSchema, tagOrderConstraintIndex, stableStringify };
536
+ export { TAG_TOMBSTONE_OWNER_PREFIX, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions, getTableColumnNames, ensureColumn, healAllNullColumns, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, deleteTemporalDecision, installV95PerfSchema, tagOrderConstraintIndex, stableStringify, stableStringifyHash };
@@ -15,7 +15,7 @@ import {
15
15
  getActiveCompartmentRun,
16
16
  markActiveCompartmentRunPublished,
17
17
  registerActiveCompartmentRun
18
- } from "./index-hxrvx6cy.js";
18
+ } from "./index-3403gbzj.js";
19
19
  import {
20
20
  inRootAsyncContext2
21
21
  } from "./index-wafzvyhg.js";
@@ -27,7 +27,7 @@ import {
27
27
  getHistorianFailureState,
28
28
  clearEmergencyRecovery,
29
29
  prepareRawSessionOrdinals2
30
- } from "./index-9g1c4bt9.js";
30
+ } from "./index-wpwpn7nj.js";
31
31
  import {
32
32
  pushNotification2
33
33
  } from "./index-x8a7jmkh.js";
@@ -37,7 +37,7 @@ import {
37
37
  import {
38
38
  setRecompStarting2,
39
39
  setRecompTerminal2
40
- } from "./index-xf6k8szp.js";
40
+ } from "./index-21919gcq.js";
41
41
 
42
42
  // src/hooks/magic-context/wrapup-orchestrator.ts
43
43
  import * as crypto from "node:crypto";
@@ -53,12 +53,12 @@ import {
53
53
  hasPendingMigrations,
54
54
  getMainThreadMigrationBodyCount,
55
55
  runMigrations
56
- } from "./index-qgp5vnt4.js";
56
+ } from "./index-a865mj02.js";
57
57
  import {
58
58
  installTagIdentityRevisionTrigger,
59
59
  ensureColumn,
60
60
  installV95PerfSchema
61
- } from "./index-bd9cjab3.js";
61
+ } from "./index-g7jkrz0x.js";
62
62
  import {
63
63
  resolveOpenCodeDbPath,
64
64
  hasV1MessageTables
@@ -66,7 +66,7 @@ import {
66
66
  import {
67
67
  setDatabase,
68
68
  loadToolDefinitionMeasurements
69
- } from "./index-8kk7yh6m.js";
69
+ } from "./index-9jvab89d.js";
70
70
  import {
71
71
  getErrorMessage
72
72
  } from "./index-y8v6yerm.js";
@@ -1270,7 +1270,7 @@ function finishDatabaseOpen(db, dbPath, explicitDbPath, latestSupportedVersion)
1270
1270
  startMessageFtsRowidMapBackfill(db).then(async () => {
1271
1271
  if (!readsOpenCodeStore)
1272
1272
  return;
1273
- const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-t9r7r0sg.js"));
1273
+ const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-zgpvs423.js"));
1274
1274
  const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-nb5hhnrt.js"));
1275
1275
  await startMessageTimeBackfill(db, Object.assign(readRawSessionMessages, {
1276
1276
  readPage: readRawSessionMessagePage
@@ -23,7 +23,7 @@ import {
23
23
  TAG_SELECT_COLUMNS2,
24
24
  getCandidateToolOwners2,
25
25
  pickNearestPriorOwner2
26
- } from "./index-xpn05jxq.js";
26
+ } from "./index-f8cn4xqa.js";
27
27
  import {
28
28
  OMO_INTERNAL_INITIATOR_MARKER,
29
29
  isSystemDirective,
@@ -46,7 +46,7 @@ import {
46
46
  } from "./index-wafzvyhg.js";
47
47
  import {
48
48
  stableStringify
49
- } from "./index-bd9cjab3.js";
49
+ } from "./index-g7jkrz0x.js";
50
50
  import {
51
51
  renderToolTemplate,
52
52
  resolveModelConfigValue,
@@ -79,7 +79,7 @@ import {
79
79
  getToolDefinitionMeasurementSignature,
80
80
  getLargestMeasuredToolDefinitionTokens,
81
81
  getMeasuredToolDefinitionTokens
82
- } from "./index-8kk7yh6m.js";
82
+ } from "./index-9jvab89d.js";
83
83
  import {
84
84
  canonicalModelIdentity,
85
85
  piModelRefToCanonical
@@ -88,6 +88,72 @@ import {
88
88
  logSlowWriteTransaction
89
89
  } from "./index-150zz6fh.js";
90
90
 
91
+ // src/shared/hidden-zen-read.ts
92
+ function isToolFreeHiddenAgent(agent) {
93
+ return [
94
+ "historian",
95
+ "historian-recomp",
96
+ "historian-editor",
97
+ "dreamer-classifier",
98
+ "dreamer-reviewer",
99
+ "smart-note-compiler"
100
+ ].includes(agent);
101
+ }
102
+ var TOOL_USE_DISABLED = "tool use is disabled for this task";
103
+ var ZEN_READ_AGENT_SUFFIX = "-zen-blocked-read";
104
+ function needsBlockedRead(agent, providerID) {
105
+ return providerID === "opencode" && isToolFreeHiddenAgent(agent);
106
+ }
107
+ function blockedReadInstruction(run) {
108
+ if (run.agent.startsWith("historian"))
109
+ return "Summarize only the supplied conversation and memory context. Do not call tools.";
110
+ if (run.metadata?.task === "compress-cues")
111
+ return "Compress only the supplied memory cues. Do not call tools.";
112
+ if (run.agent === "smart-note-compiler")
113
+ return "Compile only the supplied conditions and memory context. Do not call tools.";
114
+ if (run.agent === "dreamer-reviewer")
115
+ return "Review only the supplied observations and memory context. Do not call tools.";
116
+ return "Classify only the supplied memory context. Do not call tools.";
117
+ }
118
+ function withBlockedReadInstruction(system, run) {
119
+ const instruction = blockedReadInstruction(run);
120
+ return system.endsWith(instruction) ? system : `${system}${system ? `
121
+
122
+ ` : ""}${instruction}`;
123
+ }
124
+ var blockedSessions = new Set;
125
+ var v1Runs = new Map;
126
+ function rememberV1HiddenRun(sessionID, run) {
127
+ if (run)
128
+ v1Runs.set(sessionID, run);
129
+ else {
130
+ v1Runs.delete(sessionID);
131
+ setBlockedReadSession(sessionID, false);
132
+ }
133
+ }
134
+ function shapeV1HiddenMessage(sessionID, message) {
135
+ const run = v1Runs.get(sessionID);
136
+ if (!run)
137
+ return;
138
+ const agent = message.agent ?? run.agent;
139
+ const base = agent.endsWith(ZEN_READ_AGENT_SUFFIX) ? agent.slice(0, -ZEN_READ_AGENT_SUFFIX.length) : agent;
140
+ const enabled = needsBlockedRead(base, message.model?.providerID);
141
+ setBlockedReadSession(sessionID, enabled);
142
+ if (!enabled)
143
+ return;
144
+ message.agent = `${base}${ZEN_READ_AGENT_SUFFIX}`;
145
+ message.system = withBlockedReadInstruction(message.system ?? "", run);
146
+ }
147
+ function setBlockedReadSession(sessionID, enabled) {
148
+ if (enabled)
149
+ blockedSessions.add(sessionID);
150
+ else
151
+ blockedSessions.delete(sessionID);
152
+ }
153
+ function blockedReadSessionRefusal(sessionID) {
154
+ return blockedSessions.has(sessionID) ? TOOL_USE_DISABLED : undefined;
155
+ }
156
+
91
157
  // src/features/magic-context/dreamer/token-budget.ts
92
158
  class DreamTokenBudgetExceeded extends Error {
93
159
  sessionId;
@@ -329,6 +395,11 @@ function createDroppedInputToolExecuteBeforeHook() {
329
395
  const call = isRecord2(input) ? input : {};
330
396
  const args = isRecord2(output) ? output.args : undefined;
331
397
  if (typeof call.sessionID === "string") {
398
+ const disabled = blockedReadSessionRefusal(call.sessionID);
399
+ if (disabled) {
400
+ sessionLog2(call.sessionID, disabled, { tool: call.tool });
401
+ throw new Error(disabled);
402
+ }
332
403
  const refusal = refuseBudgetedToolCall(call.sessionID);
333
404
  if (refusal) {
334
405
  sessionLog2(call.sessionID, "dreamer token budget: tool call refused", {
@@ -5404,6 +5475,17 @@ function serializedTokens(value, bounded = false) {
5404
5475
  return Buffer.byteLength(serialized);
5405
5476
  return serialized ? wireTextTokens(serialized) : 0;
5406
5477
  }
5478
+ function estimatePartImageTokens(raw) {
5479
+ if (!raw || typeof raw !== "object")
5480
+ return 0;
5481
+ const part = raw;
5482
+ if (part.ignored)
5483
+ return 0;
5484
+ if (part.type === "file" && part.mime?.startsWith("image/")) {
5485
+ return typeof part.url === "string" && part.url.startsWith("data:") ? estimateImageTokensFromDataUrl(part.url) : 1200;
5486
+ }
5487
+ return part.type === "tool" ? estimateToolAttachmentImageTokens(part.state) : 0;
5488
+ }
5407
5489
  function visitWireContent(message, visit) {
5408
5490
  let opaqueCounted = false;
5409
5491
  const opaque = () => {
@@ -5450,15 +5532,13 @@ function visitWireContent(message, visit) {
5450
5532
  opaque();
5451
5533
  break;
5452
5534
  case "file":
5453
- if (typeof p.mime === "string" && p.mime.startsWith("image/")) {
5454
- visit.image("conversation", typeof p.url === "string" && p.url.startsWith("data:") ? estimateImageTokensFromDataUrl(p.url) : 1200);
5455
- }
5535
+ visit.image("conversation", estimatePartImageTokens(part));
5456
5536
  break;
5457
5537
  case "tool":
5458
5538
  tool(p.state?.input ?? p.input ?? p.args);
5459
5539
  tool(p.state?.output ?? p.state?.content ?? p.output ?? p.result ?? p.content);
5460
5540
  tool(p.state?.error);
5461
- visit.image("toolCall", estimateToolAttachmentImageTokens(p.state));
5541
+ visit.image("toolCall", estimatePartImageTokens(part));
5462
5542
  break;
5463
5543
  case "tool-call":
5464
5544
  tool(p.input ?? p.args);
@@ -7212,4 +7292,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
7212
7292
  });
7213
7293
  }
7214
7294
 
7215
- export { expandToolPart, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, removeNoteNudgeAnchorByMessageId, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectThinkingBindingMismatch, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
7295
+ export { isToolFreeHiddenAgent, TOOL_USE_DISABLED, ZEN_READ_AGENT_SUFFIX, needsBlockedRead, withBlockedReadInstruction, rememberV1HiddenRun, shapeV1HiddenMessage, expandToolPart, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, removeNoteNudgeAnchorByMessageId, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectThinkingBindingMismatch, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimatePartImageTokens, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
@@ -112,6 +112,7 @@ import {
112
112
  protectedToolTokenCount,
113
113
  peelLeadingMcTagNotation,
114
114
  isThinkingPart,
115
+ currentReclaimableToolOutputCount,
115
116
  isRecord,
116
117
  contentTagOwnerMessageId,
117
118
  normalizeTodoStateJson,
@@ -122,7 +123,6 @@ import {
122
123
  evaluateChannel2,
123
124
  formatChannel1Evaluation,
124
125
  formatChannel2Evaluation,
125
- reclaimableToolOutputCount,
126
126
  buildChannel2Reminder,
127
127
  buildChannel1Reminder,
128
128
  queuePendingOp,
@@ -144,11 +144,11 @@ import {
144
144
  getDroppedTagsByNumbers2,
145
145
  getMaxDroppedTagNumber2,
146
146
  getTagById2
147
- } from "./index-xpn05jxq.js";
147
+ } from "./index-f8cn4xqa.js";
148
148
  import {
149
149
  observeTemporalDecisions,
150
150
  stableStringify
151
- } from "./index-bd9cjab3.js";
151
+ } from "./index-g7jkrz0x.js";
152
152
  import {
153
153
  withContentLanguageDirective,
154
154
  parseCron,
@@ -296,10 +296,10 @@ import {
296
296
  readRawSessionMessageById2,
297
297
  readSessionChunk2,
298
298
  readRawSessionSeedTail2
299
- } from "./index-9g1c4bt9.js";
299
+ } from "./index-wpwpn7nj.js";
300
300
  import {
301
301
  getMeasuredToolDefinitionTokens
302
- } from "./index-8kk7yh6m.js";
302
+ } from "./index-9jvab89d.js";
303
303
  import {
304
304
  CANONICAL_DREAM_TASKS,
305
305
  DREAM_TASK_CAPABILITIES,
@@ -327,7 +327,7 @@ import {
327
327
  runSqliteOptimize,
328
328
  openDatabase,
329
329
  openCurrentDatabase
330
- } from "./index-zf9nydbd.js";
330
+ } from "./index-swgpe402.js";
331
331
  import {
332
332
  registerOwnRpcServerInstance,
333
333
  rpcPortDir,
@@ -346,7 +346,7 @@ import {
346
346
  resolveStoredPathWorkspaceIdentity,
347
347
  storedPathBelongsToWorkspace,
348
348
  computeWorkspaceEpochFingerprint
349
- } from "./index-qgp5vnt4.js";
349
+ } from "./index-a865mj02.js";
350
350
  import {
351
351
  V2_MEMORY_CATEGORIES,
352
352
  CATEGORY_PRIORITY
@@ -520,7 +520,7 @@ import {
520
520
  snapRangeToCompartments,
521
521
  getActiveCompartmentRun,
522
522
  startCompartmentAgent
523
- } from "./index-hxrvx6cy.js";
523
+ } from "./index-3403gbzj.js";
524
524
  import {
525
525
  SubcClient,
526
526
  connectionFileExists,
@@ -549,7 +549,7 @@ import {
549
549
  indexSingleMessage2,
550
550
  indexMessagesAfterOrdinal2,
551
551
  sweepOrphanedOpenCodeMessageIndexes2
552
- } from "./index-b4gcb3rk.js";
552
+ } from "./index-0x9cn9w1.js";
553
553
  import {
554
554
  renderUserFacingFailure,
555
555
  userFacingFailureCode,
@@ -593,7 +593,7 @@ import {
593
593
  readGitFileChangeTimesSince,
594
594
  verificationFileExists,
595
595
  normalizeVerificationFiles
596
- } from "./index-ydjgz36f.js";
596
+ } from "./index-16vwdyy5.js";
597
597
  import {
598
598
  registerNotificationSink2,
599
599
  pushNotification2,
@@ -658,7 +658,7 @@ import {
658
658
  resolveMemoriesByIdsForSearch2,
659
659
  unifiedSearch2,
660
660
  formatSearchResults2
661
- } from "./index-2rw244rh.js";
661
+ } from "./index-ffa8x2as.js";
662
662
  import {
663
663
  flushIgnoredMessages2,
664
664
  clearIgnoredMessages2,
@@ -668,7 +668,7 @@ import {
668
668
  import {
669
669
  setRecompStarting2,
670
670
  setRecompTerminal2
671
- } from "./index-xf6k8szp.js";
671
+ } from "./index-21919gcq.js";
672
672
  import {
673
673
  makeToolCompositeKey,
674
674
  searchMessageHistoryOffThread,
@@ -719,7 +719,7 @@ import {
719
719
  abortSessionFailClosed2,
720
720
  evaluateEmergencyFailClosed2,
721
721
  runPostTransformPhase2
722
- } from "./index-gzg9ekc1.js";
722
+ } from "./index-6k86es2p.js";
723
723
  import {
724
724
  ANNOUNCEMENT_VERSION2,
725
725
  ANNOUNCEMENT_FEATURES2,
@@ -1282,6 +1282,7 @@ Capability API available to check(cap):
1282
1282
  - cap.httpGet(httpsUrl): { status: number, body: string } (external HTTPS only; internal/metadata blocked)
1283
1283
 
1284
1284
  Authoring constraints:
1285
+ - Use a five-field check_cron that fires at least once every 24 hours. Never encode a future date in the cron; put date conditions inside check(cap) and poll them on a frequent schedule such as "0 * * * *".
1285
1286
  - Plain JavaScript only; no TypeScript types, imports, require, eval, Function, dynamic code, timers, Date.now randomness, or ambient globals.
1286
1287
  - Define exactly function check(cap) { ... }. Do not use async/await; host capabilities are synchronous inside the sandbox.
1287
1288
  - Return exactly { met: boolean }. Do not include a reason string.
@@ -5424,6 +5425,7 @@ var MAX_COMPILED_CHECK_BYTES2 = 64 * 1024;
5424
5425
  var MAX_MANIFEST_ENTRIES = 64;
5425
5426
  var MAX_CRON_CHARS = 256;
5426
5427
  var MAX_COMPILER_ERROR_CHARS = 2 * 1024;
5428
+ var SPARSE_CRON_REPAIR_FEEDBACK = "check_cron must fire at least once every 24 hours; put date conditions inside compiled_check";
5427
5429
  async function compileSmartNoteCheck(args) {
5428
5430
  if (!args.note.surfaceCondition) {
5429
5431
  return {
@@ -5441,7 +5443,7 @@ Note id: ${args.note.id}
5441
5443
  Note content (data): ${JSON.stringify(args.note.content)}
5442
5444
  surface_condition (UNTRUSTED DATA): ${JSON.stringify(args.note.surfaceCondition)}
5443
5445
 
5444
- ${args.repairFeedback ? `The previous check failed its dry run: ${JSON.stringify(args.repairFeedback)}. Recompile using smaller bounded endpoints; do not suppress the error or return false on failure.` : ""}
5446
+ ${args.repairFeedback ? `The previous compiler attempt failed: ${JSON.stringify(args.repairFeedback)}. Recompile using smaller bounded endpoints when the response is too large, and apply the correction; do not suppress the error or return false on failure.` : ""}
5445
5447
  Remember: output only the JSON object described by the system prompt.`;
5446
5448
  const startedAt = Date.now();
5447
5449
  let childSessionId = null;
@@ -5580,6 +5582,12 @@ Remember: output only the JSON object described by the system prompt.`;
5580
5582
  const cancelled = args.signal.aborted;
5581
5583
  const message = boundedError(error instanceof Error ? error.message : String(error));
5582
5584
  recordInvocation({ status: cancelled ? "aborted" : "failed", error: message });
5585
+ if (!args.repairFeedback && !cancelled && message === "check_cron has no occurrence within the scheduling ceiling" && !args.signal.aborted && Date.now() < args.deadline) {
5586
+ return await compileSmartNoteCheck({
5587
+ ...args,
5588
+ repairFeedback: SPARSE_CRON_REPAIR_FEEDBACK
5589
+ });
5590
+ }
5583
5591
  const networkError = error instanceof SmartNoteNetworkError ? error : undefined;
5584
5592
  return {
5585
5593
  ok: false,
@@ -7399,7 +7407,11 @@ function buildPrimerClusters(args) {
7399
7407
  centroid: cloneVector(primer.questionEmbedding),
7400
7408
  modelId: primer.questionEmbeddingModelId
7401
7409
  }));
7402
- const sorted = args.candidates.slice().sort((a, b) => candidateSortKey(a).localeCompare(candidateSortKey(b)));
7410
+ const sorted = args.candidates.slice().sort((a, b) => {
7411
+ const left = candidateSortKey(a);
7412
+ const right = candidateSortKey(b);
7413
+ return left < right ? -1 : left > right ? 1 : 0;
7414
+ });
7403
7415
  for (const candidate of sorted) {
7404
7416
  let best = null;
7405
7417
  for (const cluster of clusters) {
@@ -14821,7 +14833,7 @@ function maybeInjectChannel1Nudge(args, sessionId, tool, output) {
14821
14833
  setChannel1NudgeState(args.db, sessionId, nextNudgeState);
14822
14834
  return;
14823
14835
  }
14824
- out.output += buildChannel1Reminder(decision.level, decision.undroppedTokens, reclaimableToolOutputCount(state.baselineParts), state.oldestReclaimableToolTags, decision.sticky);
14836
+ out.output += buildChannel1Reminder(decision.level, decision.undroppedTokens, currentReclaimableToolOutputCount(state), state.oldestReclaimableToolTags, decision.sticky);
14825
14837
  setChannel1NudgeState(args.db, sessionId, {
14826
14838
  ...nextNudgeState,
14827
14839
  ordinal: state.realUserTurnCount
@@ -15493,6 +15505,7 @@ function buildStatusDetail(db, sessionId, directory, modelKey, config, liveSessi
15493
15505
  const ops = db.prepare("SELECT tag_id, operation FROM pending_ops WHERE session_id = ? LIMIT 100").all(sessionId);
15494
15506
  detail.pendingOps = ops.map((o) => ({ tagId: o.tag_id, operation: o.operation }));
15495
15507
  } catch {}
15508
+ modelKey ??= persistedModelKey ?? undefined;
15496
15509
  const modelSlash = modelKey?.indexOf("/") ?? -1;
15497
15510
  if (modelKey && modelSlash > 0) {
15498
15511
  detail.windowGeometry = resolveContextWindowGeometry(modelKey.slice(0, modelSlash), modelKey.slice(modelSlash + 1), { db, sessionID: sessionId });
@@ -15959,7 +15972,7 @@ function registerRpcHandlers(rpcServer, args) {
15959
15972
  const db = readDatabase();
15960
15973
  if (!db)
15961
15974
  return { ok: false, error: "db unavailable" };
15962
- const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-gr36zvd2.js"));
15975
+ const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-77xc8wpe.js"));
15963
15976
  const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-q8ngbap3.js"));
15964
15977
  log2(`[rpc] recomp requested for session ${sessionId}`);
15965
15978
  if (!args.client && !args.hiddenCompletionExecutor) {
@@ -16044,7 +16057,7 @@ function registerRpcHandlers(rpcServer, args) {
16044
16057
  const db = readDatabase();
16045
16058
  if (!db)
16046
16059
  return { ok: false, error: "db unavailable" };
16047
- const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-gv08c6f9.js"));
16060
+ const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-b1z99yg5.js"));
16048
16061
  const model = liveSessionState.liveModelBySession.get(sessionId);
16049
16062
  const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
16050
16063
  const ctx = {
@@ -16410,7 +16423,7 @@ async function maybeDeliverChannel2(sessionId, deps) {
16410
16423
  return false;
16411
16424
  }
16412
16425
  try {
16413
- const reminder = deps.directiveText ?? buildChannel2Reminder(effectiveU, reclaimableToolOutputCount(deps.baseline?.baselineParts ?? []), deps.oldestReclaimableToolTags);
16426
+ const reminder = deps.directiveText ?? buildChannel2Reminder(effectiveU, currentReclaimableToolOutputCount(deps.baseline), deps.oldestReclaimableToolTags);
16414
16427
  const sent = await deliverSyntheticUserMessage(sessionId, {
16415
16428
  client,
16416
16429
  text: reminder,
@@ -24343,6 +24356,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
24343
24356
  const protectedCutoff = protectionWindow.cutoff;
24344
24357
  const tPostProcess = performance.now();
24345
24358
  const postTransformResult = await runPostTransformPhase2({
24359
+ opencode2: deps.storeGeneration === "v2",
24346
24360
  normalizeRecoveryTail,
24347
24361
  compactionMarkerStrategy: deps.compactionMarkerStrategy ?? defaultCompactionMarkerStrategy2,
24348
24362
  sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA4GvE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAqiCpC,QAAA,MAAM,MAAM,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAIjD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA8GvE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAuiCpC,QAAA,MAAM,MAAM,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAIjD,CAAC;AAEF,eAAe,MAAM,CAAC"}