@cortexkit/opencode-magic-context 0.49.2 → 0.49.3

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 (114) hide show
  1. package/README.md +2 -38
  2. package/dist/auto-search-worker.js +3 -3
  3. package/dist/compaction-marker-candidates-dd638ypn.js +19 -0
  4. package/dist/compaction-marker-candidates-worker.js +24 -0
  5. package/dist/{conflict-warning-hook-asnt6hfc.js → conflict-warning-hook-ae8nmv7c.js} +5 -4
  6. package/dist/{context-tfyhtdcs.js → context-9tbxh883.js} +63 -29
  7. package/dist/{embedding-backfill-wyc3ykyf.js → embedding-backfill-aj488s8x.js} +5 -5
  8. package/dist/features/magic-context/compaction-marker-candidates-worker.d.ts +2 -0
  9. package/dist/features/magic-context/compaction-marker-candidates-worker.d.ts.map +1 -0
  10. package/dist/features/magic-context/compaction-marker-candidates.d.ts +47 -0
  11. package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -0
  12. package/dist/features/magic-context/compaction-marker.d.ts +12 -0
  13. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  14. package/dist/features/magic-context/memory/project-identity.d.ts +5 -1
  15. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
  16. package/dist/features/magic-context/message-index-async.d.ts +3 -0
  17. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  18. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  19. package/dist/features/magic-context/storage-clone.d.ts +2 -0
  20. package/dist/features/magic-context/storage-clone.d.ts.map +1 -1
  21. package/dist/features/magic-context/storage-tags.d.ts +1 -1
  22. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  23. package/dist/hooks/magic-context/compaction-marker-manager.d.ts +3 -0
  24. package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -1
  25. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  26. package/dist/hooks/magic-context/history-boundary-repair.d.ts +11 -2
  27. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -1
  28. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +4 -3
  29. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  30. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +10 -0
  31. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  32. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  33. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  34. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  35. package/dist/{index-sfhndpcb.js → index-3wckxwfp.js} +39 -39
  36. package/dist/{index-gzky5rva.js → index-41gqa557.js} +4 -2
  37. package/dist/{index-r2zcs71c.js → index-7ndnvw7a.js} +1 -1
  38. package/dist/{index-sv0bb7vg.js → index-7zg9dvx0.js} +35 -4
  39. package/dist/{index-xgrwmj82.js → index-bhk710rw.js} +1 -1
  40. package/dist/{index-fg00p1cg.js → index-c0b01zrc.js} +2 -2
  41. package/dist/{index-rafsaxac.js → index-fjtgekd4.js} +2 -2
  42. package/dist/{index-fdtkt5r1.js → index-fst3t0d9.js} +9 -9
  43. package/dist/{index-6tfxmc4n.js → index-je2na55n.js} +4 -4
  44. package/dist/{index-h5zfkjyk.js → index-jpm52v9x.js} +6 -24
  45. package/dist/{index-s7fc0fkn.js → index-m4p77myp.js} +1 -1
  46. package/dist/{index-xnanvj3w.js → index-mgy5dwcw.js} +607 -579
  47. package/dist/{index-0pjvpfkf.js → index-qvr78ej6.js} +1 -1
  48. package/dist/{index-zfzdpeq2.js → index-s4ztdn8v.js} +1311 -1271
  49. package/dist/index-v0p37hm2.js +22 -0
  50. package/dist/{index-eypn4ba6.js → index-w9pe0nx1.js} +3 -3
  51. package/dist/{index-p0n5ryq8.js → index-ws3gcy5m.js} +19 -9
  52. package/dist/{index-att4bfan.js → index-xfbfrngb.js} +1 -1
  53. package/dist/{index-nydv6g8r.js → index-yqps2zsv.js} +44 -6
  54. package/dist/index-yxawqmdd.js +212 -0
  55. package/dist/{index-zg8yq4ya.js → index-znzgze2v.js} +3 -3
  56. package/dist/index.js +38 -35
  57. package/dist/{message-index-bounded-hqktkhdy.js → message-index-bounded-pv6ct15d.js} +18 -17
  58. package/dist/message-index-jqa7qd0s.js +60 -0
  59. package/dist/migration-worker.js +3 -3
  60. package/dist/{project-embedding-registry-0gv3h6y8.js → project-embedding-registry-fcmszatg.js} +4 -4
  61. package/dist/raw-ordinal-warmup-worker.js +22 -5
  62. package/dist/{read-session-chunk-5mh0bh8y.js → read-session-chunk-cwgjwjd0.js} +7 -6
  63. package/dist/{read-session-raw-8sjbc9h0.js → read-session-raw-z38cn0as.js} +2 -1
  64. package/dist/{recomp-orchestrator-kpkhkjhq.js → recomp-orchestrator-txcc802e.js} +19 -17
  65. package/dist/{search-p9w39qv4.js → search-v1t47s2q.js} +14 -13
  66. package/dist/{send-session-notification-xffh3bbe.js → send-session-notification-yp9m5g4p.js} +4 -3
  67. package/dist/shared/tag-owner-id.d.ts +1 -0
  68. package/dist/shared/tag-owner-id.d.ts.map +1 -1
  69. package/dist/{storage-tags-k0pda32s.js → storage-tags-0ssbmzg9.js} +2 -2
  70. package/dist/{transform-postprocess-phase-481j5a7z.js → transform-postprocess-phase-113rwew1.js} +19 -17
  71. package/dist/v2/auto-search-worker.js +3 -3
  72. package/dist/v2/compaction-marker-candidates-1s21e2fz.js +18 -0
  73. package/dist/v2/compaction-marker-candidates-worker.js +24 -0
  74. package/dist/v2/{context-gsdtha5v.js → context-p1xf3w5q.js} +115 -44
  75. package/dist/v2/{embedding-backfill-dbvjbcmm.js → embedding-backfill-9hbkfvnz.js} +5 -5
  76. package/dist/v2/{message-index-bounded-p6v0n8qh.js → message-index-bounded-c0810p5w.js} +17 -16
  77. package/dist/v2/message-index-h8ssgq3q.js +59 -0
  78. package/dist/v2/migration-worker.js +3 -3
  79. package/dist/v2/{project-embedding-registry-nyq7z8y6.js → project-embedding-registry-42th7k1z.js} +4 -4
  80. package/dist/v2/raw-ordinal-warmup-worker.js +22 -5
  81. package/dist/v2/{read-session-chunk-fhyfe4qa.js → read-session-chunk-n86v9xfg.js} +6 -5
  82. package/dist/v2/{read-session-raw-j8dvp7f4.js → read-session-raw-3b3ehga4.js} +2 -1
  83. package/dist/v2/{recomp-orchestrator-5xy7w136.js → recomp-orchestrator-v168jwgg.js} +16 -14
  84. package/dist/v2/{search-j7bakcwa.js → search-048v8y02.js} +13 -12
  85. package/dist/v2/{send-session-notification-f6v698r5.js → send-session-notification-a4h2azxa.js} +2 -1
  86. package/dist/v2/{server-bgzy0phk.js → server-3bc6k4k4.js} +62 -33
  87. package/dist/v2/{server-7h861yms.js → server-3dqjhchy.js} +5 -18
  88. package/dist/v2/{server-c7n2ftng.js → server-4n2tknpc.js} +34 -3
  89. package/dist/v2/server-51779zs2.js +19 -0
  90. package/dist/v2/{server-kh958yj8.js → server-5zrpr764.js} +1 -1
  91. package/dist/v2/{server-6tcrjfw8.js → server-8pqnnmf9.js} +1 -1
  92. package/dist/v2/server-9290a1mb.js +212 -0
  93. package/dist/v2/{server-7vkj6zhb.js → server-9a6v0wth.js} +3 -3
  94. package/dist/v2/{server-1fszbabv.js → server-cjz51jm2.js} +2 -2
  95. package/dist/v2/{server-7spkq1y6.js → server-cxxjb33r.js} +2286 -2246
  96. package/dist/v2/{server-mqvtz7wz.js → server-hetyb88z.js} +9 -9
  97. package/dist/v2/{server-4c7jt8gq.js → server-pcygfdbs.js} +44 -6
  98. package/dist/v2/{server-8xmq9h3f.js → server-q6j5dasr.js} +4 -2
  99. package/dist/v2/{server-zbxjj2mz.js → server-rygvffsf.js} +2 -2
  100. package/dist/v2/server.js +4 -4
  101. package/dist/v2/{storage-tags-5yxrvkaf.js → storage-tags-3a4cavqb.js} +2 -2
  102. package/dist/v2/{wrapup-orchestrator-yem5422s.js → wrapup-orchestrator-zcyf8ymw.js} +14 -12
  103. package/dist/{wrapup-orchestrator-xvrr27ws.js → wrapup-orchestrator-5aa2q4v3.js} +20 -18
  104. package/package.json +3 -3
  105. package/src/config/latch-permanence-guard.test.ts +6 -1
  106. package/src/shared/sqlite-writer-diagnostics.test.ts +21 -10
  107. package/src/shared/tag-owner-id.ts +13 -0
  108. package/src/shared/tag-transcript.test.ts +6 -1
  109. package/src/shared/tag-transcript.ts +2 -1
  110. package/src/shared/windows-hidden-spawns.test.ts +60 -4
  111. /package/dist/{index-69vas84q.js → index-e6xnpach.js} +0 -0
  112. /package/dist/{index-p1hnwfd8.js → index-gcdb3rqw.js} +0 -0
  113. /package/dist/v2/{index-69vas84q.js → index-e6xnpach.js} +0 -0
  114. /package/dist/v2/{server-s2st631p.js → server-8wcf79fe.js} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ registerExitAbort
