@cortexkit/opencode-magic-context 0.49.13 → 0.49.15

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 (75) hide show
  1. package/dist/auto-search-worker.js +1 -1
  2. package/dist/chunk-embedding-write-worker.js +1 -1
  3. package/dist/{context-azqk0vfd.js → context-0m46day0.js} +133 -17
  4. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  5. package/dist/features/magic-context/dreamer/verify.d.ts +22 -3
  6. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  7. package/dist/features/magic-context/storage-tags.d.ts +2 -0
  8. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  9. package/dist/hooks/magic-context/apply-operations.d.ts +3 -1
  10. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  11. package/dist/hooks/magic-context/compartment-runner-types.d.ts +2 -2
  12. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  13. package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
  14. package/dist/hooks/magic-context/compartment-runner.d.ts +4 -0
  15. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  16. package/dist/hooks/magic-context/compartment-trigger.d.ts +1 -1
  17. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  18. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts +2 -0
  19. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts.map +1 -1
  20. package/dist/hooks/magic-context/historian-prompt.generated.d.ts +1 -1
  21. package/dist/hooks/magic-context/historian-prompt.generated.d.ts.map +1 -1
  22. package/dist/hooks/magic-context/pending-drop-eligibility.d.ts +14 -0
  23. package/dist/hooks/magic-context/pending-drop-eligibility.d.ts.map +1 -0
  24. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  25. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +1 -0
  26. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  27. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  28. package/dist/{index-hnm8raee.js → index-1vc7jrkg.js} +2 -2
  29. package/dist/{index-wj6ht7nm.js → index-42vcjcwe.js} +52 -17
  30. package/dist/{index-b16gpywn.js → index-944w16m0.js} +2 -2
  31. package/dist/{index-wz6mzzb1.js → index-mc1cqza6.js} +3 -3
  32. package/dist/{index-2jr1smmh.js → index-snp5wbge.js} +99 -11
  33. package/dist/{index-v13skev1.js → index-thvnpfsv.js} +1 -1
  34. package/dist/{index-sj89f3b0.js → index-ts1hjk1h.js} +100 -15
  35. package/dist/{index-aw1bh90w.js → index-xn6q9pg6.js} +2 -2
  36. package/dist/{index-qkd9zz0p.js → index-yxycg7fs.js} +1 -1
  37. package/dist/index.js +13 -13
  38. package/dist/{message-index-seaqpb7c.js → message-index-a6gztaqx.js} +3 -3
  39. package/dist/{message-index-bounded-vm64mqpq.js → message-index-bounded-vtgpq6b4.js} +3 -3
  40. package/dist/migration-worker.js +1 -1
  41. package/dist/raw-ordinal-warmup-worker.js +3 -3
  42. package/dist/{read-session-chunk-ax05f7gr.js → read-session-chunk-3ae3nfdn.js} +2 -2
  43. package/dist/{recomp-orchestrator-dmbeadwt.js → recomp-orchestrator-nwzcfhx4.js} +6 -6
  44. package/dist/{search-5yd5ytzs.js → search-deajrd90.js} +4 -4
  45. package/dist/{storage-tags-yygfb9c8.js → storage-tags-s5bg1ahx.js} +1 -1
  46. package/dist/{transform-postprocess-phase-72v86syx.js → transform-postprocess-phase-ne3z1zmt.js} +6 -6
  47. package/dist/v2/auto-search-worker.js +1 -1
  48. package/dist/v2/chunk-embedding-write-worker.js +1 -1
  49. package/dist/v2/{context-w055w17c.js → context-4qczzck7.js} +265 -32
  50. package/dist/v2/hidden-completion.d.ts +23 -3
  51. package/dist/v2/hidden-completion.d.ts.map +1 -1
  52. package/dist/v2/hooks/context.d.ts.map +1 -1
  53. package/dist/v2/hooks/hidden-child.d.ts +19 -0
  54. package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
  55. package/dist/v2/{message-index-bounded-wepg5723.js → message-index-bounded-rxxznd34.js} +3 -3
  56. package/dist/v2/{message-index-gcmd0ng0.js → message-index-f947qtbz.js} +3 -3
  57. package/dist/v2/migration-worker.js +1 -1
  58. package/dist/v2/raw-ordinal-warmup-worker.js +3 -3
  59. package/dist/v2/{read-session-chunk-hr3w5bjk.js → read-session-chunk-rq9nx1nn.js} +2 -2
  60. package/dist/v2/{recomp-orchestrator-ca7qt75a.js → recomp-orchestrator-5zhxtwha.js} +5 -5
  61. package/dist/v2/{search-c86dcv14.js → search-n8wqxb1j.js} +4 -4
  62. package/dist/v2/{server-xh7jar6k.js → server-cfbr1s2x.js} +2 -2
  63. package/dist/v2/{server-b81w6sw3.js → server-dd0tz6cn.js} +99 -11
  64. package/dist/v2/{server-t4prcjc1.js → server-e298hswg.js} +1 -1
  65. package/dist/v2/{server-m97brnat.js → server-ehyava47.js} +2 -2
  66. package/dist/v2/{server-n8ch9683.js → server-kmbarfmn.js} +1 -1
  67. package/dist/v2/server.js +2 -2
  68. package/dist/v2/{storage-tags-a2gq6dw7.js → storage-tags-hcc2adpf.js} +1 -1
  69. package/dist/v2/store-reader.d.ts +27 -1
  70. package/dist/v2/store-reader.d.ts.map +1 -1
  71. package/dist/v2/{wrapup-orchestrator-e1a2w6jh.js → wrapup-orchestrator-65pwye0d.js} +5 -5
  72. package/dist/{wrapup-orchestrator-2051r6qm.js → wrapup-orchestrator-28xzsj5q.js} +7 -7
  73. package/package.json +1 -1
  74. /package/dist/{index-fwefky9w.js → index-mht7bq0z.js} +0 -0
  75. /package/dist/v2/{server-bxpwy6fy.js → server-atbc19ab.js} +0 -0
