@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
|
@@ -5,32 +5,37 @@ import {
|
|
|
5
5
|
removeSystemReminders,
|
|
6
6
|
hasMeaningfulUserText2,
|
|
7
7
|
extractTexts2
|
|
8
|
-
} from "./server-
|
|
8
|
+
} from "./server-kzns2hbz.js";
|
|
9
9
|
import {
|
|
10
10
|
withSqliteBackgroundWriter2,
|
|
11
11
|
withoutSqliteTransformPass2
|
|
12
12
|
} from "./server-kb9nn0a0.js";
|
|
13
13
|
import {
|
|
14
|
+
TAG_TOMBSTONE_OWNER_PREFIX,
|
|
15
|
+
tagTombstoneOwnerRange,
|
|
16
|
+
tagTombstoneOwnerKey,
|
|
17
|
+
tagRevisionKey,
|
|
18
|
+
tagIdentityRevisionKey,
|
|
14
19
|
deleteTagIdentityRevisions
|
|
15
|
-
} from "./server-
|
|
20
|
+
} from "./server-6byqfbqf.js";
|
|
16
21
|
import {
|
|
17
22
|
cleanUserText2
|
|
18
|
-
} from "./server-
|
|
23
|
+
} from "./server-4ez8mntn.js";
|
|
19
24
|
import {
|
|
20
25
|
recordMessageFtsRowid,
|
|
21
26
|
recordIndexedMessageTime,
|
|
22
27
|
messageFtsOrdinalRangeIsMapped,
|
|
23
28
|
deleteUnmappedMessageFtsRows
|
|
24
|
-
} from "./server-
|
|
29
|
+
} from "./server-3j4d00kf.js";
|
|
25
30
|
import {
|
|
26
31
|
deleteChunkEmbedBackoffForSession
|
|
27
|
-
} from "./server-
|
|
32
|
+
} from "./server-ss95ky04.js";
|
|
28
33
|
import {
|
|
29
34
|
closeQuietly
|
|
30
35
|
} from "./server-8ajstryz.js";
|
|
31
36
|
import {
|
|
32
37
|
logSlowWriteTransaction
|
|
33
|
-
} from "./server-
|
|
38
|
+
} from "./server-3t0q2cqx.js";
|
|
34
39
|
|
|
35
40
|
// src/features/magic-context/compression-depth-storage.ts
|
|
36
41
|
var incrementDepthStatements = new WeakMap;
|
|
@@ -168,6 +173,17 @@ function deleteSessionScopedRows(db, sessionIds, harness, options = {}) {
|
|
|
168
173
|
if (deletableSessionIds.length === 0)
|
|
169
174
|
return 0;
|
|
170
175
|
const placeholders = deletableSessionIds.map(() => "?").join(", ");
|
|
176
|
+
const harnessTables = SESSION_SCOPED_TABLES.filter((definition) => definition.harnessScoped);
|
|
177
|
+
if (options.preserveTagRevisionTombstones) {
|
|
178
|
+
const owners = db.prepare(harnessTables.map((definition) => `SELECT session_id, harness FROM ${definition.table} WHERE session_id IN (${placeholders})${definition.extraPredicate ? ` AND ${definition.extraPredicate}` : ""}`).join(" UNION ")).all(...harnessTables.flatMap(() => deletableSessionIds));
|
|
179
|
+
const record = db.prepare("INSERT OR IGNORE INTO schema_migrations_meta (key, value) VALUES (?, ?)");
|
|
180
|
+
for (const owner of owners)
|
|
181
|
+
record.run(tagTombstoneOwnerKey(owner.session_id, owner.harness), owner.harness);
|
|
182
|
+
const fallback = db.prepare(`INSERT INTO schema_migrations_meta (key, value)
|
|
183
|
+
SELECT ?, ? WHERE NOT EXISTS (SELECT 1 FROM schema_migrations_meta WHERE key >= ? AND key < ?)`);
|
|
184
|
+
for (const id of deletableSessionIds)
|
|
185
|
+
fallback.run(tagTombstoneOwnerKey(id, getHarness2()), getHarness2(), ...tagTombstoneOwnerRange(id));
|
|
186
|
+
}
|
|
171
187
|
for (const sessionId of deletableSessionIds)
|
|
172
188
|
deleteChunkEmbedBackoffForSession(db, sessionId);
|
|
173
189
|
for (const definition of SESSION_SCOPED_TABLES) {
|
|
@@ -194,6 +210,20 @@ function deleteSessionScopedRows(db, sessionIds, harness, options = {}) {
|
|
|
194
210
|
statement.run(...deletableSessionIds);
|
|
195
211
|
}
|
|
196
212
|
deleteSessionActivity(db, deletableSessionIds);
|
|
213
|
+
if (!options.preserveTagRevisionTombstones) {
|
|
214
|
+
const retireOwner = db.prepare(harness === undefined ? "DELETE FROM schema_migrations_meta WHERE key >= ? AND key < ?" : "DELETE FROM schema_migrations_meta WHERE key = ?");
|
|
215
|
+
const survivingRows = harnessTables.map((definition) => `EXISTS (SELECT 1 FROM ${definition.table} WHERE session_id = ?${definition.extraPredicate ? ` AND ${definition.extraPredicate}` : ""})`).join(" OR ");
|
|
216
|
+
const retire = db.prepare(`DELETE FROM schema_migrations_meta WHERE key IN (?, ?)
|
|
217
|
+
AND NOT (${survivingRows})
|
|
218
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta AS owners WHERE owners.key >= ? AND owners.key < ?)`);
|
|
219
|
+
for (const id of deletableSessionIds) {
|
|
220
|
+
if (harness === undefined)
|
|
221
|
+
retireOwner.run(...tagTombstoneOwnerRange(id));
|
|
222
|
+
else
|
|
223
|
+
retireOwner.run(tagTombstoneOwnerKey(id, harness));
|
|
224
|
+
retire.run(tagIdentityRevisionKey(id), tagRevisionKey(id), ...harnessTables.map(() => id), ...tagTombstoneOwnerRange(id));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
197
227
|
return deletableSessionIds.length;
|
|
198
228
|
}
|
|
199
229
|
|
|
@@ -650,12 +680,19 @@ function persistMessageHistoryOrphanSweepState(db, cursor, lastSweptAt, harness)
|
|
|
650
680
|
last_swept_at = excluded.last_swept_at`).run(harness, cursor, lastSweptAt);
|
|
651
681
|
}
|
|
652
682
|
function getOpenCodeSessionScopedCandidateSourceSql(harness) {
|
|
653
|
-
|
|
683
|
+
const sources = SESSION_SCOPED_TABLES.filter((definition) => definition.harnessScoped === true).map((definition) => {
|
|
654
684
|
const predicates = ["session_id IS NOT NULL", `harness = '${harness}'`];
|
|
655
685
|
if (definition.extraPredicate)
|
|
656
686
|
predicates.push(definition.extraPredicate);
|
|
657
687
|
return `SELECT session_id FROM ${definition.table} WHERE ${predicates.join(" AND ")}`;
|
|
658
|
-
})
|
|
688
|
+
});
|
|
689
|
+
const jsonId = `SUBSTR(key, ${TAG_TOMBSTONE_OWNER_PREFIX.length + 1}, LENGTH(key) - ${TAG_TOMBSTONE_OWNER_PREFIX.length + harness.length + 1})`;
|
|
690
|
+
sources.push(`SELECT CASE WHEN json_valid(${jsonId}) THEN
|
|
691
|
+
CASE WHEN json_type(${jsonId}) = 'text' THEN json_extract(${jsonId}, '$') END END AS session_id
|
|
692
|
+
FROM schema_migrations_meta WHERE value = '${harness}'
|
|
693
|
+
AND key >= '${TAG_TOMBSTONE_OWNER_PREFIX}' AND key < '${TAG_TOMBSTONE_OWNER_PREFIX.slice(0, -1)};'
|
|
694
|
+
AND SUBSTR(key, -${harness.length + 1}) = ':${harness}'`);
|
|
695
|
+
return sources.join(`
|
|
659
696
|
UNION
|
|
660
697
|
`);
|
|
661
698
|
}
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
getMagicContextStorageDir,
|
|
9
9
|
importPluginModule,
|
|
10
10
|
log2
|
|
11
|
-
} from "./server-
|
|
11
|
+
} from "./server-t4k4qexw.js";
|
|
12
12
|
import {
|
|
13
13
|
getSynapseLaneIdentity
|
|
14
|
-
} from "./server-
|
|
14
|
+
} from "./server-hb6xhh9q.js";
|
|
15
15
|
import {
|
|
16
16
|
computeNormalizedHash
|
|
17
17
|
} from "./server-2bvekkfy.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log2
|
|
3
|
-
} from "./server-
|
|
3
|
+
} from "./server-t4k4qexw.js";
|
|
4
4
|
import {
|
|
5
5
|
getSdkWindowGeometry,
|
|
6
6
|
getSdkContextLimit,
|
|
7
7
|
getSdkInputLimit
|
|
8
|
-
} from "./server-
|
|
8
|
+
} from "./server-8k2agx29.js";
|
|
9
9
|
import {
|
|
10
10
|
localBudget,
|
|
11
11
|
calibrationForModelKey
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
providerVisiblePart,
|
|
13
13
|
getCandidateToolOwners2,
|
|
14
14
|
pickNearestPriorOwner2
|
|
15
|
-
} from "./server-
|
|
15
|
+
} from "./server-c5rrgrcd.js";
|
|
16
16
|
import {
|
|
17
17
|
OMO_INTERNAL_INITIATOR_MARKER,
|
|
18
18
|
isSystemDirective,
|
|
@@ -29,13 +29,13 @@ import {
|
|
|
29
29
|
formatBlock,
|
|
30
30
|
compactTextForSummary,
|
|
31
31
|
mergeCommitHashes
|
|
32
|
-
} from "./server-
|
|
32
|
+
} from "./server-kzns2hbz.js";
|
|
33
33
|
import {
|
|
34
34
|
sessionLog2
|
|
35
|
-
} from "./server-
|
|
35
|
+
} from "./server-t4k4qexw.js";
|
|
36
36
|
import {
|
|
37
37
|
stableStringify
|
|
38
|
-
} from "./server-
|
|
38
|
+
} from "./server-6byqfbqf.js";
|
|
39
39
|
import {
|
|
40
40
|
renderToolTemplate
|
|
41
41
|
} from "./server-mfkzp7qj.js";
|
|
@@ -53,19 +53,20 @@ import {
|
|
|
53
53
|
readRawSessionMessageByIdFromDb2,
|
|
54
54
|
hasRawSessionMessageByIdFromDb2,
|
|
55
55
|
readRawSeedTailFromDb2,
|
|
56
|
+
readRawSessionBoundaryEndpointsFromDb2,
|
|
56
57
|
prewarmRawSessionOrdinalsForDb
|
|
57
|
-
} from "./server-
|
|
58
|
+
} from "./server-7h861yms.js";
|
|
58
59
|
import {
|
|
59
60
|
openCodeDbExists,
|
|
60
61
|
withReadOnlySessionDb,
|
|
61
62
|
getRawSessionMessageCountFromDb,
|
|
62
63
|
getMessageTimesFromOpenCodeDb
|
|
63
|
-
} from "./server-
|
|
64
|
+
} from "./server-pj4pjv02.js";
|
|
64
65
|
import {
|
|
65
66
|
getToolDefinitionMeasurementSignature,
|
|
66
67
|
getLargestMeasuredToolDefinitionTokens,
|
|
67
68
|
getMeasuredToolDefinitionTokens
|
|
68
|
-
} from "./server-
|
|
69
|
+
} from "./server-7ekna9zs.js";
|
|
69
70
|
import {
|
|
70
71
|
canonicalModelIdentity
|
|
71
72
|
} from "./server-avwt563y.js";
|
|
@@ -2680,6 +2681,13 @@ function readRawSessionMessagePartsById2(sessionId, messageId, onQuery) {
|
|
|
2680
2681
|
return null;
|
|
2681
2682
|
return withReadOnlySessionDb((db) => readRawSessionMessagePartsByIdFromDb2(db, sessionId, messageId, onQuery));
|
|
2682
2683
|
}
|
|
2684
|
+
function readRawSessionBoundaryEndpoints2(sessionId, ids, blockIds) {
|
|
2685
|
+
if (sessionProviders.get(sessionId)?.provider)
|
|
2686
|
+
return null;
|
|
2687
|
+
if (!openCodeDbExists())
|
|
2688
|
+
return new Map(ids.map((id) => [id, null]));
|
|
2689
|
+
return withReadOnlySessionDb((db) => readRawSessionBoundaryEndpointsFromDb2(db, sessionId, ids, blockIds));
|
|
2690
|
+
}
|
|
2683
2691
|
function hasRawSessionMessageById2(sessionId, messageId) {
|
|
2684
2692
|
const provider = sessionProviders.get(sessionId)?.provider;
|
|
2685
2693
|
if (provider?.hasMessageById)
|
|
@@ -3202,4 +3210,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
|
|
|
3202
3210
|
});
|
|
3203
3211
|
}
|
|
3204
3212
|
|
|
3205
|
-
export { detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, 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, describeFinalWireTail, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, neutralizedReasoningSource, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, neutralizeWholeMessage, isSentinel, replaySentinelByMessageIds, 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, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
|
|
3213
|
+
export { detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, 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, describeFinalWireTail, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, neutralizedReasoningSource, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, neutralizeWholeMessage, isSentinel, replaySentinelByMessageIds, 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 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionLog2
|
|
3
|
-
} from "./server-
|
|
3
|
+
} from "./server-t4k4qexw.js";
|
|
4
4
|
import {
|
|
5
5
|
isKnownAutocommit
|
|
6
6
|
} from "./server-8ajstryz.js";
|
|
@@ -353,12 +353,42 @@ function tagOrderConstraintIndex(db) {
|
|
|
353
353
|
|
|
354
354
|
// src/features/magic-context/storage-tag-identity-revision.ts
|
|
355
355
|
var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:";
|
|
356
|
+
var TAG_REVISION_PREFIX = "tag_revision:";
|
|
357
|
+
var TAG_TOMBSTONE_OWNER_PREFIX = "tag_revision_owner:";
|
|
358
|
+
var TAG_REVISION_INCARNATION_KEY = "tag_revision_incarnation";
|
|
359
|
+
var tagRevisionIncarnationSql = (value) => `CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, 1, INSTR(${value}, ':') - 1) ELSE '0' END`;
|
|
360
|
+
var tagRevisionCountSql = (value) => `CAST(CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, INSTR(${value}, ':') + 1) ELSE ${value} END AS INTEGER)`;
|
|
361
|
+
var ADVANCE = (delta = "1") => `CASE
|
|
362
|
+
WHEN ${tagRevisionCountSql("value")} <= 9223372036854775807 - ${delta}
|
|
363
|
+
THEN (${tagRevisionIncarnationSql("value")}) || ':' || CAST(${tagRevisionCountSql("value")} + ${delta} AS TEXT)
|
|
364
|
+
ELSE NULL END`;
|
|
365
|
+
function tagTombstoneOwnerRange(sessionId) {
|
|
366
|
+
const stem = `${TAG_TOMBSTONE_OWNER_PREFIX}${JSON.stringify(sessionId)}`;
|
|
367
|
+
return [`${stem}:`, `${stem};`];
|
|
368
|
+
}
|
|
369
|
+
function tagTombstoneOwnerKey(sessionId, harness) {
|
|
370
|
+
return `${tagTombstoneOwnerRange(sessionId)[0]}${harness}`;
|
|
371
|
+
}
|
|
372
|
+
function tagRevisionKey(sessionId) {
|
|
373
|
+
return `${TAG_REVISION_PREFIX}${sessionId}`;
|
|
374
|
+
}
|
|
356
375
|
function tagIdentityRevisionKey(sessionId) {
|
|
357
376
|
return `${TAG_IDENTITY_REVISION_PREFIX}${sessionId}`;
|
|
358
377
|
}
|
|
359
|
-
var BUMP = (session) => `INSERT INTO schema_migrations_meta (key, value)
|
|
360
|
-
VALUES ('${
|
|
361
|
-
ON CONFLICT(key) DO UPDATE SET value =
|
|
378
|
+
var BUMP = (session, prefix = TAG_IDENTITY_REVISION_PREFIX) => `INSERT INTO schema_migrations_meta (key, value)
|
|
379
|
+
VALUES ('${prefix}' || ${session}, '1')
|
|
380
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`;
|
|
381
|
+
var TAG_INSERT_CONFLICT_ROWS = `SELECT id, session_id, tag_number FROM tags WHERE id = NEW.id
|
|
382
|
+
UNION SELECT id, session_id, tag_number FROM tags WHERE session_id = NEW.session_id AND tag_number = NEW.tag_number
|
|
383
|
+
UNION SELECT id, session_id, tag_number FROM tags
|
|
384
|
+
WHERE NEW.type = 'tool' AND NEW.tool_owner_message_id IS NOT NULL
|
|
385
|
+
AND type = 'tool' AND tool_owner_message_id IS NOT NULL
|
|
386
|
+
AND session_id = NEW.session_id AND message_id = NEW.message_id
|
|
387
|
+
AND tool_owner_message_id = NEW.tool_owner_message_id`;
|
|
388
|
+
var BUMP_INSERT_CONFLICTS = (prefix) => `INSERT INTO schema_migrations_meta (key, value)
|
|
389
|
+
SELECT '${prefix}' || session_id, CAST(COUNT(*) AS TEXT)
|
|
390
|
+
FROM (${TAG_INSERT_CONFLICT_ROWS}) GROUP BY session_id
|
|
391
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE("CAST(excluded.value AS INTEGER)")}`;
|
|
362
392
|
var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
363
393
|
AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
|
|
364
394
|
ON main.tags
|
|
@@ -367,15 +397,69 @@ var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
|
367
397
|
INSERT INTO schema_migrations_meta (key, value)
|
|
368
398
|
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
369
399
|
WHERE NEW.session_id IS NOT OLD.session_id
|
|
370
|
-
ON CONFLICT(key) DO UPDATE SET value =
|
|
400
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
371
401
|
END`;
|
|
372
402
|
function installTagIdentityRevisionTrigger(db) {
|
|
403
|
+
db.exec(`DROP TRIGGER IF EXISTS temp.mc_tag_identity_revision_au;
|
|
404
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_bi;
|
|
405
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ai;
|
|
406
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_au;
|
|
407
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ad;
|
|
408
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_seed_ai;`);
|
|
409
|
+
db.exec(`CREATE TEMP TRIGGER mc_tag_revision_seed_ai AFTER INSERT ON main.schema_migrations_meta
|
|
410
|
+
WHEN INSTR(NEW.value, ':') = 0 AND (
|
|
411
|
+
SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
412
|
+
OR SUBSTR(NEW.key, 1, ${TAG_IDENTITY_REVISION_PREFIX.length}) = '${TAG_IDENTITY_REVISION_PREFIX}')
|
|
413
|
+
BEGIN
|
|
414
|
+
INSERT INTO schema_migrations_meta (key, value) VALUES ('${TAG_REVISION_INCARNATION_KEY}', '1')
|
|
415
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
416
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
417
|
+
ELSE NULL END AS TEXT);
|
|
418
|
+
UPDATE schema_migrations_meta SET value =
|
|
419
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}')
|
|
420
|
+
|| ':' || CAST(NEW.value AS TEXT) WHERE key = NEW.key;
|
|
421
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
422
|
+
SELECT '${TAG_REVISION_INCARNATION_KEY}', '1'
|
|
423
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
424
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
425
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}))
|
|
426
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
427
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
428
|
+
ELSE NULL END AS TEXT);
|
|
429
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
430
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}),
|
|
431
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}') || ':0'
|
|
432
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
433
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
434
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}));
|
|
435
|
+
END;`);
|
|
373
436
|
db.exec(TRIGGER_SQL);
|
|
437
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_bi BEFORE INSERT ON main.tags BEGIN
|
|
438
|
+
${BUMP_INSERT_CONFLICTS(TAG_REVISION_PREFIX)};
|
|
439
|
+
${BUMP_INSERT_CONFLICTS(TAG_IDENTITY_REVISION_PREFIX)};
|
|
440
|
+
UPDATE session_meta SET tags_version = tags_version + 1
|
|
441
|
+
WHERE session_id IN (SELECT session_id FROM (${TAG_INSERT_CONFLICT_ROWS}));
|
|
442
|
+
END;`);
|
|
443
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ai AFTER INSERT ON main.tags BEGIN
|
|
444
|
+
${BUMP("NEW.session_id", TAG_REVISION_PREFIX)};
|
|
445
|
+
END;
|
|
446
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_au AFTER UPDATE ON main.tags BEGIN
|
|
447
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
448
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
449
|
+
SELECT '${TAG_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
450
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
451
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
452
|
+
END;
|
|
453
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ad AFTER DELETE ON main.tags BEGIN
|
|
454
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
455
|
+
END;`);
|
|
374
456
|
}
|
|
375
457
|
function deleteTagIdentityRevisions(db, sessionIds) {
|
|
376
|
-
const statement = db.prepare(
|
|
377
|
-
|
|
378
|
-
|
|
458
|
+
const statement = db.prepare(`INSERT INTO schema_migrations_meta (key, value) VALUES (?, '1')
|
|
459
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`);
|
|
460
|
+
for (const sessionId of sessionIds) {
|
|
461
|
+
statement.run(tagIdentityRevisionKey(sessionId));
|
|
462
|
+
}
|
|
379
463
|
}
|
|
380
464
|
|
|
381
465
|
// src/shared/stable-json.ts
|
|
@@ -426,4 +510,4 @@ function writeStable(value, seen, pieces) {
|
|
|
426
510
|
pieces.push("}");
|
|
427
511
|
}
|
|
428
512
|
|
|
429
|
-
export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
513
|
+
export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, TAG_TOMBSTONE_OWNER_PREFIX, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
estimateTokens
|
|
3
|
-
} from "./server-
|
|
3
|
+
} from "./server-kzns2hbz.js";
|
|
4
4
|
import {
|
|
5
5
|
stableStringify
|
|
6
|
-
} from "./server-
|
|
6
|
+
} from "./server-6byqfbqf.js";
|
|
7
7
|
|
|
8
8
|
// src/features/magic-context/tool-definition-tokens.ts
|
|
9
9
|
import { createHash } from "node:crypto";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log2
|
|
3
|
-
} from "./server-
|
|
3
|
+
} from "./server-t4k4qexw.js";
|
|
4
4
|
import {
|
|
5
5
|
getSqliteDatabasePath2,
|
|
6
6
|
releaseIndexOwner2
|
|
@@ -171,30 +171,46 @@ function readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWaterma
|
|
|
171
171
|
const pageSize = Math.min(Math.max(1, Math.floor(limit)), remaining);
|
|
172
172
|
if (pageSize === 0)
|
|
173
173
|
return [];
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
174
|
+
return withReadSnapshot(db, () => {
|
|
175
|
+
const ordinal = Math.max(0, Math.floor(afterOrdinal));
|
|
176
|
+
const points = currentOrdinalCheckpoints(db, sessionId)?.scan.checkpoints ?? [];
|
|
177
|
+
let low = 0;
|
|
178
|
+
let high = points.length;
|
|
179
|
+
while (low < high) {
|
|
180
|
+
const middle = Math.floor((low + high) / 2);
|
|
181
|
+
if (points[middle].ordinal <= ordinal)
|
|
182
|
+
low = middle + 1;
|
|
183
|
+
else
|
|
184
|
+
high = middle;
|
|
185
|
+
}
|
|
186
|
+
const floor = points[low - 1];
|
|
187
|
+
const useFloor = floor && (!after || compareOrdinalKeys(floor, after) > 0);
|
|
188
|
+
const anchor = useFloor ? floor : after;
|
|
189
|
+
const skip = anchor === after && after ? 0 : ordinal - (floor?.ordinal ?? 0);
|
|
190
|
+
if (skip > ORDINAL_LOOKUP_LIMIT) {
|
|
191
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
192
|
+
throw new RawOrdinalsNotReady;
|
|
193
|
+
}
|
|
194
|
+
const rawLimit = skip + pageSize + ORDINAL_LOOKUP_LIMIT;
|
|
195
|
+
const rows = db.prepare(`SELECT id, data, time_created, time_updated, ${EXCLUDED_ROW_SQL} AS excluded
|
|
196
|
+
FROM message WHERE id IN (
|
|
197
|
+
SELECT id FROM message WHERE session_id = ?
|
|
198
|
+
${anchor ? "AND (time_created, id) > (?, ?)" : ""}
|
|
199
|
+
ORDER BY time_created, id LIMIT ?)
|
|
200
|
+
ORDER BY time_created, id`).all(sessionId, ...anchor ? [anchor.timeCreated, anchor.id] : [], rawLimit);
|
|
201
|
+
rawMessagePageRowsVisited += rows.length;
|
|
202
|
+
const eligible = rows.filter((row) => row.excluded !== 1);
|
|
203
|
+
if (eligible.length <= skip && rows.length === rawLimit) {
|
|
204
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
205
|
+
throw new RawOrdinalsNotReady;
|
|
206
|
+
}
|
|
207
|
+
return eligible.slice(skip, skip + pageSize).filter(isRawMessageRow).map((row, index) => ({
|
|
208
|
+
...row,
|
|
209
|
+
ordinal: ordinal + index + 1
|
|
210
|
+
}));
|
|
211
|
+
});
|
|
197
212
|
}
|
|
213
|
+
var rawMessagePageRowsVisited = 0;
|
|
198
214
|
function assembleRawMessagePage(messageRows, partRows) {
|
|
199
215
|
const partsByMessageId = new Map;
|
|
200
216
|
for (const part of partRows) {
|
|
@@ -994,6 +1010,125 @@ function readRawSeedTailFromDb2(db, sessionId, boundaryId) {
|
|
|
994
1010
|
throw new Error("state_sync materialized boundary is missing from raw storage");
|
|
995
1011
|
return messages;
|
|
996
1012
|
}
|
|
1013
|
+
var BOUNDARY_ORDINAL_SQL = `
|
|
1014
|
+
SELECT id, ordinal FROM (
|
|
1015
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY time_created, id) AS ordinal
|
|
1016
|
+
FROM message
|
|
1017
|
+
WHERE session_id = ?
|
|
1018
|
+
AND typeof(id) = 'text' AND typeof(data) = 'text'
|
|
1019
|
+
AND CASE WHEN json_valid(data) THEN NOT (
|
|
1020
|
+
COALESCE(json_type(data, '$.summary'), '') = 'true'
|
|
1021
|
+
AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
|
|
1022
|
+
) ELSE 1 END
|
|
1023
|
+
)
|
|
1024
|
+
WHERE id IN (SELECT value FROM json_each(?))`;
|
|
1025
|
+
var BOUNDARY_MESSAGE_SQL = `
|
|
1026
|
+
SELECT id, data, time_created FROM message
|
|
1027
|
+
WHERE +session_id = ? AND id IN (SELECT value FROM json_each(?))`;
|
|
1028
|
+
var BOUNDARY_BLOCK_COUNT_SQL = `
|
|
1029
|
+
SELECT message_id AS id, SUM(
|
|
1030
|
+
CASE
|
|
1031
|
+
WHEN NOT json_valid(data) OR json_type(data) <> 'object' THEN 0
|
|
1032
|
+
ELSE CASE (CASE WHEN json_type(data, '$.type') = 'text'
|
|
1033
|
+
THEN json_extract(data, '$.type') ELSE 'unknown' END)
|
|
1034
|
+
WHEN 'text' THEN CASE WHEN json_type(data, '$.ignored') = 'true' THEN 0 ELSE 1 END
|
|
1035
|
+
WHEN 'reasoning' THEN 1
|
|
1036
|
+
WHEN 'thinking' THEN 1
|
|
1037
|
+
WHEN 'redacted_thinking' THEN 1
|
|
1038
|
+
WHEN 'tool' THEN 1 + CASE
|
|
1039
|
+
WHEN json_type(data, '$.state') = 'object'
|
|
1040
|
+
AND json_type(data, '$.state.status') = 'text'
|
|
1041
|
+
AND json_extract(data, '$.state.status') IN ('completed', 'error')
|
|
1042
|
+
THEN 1 ELSE 0 END
|
|
1043
|
+
WHEN 'compaction' THEN 0
|
|
1044
|
+
WHEN 'step-finish' THEN 0
|
|
1045
|
+
WHEN 'snapshot' THEN 0
|
|
1046
|
+
WHEN 'patch' THEN 0
|
|
1047
|
+
WHEN 'agent' THEN 0
|
|
1048
|
+
WHEN 'retry' THEN 0
|
|
1049
|
+
ELSE 1
|
|
1050
|
+
END
|
|
1051
|
+
END) AS blocks
|
|
1052
|
+
FROM part
|
|
1053
|
+
WHERE +session_id = ?
|
|
1054
|
+
AND message_id IN (SELECT value FROM json_each(?))
|
|
1055
|
+
AND typeof(message_id) = 'text' AND typeof(data) = 'text'
|
|
1056
|
+
GROUP BY message_id`;
|
|
1057
|
+
var boundaryEndpointCaches = new WeakMap;
|
|
1058
|
+
var BOUNDARY_ENDPOINT_CACHE_SESSIONS = 16;
|
|
1059
|
+
var boundaryEndpointRowsRead = 0;
|
|
1060
|
+
function readBoundaryEndpointRows(db, sessionId, ids, blockIds, into) {
|
|
1061
|
+
if (ids.length > 0) {
|
|
1062
|
+
boundaryEndpointRowsRead += ids.length;
|
|
1063
|
+
const wanted = JSON.stringify(ids);
|
|
1064
|
+
const ordinals = new Map;
|
|
1065
|
+
for (const row of db.prepare(BOUNDARY_ORDINAL_SQL).all(sessionId, wanted)) {
|
|
1066
|
+
ordinals.set(row.id, row.ordinal);
|
|
1067
|
+
}
|
|
1068
|
+
const rows = db.prepare(BOUNDARY_MESSAGE_SQL).all(sessionId, wanted);
|
|
1069
|
+
for (const id of ids)
|
|
1070
|
+
into.set(id, null);
|
|
1071
|
+
for (const row of rows) {
|
|
1072
|
+
if (!isRawMessageRow(row) || typeof row.time_created !== "number")
|
|
1073
|
+
continue;
|
|
1074
|
+
const info = parseJsonRecord(row.data);
|
|
1075
|
+
if (!info || isRawCompactionSummaryInfo2(info))
|
|
1076
|
+
continue;
|
|
1077
|
+
into.set(row.id, {
|
|
1078
|
+
ordinal: ordinals.get(row.id) ?? null,
|
|
1079
|
+
createdAt: row.time_created
|
|
1080
|
+
});
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
const servable = blockIds.filter((id) => {
|
|
1084
|
+
const endpoint = into.get(id);
|
|
1085
|
+
return endpoint && endpoint.lastBlockIndex === undefined;
|
|
1086
|
+
});
|
|
1087
|
+
if (servable.length === 0)
|
|
1088
|
+
return;
|
|
1089
|
+
const counts = new Map;
|
|
1090
|
+
for (const row of db.prepare(BOUNDARY_BLOCK_COUNT_SQL).all(sessionId, JSON.stringify(servable))) {
|
|
1091
|
+
counts.set(row.id, row.blocks);
|
|
1092
|
+
}
|
|
1093
|
+
for (const id of servable) {
|
|
1094
|
+
const endpoint = into.get(id);
|
|
1095
|
+
if (!endpoint)
|
|
1096
|
+
continue;
|
|
1097
|
+
const blocks = counts.get(id) ?? 0;
|
|
1098
|
+
into.set(id, { ...endpoint, lastBlockIndex: blocks > 0 ? blocks - 1 : 0 });
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
function readRawSessionBoundaryEndpointsFromDb2(db, sessionId, ids, blockIds = []) {
|
|
1102
|
+
const wanted = [...new Set(ids)];
|
|
1103
|
+
const wantedBlocks = [...new Set(blockIds)];
|
|
1104
|
+
let sessions = boundaryEndpointCaches.get(db);
|
|
1105
|
+
if (!sessions) {
|
|
1106
|
+
sessions = new Map;
|
|
1107
|
+
boundaryEndpointCaches.set(db, sessions);
|
|
1108
|
+
}
|
|
1109
|
+
for (let attempt = 1;; attempt += 1) {
|
|
1110
|
+
const before = readStoreStamp(db);
|
|
1111
|
+
const cached = sessions.get(sessionId);
|
|
1112
|
+
const reuse = attempt === 1 && cached && sameStoreStamp(cached.stamp, before);
|
|
1113
|
+
const endpoints = new Map(reuse ? cached.endpoints : []);
|
|
1114
|
+
const missing = wanted.filter((id) => !endpoints.has(id));
|
|
1115
|
+
withReadSnapshot(db, () => readBoundaryEndpointRows(db, sessionId, missing, wantedBlocks, endpoints));
|
|
1116
|
+
const unchanged = before !== null && sameStoreStamp(before, readStoreStamp(db));
|
|
1117
|
+
if (unchanged) {
|
|
1118
|
+
sessions.delete(sessionId);
|
|
1119
|
+
sessions.set(sessionId, { stamp: before, endpoints });
|
|
1120
|
+
while (sessions.size > BOUNDARY_ENDPOINT_CACHE_SESSIONS) {
|
|
1121
|
+
const oldest = sessions.keys().next().value;
|
|
1122
|
+
if (oldest === undefined)
|
|
1123
|
+
break;
|
|
1124
|
+
sessions.delete(oldest);
|
|
1125
|
+
}
|
|
1126
|
+
} else if (reuse) {
|
|
1127
|
+
continue;
|
|
1128
|
+
}
|
|
1129
|
+
return new Map(wanted.map((id) => [id, endpoints.get(id) ?? null]));
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
997
1132
|
|
|
998
1133
|
// src/hooks/magic-context/raw-ordinal-warmup.ts
|
|
999
1134
|
var ACCEPT_TIMEOUT_MS = 2000;
|
|
@@ -1134,4 +1269,4 @@ function recordFailure(key, sessionId, failure, detail) {
|
|
|
1134
1269
|
log2(`[magic-context] WARN canonical ordinal warm-up failed for ${sessionId} (${failure}: ${detail}); counts remain bounded and callers must defer or retry`);
|
|
1135
1270
|
}
|
|
1136
1271
|
|
|
1137
|
-
export { 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 };
|
|
1272
|
+
export { 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 };
|