@cortexkit/opencode-magic-context 0.48.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-search-worker.js +3 -3
- package/dist/{conflict-warning-hook-w8cykrnf.js → conflict-warning-hook-kzx4dmk1.js} +7 -7
- package/dist/{context-m0cy262m.js → context-nj5f293n.js} +96 -43
- package/dist/{derive-budgets-sg0xsq7s.js → derive-budgets-qz5rrr08.js} +2 -2
- package/dist/embedding-backfill-aetxv1vt.js +21 -0
- package/dist/embedding-worker.js +4 -4
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
- package/dist/features/magic-context/search-rerank.d.ts +35 -0
- package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
- package/dist/features/magic-context/search.d.ts +11 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta.d.ts +1 -1
- package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +29 -9
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tags.d.ts +9 -0
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -1
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/tagger.d.ts +2 -0
- package/dist/features/magic-context/tagger.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +3 -0
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +2 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +2 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts +7 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +35 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +1 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-db7zwa3v.js → index-1bt88epp.js} +93 -9
- package/dist/{index-f0h6xwqm.js → index-1g30axtz.js} +229 -67
- package/dist/{index-k1xb52kd.js → index-1r0k9js3.js} +5 -5
- package/dist/{index-692jzy0p.js → index-2jcbj7r1.js} +122 -371
- package/dist/{index-bdckkfw6.js → index-2jgwttpt.js} +16 -8
- package/dist/{index-2y0s2hep.js → index-4mjhqadz.js} +1 -1
- package/dist/{index-pdecwzrd.js → index-57mrqed8.js} +1 -1
- package/dist/{index-ty64eqcn.js → index-9qjqq45k.js} +3 -3
- package/dist/{index-yq8n9qcb.js → index-9rt53q79.js} +4 -4
- package/dist/{index-pg50n748.js → index-b7mv1jx3.js} +4 -4
- package/dist/{index-mmyh6d8f.js → index-ezmszwbd.js} +6 -4
- package/dist/{index-fbv1dn35.js → index-gzcmtmar.js} +1 -1
- package/dist/{index-0an7742d.js → index-h2py7207.js} +549 -973
- package/dist/{index-0qhce371.js → index-h2wc01qk.js} +2 -2
- package/dist/{index-dhwzyd54.js → index-h5zfkjyk.js} +160 -25
- package/dist/{index-q2tqeqde.js → index-ha87j7a8.js} +1229 -78
- package/dist/{index-14cjxt20.js → index-hj2q50k0.js} +45 -8
- package/dist/{index-cb7emxgj.js → index-kmpvemph.js} +336 -6
- package/dist/{index-c43kr12f.js → index-kp5qe690.js} +7 -7
- package/dist/{index-bhvjj0ys.js → index-kq57tdf0.js} +2 -2
- package/dist/{index-7mx8v0pw.js → index-nm6a8xpd.js} +4 -4
- package/dist/{index-8j7gqj40.js → index-nsjyysj0.js} +6 -2
- package/dist/{index-k9nnwad5.js → index-nydv6g8r.js} +44 -7
- package/dist/{index-5zygecde.js → index-peshmj6h.js} +4 -4
- package/dist/{index-knh4y330.js → index-pxwp2hjk.js} +7 -2
- package/dist/{index-1qb0z7wa.js → index-qx53vezw.js} +1 -1
- package/dist/{index-q7h7csab.js → index-s4j7t92z.js} +9 -9
- package/dist/{index-z8e0psj8.js → index-stbr4ce6.js} +3 -3
- package/dist/{index-jcbd3znx.js → index-tqf7yg27.js} +1 -1
- package/dist/{index-72nhv486.js → index-vkbqdnkj.js} +2 -2
- package/dist/{index-eeezr5zz.js → index-z1tjp257.js} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -44
- package/dist/{logger-d3wex3dz.js → logger-ewak5q1s.js} +1 -1
- package/dist/{message-index-bounded-7ezbgddp.js → message-index-bounded-h0mrd4pr.js} +13 -13
- package/dist/{message-time-backfill-brbd63hv.js → message-time-backfill-8x06r9kx.js} +2 -2
- package/dist/migration-worker.js +9 -9
- package/dist/plugin/hooks/create-session-hooks.d.ts +2 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/{project-embedding-registry-7qzptcw7.js → project-embedding-registry-rtt0djyb.js} +9 -9
- package/dist/raw-ordinal-warmup-worker.js +4 -4
- package/dist/{read-session-chunk-6k83m4fj.js → read-session-chunk-ty89v75e.js} +10 -8
- package/dist/{read-session-raw-3g9qy1xa.js → read-session-raw-8sjbc9h0.js} +5 -3
- package/dist/{recomp-orchestrator-d3fp1cy0.js → recomp-orchestrator-4f1yyd1q.js} +25 -25
- package/dist/{safe-notification-target-5ffqq32m.js → safe-notification-target-q0cyrx3x.js} +2 -2
- package/dist/{search-epax1ecv.js → search-pz4f4wge.js} +20 -20
- package/dist/{send-session-notification-erecz4y4.js → send-session-notification-38cd5dqt.js} +5 -5
- package/dist/shared/auto-search-lifecycle.d.ts +14 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/models-dev-temperature.d.ts +18 -0
- package/dist/shared/models-dev-temperature.d.ts.map +1 -0
- package/dist/shared/project-directory-key.d.ts +16 -0
- package/dist/shared/project-directory-key.d.ts.map +1 -1
- package/dist/shared/subagent-temperature.d.ts +46 -0
- package/dist/shared/subagent-temperature.d.ts.map +1 -0
- package/dist/{storage-tags-d3b0v2ss.js → storage-tags-k0pda32s.js} +6 -4
- package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -0
- package/dist/tools/ctx-search/types.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-spcy2qre.js → transform-postprocess-phase-tck4g20s.js} +25 -25
- package/dist/v2/auto-search-worker.js +3 -3
- package/dist/v2/{context-sf98kstd.js → context-crbt6p1y.js} +809 -1052
- package/dist/v2/{derive-budgets-3vc0y84t.js → derive-budgets-fgej9j46.js} +3 -3
- package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
- package/dist/v2/embedding-worker.js +4 -4
- package/dist/v2/hidden-child-native.d.ts.map +1 -1
- package/dist/v2/hidden-completion.d.ts +7 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +4 -1
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/generate.d.ts +9 -2
- package/dist/v2/hooks/generate.d.ts.map +1 -1
- package/dist/v2/{logger-mxd0ym09.js → logger-pj02s7sr.js} +1 -1
- package/dist/v2/{message-index-bounded-dy3s2k1e.js → message-index-bounded-xwqdywxg.js} +13 -13
- package/dist/v2/{message-time-backfill-gtx1pwk1.js → message-time-backfill-cje68egj.js} +2 -2
- package/dist/v2/migration-worker.js +9 -9
- package/dist/v2/{project-embedding-registry-1tgba5dv.js → project-embedding-registry-d6m7tyxr.js} +9 -9
- package/dist/v2/raw-ordinal-warmup-worker.js +4 -4
- package/dist/v2/{read-session-chunk-rh4khdkv.js → read-session-chunk-8p5mdryx.js} +10 -8
- package/dist/v2/{read-session-raw-bsbmf0vj.js → read-session-raw-j8dvp7f4.js} +5 -3
- package/dist/v2/{recomp-orchestrator-az61rfcg.js → recomp-orchestrator-ckfgt6wq.js} +26 -26
- package/dist/v2/{safe-notification-target-73ax1p5v.js → safe-notification-target-y3p1hce9.js} +2 -2
- package/dist/v2/{search-nzkwrc6n.js → search-ym8rehhz.js} +20 -20
- package/dist/v2/{send-session-notification-6km439kn.js → send-session-notification-5m0yapqx.js} +5 -5
- package/dist/v2/{server-x2g40a71.js → server-19zjmn02.js} +2 -2
- package/dist/v2/{server-sggvvzhb.js → server-1tk82krw.js} +45 -8
- package/dist/v2/{server-vqpf3167.js → server-2s6ayq3t.js} +2 -2
- package/dist/v2/{server-z2037m6z.js → server-2s9qz6n7.js} +2 -2
- package/dist/v2/{server-k228xhjg.js → server-3j4d00kf.js} +1 -1
- package/dist/v2/{server-aan4q8mx.js → server-3t0q2cqx.js} +1 -1
- package/dist/v2/{server-2fbhp79z.js → server-4ez8mntn.js} +16 -8
- package/dist/v2/{server-zxhgvsf9.js → server-676xw7at.js} +1 -1
- package/dist/v2/{server-52awr2mw.js → server-6byqfbqf.js} +93 -9
- package/dist/v2/{server-qye6ykf7.js → server-7ekna9zs.js} +2 -2
- package/dist/v2/{server-g5r0n3b6.js → server-7h861yms.js} +160 -25
- package/dist/v2/{server-v06jcv0w.js → server-8k2agx29.js} +1 -1
- package/dist/v2/{server-686jg6eb.js → server-c5rrgrcd.js} +44 -7
- package/dist/v2/{server-4k748ke6.js → server-hb6xhh9q.js} +2 -2
- package/dist/v2/{server-7wwc2nga.js → server-jvxzm1jy.js} +7 -7
- package/dist/v2/{server-1r6pmz4f.js → server-kzns2hbz.js} +1 -1
- package/dist/v2/{server-xdfwt6kh.js → server-pj4pjv02.js} +2 -2
- package/dist/v2/{server-psqc7e9n.js → server-q4ph9bwn.js} +1227 -78
- package/dist/v2/{server-8pyt7hev.js → server-sa8jvrfc.js} +9 -9
- package/dist/v2/{server-ezhze64f.js → server-ss95ky04.js} +4 -4
- package/dist/v2/{server-5m3dt5r1.js → server-t4k4qexw.js} +6 -2
- package/dist/v2/{server-e0vdaae2.js → server-v4mewb78.js} +4 -4
- package/dist/v2/{server-gjcr4w98.js → server-w32kmdez.js} +4 -4
- package/dist/v2/{server-k8x2rbxc.js → server-x4hscabv.js} +119 -365
- package/dist/v2/{server-yczc713m.js → server-xwz4dqh9.js} +7 -2
- package/dist/v2/{server-xxm59eww.js → server-ycw9qqcy.js} +4 -4
- package/dist/v2/{server-8tqanswc.js → server-zp53y8js.js} +331 -4
- package/dist/v2/server.js +4 -4
- package/dist/v2/{storage-tags-w4tv77sn.js → storage-tags-8vw924zn.js} +6 -4
- package/dist/v2/store-reader.d.ts +8 -2
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-mz7efs7w.js → wrapup-orchestrator-a7efxaax.js} +26 -26
- package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
- package/package.json +1 -1
- package/src/shared/auto-search-lifecycle.ts +43 -0
- package/src/shared/logger.test.ts +38 -0
- package/src/shared/logger.ts +10 -2
- package/src/shared/models-dev-temperature.ts +107 -0
- package/src/shared/project-directory-key.test.ts +59 -0
- package/src/shared/project-directory-key.ts +20 -0
- package/src/shared/subagent-temperature.test.ts +270 -0
- package/src/shared/subagent-temperature.ts +110 -0
- package/dist/embedding-backfill-9rcm1mfy.js +0 -21
- package/dist/v2/embedding-backfill-vn8g1nh1.js +0 -21
- package/dist/wrapup-orchestrator-amzta1t4.js +0 -44
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
estimateTokens
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-qx53vezw.js";
|
|
4
4
|
import {
|
|
5
5
|
stableStringify
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-1bt88epp.js";
|
|
7
7
|
|
|
8
8
|
// src/features/magic-context/tool-definition-tokens.ts
|
|
9
9
|
import { createHash } from "node:crypto";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./index-kb9nn0a0.js";
|
|
5
5
|
import {
|
|
6
6
|
log2
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-nsjyysj0.js";
|
|
8
8
|
|
|
9
9
|
// src/hooks/magic-context/read-session-raw.ts
|
|
10
10
|
import { isMainThread } from "node:worker_threads";
|
|
@@ -315,30 +315,46 @@ function readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWaterma
|
|
|
315
315
|
const pageSize = Math.min(Math.max(1, Math.floor(limit)), remaining);
|
|
316
316
|
if (pageSize === 0)
|
|
317
317
|
return [];
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
318
|
+
return withReadSnapshot(db, () => {
|
|
319
|
+
const ordinal = Math.max(0, Math.floor(afterOrdinal));
|
|
320
|
+
const points = currentOrdinalCheckpoints(db, sessionId)?.scan.checkpoints ?? [];
|
|
321
|
+
let low = 0;
|
|
322
|
+
let high = points.length;
|
|
323
|
+
while (low < high) {
|
|
324
|
+
const middle = Math.floor((low + high) / 2);
|
|
325
|
+
if (points[middle].ordinal <= ordinal)
|
|
326
|
+
low = middle + 1;
|
|
327
|
+
else
|
|
328
|
+
high = middle;
|
|
329
|
+
}
|
|
330
|
+
const floor = points[low - 1];
|
|
331
|
+
const useFloor = floor && (!after || compareOrdinalKeys(floor, after) > 0);
|
|
332
|
+
const anchor = useFloor ? floor : after;
|
|
333
|
+
const skip = anchor === after && after ? 0 : ordinal - (floor?.ordinal ?? 0);
|
|
334
|
+
if (skip > ORDINAL_LOOKUP_LIMIT) {
|
|
335
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
336
|
+
throw new RawOrdinalsNotReady;
|
|
337
|
+
}
|
|
338
|
+
const rawLimit = skip + pageSize + ORDINAL_LOOKUP_LIMIT;
|
|
339
|
+
const rows = db.prepare(`SELECT id, data, time_created, time_updated, ${EXCLUDED_ROW_SQL} AS excluded
|
|
340
|
+
FROM message WHERE id IN (
|
|
341
|
+
SELECT id FROM message WHERE session_id = ?
|
|
342
|
+
${anchor ? "AND (time_created, id) > (?, ?)" : ""}
|
|
343
|
+
ORDER BY time_created, id LIMIT ?)
|
|
344
|
+
ORDER BY time_created, id`).all(sessionId, ...anchor ? [anchor.timeCreated, anchor.id] : [], rawLimit);
|
|
345
|
+
rawMessagePageRowsVisited += rows.length;
|
|
346
|
+
const eligible = rows.filter((row) => row.excluded !== 1);
|
|
347
|
+
if (eligible.length <= skip && rows.length === rawLimit) {
|
|
348
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
349
|
+
throw new RawOrdinalsNotReady;
|
|
350
|
+
}
|
|
351
|
+
return eligible.slice(skip, skip + pageSize).filter(isRawMessageRow).map((row, index) => ({
|
|
352
|
+
...row,
|
|
353
|
+
ordinal: ordinal + index + 1
|
|
354
|
+
}));
|
|
355
|
+
});
|
|
341
356
|
}
|
|
357
|
+
var rawMessagePageRowsVisited = 0;
|
|
342
358
|
function assembleRawMessagePage(messageRows, partRows) {
|
|
343
359
|
const partsByMessageId = new Map;
|
|
344
360
|
for (const part of partRows) {
|
|
@@ -1138,5 +1154,124 @@ function readRawSeedTailFromDb2(db, sessionId, boundaryId) {
|
|
|
1138
1154
|
throw new Error("state_sync materialized boundary is missing from raw storage");
|
|
1139
1155
|
return messages;
|
|
1140
1156
|
}
|
|
1157
|
+
var BOUNDARY_ORDINAL_SQL = `
|
|
1158
|
+
SELECT id, ordinal FROM (
|
|
1159
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY time_created, id) AS ordinal
|
|
1160
|
+
FROM message
|
|
1161
|
+
WHERE session_id = ?
|
|
1162
|
+
AND typeof(id) = 'text' AND typeof(data) = 'text'
|
|
1163
|
+
AND CASE WHEN json_valid(data) THEN NOT (
|
|
1164
|
+
COALESCE(json_type(data, '$.summary'), '') = 'true'
|
|
1165
|
+
AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
|
|
1166
|
+
) ELSE 1 END
|
|
1167
|
+
)
|
|
1168
|
+
WHERE id IN (SELECT value FROM json_each(?))`;
|
|
1169
|
+
var BOUNDARY_MESSAGE_SQL = `
|
|
1170
|
+
SELECT id, data, time_created FROM message
|
|
1171
|
+
WHERE +session_id = ? AND id IN (SELECT value FROM json_each(?))`;
|
|
1172
|
+
var BOUNDARY_BLOCK_COUNT_SQL = `
|
|
1173
|
+
SELECT message_id AS id, SUM(
|
|
1174
|
+
CASE
|
|
1175
|
+
WHEN NOT json_valid(data) OR json_type(data) <> 'object' THEN 0
|
|
1176
|
+
ELSE CASE (CASE WHEN json_type(data, '$.type') = 'text'
|
|
1177
|
+
THEN json_extract(data, '$.type') ELSE 'unknown' END)
|
|
1178
|
+
WHEN 'text' THEN CASE WHEN json_type(data, '$.ignored') = 'true' THEN 0 ELSE 1 END
|
|
1179
|
+
WHEN 'reasoning' THEN 1
|
|
1180
|
+
WHEN 'thinking' THEN 1
|
|
1181
|
+
WHEN 'redacted_thinking' THEN 1
|
|
1182
|
+
WHEN 'tool' THEN 1 + CASE
|
|
1183
|
+
WHEN json_type(data, '$.state') = 'object'
|
|
1184
|
+
AND json_type(data, '$.state.status') = 'text'
|
|
1185
|
+
AND json_extract(data, '$.state.status') IN ('completed', 'error')
|
|
1186
|
+
THEN 1 ELSE 0 END
|
|
1187
|
+
WHEN 'compaction' THEN 0
|
|
1188
|
+
WHEN 'step-finish' THEN 0
|
|
1189
|
+
WHEN 'snapshot' THEN 0
|
|
1190
|
+
WHEN 'patch' THEN 0
|
|
1191
|
+
WHEN 'agent' THEN 0
|
|
1192
|
+
WHEN 'retry' THEN 0
|
|
1193
|
+
ELSE 1
|
|
1194
|
+
END
|
|
1195
|
+
END) AS blocks
|
|
1196
|
+
FROM part
|
|
1197
|
+
WHERE +session_id = ?
|
|
1198
|
+
AND message_id IN (SELECT value FROM json_each(?))
|
|
1199
|
+
AND typeof(message_id) = 'text' AND typeof(data) = 'text'
|
|
1200
|
+
GROUP BY message_id`;
|
|
1201
|
+
var boundaryEndpointCaches = new WeakMap;
|
|
1202
|
+
var BOUNDARY_ENDPOINT_CACHE_SESSIONS = 16;
|
|
1203
|
+
var boundaryEndpointRowsRead = 0;
|
|
1204
|
+
function readBoundaryEndpointRows(db, sessionId, ids, blockIds, into) {
|
|
1205
|
+
if (ids.length > 0) {
|
|
1206
|
+
boundaryEndpointRowsRead += ids.length;
|
|
1207
|
+
const wanted = JSON.stringify(ids);
|
|
1208
|
+
const ordinals = new Map;
|
|
1209
|
+
for (const row of db.prepare(BOUNDARY_ORDINAL_SQL).all(sessionId, wanted)) {
|
|
1210
|
+
ordinals.set(row.id, row.ordinal);
|
|
1211
|
+
}
|
|
1212
|
+
const rows = db.prepare(BOUNDARY_MESSAGE_SQL).all(sessionId, wanted);
|
|
1213
|
+
for (const id of ids)
|
|
1214
|
+
into.set(id, null);
|
|
1215
|
+
for (const row of rows) {
|
|
1216
|
+
if (!isRawMessageRow(row) || typeof row.time_created !== "number")
|
|
1217
|
+
continue;
|
|
1218
|
+
const info = parseJsonRecord(row.data);
|
|
1219
|
+
if (!info || isRawCompactionSummaryInfo2(info))
|
|
1220
|
+
continue;
|
|
1221
|
+
into.set(row.id, {
|
|
1222
|
+
ordinal: ordinals.get(row.id) ?? null,
|
|
1223
|
+
createdAt: row.time_created
|
|
1224
|
+
});
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
const servable = blockIds.filter((id) => {
|
|
1228
|
+
const endpoint = into.get(id);
|
|
1229
|
+
return endpoint && endpoint.lastBlockIndex === undefined;
|
|
1230
|
+
});
|
|
1231
|
+
if (servable.length === 0)
|
|
1232
|
+
return;
|
|
1233
|
+
const counts = new Map;
|
|
1234
|
+
for (const row of db.prepare(BOUNDARY_BLOCK_COUNT_SQL).all(sessionId, JSON.stringify(servable))) {
|
|
1235
|
+
counts.set(row.id, row.blocks);
|
|
1236
|
+
}
|
|
1237
|
+
for (const id of servable) {
|
|
1238
|
+
const endpoint = into.get(id);
|
|
1239
|
+
if (!endpoint)
|
|
1240
|
+
continue;
|
|
1241
|
+
const blocks = counts.get(id) ?? 0;
|
|
1242
|
+
into.set(id, { ...endpoint, lastBlockIndex: blocks > 0 ? blocks - 1 : 0 });
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
function readRawSessionBoundaryEndpointsFromDb2(db, sessionId, ids, blockIds = []) {
|
|
1246
|
+
const wanted = [...new Set(ids)];
|
|
1247
|
+
const wantedBlocks = [...new Set(blockIds)];
|
|
1248
|
+
let sessions = boundaryEndpointCaches.get(db);
|
|
1249
|
+
if (!sessions) {
|
|
1250
|
+
sessions = new Map;
|
|
1251
|
+
boundaryEndpointCaches.set(db, sessions);
|
|
1252
|
+
}
|
|
1253
|
+
for (let attempt = 1;; attempt += 1) {
|
|
1254
|
+
const before = readStoreStamp(db);
|
|
1255
|
+
const cached = sessions.get(sessionId);
|
|
1256
|
+
const reuse = attempt === 1 && cached && sameStoreStamp(cached.stamp, before);
|
|
1257
|
+
const endpoints = new Map(reuse ? cached.endpoints : []);
|
|
1258
|
+
const missing = wanted.filter((id) => !endpoints.has(id));
|
|
1259
|
+
withReadSnapshot(db, () => readBoundaryEndpointRows(db, sessionId, missing, wantedBlocks, endpoints));
|
|
1260
|
+
const unchanged = before !== null && sameStoreStamp(before, readStoreStamp(db));
|
|
1261
|
+
if (unchanged) {
|
|
1262
|
+
sessions.delete(sessionId);
|
|
1263
|
+
sessions.set(sessionId, { stamp: before, endpoints });
|
|
1264
|
+
while (sessions.size > BOUNDARY_ENDPOINT_CACHE_SESSIONS) {
|
|
1265
|
+
const oldest = sessions.keys().next().value;
|
|
1266
|
+
if (oldest === undefined)
|
|
1267
|
+
break;
|
|
1268
|
+
sessions.delete(oldest);
|
|
1269
|
+
}
|
|
1270
|
+
} else if (reuse) {
|
|
1271
|
+
continue;
|
|
1272
|
+
}
|
|
1273
|
+
return new Map(wanted.map((id) => [id, endpoints.get(id) ?? null]));
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1141
1276
|
|
|
1142
|
-
export { registerExitAbort, unregisterExitAbort, isStrictGapHealingMessage2, isRawCompactionSummaryInfo2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, extractInMemoryMessageViews2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, rawOrdinalSummarySeed2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2, runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb };
|
|
1277
|
+
export { registerExitAbort, unregisterExitAbort, isStrictGapHealingMessage2, isRawCompactionSummaryInfo2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, extractInMemoryMessageViews2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, rawOrdinalSummarySeed2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2, readRawSessionBoundaryEndpointsFromDb2, runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb };
|