3
+ } from "./server-51779zs2.js";
1
4
  import {
2
5
  log2
3
6
  } from "./server-t4k4qexw.js";
@@ -9,24 +12,6 @@ import {
9
12
  // src/hooks/magic-context/raw-ordinal-warmup.ts
10
13
  import { Worker } from "node:worker_threads";
11
14
 
12
- // src/shared/exit-abort-registry.ts
13
- var controllers = new Set;
14
- var listenerRegistered = false;
15
- function abortAll() {
16
- for (const controller of controllers) {
17
- try {
18
- controller.abort();
19
- } catch {}
20
- }
21
- }
22
- function registerExitAbort(controller) {
23
- controllers.add(controller);
24
- if (listenerRegistered)
25
- return;
26
- listenerRegistered = true;
27
- process.once("exit", abortAll);
28
- }
29
-
30
15
  // src/hooks/magic-context/read-session-raw.ts
31
16
  import { isMainThread } from "node:worker_threads";
32
17
  function isStrictGapHealingMessage2(message) {
@@ -1205,6 +1190,8 @@ function runSessionWarmupWorker(input, options) {
1205
1190
  finish({ delta: reply.delta });
1206
1191
  else if (reply.kind === "indexed")
1207
1192
  finish({ inserted: reply.inserted, measurements: reply.measurements });
1193
+ else if (reply.kind === "orphan-sweep")
1194
+ finish({ orphanSweep: reply.result });
1208
1195
  else
1209
1196
  finish({ failure: "worker-error", detail: reply.error });
1210
1197
  });
@@ -23,7 +23,7 @@ import {
23
23
  TAG_SELECT_COLUMNS2,
24
24
  getCandidateToolOwners2,
25
25
  pickNearestPriorOwner2
26
- } from "./server-4c7jt8gq.js";
26
+ } from "./server-pcygfdbs.js";
27
27
  import {
28
28
  OMO_INTERNAL_INITIATOR_MARKER,
29
29
  isSystemDirective,
@@ -68,7 +68,7 @@ import {
68
68
  readRawSeedTailFromDb2,
69
69
  readRawSessionBoundaryEndpointsFromDb2,
70
70
  prewarmRawSessionOrdinalsForDb
71
- } from "./server-7h861yms.js";
71
+ } from "./server-3dqjhchy.js";
72
72
  import {
73
73
  openCodeDbExists,
74
74
  withReadOnlySessionDb,
@@ -3919,6 +3919,29 @@ function clearPendingCompactionMarkerStateIf(db, sessionId, expected) {
3919
3919
  WHERE session_id = ? AND pending_compaction_marker_state = ?`).run(sessionId, expectedBlob);
3920
3920
  return result.changes > 0;
3921
3921
  }
3922
+ function isPendingPiCompactionMarker(value) {
3923
+ return typeof value === "object" && value !== null && (value.firstKeptEntryId === null || typeof value.firstKeptEntryId === "string") && typeof value.endMessageId === "string" && typeof value.ordinal === "number" && typeof value.tokensBefore === "number" && typeof value.summary === "string" && typeof value.publishedAt === "number";
3924
+ }
3925
+ function getPendingPiCompactionMarkerState(db, sessionId) {
3926
+ const row = db.prepare("SELECT pending_pi_compaction_marker_state FROM session_meta WHERE session_id = ?").get(sessionId);
3927
+ const raw = row?.pending_pi_compaction_marker_state;
3928
+ if (raw === null || raw === undefined || raw === "")
3929
+ return null;
3930
+ try {
3931
+ const parsed = JSON.parse(raw);
3932
+ if (isPendingPiCompactionMarker(parsed)) {
3933
+ return parsed;
3934
+ }
3935
+ } catch {}
3936
+ db.prepare("UPDATE session_meta SET pending_pi_compaction_marker_state = NULL WHERE session_id = ? AND pending_pi_compaction_marker_state = ?").run(sessionId, raw);
3937
+ return null;
3938
+ }
3939
+ function clearPendingPiCompactionMarkerStateIf(db, sessionId, expected) {
3940
+ const expectedBlob = stableStringify(expected);
3941
+ const result = db.prepare(`UPDATE session_meta SET pending_pi_compaction_marker_state = NULL
3942
+ WHERE session_id = ? AND pending_pi_compaction_marker_state = ?`).run(sessionId, expectedBlob);
3943
+ return result.changes > 0;
3944
+ }
3922
3945
  function setSessionWorkMetrics(db, sessionId, newWorkTokens, totalInputTokens) {
3923
3946
  ensureSessionMetaRow(db, sessionId);
3924
3947
  db.prepare(`UPDATE session_meta
@@ -6800,6 +6823,14 @@ function readSessionChunk2(sessionId, tokenBudget, offset = 1, eligibleEndOrdina
6800
6823
  pinComponentWhenFormattedBudgetCrosses(msg.ordinal, text);
6801
6824
  }
6802
6825
  if (flushCurrentBlock() && pendingNoiseMeta.length > 0) {
6826
+ const lastNoise = pendingNoiseMeta[pendingNoiseMeta.length - 1];
6827
+ if (messagesProcessed > 0 && lastNoise) {
6828
+ lineMeta.push(...pendingNoiseMeta);
6829
+ messagesProcessed += pendingNoiseMeta.length;
6830
+ lastOrdinal = lastNoise.ordinal;
6831
+ lastMessageId = lastNoise.messageId;
6832
+ pendingNoiseMeta = [];
6833
+ }
6803
6834
  highestScannedOrdinal = Math.max(highestScannedOrdinal, pendingNoiseMeta[pendingNoiseMeta.length - 1]?.ordinal ?? highestScannedOrdinal);
6804
6835
  }
6805
6836
  const toolOnlyRanges = [];
@@ -6857,4 +6888,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
6857
6888
  });