@@ -143,7 +143,7 @@ import {
143
143
  getDroppedTagsByNumbers2,
144
144
  getMaxDroppedTagNumber2,
145
145
  getTagById2
146
- } from "./index-fwefky9w.js";
146
+ } from "./index-mht7bq0z.js";
147
147
  import {
148
148
  observeTemporalDecisions,
149
149
  stableStringify
@@ -296,7 +296,7 @@ import {
296
296
  readRawSessionMessageById2,
297
297
  readSessionChunk2,
298
298
  readRawSessionSeedTail2
299
- } from "./index-b16gpywn.js";
299
+ } from "./index-944w16m0.js";
300
300
  import {
301
301
  getMeasuredToolDefinitionTokens
302
302
  } from "./index-n6m03s3n.js";
@@ -313,7 +313,7 @@ import {
313
313
  runSqliteOptimize,
314
314
  openDatabase,
315
315
  openCurrentDatabase
316
- } from "./index-qkd9zz0p.js";
316
+ } from "./index-yxycg7fs.js";
317
317
  import {
318
318
  registerOwnRpcServerInstance,
319
319
  rpcPortDir,
@@ -503,7 +503,7 @@ import {
503
503
  snapRangeToCompartments,
504
504
  getActiveCompartmentRun,
505
505
  startCompartmentAgent
506
- } from "./index-2jr1smmh.js";
506
+ } from "./index-snp5wbge.js";
507
507
  import {
508
508
  embedPauseBySession,
509
509
  embedRunStateBySession,
@@ -560,7 +560,7 @@ import {
560
560
  indexSingleMessage2,
561
561
  indexMessagesAfterOrdinal2,
562
562
  sweepOrphanedOpenCodeMessageIndexes2
563
- } from "./index-v13skev1.js";
563
+ } from "./index-thvnpfsv.js";
564
564
  import {
565
565
  renderUserFacingFailure,
566
566
  userFacingFailureCode,
@@ -669,7 +669,7 @@ import {
669
669
  resolveMemoriesByIdsForSearch2,
670
670
  unifiedSearch2,
671
671
  formatSearchResults2
672
- } from "./index-aw1bh90w.js";
672
+ } from "./index-xn6q9pg6.js";
673
673
  import {
674
674
  flushIgnoredMessages2,
675
675
  clearIgnoredMessages2,
@@ -679,7 +679,7 @@ import {
679
679
  import {
680
680
  setRecompStarting2,
681
681
  setRecompTerminal2
682
- } from "./index-hnm8raee.js";
682
+ } from "./index-1vc7jrkg.js";
683
683
  import {
684
684
  makeToolCompositeKey,
685
685
  searchMessageHistoryOffThread,
@@ -715,6 +715,8 @@ import {
715
715
  replayCavemanCompression,
716
716
  DegradedPassRefusalError,
717
717
  degradedPassError,
718
+ pendingDropEligibilityKey,
719
+ createPendingDropEligibilityCache,
718
720
  applyFlushedStatuses,
719
721
  prewarmTagOwners,
720
722
  waitForTagOwners,
@@ -730,7 +732,7 @@ import {
730
732
  abortSessionFailClosed2,
731
733
  evaluateEmergencyFailClosed2,
732
734
  runPostTransformPhase2
733
- } from "./index-sj89f3b0.js";
735
+ } from "./index-ts1hjk1h.js";
734
736
  import {
735
737
  ANNOUNCEMENT_VERSION2,
736
738
  ANNOUNCEMENT_FEATURES2,
@@ -7016,7 +7018,8 @@ function currentManifest(text) {
7016
7018
  return start < 0 ? text : text.slice(start);
7017
7019
  }
7018
7020
  function parseMapMemoriesCompletion(text, completion, expectedIds) {
7019
- return validateMapMemoriesManifest(currentManifest(assistantText(completion.messages ?? []) || text), expectedIds);
7021
+ const source = /<mappings\b/i.test(text) ? text : assistantText(completion.messages ?? []) || text;
7022
+ return validateMapMemoriesManifest(currentManifest(source), expectedIds);
7020
7023
  }
7021
7024
  function validateClientMapMemories(messages, expectedIds) {
7022
7025
  if (hasLengthCappedOutput(messages)) {
@@ -8984,6 +8987,7 @@ var VERIFY_BATCH_SIZE = 5;
8984
8987
  var VERIFY_TOKENS_PER_MEMORY = 1e5;
8985
8988
  var VERIFY_RUN_TOKEN_BUDGET = 2500000;
8986
8989
  var VERIFY_RUN_SLICE_MS = 240000;
8990
+ var VERIFY_IN_FLIGHT_GRACE_MS = 120000;
8987
8991
  function verifyBatchTokenBudget(size, configured) {
8988
8992
  return Math.min(configured ?? Number.MAX_SAFE_INTEGER, size * VERIFY_TOKENS_PER_MEMORY);
8989
8993
  }
@@ -9070,7 +9074,15 @@ async function runVerifyWithCooldown(args) {
9070
9074
  const runTokenBudget = Math.min(args.tokenBudget ?? VERIFY_RUN_TOKEN_BUDGET, VERIFY_RUN_TOKEN_BUDGET);
9071
9075
  try {
9072
9076
  for (let i = 0;i < batches.length; i += 1) {
9073
- const remainingMs = Math.max(0, Math.min(args.deadline, sliceDeadline) - Date.now());
9077
+ const now = Date.now();
9078
+ const startCutoff = Math.min(args.deadline, sliceDeadline);
9079
+ const hardStop = Math.min(args.deadline, sliceDeadline + VERIFY_IN_FLIGHT_GRACE_MS);
9080
+ const remainingMs = Math.max(0, hardStop - now);
9081
+ if (now >= startCutoff) {
9082
+ result.stopReason = "deadline";
9083
+ log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — the run deadline passed ${now - startCutoff}ms ago`);
9084
+ break;
9085
+ }
9074
9086
  if (remainingMs < VERIFY_BATCH_FLOOR_MS) {
9075
9087
  result.stopReason = "deadline";
9076
9088
  log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — remaining budget ${remainingMs}ms is below the ${VERIFY_BATCH_FLOOR_MS}ms batch floor`);
@@ -13841,12 +13853,12 @@ function buildTriggerInMemoryTail(db, sessionId, messages) {
13841
13853
  function getProactiveCompartmentTriggerPercentage(executeThresholdPercentage) {
13842
13854
  return Math.max(0, executeThresholdPercentage - PROACTIVE_TRIGGER_OFFSET_PERCENTAGE);
13843
13855
  }
13844
- function estimateProjectedPostDropPercentage(db, sessionId, usage, activeTags, keepReasoningTokens, clearedReasoningThroughTag, canClearReasoning, liveBudgetCutoff) {
13856
+ function estimateProjectedPostDropPercentage(db, sessionId, usage, activeTags, keepReasoningTokens, clearedReasoningThroughTag, canClearReasoning, liveBudgetCutoff, eligiblePendingDropTagIds) {
13845
13857
  const totalActiveBytes = activeTags.reduce((sum, tag) => sum + tag.byteSize + tag.reasoningByteSize, 0);
13846
13858
  if (totalActiveBytes === 0)
13847
13859
  return null;
13848
13860
  let droppableBytes = 0;
13849
- const pendingDrops = getPendingOps(db, sessionId).filter((op) => op.operation === "drop");
13861
+ const pendingDrops = getPendingOps(db, sessionId).filter((op) => op.operation === "drop" && eligiblePendingDropTagIds?.has(op.tagId) === true);
13850
13862
  const pendingDropTagIds = new Set(pendingDrops.map((op) => op.tagId));
13851
13863
  if (pendingDrops.length > 0) {
13852
13864
  droppableBytes += activeTags.filter((tag) => pendingDropTagIds.has(tag.tagNumber)).reduce((sum, tag) => sum + tag.byteSize + tag.reasoningByteSize, 0);
@@ -13975,7 +13987,7 @@ function getUnsummarizedTailInfo(db, sessionId, triggerBudget, usage, executeThr
13975
13987
  function formatProjectedPostDropPercentage(value) {
13976
13988
  return value === null ? "none" : `${value.toFixed(1)}%`;
13977
13989
  }
13978
- function checkCompartmentTrigger(db, sessionId, sessionMeta, usage, _previousPercentage, executeThresholdPercentage, triggerBudget, keepReasoningTokens, commitClusterTrigger, preloadedActiveTags, contextLimit, inMemoryTail, taggerFloorOverride, reasoningProjection, reclaimRide) {
13990
+ function checkCompartmentTrigger(db, sessionId, sessionMeta, usage, _previousPercentage, executeThresholdPercentage, triggerBudget, keepReasoningTokens, commitClusterTrigger, preloadedActiveTags, contextLimit, inMemoryTail, taggerFloorOverride, reasoningProjection, reclaimRide, eligiblePendingDropTagIds) {
13979
13991
  if (sessionMeta.compartmentInProgress) {
13980
13992
  sessionLog2(sessionId, `compartment trigger: skipped — historian already in progress (usage=${usage.percentage.toFixed(1)}%)`);
13981
13993
  return { shouldFire: false };
@@ -14039,7 +14051,7 @@ function checkCompartmentTrigger(db, sessionId, sessionMeta, usage, _previousPer
14039
14051
  return { shouldFire: false };
14040
14052
  }
14041
14053
  const canClearReasoning = reasoningProjection?.canClearReasoning ?? modelAcceptsEmptyContent(reasoningProjection?.providerID);
14042
- const projectedPostDropPercentage = estimateProjectedPostDropPercentage(db, sessionId, usage, preloadedActiveTags ?? getActiveTagsBySession2(db, sessionId), keepReasoningTokens, sessionMeta.clearedReasoningThroughTag, canClearReasoning, reasoningProjection?.budgetCutoff);
14054
+ const projectedPostDropPercentage = estimateProjectedPostDropPercentage(db, sessionId, usage, preloadedActiveTags ?? getActiveTagsBySession2(db, sessionId), keepReasoningTokens, sessionMeta.clearedReasoningThroughTag, canClearReasoning, reasoningProjection?.budgetCutoff, eligiblePendingDropTagIds);
14043
14055
  const relativePostDropTarget = executeThresholdPercentage * POST_DROP_TARGET_RATIO;
14044
14056
  const rideLabel = reclaimRide ? reclaimRideLabel(reclaimRide) : "ride=none";
14045
14057
  const dropsCanLand = reclaimRide !== undefined && hasReclaimRide(reclaimRide);
@@ -16258,7 +16270,7 @@ function registerRpcHandlers(rpcServer, args) {
16258
16270
  const db = readDatabase();
16259
16271
  if (!db)
16260
16272
  return { ok: false, error: "db unavailable" };
16261
- const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-dmbeadwt.js"));
16273
+ const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-nwzcfhx4.js"));
16262
16274
  const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-24r4esbh.js"));
16263
16275
  log2(`[rpc] recomp requested for session ${sessionId}`);
16264
16276
  if (!args.client && !args.hiddenCompletionExecutor) {
@@ -16343,7 +16355,7 @@ function registerRpcHandlers(rpcServer, args) {
16343
16355
  const db = readDatabase();
16344
16356
  if (!db)
16345
16357
  return { ok: false, error: "db unavailable" };
16346
- const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-2051r6qm.js"));
16358
+ const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-28xzsj5q.js"));
16347
16359
  const model = liveSessionState.liveModelBySession.get(sessionId);
16348
16360
  const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
16349
16361
  const ctx = {
@@ -23682,6 +23694,13 @@ async function runCompartmentPhaseImpl(args) {
23682
23694
  return snapshot !== null && hasRunnableCompartmentWindow(snapshot);
23683
23695
  }
23684
23696
  async function awaitCompartmentRun(activeRun, reason) {
23697
+ await Promise.resolve();
23698
+ if (activeRun.inlineJoinTimedOutBudgetMs !== undefined && !activeRun.settled) {
23699
+ historianJoinTimedOut = true;
23700
+ historianJoinBudgetMs = activeRun.inlineJoinTimedOutBudgetMs;
23701
+ sessionLog2(args.sessionId, "transform: compartment inline join budget already exhausted for this run — not waiting again");
23702
+ return "timed_out";
23703
+ }
23685
23704
  sessionLog2(args.sessionId, reason);
23686
23705
  const timeoutMs = resolveHistorianInlineJoinBudget(args.historianTimeoutMs);
23687
23706
  historianJoinBudgetMs = timeoutMs;
@@ -23697,6 +23716,7 @@ async function runCompartmentPhaseImpl(args) {
23697
23716
  clearTimeout(timer);
23698
23717
  }
23699
23718
  if (result === "timeout") {
23719
+ activeRun.inlineJoinTimedOutBudgetMs = timeoutMs;
23700
23720
  historianJoinTimedOut = true;
23701
23721
  sessionLog2(args.sessionId, `transform: compartment await timed out after ${timeoutMs}ms — proceeding without waiting`);
23702
23722
  return "timed_out";
@@ -23984,6 +24004,7 @@ function createTransform(deps) {
23984
24004
  memorySyncRequestedSessions: deps.rustMemorySyncRequestedSessions
23985
24005
  }) : undefined;
23986
24006
  let entryReuse;
24007
+ const pendingDropEligibility = createPendingDropEligibilityCache();
23987
24008
  const projectEntry = createLkgEntryProjector({
23988
24009
  onReuse: (stats) => {
23989
24010
  entryReuse = stats;
@@ -24554,6 +24575,18 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
24554
24575
  prewarmTagOwners(db, sessionId, ownerRatio);
24555
24576
  const tagOwnersReady = isTagOwnerSummaryReady2(db, sessionId, ownerRatio);
24556
24577
  let triggerBoundarySnapshot;
24578
+ let dropProjectionEmergency = contextUsageEarly.percentage >= 95;
24579
+ const dropProjectionKey = () => pendingDropEligibilityKey(db, sessionId, lkgInput, {
24580
+ currentTurnId,
24581
+ model: modelForBudget,
24582
+ protectedTokens: deps.protectedTokens,
24583
+ protectedTokenTierOverrides: deps.protectedTokenTierOverrides,
24584
+ protectedTools: deps.protectedTools,
24585
+ keepReasoningTokens: deps.keepReasoningTokens,
24586
+ usableSoft: windowGeometry?.usableSoft ?? boundaryContextLimit,
24587
+ emergency: dropProjectionEmergency,
24588
+ clearedReasoningThroughTag: sessionMeta?.clearedReasoningThroughTag
24589
+ });
24557
24590
  if (fullFeatureMode && !compactionOff && historianRunnable && tagOwnersReady && !sessionMeta.compartmentInProgress) {
24558
24591
  const tTrigger = performance.now();
24559
24592
  try {
@@ -24566,7 +24599,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
24566
24599
  force: contextUsageEarly.percentage >= forceMaterializationPercentage && (contextUsageEarly.percentage >= 95 || getEmergencyInputSample(db, sessionId) === 0),
24567
24600
  explicitFlush: deps.pendingMaterializationSessions.has(sessionId),
24568
24601
  publishedHistory: isCacheBusting
24569
- });
24602
+ }, pendingDropEligibility.read(sessionId, dropProjectionKey()));
24570
24603
  if (triggerResult.shouldFire) {
24571
24604
  sessionLog2(sessionId, `compartment trigger: firing (reason=${triggerResult.reason})`);
24572
24605
  updateSessionMeta(db, sessionId, { compartmentInProgress: true });
@@ -24872,6 +24905,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
24872
24905
  const protectedTagIds = protectedTagNumbers;
24873
24906
  const protectedCutoff = protectionWindow.cutoff;
24874
24907
  const tPostProcess = performance.now();
24908
+ dropProjectionEmergency = thinkingFitRetries.has(sessionId) || contextUsage.percentage >= 95;
24875
24909
  const postTransformResult = await runPostTransformPhase2({
24876
24910
  opencode2: deps.storeGeneration === "v2",
24877
24911
  normalizeRecoveryTail,
@@ -24929,6 +24963,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
24929
24963
  lastHeuristicsTurnId: deps.lastHeuristicsTurnId,
24930
24964
  keepReasoningTokens: resolveKeepReasoningTokens(deps.keepReasoningTokens, currentModelKeyForBoundary),
24931
24965
  protectedTagIds,
24966
+ onPendingDropEligibility: (eligible) => pendingDropEligibility.record(sessionId, dropProjectionKey(), eligible),
24932
24967
  protectedTagNumbers,
24933
24968
  protectedCutoff,
24934
24969
  protectedCount: protectionWindow.status.protectedCount,
@@ -23,7 +23,7 @@ import {
23
23
  TAG_SELECT_COLUMNS2,
24
24
  getCandidateToolOwners2,
25
25
  pickNearestPriorOwner2
26
- } from "./index-fwefky9w.js";
26
+ } from "./index-mht7bq0z.js";
27
27
  import {
28
28
  OMO_INTERNAL_INITIATOR_MARKER,
29
29
  isSystemDirective,
@@ -7292,4 +7292,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
7292
7292
  });
7293
7293
  }
7294
7294
 
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 };
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, readEpochFloorSnapshot, 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 };
@@ -15,7 +15,7 @@ import {
15
15
  getActiveCompartmentRun,
16
16
  markActiveCompartmentRunPublished,
17
17
  registerActiveCompartmentRun
18
- } from "./index-2jr1smmh.js";
18
+ } from "./index-snp5wbge.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-b16gpywn.js";
30
+ } from "./index-944w16m0.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-hnm8raee.js";
40
+ } from "./index-1vc7jrkg.js";
41
41
 
42
42
  // src/hooks/magic-context/wrapup-orchestrator.ts
43
43
  import * as crypto from "node:crypto";
@@ -92,7 +92,7 @@ import {
92
92
  getRawSessionTagKeysThrough2,
93
93
  getLegacyProtectedTailStartOrdinal2,
94
94
  readSessionChunk2
95
- } from "./index-b16gpywn.js";
95
+ } from "./index-944w16m0.js";
96
96
  import {
97
97
  getHarness2,
98
98
  harnessOwnsOpenCodeStore2
@@ -159,7 +159,7 @@ import {
159
159
  LATEST_SUPPORTED_VERSION,
160
160
  getPersistedSchemaVersion,
161
161
  openDatabase
162
- } from "./index-qkd9zz0p.js";
162
+ } from "./index-yxycg7fs.js";
163
163
  import {
164
164
  inRootAsyncContext2,
165
165
  Database2,
@@ -236,7 +236,7 @@ import {
236
236
  toMessageIndexSource2,
237
237
  clearIndexedMessagesInTransaction2,
238
238
  indexSourcesAfterOrdinal2
239
- } from "./index-v13skev1.js";
239
+ } from "./index-thvnpfsv.js";
240
240
  import {
241
241
  stripWellFormedLeadingTagPrefix,
242
242
  stripTagPrefix,
@@ -249,7 +249,7 @@ import {
249
249
  foldShrunkPartTags2,
250
250
  getTagNumberByMessageId2,
251
251
  getActiveTagsBySession2
252
- } from "./index-fwefky9w.js";
252
+ } from "./index-mht7bq0z.js";
253
253
  import {
254
254
  isStrictGapHealingMessage2,
255
255
  noteRawSessionSummaryRowWritten2,
@@ -3482,6 +3482,7 @@ Examples:
3482
3482
  - Every displayed raw message ordinal MUST appear in exactly one compartment. Gaps between compartments are invalid. When a displayed block is pure tool-only noise with no narrative text, do NOT skip it — extend the preceding compartment's \`end\` to absorb the range, or fold it into the current compartment if it's part of an ongoing work unit. Never create a dedicated compartment just to cover a tool-only run.
3483
3483
  - If a chunk is entirely tool-only with no narrative text (a long autonomous coding stretch), produce a single compartment whose narrative is derived from what the tools collectively accomplished.
3484
3484
  - If the chunk ends mid-topic, leave the unfinished portion out and report its first message index in \`<unprocessed_from>\`.
3485
+ - If every message in the chunk is covered by a compartment, nothing is unprocessed: set \`<unprocessed_from>\` to the chunk's last message index + 1. Never write \`0\` or the last covered index in that case.
3485
3486
 
3486
3487
  ---
3487
3488
 
@@ -5129,6 +5130,9 @@ class V2StoreReaderPool {
5129
5130
  capacity;
5130
5131
  connections = new Map;
5131
5132
  closed = false;
5133
+ closing = false;
5134
+ holds = 0;
5135
+ idleWaiters = new Set;
5132
5136
  constructor(capacity = 4) {
5133
5137
  this.capacity = capacity;
5134
5138
  if (!Number.isSafeInteger(capacity) || capacity < 1)
@@ -5173,13 +5177,63 @@ class V2StoreReaderPool {
5173
5177
  if (connection.leases === 0)
5174
5178
  closeConnection(connection);
5175
5179
  }
5180
+ hold() {
5181
+ if (this.closed || this.closing)
5182
+ throw new Error("Store reader pool is closed");
5183
+ this.holds++;
5184
+ let released = false;
5185
+ return () => {
5186
+ if (released)
5187
+ return;
5188
+ released = true;
5189
+ this.holds--;
5190
+ if (this.holds === 0 && this.closing)
5191
+ this.finishClose();
5192
+ };
5193
+ }
5194
+ isClosed() {
5195
+ return this.closed;
5196
+ }
5197
+ holdCount() {
5198
+ return this.holds;
5199
+ }
5176
5200
  close() {
5201
+ if (this.closed || this.closing)
5202
+ return;
5203
+ this.closing = true;
5204
+ if (this.holds === 0)
5205
+ this.finishClose();
5206
+ }
5207
+ async closeWhenIdle(timeoutMs) {
5208
+ this.close();
5209
+ if (this.closed)
5210
+ return true;
5211
+ let timer;
5212
+ let waiter;
5213
+ try {
5214
+ await new Promise((resolve) => {
5215
+ waiter = resolve;
5216
+ this.idleWaiters.add(resolve);
5217
+ timer = setTimeout(resolve, Math.max(0, timeoutMs));
5218
+ });
5219
+ } finally {
5220
+ if (timer)
5221
+ clearTimeout(timer);
5222
+ if (waiter)
5223
+ this.idleWaiters.delete(waiter);
5224
+ }
5225
+ return this.closed;
5226
+ }
5227
+ finishClose() {
5177
5228
  if (this.closed)
5178
5229
  return;
5179
5230
  this.closed = true;
5180
5231
  for (const connection of this.connections.values())
5181
5232
  this.retire(connection);
5182
5233
  this.connections.clear();
5234
+ for (const resolve of this.idleWaiters)
5235
+ resolve();
5236
+ this.idleWaiters.clear();
5183
5237
  }
5184
5238
  }
5185
5239
 
@@ -8966,6 +9020,28 @@ function hiddenToolLoop(identity) {
8966
9020
  function hiddenAgentAllowedTools(agent) {
8967
9021
  return agent !== undefined && Object.hasOwn(AGENT_TOOLS, agent) ? AGENT_TOOLS[agent] : undefined;
8968
9022
  }
9023
+ var HIDDEN_RUN_DISPOSED_REASON = "the Magic Context plugin instance that started this hidden run was disposed (OpenCode reloaded the plugin), so the run was cancelled; the work is retried on a later run";
9024
+ var DISPOSED_CHILDREN_KEY = Symbol.for("@cortexkit/magic-context/v2/disposed-hidden-children");
9025
+ var DISPOSED_CHILDREN_LIMIT = 512;
9026
+ function disposedChildren() {
9027
+ const store = globalThis;
9028
+ store[DISPOSED_CHILDREN_KEY] ??= new Set;
9029
+ return store[DISPOSED_CHILDREN_KEY];
9030
+ }
9031
+ function noteChildOfDisposedInstance(sessionID) {
9032
+ const children = disposedChildren();
9033
+ children.delete(sessionID);
9034
+ children.add(sessionID);
9035
+ while (children.size > DISPOSED_CHILDREN_LIMIT) {
9036
+ const oldest = children.values().next().value;
9037
+ if (oldest === undefined)
9038
+ break;
9039
+ children.delete(oldest);
9040
+ }
9041
+ }
9042
+ function isChildOfDisposedInstance(sessionID) {
9043
+ return disposedChildren().has(sessionID);
9044
+ }
8969
9045
  function hiddenChildPermissions(agent, providerID) {
8970
9046
  const tools = AGENT_TOOLS[agent] ?? [];
8971
9047
  const visible = tools.length === 0 && needsBlockedRead(agent, providerID) ? ["read"] : tools;
@@ -8997,6 +9073,8 @@ async function registerHiddenChildAgents(agent) {
8997
9073
  }
8998
9074
  function hiddenToolCallRefusal(call, hook) {
8999
9075
  const owned = hook.owns(call.sessionID);
9076
+ if (!owned && isChildOfDisposedInstance(call.sessionID))
9077
+ return `Magic Context hidden child ${call.sessionID} refused: ${HIDDEN_RUN_DISPOSED_REASON}; ${call.tool} refused`;
9000
9078
  const agent = owned ? hook.agentFor(call.sessionID) ?? call.agent : call.agent;
9001
9079
  const allowed = hiddenAgentAllowedTools(agent);
9002
9080
  if (allowed === undefined) {
@@ -9126,6 +9204,9 @@ class HiddenChildHook {
9126
9204
  }
9127
9205
  compactionSummary(sessionID, agent) {
9128
9206
  if (!this.owns(sessionID)) {
9207
+ if (isChildOfDisposedInstance(sessionID)) {
9208
+ this.refuse(`Refusing to compact a Magic Context hidden child of a disposed plugin instance: ${HIDDEN_RUN_DISPOSED_REASON}`, { sessionID, messages: [] }, undefined, undefined, "hidden_instance_disposed");
9209
+ }
9129
9210
  if (hiddenAgentAllowedTools(agent) !== undefined) {
9130
9211
  this.refuse("Refusing to compact a Magic Context hidden-agent session this instance did not register", { sessionID, messages: [] }, undefined);
9131
9212
  }
@@ -9140,7 +9221,7 @@ class HiddenChildHook {
9140
9221
  }
9141
9222
  return marker;
9142
9223
  }
9143
- refuse(reason, draft, raw, inFlight) {
9224
+ refuse(reason, draft, raw, inFlight, code = "hidden_prompt_unrecognized") {
9144
9225
  const registered = [...this.attempts.values()].filter((attempt) => attempt.childSessionId === draft.sessionID && attempt.marker).map((attempt) => {
9145
9226
  const marker = attempt.marker;
9146
9227
  return {
@@ -9161,7 +9242,7 @@ class HiddenChildHook {
9161
9242
  active: this.active.has(draft.sessionID),
9162
9243
  ...inFlight === undefined ? {} : { in_flight: inFlight }
9163
9244
  })}`);
9164
- const refusal = new HiddenCompletionRefusal("hidden_prompt_unrecognized", reason, true);
9245
+ const refusal = new HiddenCompletionRefusal(code, reason, true);
9165
9246
  for (const attempt of this.attempts.values()) {
9166
9247
  if (attempt.childSessionId === draft.sessionID)
9167
9248
  attempt.refusal = refusal;
@@ -9176,6 +9257,9 @@ class HiddenChildHook {
9176
9257
  }
9177
9258
  apply(draft) {
9178
9259
  if (!this.owns(draft.sessionID)) {
9260
+ if (isChildOfDisposedInstance(draft.sessionID)) {
9261
+ this.refuse(`Refusing a turn of a Magic Context hidden child of a disposed plugin instance: ${HIDDEN_RUN_DISPOSED_REASON}`, draft, newestUserText(draft), undefined, "hidden_instance_disposed");
9262
+ }
9179
9263
  if (hiddenAgentAllowedTools(draft.agent) !== undefined) {
9180
9264
  this.refuse("Refusing a Magic Context hidden-agent turn this instance did not register", draft, newestUserText(draft));
9181
9265
  }
@@ -10701,16 +10785,19 @@ function validateParsedCompartments(compartments, chunkStart, chunkEnd, unproces
10701
10785
  expectedStart = compartment.endMessage + 1;
10702
10786
  }
10703
10787
  if (unprocessedFrom !== null) {
10788
+ if (expectedStart <= chunkEnd) {
10789
+ if (unprocessedFrom !== expectedStart) {
10790
+ return `<unprocessed_from> ${unprocessedFrom} does not match next uncovered message ${expectedStart}`;
10791
+ }
10792
+ return null;
10793
+ }
10704
10794
  if (unprocessedFrom === chunkEnd + 1) {
10705
10795
  return null;
10706
10796
  }
10707
10797
  if (unprocessedFrom < chunkStart || unprocessedFrom > chunkEnd) {
10708
10798
  return `<unprocessed_from> ${unprocessedFrom} is outside chunk ${chunkStart}-${chunkEnd}`;
10709
10799
  }
10710
- if (unprocessedFrom !== expectedStart) {
10711
- return `<unprocessed_from> ${unprocessedFrom} does not match next uncovered message ${expectedStart}`;
10712
- }
10713
- return null;
10800
+ return `<unprocessed_from> ${unprocessedFrom} does not match completed chunk boundary ${chunkEnd + 1}`;
10714
10801
  }
10715
10802
  if (expectedStart <= chunkEnd) {
10716
10803
  return `output left uncovered messages ${expectedStart}-${chunkEnd} without <unprocessed_from>`;
@@ -21679,6 +21766,7 @@ function registerActiveCompartmentRun(sessionId, promise, kind = "other") {
21679
21766
  kind
21680
21767
  };
21681
21768
  const wrapped = promise.finally(() => {
21769
+ activeRun.settled = true;
21682
21770
  if (activeRuns.get(sessionId)?.promise === wrapped) {
21683
21771
  activeRuns.delete(sessionId);
21684
21772
  }
@@ -21841,4 +21929,4 @@ async function executeContextRecomp(deps, options = {}) {
21841
21929
  return (await executeContextRecompWithResult(deps, options)).message;
21842
21930
  }
21843
21931
 
21844
- export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildZenReadAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, providerResponseFailed, isSuccessfulProviderCompletion, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, currentLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, clearLkgMeasuredRequest, saveLkgSlotToDb, clearPersistedLkgSlotStrict, loadPersistedLkgSlot, drainStaleLkgSlots, createDbLkgPersistence, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, validateAnthropicReasoningRuns, validateLkgSeam, replayLkg, coldStartRawServedIndex, coldStartUncapturedReplay, noteUncertifiedNormalLkg, hasProcessLocalLkgProof, lkgDirtyRevision, rememberLkgDirtyRevision, noteLkgRecoveryPrefix, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgRecoveryReplayUnproven, lkgRecoveryEntryUnproven, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, raceWithSignal, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, sumTokensFromChildMessages, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, buildMagicContextSection, getMuralIdentity, getMural, modelKeyAcceptsImages, resolveMuralWire, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, prepareCompactionMarkerCandidates, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, noteTransformPassForExactOrdinalReads, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
21932
+ export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildZenReadAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, providerResponseFailed, isSuccessfulProviderCompletion, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, currentLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, clearLkgMeasuredRequest, saveLkgSlotToDb, clearPersistedLkgSlotStrict, loadPersistedLkgSlot, drainStaleLkgSlots, createDbLkgPersistence, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, validateAnthropicReasoningRuns, validateLkgSeam, replayLkg, coldStartRawServedIndex, coldStartUncapturedReplay, noteUncertifiedNormalLkg, hasProcessLocalLkgProof, lkgDirtyRevision, rememberLkgDirtyRevision, noteLkgRecoveryPrefix, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgRecoveryReplayUnproven, lkgRecoveryEntryUnproven, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, HIDDEN_RUN_DISPOSED_REASON, noteChildOfDisposedInstance, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, raceWithSignal, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, sumTokensFromChildMessages, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, buildMagicContextSection, getMuralIdentity, getMural, modelKeyAcceptsImages, resolveMuralWire, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, prepareCompactionMarkerCandidates, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, noteTransformPassForExactOrdinalReads, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
@@ -23,7 +23,7 @@ import {
23
23
  } from "./index-wafzvyhg.js";
24
24
  import {
25
25
  cleanUserText2
26
- } from "./index-b16gpywn.js";
26
+ } from "./index-944w16m0.js";
27
27
  import {
28
28
  recordMessageFtsRowid,
29
29
  recordIndexedMessageTime,