@cortexkit/opencode-magic-context 0.49.30 → 0.49.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-search-worker.js +4 -4
- package/dist/chunk-embedding-write-worker.js +1 -1
- package/dist/{compartment-chunk-embedding-qgp0tbf7.js → compartment-chunk-embedding-5q5gj67r.js} +1 -1
- package/dist/{context-vnfr6d7t.js → context-n27jdyyh.js} +150 -19
- package/dist/{embedding-backfill-mms9nb0h.js → embedding-backfill-0jgtqxen.js} +3 -3
- package/dist/features/magic-context/chunk-scope-repair-revision.d.ts +4 -0
- package/dist/features/magic-context/chunk-scope-repair-revision.d.ts.map +1 -0
- package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts +3 -3
- package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-gates.d.ts +2 -0
- package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/verify.d.ts +13 -17
- package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +3 -0
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-native-replay.d.ts +2 -0
- package/dist/features/magic-context/storage-native-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/apply-operations.d.ts +11 -1
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-branch-index.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-branch-index.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +2 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +2 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +11 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-gxkhzmjq.js → index-2743x98y.js} +65 -2
- package/dist/{index-adr4vfys.js → index-2agkcr3y.js} +2 -2
- package/dist/{index-ekzzw66a.js → index-3drcgsnf.js} +74 -385
- package/dist/index-94ef0qe2.js +429 -0
- package/dist/{index-pe6b4bhs.js → index-as2amvn3.js} +1 -1
- package/dist/{index-k0dpkyn7.js → index-bzwh06cp.js} +4 -3
- package/dist/{index-vzz570j8.js → index-g0kqnc6y.js} +13 -4
- package/dist/{index-vtz789ex.js → index-qr2mb02j.js} +16 -5
- package/dist/{index-vnn5405n.js → index-rfxzazzy.js} +1 -1
- package/dist/{index-69gd2scx.js → index-t6b3px80.js} +2 -2
- package/dist/{index-mm93m7y6.js → index-v7287tzq.js} +47 -7
- package/dist/index.js +16 -14
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/{project-embedding-registry-cg281d9j.js → project-embedding-registry-6yex0r9f.js} +2 -2
- package/dist/{recomp-orchestrator-w3pjp33d.js → recomp-orchestrator-6ncc6wrw.js} +6 -6
- package/dist/{search-fbaz1m8r.js → search-040pac3a.js} +6 -5
- package/dist/shared/tag-transcript.d.ts +4 -1
- package/dist/shared/tag-transcript.d.ts.map +1 -1
- package/dist/shared/transcript.d.ts +3 -1
- package/dist/shared/transcript.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-6ccazq85.js → transform-postprocess-phase-wvt1k03d.js} +7 -6
- package/dist/v2/auto-search-worker.js +4 -4
- package/dist/v2/chunk-embedding-write-worker.js +1 -1
- package/dist/v2/{compartment-chunk-embedding-63dzs31c.js → compartment-chunk-embedding-rc31e6md.js} +1 -1
- package/dist/v2/{context-wx4sfhgr.js → context-ehews84p.js} +229 -286
- package/dist/v2/{embedding-backfill-35k6czrr.js → embedding-backfill-f43hd8y6.js} +3 -3
- package/dist/v2/fold/owner.d.ts +4 -0
- package/dist/v2/fold/owner.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +3 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/{project-embedding-registry-p1p10ks7.js → project-embedding-registry-1x5qe2fy.js} +2 -2
- package/dist/v2/{recomp-orchestrator-wb28kr9k.js → recomp-orchestrator-3r9kcs61.js} +5 -5
- package/dist/v2/{search-q3jjw6zp.js → search-q3wkpe8t.js} +5 -5
- package/dist/v2/{server-p0snacz3.js → server-2aasmpsp.js} +1 -1
- package/dist/v2/{server-k33t88h3.js → server-4n176b5m.js} +4 -3
- package/dist/v2/{server-zh3esb0z.js → server-ab8017gw.js} +65 -2
- package/dist/v2/{server-4sn3at8p.js → server-h1byrhwx.js} +47 -7
- package/dist/v2/{server-42nebt63.js → server-n14edf07.js} +336 -25
- package/dist/v2/{server-ph300d6m.js → server-tkdabx8q.js} +1 -1
- package/dist/v2/server.js +2 -2
- package/dist/v2/{wrapup-orchestrator-2t0pdqzm.js → wrapup-orchestrator-ddmvbkra.js} +5 -5
- package/dist/{wrapup-orchestrator-kjmkms5g.js → wrapup-orchestrator-fyvyzcbm.js} +7 -7
- package/package.json +1 -1
- package/src/shared/tag-transcript.ts +34 -5
- package/src/shared/transcript.ts +1 -1
|
@@ -46,15 +46,13 @@ import {
|
|
|
46
46
|
import {
|
|
47
47
|
inRootAsyncContext2,
|
|
48
48
|
Database2,
|
|
49
|
-
getSqliteDatabasePath2,
|
|
50
49
|
getSqliteMemoryStats2,
|
|
51
50
|
withSqliteBackgroundWriter2,
|
|
52
51
|
withSqliteTransformPass2,
|
|
53
52
|
withoutSqliteTransformPass2,
|
|
54
53
|
isTransientSqliteError2,
|
|
55
54
|
SqliteAcquisitionBusyError2,
|
|
56
|
-
withAsyncPrivilegedWriter2
|
|
57
|
-
indexCoordinationInput2
|
|
55
|
+
withAsyncPrivilegedWriter2
|
|
58
56
|
} from "./index-gzy5w8ya.js";
|
|
59
57
|
import {
|
|
60
58
|
pruneMissingProjectIdentities,
|
|
@@ -266,7 +264,7 @@ import {
|
|
|
266
264
|
snapRangeToCompartments,
|
|
267
265
|
getActiveCompartmentRun,
|
|
268
266
|
startCompartmentAgent
|
|
269
|
-
} from "./index-
|
|
267
|
+
} from "./index-bzwh06cp.js";
|
|
270
268
|
import {
|
|
271
269
|
hasTrustedAbsoluteWall,
|
|
272
270
|
applyProvenInputFloor,
|
|
@@ -352,8 +350,7 @@ import {
|
|
|
352
350
|
isRawCompactionSummaryInfo2,
|
|
353
351
|
extractInMemoryMessageViews2,
|
|
354
352
|
buildInMemoryTailRawMessages2,
|
|
355
|
-
RawOrdinalsNotReady2
|
|
356
|
-
runSessionWarmupWorker
|
|
353
|
+
RawOrdinalsNotReady2
|
|
357
354
|
} from "./index-rverk2vz.js";
|
|
358
355
|
import {
|
|
359
356
|
openCodeDbExists,
|
|
@@ -556,7 +553,7 @@ import {
|
|
|
556
553
|
embedSessionCompartmentChunks2,
|
|
557
554
|
getEmbeddingCoverageStatus2,
|
|
558
555
|
getAutoEmbeddingSessionCoverage2
|
|
559
|
-
} from "./index-
|
|
556
|
+
} from "./index-2743x98y.js";
|
|
560
557
|
import {
|
|
561
558
|
SubcClient,
|
|
562
559
|
connectionFileExists,
|
|
@@ -566,14 +563,7 @@ import {
|
|
|
566
563
|
SynapseEmbeddingProvider
|
|
567
564
|
} from "./index-wfybj1dw.js";
|
|
568
565
|
import {
|
|
569
|
-
|
|
570
|
-
isMessageIndexSourceCurrent,
|
|
571
|
-
getLastIndexedOrdinal,
|
|
572
|
-
getMessageIndexReconciliationStartOrdinal,
|
|
573
|
-
isMessageIndexReconciledThrough,
|
|
574
|
-
clearIndexedMessages,
|
|
575
|
-
indexSingleMessage,
|
|
576
|
-
indexMessagesAfterOrdinal
|
|
566
|
+
getLastIndexedOrdinal
|
|
577
567
|
} from "./index-4s4zq97n.js";
|
|
578
568
|
import {
|
|
579
569
|
renderUserFacingFailure,
|
|
@@ -618,7 +608,7 @@ import {
|
|
|
618
608
|
readGitFileChangeTimesSince,
|
|
619
609
|
verificationFileExists,
|
|
620
610
|
normalizeVerificationFiles
|
|
621
|
-
} from "./index-
|
|
611
|
+
} from "./index-as2amvn3.js";
|
|
622
612
|
import {
|
|
623
613
|
registerNotificationSink2,
|
|
624
614
|
pushNotification2,
|
|
@@ -638,7 +628,7 @@ import {
|
|
|
638
628
|
} from "./index-4dhv7mqz.js";
|
|
639
629
|
import {
|
|
640
630
|
cosineSimilarity
|
|
641
|
-
} from "./index-
|
|
631
|
+
} from "./index-rfxzazzy.js";
|
|
642
632
|
import {
|
|
643
633
|
computeCueContentHash,
|
|
644
634
|
hasMuralCueColumns,
|
|
@@ -684,7 +674,13 @@ import {
|
|
|
684
674
|
resolveMemoriesByIdsForSearch2,
|
|
685
675
|
unifiedSearch2,
|
|
686
676
|
formatSearchResults2
|
|
687
|
-
} from "./index-
|
|
677
|
+
} from "./index-qr2mb02j.js";
|
|
678
|
+
import {
|
|
679
|
+
scheduleReconciliation,
|
|
680
|
+
scheduleIncrementalIndex,
|
|
681
|
+
getMessageIndexQueueHeapStats,
|
|
682
|
+
clearSessionTracking
|
|
683
|
+
} from "./index-94ef0qe2.js";
|
|
688
684
|
import {
|
|
689
685
|
flushIgnoredMessages2,
|
|
690
686
|
clearIgnoredMessages2,
|
|
@@ -694,7 +690,7 @@ import {
|
|
|
694
690
|
import {
|
|
695
691
|
setRecompStarting2,
|
|
696
692
|
setRecompTerminal2
|
|
697
|
-
} from "./index-
|
|
693
|
+
} from "./index-2agkcr3y.js";
|
|
698
694
|
import {
|
|
699
695
|
makeToolCompositeKey,
|
|
700
696
|
searchMessageHistoryOffThread,
|
|
@@ -757,7 +753,7 @@ import {
|
|
|
757
753
|
abortSessionFailClosed2,
|
|
758
754
|
evaluateEmergencyFailClosed2,
|
|
759
755
|
runPostTransformPhase2
|
|
760
|
-
} from "./index-
|
|
756
|
+
} from "./index-g0kqnc6y.js";
|
|
761
757
|
import {
|
|
762
758
|
ANNOUNCEMENT_VERSION2,
|
|
763
759
|
ANNOUNCEMENT_FEATURES2,
|
|
@@ -7013,7 +7009,6 @@ function parseMapMemoriesManifest(text) {
|
|
|
7013
7009
|
}
|
|
7014
7010
|
function validateMapMemoriesManifest(text, expectedIds) {
|
|
7015
7011
|
const parsed = parseMapMemoriesManifest(text);
|
|
7016
|
-
assertParsedManifestNonEmpty(parsed.length, expectedIds.size, text, "mappings", "memory");
|
|
7017
7012
|
assertNoDuplicateManifestIds(parsed.filter((entry) => expectedIds.has(entry.id)).map((entry) => entry.id), "mappings");
|
|
7018
7013
|
return parsed;
|
|
7019
7014
|
}
|
|
@@ -8583,16 +8578,47 @@ function getDreamTaskBacklog(db, projectPath, task, options = {}) {
|
|
|
8583
8578
|
}
|
|
8584
8579
|
}
|
|
8585
8580
|
var backlogCaches = new WeakMap;
|
|
8581
|
+
var displayBacklogCaches = new WeakMap;
|
|
8582
|
+
var DISPLAY_BACKLOG_MAX_AGE_MS = 60000;
|
|
8586
8583
|
function getDreamTaskBacklogs(db, projectPath, tasks = CANONICAL_DREAM_TASKS, options = {}) {
|
|
8587
8584
|
if (tasks.length === 0)
|
|
8588
8585
|
return {};
|
|
8589
8586
|
if (!isKnownAutocommit(db)) {
|
|
8590
8587
|
backlogCaches.delete(db);
|
|
8588
|
+
displayBacklogCaches.delete(db);
|
|
8591
8589
|
const result = {};
|
|
8592
8590
|
for (const task of tasks)
|
|
8593
8591
|
result[task] = getDreamTaskBacklog(db, projectPath, task, options);
|
|
8594
8592
|
return result;
|
|
8595
8593
|
}
|
|
8594
|
+
if (options.display) {
|
|
8595
|
+
let entries = displayBacklogCaches.get(db);
|
|
8596
|
+
if (!entries) {
|
|
8597
|
+
entries = new Map;
|
|
8598
|
+
displayBacklogCaches.set(db, entries);
|
|
8599
|
+
}
|
|
8600
|
+
const optionKey = (value) => value === undefined ? "omitted" : value === null ? "null" : `number:${value}`;
|
|
8601
|
+
const key = JSON.stringify([
|
|
8602
|
+
projectPath,
|
|
8603
|
+
tasks,
|
|
8604
|
+
optionKey(options.lastRunAt),
|
|
8605
|
+
optionKey(options.retrospectiveWatermarkMs)
|
|
8606
|
+
]);
|
|
8607
|
+
const now = Date.now();
|
|
8608
|
+
const cached = entries.get(key);
|
|
8609
|
+
if (cached && now < cached.expiresAt && now >= cached.expiresAt - DISPLAY_BACKLOG_MAX_AGE_MS)
|
|
8610
|
+
return structuredClone(cached.value);
|
|
8611
|
+
const value = {};
|
|
8612
|
+
for (const task of tasks)
|
|
8613
|
+
value[task] = getDreamTaskBacklog(db, projectPath, task, options);
|
|
8614
|
+
if (entries.size >= 256)
|
|
8615
|
+
entries.delete(entries.keys().next().value);
|
|
8616
|
+
entries.set(key, {
|
|
8617
|
+
expiresAt: now + DISPLAY_BACKLOG_MAX_AGE_MS,
|
|
8618
|
+
value: structuredClone(value)
|
|
8619
|
+
});
|
|
8620
|
+
return value;
|
|
8621
|
+
}
|
|
8596
8622
|
let cache = backlogCaches.get(db);
|
|
8597
8623
|
if (!cache) {
|
|
8598
8624
|
cache = {
|
|
@@ -9083,8 +9109,7 @@ function parsePartialVerifyManifest(text, expectedIds) {
|
|
|
9083
9109
|
var VERIFY_BATCH_SIZE = 5;
|
|
9084
9110
|
var VERIFY_TOKENS_PER_MEMORY = 1e5;
|
|
9085
9111
|
var VERIFY_RUN_TOKEN_BUDGET = 2500000;
|
|
9086
|
-
var
|
|
9087
|
-
var VERIFY_IN_FLIGHT_GRACE_MS = 120000;
|
|
9112
|
+
var VERIFY_BATCH_DEFAULT_MS = 240000;
|
|
9088
9113
|
function verifyBatchTokenBudget(size, configured) {
|
|
9089
9114
|
return Math.min(configured ?? Number.MAX_SAFE_INTEGER, size * VERIFY_TOKENS_PER_MEMORY);
|
|
9090
9115
|
}
|
|
@@ -9114,8 +9139,8 @@ function validateVerifyCompletion(messages, text, expectedIds, responseText = te
|
|
|
9114
9139
|
}
|
|
9115
9140
|
var IDENTICAL_PROVIDER_FAILURE_BATCH_LIMIT = 2;
|
|
9116
9141
|
var VERIFY_BATCH_FLOOR_MS = 30000;
|
|
9117
|
-
function computeVerifyBatchSliceMs(remainingMs,
|
|
9118
|
-
return Math.min(remainingMs,
|
|
9142
|
+
function computeVerifyBatchSliceMs(remainingMs, batchesRemaining) {
|
|
9143
|
+
return Math.min(remainingMs, Math.max(VERIFY_BATCH_DEFAULT_MS, remainingMs / Math.max(1, batchesRemaining)));
|
|
9119
9144
|
}
|
|
9120
9145
|
function closeBroadCycle(args, cycleStartAt) {
|
|
9121
9146
|
if (!args.forceBroad || cycleStartAt === undefined)
|
|
@@ -9139,7 +9164,6 @@ async function runVerify(args) {
|
|
|
9139
9164
|
}
|
|
9140
9165
|
async function runVerifyWithCooldown(args) {
|
|
9141
9166
|
const runStartedAt = Date.now();
|
|
9142
|
-
const sliceDeadline = runStartedAt + VERIFY_RUN_SLICE_MS;
|
|
9143
9167
|
const result = {
|
|
9144
9168
|
verified: 0,
|
|
9145
9169
|
updated: 0,
|
|
@@ -9187,12 +9211,10 @@ async function runVerifyWithCooldown(args) {
|
|
|
9187
9211
|
try {
|
|
9188
9212
|
for (let i = 0;i < batches.length; i += 1) {
|
|
9189
9213
|
const now = Date.now();
|
|
9190
|
-
const
|
|
9191
|
-
|
|
9192
|
-
const remainingMs = Math.max(0, hardStop - now);
|
|
9193
|
-
if (now >= startCutoff) {
|
|
9214
|
+
const remainingMs = Math.max(0, args.deadline - now);
|
|
9215
|
+
if (now >= args.deadline) {
|
|
9194
9216
|
result.stopReason = "deadline";
|
|
9195
|
-
log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — the run deadline passed ${now -
|
|
9217
|
+
log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — the run deadline passed ${now - args.deadline}ms ago`);
|
|
9196
9218
|
break;
|
|
9197
9219
|
}
|
|
9198
9220
|
if (remainingMs < VERIFY_BATCH_FLOOR_MS) {
|
|
@@ -10131,7 +10153,7 @@ function createDreamTaskExecutor(deps) {
|
|
|
10131
10153
|
return { status: "failed", transient: true, error };
|
|
10132
10154
|
}
|
|
10133
10155
|
const processed = result.mapped + result.independent;
|
|
10134
|
-
if (processed > 0) {
|
|
10156
|
+
if (processed > 0 || result.failure === undefined) {
|
|
10135
10157
|
const progress = `map-memories: committed ${processed} mapping(s) (mapped ${result.mapped}, independent ${result.independent}); ${result.remaining} remain`;
|
|
10136
10158
|
recordRun("completed", null, { progress });
|
|
10137
10159
|
return { status: "completed" };
|
|
@@ -12816,349 +12838,6 @@ function getActiveMemoryImportanceHistogram(db, projectPath) {
|
|
|
12816
12838
|
};
|
|
12817
12839
|
}
|
|
12818
12840
|
|
|
12819
|
-
// src/features/magic-context/message-index-async.ts
|
|
12820
|
-
var indexCancellations = new Map;
|
|
12821
|
-
var sessionEpochs = new Map;
|
|
12822
|
-
var workerMeasurements = new WeakMap;
|
|
12823
|
-
function isDatabaseLockedError(error) {
|
|
12824
|
-
if (!error || typeof error !== "object")
|
|
12825
|
-
return false;
|
|
12826
|
-
const e = error;
|
|
12827
|
-
if (typeof e.code === "string") {
|
|
12828
|
-
if (e.code === "SQLITE_BUSY" || e.code === "SQLITE_LOCKED")
|
|
12829
|
-
return true;
|
|
12830
|
-
}
|
|
12831
|
-
if (typeof e.message === "string") {
|
|
12832
|
-
if (/database is locked/i.test(e.message))
|
|
12833
|
-
return true;
|
|
12834
|
-
if (/sqlite_(busy|locked)/i.test(e.message))
|
|
12835
|
-
return true;
|
|
12836
|
-
}
|
|
12837
|
-
return false;
|
|
12838
|
-
}
|
|
12839
|
-
var INCREMENTAL_DEBOUNCE_MS = 100;
|
|
12840
|
-
var RECONCILIATION_BATCH_SIZE = 100;
|
|
12841
|
-
|
|
12842
|
-
class MagicContextMessageIndexHeapHolder {
|
|
12843
|
-
reconciledSessions = new Set;
|
|
12844
|
-
reconciledSnapshots = new Map;
|
|
12845
|
-
stalledSessions = new Set;
|
|
12846
|
-
reconciliationScheduledSessions = new Set;
|
|
12847
|
-
clearAndReindexScheduledSessions = new Map;
|
|
12848
|
-
sessionLocks = new Map;
|
|
12849
|
-
incrementalTimers = new Map;
|
|
12850
|
-
pendingIncrementalKeys = new Set;
|
|
12851
|
-
completedIncrementalKeys = new Set;
|
|
12852
|
-
activeReconcilerBuffers = new Map;
|
|
12853
|
-
}
|
|
12854
|
-
var heapHolder = new MagicContextMessageIndexHeapHolder;
|
|
12855
|
-
function clearCompletedIncrementalKeys(sessionId) {
|
|
12856
|
-
const prefix = `${sessionId}\x00`;
|
|
12857
|
-
for (const key of heapHolder.completedIncrementalKeys) {
|
|
12858
|
-
if (key.startsWith(prefix))
|
|
12859
|
-
heapHolder.completedIncrementalKeys.delete(key);
|
|
12860
|
-
}
|
|
12861
|
-
}
|
|
12862
|
-
var PREPARE_RETRY_MS = 60000;
|
|
12863
|
-
async function sourceReady(source, sessionId) {
|
|
12864
|
-
const prepare = source?.prepare;
|
|
12865
|
-
return typeof prepare === "function" ? prepare(sessionId) : true;
|
|
12866
|
-
}
|
|
12867
|
-
function defer(fn) {
|
|
12868
|
-
const immediate = globalThis.setImmediate;
|
|
12869
|
-
if (typeof immediate === "function") {
|
|
12870
|
-
inRootAsyncContext2(() => immediate(fn));
|
|
12871
|
-
return;
|
|
12872
|
-
}
|
|
12873
|
-
inRootAsyncContext2(() => setTimeout(fn, 0));
|
|
12874
|
-
}
|
|
12875
|
-
function yieldToEventLoop() {
|
|
12876
|
-
return new Promise((resolve) => defer(resolve));
|
|
12877
|
-
}
|
|
12878
|
-
function runWithSessionLock(sessionId, operation) {
|
|
12879
|
-
const previous = heapHolder.sessionLocks.get(sessionId) ?? Promise.resolve();
|
|
12880
|
-
const run = previous.catch(() => {
|
|
12881
|
-
return;
|
|
12882
|
-
}).then(async () => {
|
|
12883
|
-
await operation();
|
|
12884
|
-
});
|
|
12885
|
-
heapHolder.sessionLocks.set(sessionId, run);
|
|
12886
|
-
run.finally(() => {
|
|
12887
|
-
if (heapHolder.sessionLocks.get(sessionId) === run) {
|
|
12888
|
-
heapHolder.sessionLocks.delete(sessionId);
|
|
12889
|
-
}
|
|
12890
|
-
}).catch(() => {
|
|
12891
|
-
return;
|
|
12892
|
-
});
|
|
12893
|
-
return run;
|
|
12894
|
-
}
|
|
12895
|
-
function logIndexingError(sessionId, action, error) {
|
|
12896
|
-
if (isDatabaseLockedError(error)) {
|
|
12897
|
-
sessionLog2(sessionId, `message FTS async ${action} skipped (database busy; will retry on next reconciliation)`);
|
|
12898
|
-
return;
|
|
12899
|
-
}
|
|
12900
|
-
sessionLog2(sessionId, `message FTS async ${action} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
12901
|
-
log2(`[message-index-async] ${action} failed for ${sessionId}:`, error);
|
|
12902
|
-
}
|
|
12903
|
-
function serializedMessageBytes(messages) {
|
|
12904
|
-
try {
|
|
12905
|
-
return Buffer.byteLength(JSON.stringify(messages));
|
|
12906
|
-
} catch {
|
|
12907
|
-
return 0;
|
|
12908
|
-
}
|
|
12909
|
-
}
|
|
12910
|
-
function logReconciliationStall(sessionId, reason) {
|
|
12911
|
-
if (heapHolder.stalledSessions.has(sessionId))
|
|
12912
|
-
return;
|
|
12913
|
-
heapHolder.stalledSessions.add(sessionId);
|
|
12914
|
-
sessionLog2(sessionId, `message FTS reconciliation stalled: ${reason}; will retry`);
|
|
12915
|
-
}
|
|
12916
|
-
async function reconcileSessionIndex(db, sessionId, readMessages) {
|
|
12917
|
-
if (!await sourceReady(readMessages, sessionId)) {
|
|
12918
|
-
logReconciliationStall(sessionId, "raw message reader is not ready");
|
|
12919
|
-
return false;
|
|
12920
|
-
}
|
|
12921
|
-
await runWithSessionLock(sessionId, async () => {
|
|
12922
|
-
if (!readMessages.getRevision && heapHolder.reconciledSessions.has(sessionId))
|
|
12923
|
-
return;
|
|
12924
|
-
let fallbackSnapshot = null;
|
|
12925
|
-
try {
|
|
12926
|
-
const fullReader = typeof readMessages === "function" ? readMessages : null;
|
|
12927
|
-
const revision = readMessages.getRevision?.(sessionId);
|
|
12928
|
-
const previous = heapHolder.reconciledSnapshots.get(sessionId);
|
|
12929
|
-
const finalWatermark = previous && revision === previous.revision ? previous.count : revision !== undefined && readMessages.getCountAfterRevision ? previous && revision > previous.revision ? previous.count + readMessages.getCountAfterRevision(sessionId, previous.revision, revision) : readMessages.getCountAfterRevision(sessionId, -1, revision) : readMessages.getCount ? readMessages.getCount(sessionId) : (fallbackSnapshot = fullReader?.(sessionId) ?? []).length;
|
|
12930
|
-
let cursor = getMessageIndexReconciliationStartOrdinal(db, sessionId);
|
|
12931
|
-
let after = cursor === previous?.count ? previous.after : undefined;
|
|
12932
|
-
while (cursor < finalWatermark) {
|
|
12933
|
-
const pageEnd = Math.min(finalWatermark, cursor + RECONCILIATION_BATCH_SIZE);
|
|
12934
|
-
const messages = readMessages.readPage ? readMessages.readPage(sessionId, cursor, RECONCILIATION_BATCH_SIZE, finalWatermark, after) : (fallbackSnapshot ?? []).filter((message) => message.ordinal > cursor && message.ordinal <= pageEnd);
|
|
12935
|
-
const retainedMessages = fallbackSnapshot ?? messages;
|
|
12936
|
-
heapHolder.activeReconcilerBuffers.set(sessionId, retainedMessages);
|
|
12937
|
-
withSqliteBackgroundWriter2(() => indexMessagesAfterOrdinal(db, sessionId, messages, cursor, pageEnd));
|
|
12938
|
-
const nextCursor = getMessageIndexReconciliationStartOrdinal(db, sessionId);
|
|
12939
|
-
if (nextCursor <= cursor)
|
|
12940
|
-
break;
|
|
12941
|
-
cursor = nextCursor;
|
|
12942
|
-
const last = messages.at(-1);
|
|
12943
|
-
after = last?.ordinal === cursor && typeof last.createdAt === "number" ? { timeCreated: last.createdAt, id: last.id } : undefined;
|
|
12944
|
-
if (cursor < finalWatermark) {
|
|
12945
|
-
await yieldToEventLoop();
|
|
12946
|
-
}
|
|
12947
|
-
}
|
|
12948
|
-
if (isMessageIndexReconciledThrough(db, sessionId, finalWatermark)) {
|
|
12949
|
-
heapHolder.reconciledSessions.add(sessionId);
|
|
12950
|
-
if (revision !== undefined) {
|
|
12951
|
-
if (!after && finalWatermark > 0 && readMessages.readPage) {
|
|
12952
|
-
const last = readMessages.readPage(sessionId, finalWatermark - 1, 1, finalWatermark).at(-1);
|
|
12953
|
-
if (last?.ordinal === finalWatermark && typeof last.createdAt === "number")
|
|
12954
|
-
after = { timeCreated: last.createdAt, id: last.id };
|
|
12955
|
-
}
|
|
12956
|
-
heapHolder.reconciledSnapshots.set(sessionId, {
|
|
12957
|
-
revision,
|
|
12958
|
-
count: finalWatermark,
|
|
12959
|
-
after
|
|
12960
|
-
});
|
|
12961
|
-
}
|
|
12962
|
-
} else {
|
|
12963
|
-
logReconciliationStall(sessionId, `gap after ordinal ${cursor} (store count ${finalWatermark})`);
|
|
12964
|
-
}
|
|
12965
|
-
} finally {
|
|
12966
|
-
heapHolder.activeReconcilerBuffers.delete(sessionId);
|
|
12967
|
-
}
|
|
12968
|
-
});
|
|
12969
|
-
return true;
|
|
12970
|
-
}
|
|
12971
|
-
function scheduleReconciliation(db, sessionId, readMessages) {
|
|
12972
|
-
if (!readMessages.getRevision && heapHolder.reconciledSessions.has(sessionId) || heapHolder.reconciliationScheduledSessions.has(sessionId)) {
|
|
12973
|
-
return;
|
|
12974
|
-
}
|
|
12975
|
-
heapHolder.reconciliationScheduledSessions.add(sessionId);
|
|
12976
|
-
scheduleAfterBootQuiet(() => {
|
|
12977
|
-
defer(() => {
|
|
12978
|
-
let appendedDuringReconciliation = false;
|
|
12979
|
-
const previousSnapshot = heapHolder.reconciledSnapshots.get(sessionId);
|
|
12980
|
-
reconcileSessionIndex(db, sessionId, readMessages).then((ran) => {
|
|
12981
|
-
if (ran) {
|
|
12982
|
-
const snapshot = heapHolder.reconciledSnapshots.get(sessionId);
|
|
12983
|
-
appendedDuringReconciliation = snapshot !== undefined && snapshot !== previousSnapshot && readMessages.getRevision !== undefined && readMessages.getRevision(sessionId) !== snapshot.revision;
|
|
12984
|
-
return;
|
|
12985
|
-
}
|
|
12986
|
-
inRootAsyncContext2(() => setTimeout(() => {
|
|
12987
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
12988
|
-
scheduleReconciliation(db, sessionId, readMessages);
|
|
12989
|
-
}, PREPARE_RETRY_MS)).unref?.();
|
|
12990
|
-
}).catch((error) => {
|
|
12991
|
-
logReconciliationStall(sessionId, error instanceof Error ? error.message : String(error));
|
|
12992
|
-
if (isDatabaseLockedError(error))
|
|
12993
|
-
inRootAsyncContext2(() => setTimeout(() => scheduleReconciliation(db, sessionId, readMessages), 1000)).unref();
|
|
12994
|
-
}).finally(() => {
|
|
12995
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
12996
|
-
if (appendedDuringReconciliation)
|
|
12997
|
-
scheduleReconciliation(db, sessionId, readMessages);
|
|
12998
|
-
});
|
|
12999
|
-
});
|
|
13000
|
-
});
|
|
13001
|
-
}
|
|
13002
|
-
function scheduleIncrementalIndex(db, sessionId, messageId, messageSource) {
|
|
13003
|
-
const schedulingKey = `${sessionId}\x00${messageId}`;
|
|
13004
|
-
const epoch = sessionEpochs.get(sessionId) ?? 0;
|
|
13005
|
-
if (heapHolder.pendingIncrementalKeys.has(schedulingKey))
|
|
13006
|
-
return;
|
|
13007
|
-
const activeTimer = heapHolder.incrementalTimers.get(schedulingKey);
|
|
13008
|
-
if (activeTimer)
|
|
13009
|
-
clearTimeout(activeTimer);
|
|
13010
|
-
const timer = inRootAsyncContext2(() => setTimeout(() => {
|
|
13011
|
-
heapHolder.incrementalTimers.delete(schedulingKey);
|
|
13012
|
-
heapHolder.pendingIncrementalKeys.add(schedulingKey);
|
|
13013
|
-
const indexMessage = async () => {
|
|
13014
|
-
if ((sessionEpochs.get(sessionId) ?? 0) !== epoch || !heapHolder.pendingIncrementalKeys.has(schedulingKey))
|
|
13015
|
-
return;
|
|
13016
|
-
const message = typeof messageSource === "function" ? messageSource(sessionId, messageId) : messageSource;
|
|
13017
|
-
if (!message)
|
|
13018
|
-
return;
|
|
13019
|
-
const revisionKey = `${schedulingKey}\x00${getMessageIndexSourceIdentity(message)}`;
|
|
13020
|
-
if (heapHolder.completedIncrementalKeys.has(revisionKey))
|
|
13021
|
-
return;
|
|
13022
|
-
const currentWatermark = getLastIndexedOrdinal(db, sessionId);
|
|
13023
|
-
if (message.ordinal <= currentWatermark && isMessageIndexSourceCurrent(db, sessionId, message)) {
|
|
13024
|
-
heapHolder.completedIncrementalKeys.add(revisionKey);
|
|
13025
|
-
return;
|
|
13026
|
-
}
|
|
13027
|
-
const wasReconciled = heapHolder.reconciledSessions.delete(sessionId);
|
|
13028
|
-
await indexSingleMessageOffThread(db, sessionId, message);
|
|
13029
|
-
if ((sessionEpochs.get(sessionId) ?? 0) !== epoch || !heapHolder.pendingIncrementalKeys.has(schedulingKey))
|
|
13030
|
-
return;
|
|
13031
|
-
const finalWatermark = getLastIndexedOrdinal(db, sessionId);
|
|
13032
|
-
if (wasReconciled && isMessageIndexReconciledThrough(db, sessionId, finalWatermark)) {
|
|
13033
|
-
heapHolder.reconciledSessions.add(sessionId);
|
|
13034
|
-
}
|
|
13035
|
-
heapHolder.completedIncrementalKeys.add(revisionKey);
|
|
13036
|
-
};
|
|
13037
|
-
sourceReady(messageSource, sessionId).then((ready) => {
|
|
13038
|
-
if ((sessionEpochs.get(sessionId) ?? 0) !== epoch)
|
|
13039
|
-
return;
|
|
13040
|
-
if (ready)
|
|
13041
|
-
return runWithSessionLock(sessionId, indexMessage);
|
|
13042
|
-
setTimeout(() => scheduleIncrementalIndex(db, sessionId, messageId, messageSource), PREPARE_RETRY_MS).unref?.();
|
|
13043
|
-
}).catch((error) => {
|
|
13044
|
-
if ((sessionEpochs.get(sessionId) ?? 0) !== epoch)
|
|
13045
|
-
return;
|
|
13046
|
-
heapHolder.reconciledSessions.delete(sessionId);
|
|
13047
|
-
logIndexingError(sessionId, `incremental index for ${messageId}`, error);
|
|
13048
|
-
if (isDatabaseLockedError(error))
|
|
13049
|
-
setTimeout(() => scheduleIncrementalIndex(db, sessionId, messageId, messageSource), 1000).unref();
|
|
13050
|
-
}).finally(() => {
|
|
13051
|
-
if ((sessionEpochs.get(sessionId) ?? 0) === epoch)
|
|
13052
|
-
heapHolder.pendingIncrementalKeys.delete(schedulingKey);
|
|
13053
|
-
});
|
|
13054
|
-
}, INCREMENTAL_DEBOUNCE_MS));
|
|
13055
|
-
heapHolder.incrementalTimers.set(schedulingKey, timer);
|
|
13056
|
-
}
|
|
13057
|
-
async function indexSingleMessageOffThread(db, sessionId, message) {
|
|
13058
|
-
const path = getSqliteDatabasePath2(db);
|
|
13059
|
-
if (!path)
|
|
13060
|
-
return withSqliteBackgroundWriter2(() => indexSingleMessage(db, sessionId, message));
|
|
13061
|
-
const cancellation = new Int32Array(new SharedArrayBuffer(4));
|
|
13062
|
-
const active = indexCancellations.get(sessionId) ?? new Set;
|
|
13063
|
-
active.add(cancellation);
|
|
13064
|
-
indexCancellations.set(sessionId, active);
|
|
13065
|
-
const result = await runSessionWarmupWorker({
|
|
13066
|
-
path,
|
|
13067
|
-
sessionId,
|
|
13068
|
-
indexMessage: message,
|
|
13069
|
-
harness: getHarness2(),
|
|
13070
|
-
indexCancellation: cancellation.buffer,
|
|
13071
|
-
...indexCoordinationInput2()
|
|
13072
|
-
}, {}).finally(() => {
|
|
13073
|
-
active.delete(cancellation);
|
|
13074
|
-
if (active.size === 0)
|
|
13075
|
-
indexCancellations.delete(sessionId);
|
|
13076
|
-
});
|
|
13077
|
-
if (!("inserted" in result))
|
|
13078
|
-
throw new Error("failure" in result ? result.detail : "unexpected indexing worker reply");
|
|
13079
|
-
if (result.measurements) {
|
|
13080
|
-
const sessions = workerMeasurements.get(db) ?? new Map;
|
|
13081
|
-
sessions.set(sessionId, result.measurements);
|
|
13082
|
-
workerMeasurements.set(db, sessions);
|
|
13083
|
-
if (result.measurements.skipped)
|
|
13084
|
-
log2(`[magic-context] incremental FTS skipped oversized source ${message.id} (${result.measurements.sourceBytes} bytes); identity and progress persisted`);
|
|
13085
|
-
}
|
|
13086
|
-
return result.inserted;
|
|
13087
|
-
}
|
|
13088
|
-
function scheduleClearAndReindex(db, sessionId, readMessages) {
|
|
13089
|
-
heapHolder.reconciledSessions.delete(sessionId);
|
|
13090
|
-
heapHolder.reconciledSnapshots.delete(sessionId);
|
|
13091
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
13092
|
-
clearCompletedIncrementalKeys(sessionId);
|
|
13093
|
-
const existing = heapHolder.clearAndReindexScheduledSessions.get(sessionId);
|
|
13094
|
-
if (existing) {
|
|
13095
|
-
existing.source = readMessages;
|
|
13096
|
-
return;
|
|
13097
|
-
}
|
|
13098
|
-
const pending = { source: readMessages };
|
|
13099
|
-
heapHolder.clearAndReindexScheduledSessions.set(sessionId, pending);
|
|
13100
|
-
scheduleAfterBootQuiet(() => {
|
|
13101
|
-
defer(() => {
|
|
13102
|
-
let cleared = false;
|
|
13103
|
-
runWithSessionLock(sessionId, () => {
|
|
13104
|
-
if (heapHolder.clearAndReindexScheduledSessions.get(sessionId) !== pending)
|
|
13105
|
-
return;
|
|
13106
|
-
heapHolder.clearAndReindexScheduledSessions.delete(sessionId);
|
|
13107
|
-
heapHolder.reconciledSessions.delete(sessionId);
|
|
13108
|
-
heapHolder.reconciledSnapshots.delete(sessionId);
|
|
13109
|
-
clearCompletedIncrementalKeys(sessionId);
|
|
13110
|
-
clearIndexedMessages(db, sessionId);
|
|
13111
|
-
cleared = true;
|
|
13112
|
-
}).then(() => cleared ? reconcileSessionIndex(db, sessionId, pending.source) : undefined).catch((error) => {
|
|
13113
|
-
heapHolder.reconciledSessions.delete(sessionId);
|
|
13114
|
-
if (heapHolder.clearAndReindexScheduledSessions.get(sessionId) === pending)
|
|
13115
|
-
heapHolder.clearAndReindexScheduledSessions.delete(sessionId);
|
|
13116
|
-
logIndexingError(sessionId, "clear and reindex", error);
|
|
13117
|
-
});
|
|
13118
|
-
});
|
|
13119
|
-
});
|
|
13120
|
-
}
|
|
13121
|
-
function getMessageIndexQueueHeapStats() {
|
|
13122
|
-
return {
|
|
13123
|
-
queueLength: heapHolder.reconciliationScheduledSessions.size + heapHolder.incrementalTimers.size + heapHolder.pendingIncrementalKeys.size,
|
|
13124
|
-
reconciliationScheduled: heapHolder.reconciliationScheduledSessions.size,
|
|
13125
|
-
incrementalTimers: heapHolder.incrementalTimers.size,
|
|
13126
|
-
pendingIncremental: heapHolder.pendingIncrementalKeys.size,
|
|
13127
|
-
activeSessionLocks: heapHolder.sessionLocks.size,
|
|
13128
|
-
completedIncrementalKeys: heapHolder.completedIncrementalKeys.size,
|
|
13129
|
-
activeBufferMessages: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + messages.length, 0),
|
|
13130
|
-
activeBufferBytes: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + serializedMessageBytes(messages), 0)
|
|
13131
|
-
};
|
|
13132
|
-
}
|
|
13133
|
-
function clearSessionTracking(sessionId) {
|
|
13134
|
-
sessionEpochs.set(sessionId, (sessionEpochs.get(sessionId) ?? 0) + 1);
|
|
13135
|
-
for (const cancellation of indexCancellations.get(sessionId) ?? [])
|
|
13136
|
-
Atomics.store(cancellation, 0, 1);
|
|
13137
|
-
heapHolder.clearAndReindexScheduledSessions.delete(sessionId);
|
|
13138
|
-
heapHolder.reconciledSessions.delete(sessionId);
|
|
13139
|
-
heapHolder.reconciledSnapshots.delete(sessionId);
|
|
13140
|
-
heapHolder.stalledSessions.delete(sessionId);
|
|
13141
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
13142
|
-
heapHolder.sessionLocks.delete(sessionId);
|
|
13143
|
-
heapHolder.activeReconcilerBuffers.delete(sessionId);
|
|
13144
|
-
const prefix = `${sessionId}\x00`;
|
|
13145
|
-
for (const [key, timer] of heapHolder.incrementalTimers) {
|
|
13146
|
-
if (key.startsWith(prefix)) {
|
|
13147
|
-
clearTimeout(timer);
|
|
13148
|
-
heapHolder.incrementalTimers.delete(key);
|
|
13149
|
-
}
|
|
13150
|
-
}
|
|
13151
|
-
for (const key of heapHolder.pendingIncrementalKeys) {
|
|
13152
|
-
if (key.startsWith(prefix)) {
|
|
13153
|
-
heapHolder.pendingIncrementalKeys.delete(key);
|
|
13154
|
-
}
|
|
13155
|
-
}
|
|
13156
|
-
for (const key of heapHolder.completedIncrementalKeys) {
|
|
13157
|
-
if (key.startsWith(prefix))
|
|
13158
|
-
heapHolder.completedIncrementalKeys.delete(key);
|
|
13159
|
-
}
|
|
13160
|
-
}
|
|
13161
|
-
|
|
13162
12841
|
// src/features/magic-context/session-cache-ttl.ts
|
|
13163
12842
|
function readSessionCacheTtl(db, sessionId) {
|
|
13164
12843
|
const saved = readReplayEnvelope(db, sessionId).cacheTtlPolicy;
|
|
@@ -14760,9 +14439,9 @@ Nothing to upgrade: this session has no legacy compartments.`;
|
|
|
14760
14439
|
].join(`
|
|
14761
14440
|
`);
|
|
14762
14441
|
}
|
|
14763
|
-
function readDreamTaskBacklogsSafely(db, projectPath, tasks) {
|
|
14442
|
+
function readDreamTaskBacklogsSafely(db, projectPath, tasks, display = false) {
|
|
14764
14443
|
try {
|
|
14765
|
-
return getDreamTaskBacklogs(db, projectPath, tasks);
|
|
14444
|
+
return getDreamTaskBacklogs(db, projectPath, tasks, { display });
|
|
14766
14445
|
} catch {
|
|
14767
14446
|
return {};
|
|
14768
14447
|
}
|
|
@@ -14970,7 +14649,7 @@ ${renderUserFacingFailure("status_unavailable")}`;
|
|
|
14970
14649
|
const rustTailHygiene = rustStatus?.tail_hygiene;
|
|
14971
14650
|
const tailHygiene = resolveTailHygieneStatus(deps.getTailHygiene?.(sessionId), rustTailHygiene && typeof rustTailHygiene === "object" ? rustTailHygiene : undefined);
|
|
14972
14651
|
const statusOutput = executeStatus(deps.db, sessionId, deps.executeThresholdPercentage, liveModelKey, deps.historyBudgetPercentage, deps.sampleCommitClusterTrigger?.() ?? deps.commitClusterTrigger, deps.executeThresholdTokens, liveContextLimit, deps.dreamer ? {
|
|
14973
|
-
backlog: readDreamTaskBacklogsSafely(deps.db, deps.dreamer.projectPath, CANONICAL_DREAM_TASKS.filter((task) => deps.smartNotesEnabled !== false || task !== "evaluate-smart-notes")),
|
|
14652
|
+
backlog: readDreamTaskBacklogsSafely(deps.db, deps.dreamer.projectPath, CANONICAL_DREAM_TASKS.filter((task) => deps.smartNotesEnabled !== false || task !== "evaluate-smart-notes"), true),
|
|
14974
14653
|
progress: deps.getDreamerProgress?.() ?? null,
|
|
14975
14654
|
skipped: readSkippedDreamTasksSafely(deps.db, deps.dreamer.projectPath).filter((task) => deps.smartNotesEnabled !== false || task !== "evaluate-smart-notes"),
|
|
14976
14655
|
failures: readFailingDreamTasksSafely(deps.db, deps.dreamer.projectPath).filter((state) => deps.smartNotesEnabled !== false || state.task !== "evaluate-smart-notes")
|
|
@@ -15774,7 +15453,7 @@ function buildSidebarSnapshot(db, sessionId, directory, liveSessionState, inject
|
|
|
15774
15453
|
const dreamerProgress = projectIdentity ? liveSessionState?.dreamerProgressByProject?.get(projectIdentity) ?? null : null;
|
|
15775
15454
|
if (projectIdentity) {
|
|
15776
15455
|
try {
|
|
15777
|
-
dreamerBacklog = getDreamTaskBacklogs(db, projectIdentity, CANONICAL_DREAM_TASKS.filter((task) => smartNotesEnabled || task !== "evaluate-smart-notes"));
|
|
15456
|
+
dreamerBacklog = getDreamTaskBacklogs(db, projectIdentity, CANONICAL_DREAM_TASKS.filter((task) => smartNotesEnabled || task !== "evaluate-smart-notes"), { display: true });
|
|
15778
15457
|
} catch {}
|
|
15779
15458
|
}
|
|
15780
15459
|
if (projectIdentity) {
|
|
@@ -16526,7 +16205,7 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
16526
16205
|
const db = readDatabase();
|
|
16527
16206
|
if (!db)
|
|
16528
16207
|
return { ok: false, error: "db unavailable" };
|
|
16529
|
-
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-
|
|
16208
|
+
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-6ncc6wrw.js"));
|
|
16530
16209
|
const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-vz86nt79.js"));
|
|
16531
16210
|
log2(`[rpc] recomp requested for session ${sessionId}`);
|
|
16532
16211
|
if (!args.client && !args.hiddenCompletionExecutor) {
|
|
@@ -16611,7 +16290,7 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
16611
16290
|
const db = readDatabase();
|
|
16612
16291
|
if (!db)
|
|
16613
16292
|
return { ok: false, error: "db unavailable" };
|
|
16614
|
-
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-
|
|
16293
|
+
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-fyvyzcbm.js"));
|
|
16615
16294
|
const model = liveSessionState.liveModelBySession.get(sessionId);
|
|
16616
16295
|
const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
|
|
16617
16296
|
const ctx = {
|
|
@@ -18394,7 +18073,7 @@ var MODULE_PAGE_MAX_BYTES = SUBC_MAX_FRAME_BODY_BYTES - MODULE_PAGE_ENVELOPE_HEA
|
|
|
18394
18073
|
var MODULE_ITEM_CONTINUATION_CHUNK_BYTES = 64 * 1024;
|
|
18395
18074
|
var MODULE_ITEM_CONTINUATION_KEY = "__shadow_item_continuation";
|
|
18396
18075
|
var MODULE_ORDINAL_PAGE_SIZE = 500;
|
|
18397
|
-
function
|
|
18076
|
+
function yieldToEventLoop() {
|
|
18398
18077
|
return new Promise((resolve) => setTimeout(resolve, 0));
|
|
18399
18078
|
}
|
|
18400
18079
|
function canonicalJson(value) {
|
|
@@ -18484,7 +18163,7 @@ async function resolveOrdinalsForModule(args) {
|
|
|
18484
18163
|
pageEnds.push({ anchor: pageAnchor, entryCount: entries.length });
|
|
18485
18164
|
if (page.length < MODULE_ORDINAL_PAGE_SIZE)
|
|
18486
18165
|
break;
|
|
18487
|
-
await
|
|
18166
|
+
await yieldToEventLoop();
|
|
18488
18167
|
}
|
|
18489
18168
|
return { entries, end: pageAnchor, pageEnds };
|
|
18490
18169
|
};
|
|
@@ -24805,6 +24484,15 @@ function createTransform(deps) {
|
|
|
24805
24484
|
db,
|
|
24806
24485
|
sessionID: sessionId
|
|
24807
24486
|
}) : undefined;
|
|
24487
|
+
const hostEstimate = deps.hostInputEstimate?.(sessionId);
|
|
24488
|
+
const hostOverWindow = fullFeatureMode && !compactionOff && resolvedContextLimit !== undefined && resolvedContextLimit > 0 && hostEstimate !== undefined && Number.isFinite(hostEstimate.tokens) && Number.isFinite(hostEstimate.pressureTokens) && hostEstimate.tokens > resolvedContextLimit;
|
|
24489
|
+
if (hostOverWindow) {
|
|
24490
|
+
contextUsageEarly = {
|
|
24491
|
+
inputTokens: Math.max(contextUsageEarly.inputTokens, hostEstimate.pressureTokens),
|
|
24492
|
+
percentage: Math.max(100, contextUsageEarly.percentage, hostEstimate.pressureTokens / resolvedContextLimit * 100)
|
|
24493
|
+
};
|
|
24494
|
+
usagePercentageSynthetic = true;
|
|
24495
|
+
}
|
|
24808
24496
|
let unmanagedOverWindowPass = null;
|
|
24809
24497
|
const unmanagedOverWindowCarried = unmanagedOverWindowSessions.has(sessionId);
|
|
24810
24498
|
if (fullFeatureMode && !compactionOff && typeof resolvedContextLimit === "number" && resolvedContextLimit > 0 && (unmanagedOverWindowCarried || isFirstTransformPassForSession && getLastCompartmentEndMessage(db, sessionId) < 0 && getMaxDroppedTagNumber2(db, sessionId) === 0)) {
|
|
@@ -25347,7 +25035,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
|
|
|
25347
25035
|
bustReason: calibrationBustReason,
|
|
25348
25036
|
onAdopt: (message) => sessionLog2(sessionId, message)
|
|
25349
25037
|
});
|
|
25350
|
-
let contextUsageFromEstimate =
|
|
25038
|
+
let contextUsageFromEstimate = hostOverWindow;
|
|
25351
25039
|
if (contextUsage.inputTokens <= 0 && protectionCacheBustingPass) {
|
|
25352
25040
|
const overflowRecoveryPass = usagePercentageSynthetic || emergencyRecoveryArmed;
|
|
25353
25041
|
const savedProviderReading = overflowRecoveryPass ? null : savedProviderReadingForPass({
|
|
@@ -25901,6 +25589,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
|
|
|
25901
25589
|
sessionId,
|
|
25902
25590
|
systemPromptHash: sessionMeta.systemPromptHash
|
|
25903
25591
|
});
|
|
25592
|
+
deps.onPassPermission?.(sessionId, postTransformResult.prefixMutationPermitted);
|
|
25904
25593
|
};
|
|
25905
25594
|
const timedTransform = (input, output) => withTransformTimingSummary(() => transform(input, output));
|
|
25906
25595
|
return Object.assign(timedTransform, {
|
|
@@ -29865,4 +29554,4 @@ function applyHiddenSubagentTemperature(input, output, log) {
|
|
|
29865
29554
|
output.temperature = temperature;
|
|
29866
29555
|
}
|
|
29867
29556
|
|
|
29868
|
-
export { logConfigDependencyNotesOnce, openOpenCodeDb, DREAMER_SYSTEM_PROMPT, runSessionProjectBackfill, SMART_NOTE_COMPILER_SYSTEM_PROMPT, createLiveSessionState, RETROSPECTIVE_MAX_USER_MESSAGE_CHARS, RETROSPECTIVE_MESSAGE_TRUNCATION_MARKER, OpenCodeRetrospectiveRawProvider, createDreamTaskExecutor, runManualDream, runDueTasksForProject, startDreamScheduleTimer, createDreamTimerModuleClient, ensureProjectRegisteredFromOpenCodeDirectory, recordOpenCodeProvenInputFloor, resolveOpenCodeProvenInputFloor, resolveContextWindowGeometry, resolveContextLimit, resolveExecuteThresholdDetail, resolveModelKey, resolveSessionId, createScheduler, describeStorageUnavailability,
|
|
29557
|
+
export { logConfigDependencyNotesOnce, openOpenCodeDb, DREAMER_SYSTEM_PROMPT, runSessionProjectBackfill, SMART_NOTE_COMPILER_SYSTEM_PROMPT, createLiveSessionState, RETROSPECTIVE_MAX_USER_MESSAGE_CHARS, RETROSPECTIVE_MESSAGE_TRUNCATION_MARKER, OpenCodeRetrospectiveRawProvider, createDreamTaskExecutor, runManualDream, runDueTasksForProject, startDreamScheduleTimer, createDreamTimerModuleClient, ensureProjectRegisteredFromOpenCodeDirectory, recordOpenCodeProvenInputFloor, resolveOpenCodeProvenInputFloor, resolveContextWindowGeometry, resolveContextLimit, resolveExecuteThresholdDetail, resolveModelKey, resolveSessionId, createScheduler, describeStorageUnavailability, resolveSessionCacheTtl, runEmbedHistoryDrain, pauseEmbedHistoryDrain, formatEmbedStatusText, getSessionProperties, getSessionCreatedInfo, getMessageUpdatedAssistantInfo, getMessageUpdatedInfo, getSessionErrorInfo, getMessageRemovedInfo, summarizeManualDream, createMagicContextCommandHandler, getLiveNotificationParams, createChatMessageHook, createEventHook, createCommandExecuteBeforeHook, createToolExecuteAfterHook, recordHiddenVariantWarning, buildStatusDetail, isDebugRpcEnabled, registerRpcHandlers, maybeAutoEmbedSessionBackfill, clearTransformDecisionSession, scheduleOpenCodeTransformDecisionWrite, stageOpenCodeV2TransformDecision, bindOpenCodeV2TransformDecision, maybeDeliverChannel2, armLatestThinkingRecovery, armBindingRecoverySafely, armLatestThinkingRecoveryFromError, createM0RenderOptions, lkgReplayLimit, measureLkgReplay, STORAGE_BUSY_MESSAGE, StorageBusyRefusalError, bindSystemDateRequestIdentity, bindSystemDateOutput, registerSystemDateRefresh, rustWrapupHistorianFields, UnmanagedOverWindowError, UnresolvedHistoryBoundaryError, clearMessageTokensCache, createTransform, createSubcModuleClient, createModuleToolBackends, createRustRefusalRecovery, createSystemPromptHashHandler, tryMessagesTransformLkgReplay, createMessagesTransformHandler, primaryOnlyToolIds, subagentToolRefusal, guardSubagentTools, hideSubagentTools, removePrimaryOnlyTools, storedSubagentMode, createCtxExpandTools, CTX_MEMORY_LIST_TOOL_NAME, CTX_MEMORY_ACTIONS, createCtxMemoryTools, createCtxMemoryListTools, CTX_NOTE_DESCRIPTION, withoutSmartNoteText, createCtxNoteTools, createCtxReduceTools, createCtxSearchTools, parameterDescriptionsFor, applyJsonSchemaParameterDescriptions, MagicContextRpcServer, subagentTemperature, applyHiddenSubagentTemperature };
|