6858
6889
  }
6859
6890
 
6860
- export { detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, expandToolPart, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, 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, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, 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, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, 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, 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 };
6891
+ export { detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, expandToolPart, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, 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, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, 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, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, 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, 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 };
@@ -0,0 +1,19 @@
1
+ // src/shared/exit-abort-registry.ts
2
+ var controllers = new Set;
3
+ var listenerRegistered = false;
4
+ function abortAll() {
5
+ for (const controller of controllers) {
6
+ try {
7
+ controller.abort();
8
+ } catch {}
9
+ }
10
+ }
11
+ function registerExitAbort(controller) {
12
+ controllers.add(controller);
13
+ if (listenerRegistered)
14
+ return;
15
+ listenerRegistered = true;
16
+ process.once("exit", abortAll);
17
+ }
18
+
19
+ export { registerExitAbort };
@@ -15,7 +15,7 @@ import {
15
15
  OpenAICompatibleEmbeddingProvider,
16
16
  getProjectEmbeddingSnapshot2,
17
17
  embedBatchForProject2
18
- } from "./server-1fszbabv.js";
18
+ } from "./server-cjz51jm2.js";
19
19
  import {
20
20
  isEmbeddingHostBusy2
21
21
  } from "./server-qt1qqasc.js";
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  normalizeStoredProjectPath,
22
22
  storedPathBelongsToIdentity
23
- } from "./server-8xmq9h3f.js";
23
+ } from "./server-q6j5dasr.js";
24
24
  import {
25
25
  logSlowWriteTransaction
26
26
  } from "./server-3t0q2cqx.js";
@@ -0,0 +1,212 @@
1
+ import {
2
+ registerExitAbort
3
+ } from "./server-51779zs2.js";
4
+ import {
5
+ log2
6
+ } from "./server-t4k4qexw.js";
7
+ import {
8
+ getSqliteDatabasePath2
9
+ } from "./server-kb9nn0a0.js";
10
+
11
+ // src/features/magic-context/compaction-marker-candidates.ts
12
+ import { existsSync, realpathSync } from "node:fs";
13
+ import { fileURLToPath } from "node:url";
14
+ import { Worker } from "node:worker_threads";
15
+ var candidates = new WeakMap;
16
+ var pending = new WeakMap;
17
+ var workers = new Set;
18
+ var missingWorkerWarnings = new Set;
19
+ var ownWriteRevisions = new Map;
20
+ var exitRegistered = false;
21
+ function reportWorkerUnavailable(entry, detail) {
22
+ if (missingWorkerWarnings.has(entry.href))
23
+ return;
24
+ missingWorkerWarnings.add(entry.href);
25
+ const path = entry.protocol === "file:" ? fileURLToPath(entry) : entry.href;
26
+ log2(`[magic-context] [ERROR] compaction-marker: candidate worker unavailable ${path}: ${detail}; marker unchanged, advancement deferred`);
27
+ }
28
+ var MARKER_CERTIFICATION_SQL = `SELECT
29
+ (SELECT rowid FROM message WHERE id = ?) AS previousRowid,
30
+ (SELECT rowid FROM message ORDER BY rowid DESC LIMIT 1) AS newestRowid,
31
+ (SELECT id FROM message ORDER BY rowid DESC LIMIT 1) AS newestId,
32
+ EXISTS(SELECT 1 FROM message
33
+ WHERE rowid > ? AND +session_id = ? AND json_valid(data)
34
+ AND COALESCE(json_extract(data, '$.summary'), 0) = 1) AS newSummary`;
35
+ function isMarkerCandidateBasisCurrent2(db, basis) {
36
+ if (basis.connection !== db || ownWriteRevisions.get(basis.revisionKey) !== basis.ownWriteRevision)
37
+ return false;
38
+ try {
39
+ const current = db.prepare(MARKER_CERTIFICATION_SQL).get(basis.frontier?.id ?? null, basis.frontier?.rowid ?? 0, basis.sessionId);
40
+ if (current.newSummary || basis.frontier && (current.previousRowid !== basis.frontier.rowid || current.newestRowid === null || current.newestRowid < basis.frontier.rowid))
41
+ return false;
42
+ if (current.newestRowid !== null && (!Number.isSafeInteger(current.newestRowid) || current.newestId === null))
43
+ return false;
44
+ basis.frontier = current.newestRowid === null || current.newestId === null ? null : { rowid: current.newestRowid, id: current.newestId };
45
+ return true;
46
+ } catch {
47
+ return false;
48
+ }
49
+ }
50
+ function invalidateMarkerCandidateBasis2(db, sessionId) {
51
+ candidates.get(db)?.delete(sessionId);
52
+ const path = getSqliteDatabasePath2(db);
53
+ if (!path)
54
+ return;
55
+ const key = `${realpathSync(path)}\x00${sessionId}`;
56
+ const revision = ownWriteRevisions.get(key);
57
+ if (revision !== undefined)
58
+ ownWriteRevisions.set(key, revision + 1);
59
+ }
60
+ function readMarkerCandidateBasis2(db, sessionId) {
61
+ const basis = candidates.get(db)?.get(sessionId);
62
+ if (basis && isMarkerCandidateBasisCurrent2(db, basis))
63
+ return basis;
64
+ candidates.get(db)?.delete(sessionId);
65
+ return;
66
+ }
67
+ function prepareMarkerCandidateBasis2(db, sessionId, options = {}) {
68
+ if (readMarkerCandidateBasis2(db, sessionId))
69
+ return Promise.resolve(true);
70
+ const path = getSqliteDatabasePath2(db);
71
+ if (!path || db.inTransaction)
72
+ return Promise.resolve(false);
73
+ const active = pending.get(db) ?? new Map;
74
+ const existing = active.get(sessionId);
75
+ if (existing)
76
+ return existing;
77
+ const revisionKey = `${realpathSync(path)}\x00${sessionId}`;
78
+ const ownWriteRevision = ownWriteRevisions.get(revisionKey) ?? 0;
79
+ ownWriteRevisions.set(revisionKey, ownWriteRevision);
80
+ const entry = options.entry ?? markerWorkerEntry();
81
+ if (entry.protocol === "file:" && !existsSync(fileURLToPath(entry))) {
82
+ reportWorkerUnavailable(entry, "file missing");
83
+ return Promise.resolve(false);
84
+ }
85
+ const preparation = runCandidateWorker(path, sessionId, options).then((snapshot) => {
86
+ if (!snapshot)
87
+ return false;
88
+ const basis = {
89
+ ...snapshot,
90
+ connection: db,
91
+ sessionId,
92
+ revisionKey,
93
+ ownWriteRevision
94
+ };
95
+ if (!isMarkerCandidateBasisCurrent2(db, basis)) {
96
+ candidates.get(db)?.delete(sessionId);
97
+ log2(`[magic-context] compaction-marker: deferred candidate preparation for ${sessionId}: summary set or frontier changed during discovery; marker unchanged`);
98
+ return false;
99
+ }
100
+ const sessions = candidates.get(db) ?? new Map;
101
+ sessions.set(sessionId, basis);
102
+ candidates.set(db, sessions);
103
+ return true;
104
+ }).finally(() => {
105
+ if (active.get(sessionId) === preparation)
106
+ active.delete(sessionId);
107
+ });
108
+ active.set(sessionId, preparation);
109
+ pending.set(db, active);
110
+ return preparation;
111
+ }
112
+ function markerWorkerEntry() {
113
+ return new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./compaction-marker-candidates-worker.ts" : "./compaction-marker-candidates-worker.js", import.meta.url);
114
+ }
115
+ function runCandidateWorker(path, sessionId, options) {
116
+ if (!exitRegistered) {
117
+ exitRegistered = true;
118
+ const controller = new AbortController;
119
+ controller.signal.addEventListener("abort", () => {
120
+ for (const worker of workers) {
121
+ worker.terminate();
122
+ worker.unref();
123
+ }
124
+ }, { once: true });
125
+ registerExitAbort(controller);
126
+ }
127
+ return new Promise((resolve) => {
128
+ const entry = options.entry ?? markerWorkerEntry();
129
+ let worker;
130
+ let timer;
131
+ let done = false;
132
+ const finish = (snapshot) => {
133
+ if (done)
134
+ return;
135
+ done = true;
136
+ clearTimeout(timer);
137
+ if (!worker) {
138
+ resolve(snapshot);
139
+ return;
140
+ }
141
+ workers.delete(worker);
142
+ const stopped = worker.terminate();
143
+ worker.unref();
144
+ stopped.then(() => resolve(snapshot), () => resolve(snapshot));
145
+ };
146
+ const deadline = (ms) => {
147
+ clearTimeout(timer);
148
+ timer = setTimeout(() => {
149
+ reportWorkerUnavailable(entry, "worker deadline exceeded");
150
+ finish();
151
+ }, ms);
152
+ timer.unref?.();
153
+ };
154
+ try {
155
+ worker = new Worker(entry, { workerData: { path, sessionId } });
156
+ workers.add(worker);
157
+ worker.unref();
158
+ deadline(options.acceptMs ?? 2000);
159
+ worker.on("message", (reply) => {
160
+ if (reply.kind === "accepted")
161
+ deadline(options.resultMs ?? 600000);
162
+ else if (reply.kind === "candidates")
163
+ finish(reply.snapshot);
164
+ else {
165
+ reportWorkerUnavailable(entry, reply.error);
166
+ finish();
167
+ }
168
+ });
169
+ worker.on("error", (error) => {
170
+ reportWorkerUnavailable(entry, error.message);
171
+ finish();
172
+ });
173
+ worker.on("exit", (code) => {
174
+ if (!done)
175
+ reportWorkerUnavailable(entry, `worker exited before replying (${code})`);
176
+ finish();
177
+ });
178
+ } catch (error) {
179
+ reportWorkerUnavailable(entry, error instanceof Error ? error.message : String(error));
180
+ finish();
181
+ }
182
+ });
183
+ }
184
+ function scanMarkerSummaryCandidates(db, sessionId) {
185
+ const ownsSnapshot = !db.inTransaction;
186
+ if (ownsSnapshot)
187
+ db.exec("BEGIN");
188
+ try {
189
+ return db.prepare(`SELECT id FROM message WHERE session_id=? AND
190
+ CASE WHEN json_valid(data) THEN COALESCE(json_extract(data,'$.summary'),0) ELSE 0 END=1`).all(sessionId).map((row) => row.id);
191
+ } finally {
192
+ if (ownsSnapshot)
193
+ db.exec("ROLLBACK");
194
+ }
195
+ }
196
+ function scanMarkerCandidateSnapshot2(db, sessionId) {
197
+ const ownsSnapshot = !db.inTransaction;
198
+ if (ownsSnapshot)
199
+ db.exec("BEGIN");
200
+ try {
201
+ const ids = scanMarkerSummaryCandidates(db, sessionId);
202
+ const frontier = db.prepare("SELECT rowid,id FROM message ORDER BY rowid DESC LIMIT 1").get() ?? null;
203
+ if (frontier && !Number.isSafeInteger(frontier.rowid))
204
+ throw new Error("marker frontier rowid is not a safe integer");
205
+ return { ids, frontier };
206
+ } finally {
207
+ if (ownsSnapshot)
208
+ db.exec("ROLLBACK");
209
+ }
210
+ }
211
+
212
+ export { isMarkerCandidateBasisCurrent2, invalidateMarkerCandidateBasis2, readMarkerCandidateBasis2, prepareMarkerCandidateBasis2, scanMarkerCandidateSnapshot2 };
@@ -45,7 +45,7 @@ import {
45
45
  hasPendingMigrations,
46
46
  getMainThreadMigrationBodyCount,
47
47
  runMigrations
48
- } from "./server-6tcrjfw8.js";
48
+ } from "./server-8pqnnmf9.js";
49
49
  import {
50
50
  ensureColumn,
51
51
  installV95PerfSchema,
@@ -58,7 +58,7 @@ import {
58
58
  import {
59
59
  bootQuietRemainingMs,
60
60
  scheduleAfterBootQuiet
61
- } from "./server-8xmq9h3f.js";
61
+ } from "./server-q6j5dasr.js";
62
62
  import {
63
63
  setDatabase,
64
64
  loadToolDefinitionMeasurements
@@ -1198,7 +1198,7 @@ function finishDatabaseOpen(db, dbPath, explicitDbPath, latestSupportedVersion)
1198
1198
  startMessageFtsRowidMapBackfill(db).then(async () => {
1199
1199
  if (!readsOpenCodeStore)
1200
1200
  return;
1201
- const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-fhyfe4qa.js"));
1201
+ const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-n86v9xfg.js"));
1202
1202
  const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-cje68egj.js"));
1203
1203
  await startMessageTimeBackfill(db, Object.assign(readRawSessionMessages, {
1204
1204
  readPage: readRawSessionMessagePage
@@ -40,7 +40,7 @@ import {
40
40
  loadUnembeddedSessionChunkCandidatesPolite,
41
41
  countSessionCompartmentEmbedCoverage,
42
42
  countUnembeddedSessionCompartmentsPolite
43
- } from "./server-s2st631p.js";
43
+ } from "./server-8wcf79fe.js";
44
44
  import {
45
45
  saveEmbeddingIfHashMatches,
46
46
  getMemoryEmbedCoverage,
@@ -56,7 +56,7 @@ import {
56
56
  import {
57
57
  isUserHomeDirectory,
58
58
  setBootQuietPeriodForTests
59
- } from "./server-8xmq9h3f.js";
59
+ } from "./server-q6j5dasr.js";
60
60
  import {
61
61
  logSlowWriteTransaction
62
62
  } from "./server-3t0q2cqx.js";