@cortexkit/opencode-magic-context 0.49.7 → 0.49.8
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 +6 -6
- package/dist/compaction-marker-candidates-worker.js +2 -2
- package/dist/{compaction-marker-candidates-a0edbqrr.js → compaction-marker-candidates-xxz35vwp.js} +3 -3
- package/dist/{conflict-warning-hook-myk5hbt9.js → conflict-warning-hook-w3crzrar.js} +8 -8
- package/dist/{context-ffr7e0g7.js → context-x0ccfv0f.js} +65 -42
- package/dist/{derive-budgets-j4ry8j8n.js → derive-budgets-3nbxsyss.js} +2 -2
- package/dist/embedding-backfill-3h2m5n0q.js +21 -0
- package/dist/embedding-worker-process.js +6 -2
- package/dist/embedding-worker.js +6 -5
- package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/cron.d.ts +2 -0
- package/dist/features/magic-context/dreamer/cron.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/provider-output-failure.d.ts +1 -0
- package/dist/features/magic-context/dreamer/provider-output-failure.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-local.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/migration-worker-client.d.ts.map +1 -1
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/wake-plane.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/history-owner-ty29fz0f.js +244 -0
- package/dist/hooks/auto-update-checker/checker.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/edit-marker.d.ts +2 -0
- package/dist/hooks/magic-context/edit-marker.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-transport.d.ts +1 -0
- package/dist/hooks/magic-context/module-transport.d.ts.map +1 -1
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts +8 -4
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +1 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-refusal-recovery.d.ts.map +1 -1
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/unresolved-history-boundary.d.ts +5 -1
- package/dist/hooks/magic-context/unresolved-history-boundary.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-g8qbdb03.js → index-0jz47061.js} +6 -3
- package/dist/{index-4mjhqadz.js → index-150zz6fh.js} +1 -1
- package/dist/{index-j58gqrn2.js → index-2rw244rh.js} +31 -24
- package/dist/{index-0gyq3djm.js → index-4hb8nt93.js} +3 -3
- package/dist/{index-ax2jhztn.js → index-7bjgyaj1.js} +4 -4
- package/dist/{index-h2wc01qk.js → index-8kk7yh6m.js} +2 -2
- package/dist/{index-n5a170gs.js → index-9g1c4bt9.js} +81 -58
- package/dist/{index-w6bd03dc.js → index-a43xq1pg.js} +5 -5
- package/dist/{index-tqf7yg27.js → index-a4b0gbyg.js} +1 -1
- package/dist/{index-37q80veb.js → index-angx1s0k.js} +4 -3
- package/dist/{index-wq16ahsn.js → index-b4gcb3rk.js} +8 -8
- package/dist/{index-z1tjp257.js → index-b64n4d0h.js} +1 -1
- package/dist/{index-1bt88epp.js → index-bd9cjab3.js} +1 -1
- package/dist/{index-gbmqa9x9.js → index-bmwfzz28.js} +9 -6
- package/dist/{index-qx53vezw.js → index-gjvjh960.js} +1 -1
- package/dist/{index-ebnngykq.js → index-gzg9ekc1.js} +19 -18
- package/dist/{index-5tbvdff4.js → index-hxrvx6cy.js} +79 -40
- package/dist/{index-w23dh319.js → index-jw4gbfkv.js} +1 -1
- package/dist/index-knvkbfvh.js +25 -0
- package/dist/{index-vkbqdnkj.js → index-kvw6xew3.js} +6 -3
- package/dist/{index-rzmjkdd6.js → index-mp2kghkv.js} +3 -27
- package/dist/{index-nsjyysj0.js → index-mvvephtj.js} +5 -1
- package/dist/{index-9yyqq3mm.js → index-n78avt2p.js} +1 -1
- package/dist/{index-vt4sf4ep.js → index-pgy3h49n.js} +4 -4
- package/dist/{index-w6vr754t.js → index-pjgzdezw.js} +13 -9
- package/dist/{v2/server-1rfgbjfn.js → index-q28hsbpg.js} +15 -3
- package/dist/{index-a8acx4gc.js → index-q76br5zn.js} +3 -3
- package/dist/{index-j5hce1ab.js → index-qgp5vnt4.js} +5 -5
- package/dist/{index-sf94at64.js → index-rg1cezmj.js} +22 -22
- package/dist/{index-sh91t19a.js → index-s178h9z8.js} +4 -3
- package/dist/{index-tagss15p.js → index-w1ejb9qr.js} +105 -58
- package/dist/{index-k6xvbj2e.js → index-w28y7d0z.js} +2 -0
- package/dist/{index-j8epsc0g.js → index-wafzvyhg.js} +33 -10
- package/dist/{index-rwmpkss5.js → index-xf6k8szp.js} +4 -4
- package/dist/{index-tmtty2x5.js → index-xpn05jxq.js} +4 -4
- package/dist/{index-n7kwfw2r.js → index-ydjgz36f.js} +7 -7
- package/dist/{index-4btknbqh.js → index-zf9nydbd.js} +48 -38
- package/dist/index.js +51 -50
- package/dist/{logger-ewak5q1s.js → logger-wn328tfg.js} +1 -1
- package/dist/{message-index-bounded-04rycpx4.js → message-index-bounded-hxjp56qk.js} +16 -16
- package/dist/{message-index-rqtse28y.js → message-index-zs882h8e.js} +16 -16
- package/dist/{message-time-backfill-a5ytnp53.js → message-time-backfill-nb5hhnrt.js} +3 -3
- package/dist/migration-worker.js +11 -11
- package/dist/plugin/boot-quiet.d.ts.map +1 -1
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts +2 -0
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/{project-embedding-registry-k0sd9k7v.js → project-embedding-registry-vy7sv9jt.js} +11 -11
- package/dist/raw-ordinal-warmup-worker.js +6 -6
- package/dist/{read-session-chunk-h1btx938.js → read-session-chunk-t9r7r0sg.js} +11 -11
- package/dist/{read-session-raw-vdf4wh78.js → read-session-raw-gm6xj30v.js} +3 -3
- package/dist/recomp-orchestrator-gr36zvd2.js +60 -0
- package/dist/{safe-notification-target-q0cyrx3x.js → safe-notification-target-jdynm677.js} +2 -2
- package/dist/{search-3rbdx6hw.js → search-qjen1pmz.js} +24 -24
- package/dist/{send-session-notification-2tp44tfa.js → send-session-notification-q8ngbap3.js} +6 -6
- package/dist/shared/history-owner.d.ts +12 -0
- package/dist/shared/history-owner.d.ts.map +1 -0
- package/dist/shared/off-thread-migration-clock.d.ts +8 -1
- package/dist/shared/off-thread-migration-clock.d.ts.map +1 -1
- package/dist/shared/redaction.d.ts.map +1 -1
- package/dist/shared/rpc-server.d.ts.map +1 -1
- package/dist/shared/sqlite.d.ts +2 -0
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/user-facing-codes.d.ts +2 -2
- package/dist/{sqlite-j3tvg8r0.js → sqlite-4pqyynrs.js} +3 -1
- package/dist/{storage-memory-8168bgef.js → storage-memory-j3v3hc83.js} +2 -2
- package/dist/{storage-tags-61z5j2f9.js → storage-tags-a513rkj3.js} +5 -5
- package/dist/{transform-postprocess-phase-7qts7h54.js → transform-postprocess-phase-yv463b7y.js} +30 -30
- package/dist/v2/auto-search-worker.js +6 -6
- package/dist/v2/{compaction-marker-candidates-6nypjkpf.js → compaction-marker-candidates-a15w3mqh.js} +3 -3
- package/dist/v2/compaction-marker-candidates-worker.js +2 -2
- package/dist/v2/{context-xq4rtywr.js → context-wd82v9z6.js} +137 -68
- package/dist/v2/{derive-budgets-enckmg7y.js → derive-budgets-0rmpmxjw.js} +3 -3
- package/dist/v2/embedding-backfill-vr7wdtrf.js +20 -0
- package/dist/v2/embedding-worker-process.js +6 -2
- package/dist/v2/embedding-worker.js +6 -5
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/history-owner-2cr9py37.js +243 -0
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/store.d.ts +1 -0
- package/dist/v2/hooks/store.d.ts.map +1 -1
- package/dist/v2/{logger-pj02s7sr.js → logger-te6e1j72.js} +1 -1
- package/dist/v2/{message-index-bounded-5vh1h2g7.js → message-index-bounded-madg2kfr.js} +16 -16
- package/dist/v2/{message-index-8e5z2xx8.js → message-index-yd94vt9n.js} +16 -16
- package/dist/v2/{message-time-backfill-2z365239.js → message-time-backfill-rz1pnpaj.js} +3 -3
- package/dist/v2/migration-worker.js +11 -11
- package/dist/v2/{project-embedding-registry-b77awytr.js → project-embedding-registry-ja23aygk.js} +11 -11
- package/dist/v2/raw-ordinal-warmup-worker.js +6 -6
- package/dist/v2/{read-session-chunk-4sat83cx.js → read-session-chunk-7qs791f3.js} +11 -11
- package/dist/v2/{read-session-raw-a3hw9jsp.js → read-session-raw-h4azh85b.js} +3 -3
- package/dist/v2/recomp-orchestrator-ee91r9s6.js +59 -0
- package/dist/v2/{safe-notification-target-y3p1hce9.js → safe-notification-target-936374xx.js} +2 -2
- package/dist/v2/search-pn15rr52.js +46 -0
- package/dist/v2/{send-session-notification-ppgc8qdz.js → send-session-notification-6n7chhyp.js} +6 -6
- package/dist/v2/{server-v4fwha43.js → server-08k4zkfk.js} +48 -38
- package/dist/v2/{server-ras2sxnc.js → server-44ryn9rb.js} +9 -6
- package/dist/v2/{server-fw31krgq.js → server-4easnf78.js} +19 -19
- package/dist/v2/{server-hcvcxzx7.js → server-4gz0xkrc.js} +5 -5
- package/dist/v2/{server-d6g4whc2.js → server-4qr18rfg.js} +3 -3
- package/dist/v2/{server-sy4b1sra.js → server-4rs8sm06.js} +5 -5
- package/dist/v2/{server-brhj8qtd.js → server-63ha7f0f.js} +3 -27
- package/dist/v2/{server-3t0q2cqx.js → server-7dv9wt9r.js} +1 -1
- package/dist/v2/{server-cw6521wn.js → server-7e087rvk.js} +2 -0
- package/dist/v2/{server-hb6xhh9q.js → server-988cqjme.js} +6 -3
- package/dist/v2/{server-fpqe39as.js → server-9a6bwc12.js} +4 -4
- package/dist/v2/{server-t4k4qexw.js → server-9e5r8y60.js} +5 -1
- package/dist/v2/{server-7ekna9zs.js → server-adfte03x.js} +2 -2
- package/dist/v2/{server-qcw43339.js → server-ak7w74j9.js} +4 -4
- package/dist/v2/{server-dd0nja67.js → server-bx59ezg6.js} +4 -3
- package/dist/v2/{server-676xw7at.js → server-ckrb5rm8.js} +1 -1
- package/dist/{index-w4mw92w3.js → v2/server-cxsr0ng6.js} +15 -3
- package/dist/v2/{server-t528t8qm.js → server-hn9fb3v0.js} +2 -2
- package/dist/v2/{server-7srtwsa4.js → server-j3dm74ey.js} +9 -9
- package/dist/v2/{server-w3zeywp1.js → server-jjsf29aq.js} +4 -4
- package/dist/v2/server-knvkbfvh.js +25 -0
- package/dist/v2/{server-9yyqq3mm.js → server-n78avt2p.js} +1 -1
- package/dist/v2/{server-kdrezdy0.js → server-njnx39q2.js} +6 -3
- package/dist/v2/{server-x08d1xf3.js → server-npm52h2q.js} +4 -3
- package/dist/v2/{server-vb7pbd9p.js → server-nveratm5.js} +1 -1
- package/dist/v2/{server-mv1w7t6z.js → server-q360kdb8.js} +77 -38
- package/dist/v2/{server-kzns2hbz.js → server-s6jqh8bj.js} +1 -1
- package/dist/v2/{server-6byqfbqf.js → server-shme41gj.js} +1 -1
- package/dist/v2/{server-j8epsc0g.js → server-wafzvyhg.js} +33 -10
- package/dist/v2/{server-gtv9wbhq.js → server-xj4mewze.js} +81 -58
- package/dist/v2/{server-nfan6zb6.js → server-y5g32dhq.js} +31 -24
- package/dist/v2/{server-jdwd03ep.js → server-yak3sxya.js} +7 -7
- package/dist/v2/{server-wkdgjjch.js → server-zrwaj29a.js} +2 -2
- package/dist/v2/server.js +7 -6
- package/dist/v2/{sqlite-j3tvg8r0.js → sqlite-4pqyynrs.js} +3 -1
- package/dist/v2/{storage-memory-8168bgef.js → storage-memory-j3v3hc83.js} +2 -2
- package/dist/v2/{storage-tags-j2fzq3sw.js → storage-tags-spa92sgj.js} +5 -5
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-s92ebfzv.js → wrapup-orchestrator-5wxy1ggv.js} +38 -35
- package/dist/wrapup-orchestrator-gv08c6f9.js +47 -0
- package/package.json +1 -1
- package/src/config/compaction-accessor-guard.test.ts +3 -0
- package/src/features/magic-context/dreamer/cron.ts +8 -0
- package/src/shared/history-owner.test.ts +60 -0
- package/src/shared/history-owner.ts +43 -0
- package/src/shared/host-stall-profiler-node.ts +3 -1
- package/src/shared/host-stall-profiler.ts +3 -1
- package/src/shared/off-thread-migration-clock.test.ts +80 -10
- package/src/shared/off-thread-migration-clock.ts +37 -13
- package/src/shared/redaction.test.ts +16 -0
- package/src/shared/redaction.ts +8 -1
- package/src/shared/root-async-context.probe.mjs +36 -0
- package/src/shared/root-async-context.test.ts +49 -0
- package/src/shared/rpc-server.ts +27 -23
- package/src/shared/sqlite-busy-budget-review.test.ts +291 -0
- package/src/shared/sqlite-foreground-wait.test.ts +253 -1
- package/src/shared/sqlite.ts +55 -14
- package/src/shared/user-facing-codes.ts +2 -2
- package/dist/embedding-backfill-re16xncd.js +0 -21
- package/dist/recomp-orchestrator-trcgmm23.js +0 -60
- package/dist/v2/embedding-backfill-xd9ygzgd.js +0 -20
- package/dist/v2/recomp-orchestrator-n11zv1f1.js +0 -59
- package/dist/v2/search-mvgqtkkz.js +0 -46
- package/dist/wrapup-orchestrator-df61jmz9.js +0 -47
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expect, test } from "bun:test";
|
|
1
|
+
import { expect, spyOn, test } from "bun:test";
|
|
2
2
|
import { rmSync } from "node:fs";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -113,6 +113,220 @@ for (const holdMs of [1000, 2500]) {
|
|
|
113
113
|
}, 30_000);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
for (const holdMs of [1000, 2500]) {
|
|
117
|
+
test(`slow uncontended SQL preserves admission for a ${holdMs}ms autocommit lock`, async () => {
|
|
118
|
+
const { db, path, close } = fixture();
|
|
119
|
+
let locker: SqliteWriteLocker | undefined;
|
|
120
|
+
let served = false;
|
|
121
|
+
let refusals = 0;
|
|
122
|
+
const output = {
|
|
123
|
+
messages: [
|
|
124
|
+
{
|
|
125
|
+
info: { id: "u", sessionID: "slow", role: "user" },
|
|
126
|
+
parts: [{ type: "text", text: "raw" }],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
130
|
+
const handler = createMessagesTransformHandler({
|
|
131
|
+
onStorageBusyRefusal: async () => {
|
|
132
|
+
refusals++;
|
|
133
|
+
},
|
|
134
|
+
magicContext: {
|
|
135
|
+
"experimental.chat.messages.transform": async (_input, result) => {
|
|
136
|
+
// Spend three seconds inside successful SQL, not between writes.
|
|
137
|
+
// Recursive work keeps this independent of CPU speed and UDF APIs.
|
|
138
|
+
const cte =
|
|
139
|
+
"WITH RECURSIVE n(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM n WHERE x<1000000)";
|
|
140
|
+
const slowWrite = db.prepare(
|
|
141
|
+
`${cte} INSERT INTO result SELECT sum(x) FROM n RETURNING value`,
|
|
142
|
+
);
|
|
143
|
+
const slowRead = db.prepare(`${cte} SELECT sum(x) FROM n`);
|
|
144
|
+
const started = performance.now();
|
|
145
|
+
do {
|
|
146
|
+
slowWrite.all();
|
|
147
|
+
slowRead.all();
|
|
148
|
+
} while (performance.now() - started < 3000);
|
|
149
|
+
locker = await startSqliteWriteLocker(path, holdMs);
|
|
150
|
+
db.prepare("INSERT INTO result VALUES ('managed')").run();
|
|
151
|
+
(result.messages[0].parts[0] as { text: string }).text = "managed";
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
try {
|
|
156
|
+
const pass = handler({}, output as Parameters<typeof handler>[1]).then(() => {
|
|
157
|
+
served = true;
|
|
158
|
+
});
|
|
159
|
+
if (holdMs === 1000) {
|
|
160
|
+
await pass;
|
|
161
|
+
expect(served).toBe(true);
|
|
162
|
+
expect(refusals).toBe(0);
|
|
163
|
+
expect(output.messages[0].parts[0].text).toBe("managed");
|
|
164
|
+
} else {
|
|
165
|
+
await expect(pass).rejects.toBeInstanceOf(StorageBusyRefusalError);
|
|
166
|
+
expect(served).toBe(false);
|
|
167
|
+
expect(refusals).toBe(1);
|
|
168
|
+
expect(output.messages[0].parts[0].text).toBe("raw");
|
|
169
|
+
}
|
|
170
|
+
expect(
|
|
171
|
+
db.prepare("SELECT count(*) AS n FROM result WHERE value = 'managed'").get(),
|
|
172
|
+
).toEqual({ n: holdMs === 1000 ? 1 : 0 });
|
|
173
|
+
} finally {
|
|
174
|
+
if (locker) expect(await locker.exited).toBe(0);
|
|
175
|
+
close();
|
|
176
|
+
}
|
|
177
|
+
}, 30_000);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
test("BUSY autocommit probes do not double-apply INSERT OR IGNORE, UPSERT or RETURNING", async () => {
|
|
181
|
+
const { db, path, close } = fixture();
|
|
182
|
+
db.exec(
|
|
183
|
+
"CREATE TABLE counter(id INTEGER PRIMARY KEY, n INTEGER); INSERT INTO counter VALUES (1, 0)",
|
|
184
|
+
);
|
|
185
|
+
const forms = [
|
|
186
|
+
["INSERT OR IGNORE INTO counter VALUES (2, 1)", "run"],
|
|
187
|
+
["INSERT INTO counter VALUES (1, 1) ON CONFLICT(id) DO UPDATE SET n = n + 1", "run"],
|
|
188
|
+
["UPDATE counter SET n = n + 1 WHERE id = 1 RETURNING n", "get"],
|
|
189
|
+
[
|
|
190
|
+
"INSERT INTO counter VALUES (1, 1) ON CONFLICT(id) DO UPDATE SET n = n + 1 RETURNING n",
|
|
191
|
+
"all",
|
|
192
|
+
],
|
|
193
|
+
] as const;
|
|
194
|
+
try {
|
|
195
|
+
for (const [sql, method] of forms) {
|
|
196
|
+
const blocker = new Database(path);
|
|
197
|
+
blocker.exec("BEGIN IMMEDIATE");
|
|
198
|
+
db.exec("PRAGMA busy_timeout=0");
|
|
199
|
+
const before = db.prepare("SELECT * FROM counter ORDER BY id").all();
|
|
200
|
+
try {
|
|
201
|
+
expect(() => db.prepare(sql)[method]()).toThrow("locked");
|
|
202
|
+
expect(db.prepare("SELECT * FROM counter ORDER BY id").all()).toEqual(before);
|
|
203
|
+
expect(db.inTransaction).toBe(false);
|
|
204
|
+
} finally {
|
|
205
|
+
blocker.exec("ROLLBACK");
|
|
206
|
+
blocker.close();
|
|
207
|
+
}
|
|
208
|
+
const locker = await startSqliteWriteLocker(path, 100);
|
|
209
|
+
try {
|
|
210
|
+
await withSqliteTransformPass(() => db.prepare(sql)[method]());
|
|
211
|
+
} finally {
|
|
212
|
+
expect(await locker.exited).toBe(0);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
expect(db.prepare("SELECT * FROM counter ORDER BY id").all()).toEqual([
|
|
216
|
+
{ id: 1, n: 3 },
|
|
217
|
+
{ id: 2, n: 1 },
|
|
218
|
+
]);
|
|
219
|
+
} finally {
|
|
220
|
+
close();
|
|
221
|
+
}
|
|
222
|
+
}, 30_000);
|
|
223
|
+
|
|
224
|
+
test("many contended autocommit writes share at most two seconds of lock waiting", async () => {
|
|
225
|
+
const { db, path, close } = fixture();
|
|
226
|
+
const blocker = new Database(path);
|
|
227
|
+
blocker.exec("BEGIN IMMEDIATE");
|
|
228
|
+
const timeouts: number[] = [];
|
|
229
|
+
const nativeExec = db.exec.bind(db);
|
|
230
|
+
const exec = spyOn(db, "exec").mockImplementation((sql) => {
|
|
231
|
+
const timeout = /^PRAGMA busy_timeout=(\d+)$/.exec(sql);
|
|
232
|
+
if (timeout) timeouts.push(Number(timeout[1]));
|
|
233
|
+
return nativeExec(sql);
|
|
234
|
+
});
|
|
235
|
+
try {
|
|
236
|
+
await withSqliteTransformPass(() => {
|
|
237
|
+
// Use real BUSY failures but a controlled accounting clock: each
|
|
238
|
+
// retry costs 400ms regardless of runner scheduling. The deadline
|
|
239
|
+
// keeps the real waits short without hiding lease exhaustion.
|
|
240
|
+
guardSqliteTransformPass({ assert() {}, remainingMs: () => 10 });
|
|
241
|
+
let now = 0;
|
|
242
|
+
const clock = spyOn(performance, "now").mockImplementation(() => (now += 400));
|
|
243
|
+
try {
|
|
244
|
+
for (let i = 0; i < 8; i++) {
|
|
245
|
+
expect(() => db.prepare("INSERT INTO result VALUES ('one')").run()).toThrow(
|
|
246
|
+
SqliteAcquisitionBusyError,
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
} finally {
|
|
250
|
+
clock.mockRestore();
|
|
251
|
+
}
|
|
252
|
+
// Five charged retries exhaust 2000ms. All later retries must have
|
|
253
|
+
// zero timeout even though the deadline still offers another 10ms.
|
|
254
|
+
expect(timeouts).toEqual([
|
|
255
|
+
...Array.from({ length: 5 }, () => [0, 10, 5000]).flat(),
|
|
256
|
+
...Array.from({ length: 3 }, () => [0, 0, 5000]).flat(),
|
|
257
|
+
]);
|
|
258
|
+
blocker.exec("ROLLBACK");
|
|
259
|
+
db.prepare("INSERT INTO result VALUES ('uncontended')").run();
|
|
260
|
+
});
|
|
261
|
+
expect(db.prepare("SELECT * FROM result").all()).toEqual([{ value: "uncontended" }]);
|
|
262
|
+
} finally {
|
|
263
|
+
exec.mockRestore();
|
|
264
|
+
if (blocker.inTransaction) blocker.exec("ROLLBACK");
|
|
265
|
+
blocker.close();
|
|
266
|
+
close();
|
|
267
|
+
}
|
|
268
|
+
}, 30_000);
|
|
269
|
+
|
|
270
|
+
test("an exec script charges its single attempt without a zero-wait probe", () => {
|
|
271
|
+
const { db, path, close } = fixture();
|
|
272
|
+
const blocker = new Database(path);
|
|
273
|
+
const timeouts: number[] = [];
|
|
274
|
+
const nativeExec = db.exec.bind(db);
|
|
275
|
+
const exec = spyOn(db, "exec").mockImplementation((sql) => {
|
|
276
|
+
const timeout = /^PRAGMA busy_timeout=(\d+)$/.exec(sql);
|
|
277
|
+
if (timeout) timeouts.push(Number(timeout[1]));
|
|
278
|
+
return nativeExec(sql);
|
|
279
|
+
});
|
|
280
|
+
try {
|
|
281
|
+
withSqliteTransformPass(() => {
|
|
282
|
+
let now = 0;
|
|
283
|
+
const clock = spyOn(performance, "now").mockImplementation(() => (now += 2500));
|
|
284
|
+
try {
|
|
285
|
+
db.exec(
|
|
286
|
+
"INSERT INTO result VALUES ('prefix'); INSERT INTO result VALUES ('suffix')",
|
|
287
|
+
);
|
|
288
|
+
} finally {
|
|
289
|
+
clock.mockRestore();
|
|
290
|
+
}
|
|
291
|
+
blocker.exec("BEGIN IMMEDIATE");
|
|
292
|
+
expect(() => db.prepare("INSERT INTO result VALUES ('blocked')").run()).toThrow(
|
|
293
|
+
SqliteAcquisitionBusyError,
|
|
294
|
+
);
|
|
295
|
+
});
|
|
296
|
+
expect(timeouts).toEqual([2000, 5000, 0, 0, 5000]);
|
|
297
|
+
expect(db.prepare("SELECT * FROM result").all()).toEqual([
|
|
298
|
+
{ value: "prefix" },
|
|
299
|
+
{ value: "suffix" },
|
|
300
|
+
]);
|
|
301
|
+
} finally {
|
|
302
|
+
exec.mockRestore();
|
|
303
|
+
if (blocker.inTransaction) blocker.exec("ROLLBACK");
|
|
304
|
+
blocker.close();
|
|
305
|
+
close();
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
test("an explicit transaction keeps its timeout and never probes or retries", () => {
|
|
310
|
+
const { db, path, close } = fixture();
|
|
311
|
+
const other = new Database(path);
|
|
312
|
+
db.exec("PRAGMA busy_timeout=0; BEGIN; SELECT * FROM result");
|
|
313
|
+
other.exec("INSERT INTO result VALUES ('other')");
|
|
314
|
+
const exec = spyOn(db, "exec");
|
|
315
|
+
try {
|
|
316
|
+
withSqliteTransformPass(() => {
|
|
317
|
+
expect(() => db.prepare("INSERT INTO result VALUES ('stale')").run()).toThrow("locked");
|
|
318
|
+
});
|
|
319
|
+
expect(exec).not.toHaveBeenCalled();
|
|
320
|
+
expect(db.inTransaction).toBe(true);
|
|
321
|
+
expect(db.prepare("PRAGMA busy_timeout").get()).toEqual({ timeout: 0 });
|
|
322
|
+
} finally {
|
|
323
|
+
exec.mockRestore();
|
|
324
|
+
if (db.inTransaction) db.exec("ROLLBACK");
|
|
325
|
+
other.close();
|
|
326
|
+
close();
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
|
|
116
330
|
for (const mode of ["BEGIN", "autocommit"]) {
|
|
117
331
|
test(`foreground ${mode} wait is capped by the pass deadline`, () => {
|
|
118
332
|
const { db, path, close } = fixture();
|
|
@@ -138,3 +352,41 @@ for (const mode of ["BEGIN", "autocommit"]) {
|
|
|
138
352
|
}
|
|
139
353
|
});
|
|
140
354
|
}
|
|
355
|
+
|
|
356
|
+
test("an autocommit exec script never replays a committed prefix after BUSY", () => {
|
|
357
|
+
const main = fixture();
|
|
358
|
+
const auxiliary = fixture();
|
|
359
|
+
const free = fixture();
|
|
360
|
+
try {
|
|
361
|
+
main.db.prepare("ATTACH DATABASE ? AS aux").run(auxiliary.path);
|
|
362
|
+
main.db.prepare("ATTACH DATABASE ? AS free").run(free.path);
|
|
363
|
+
auxiliary.db.exec("BEGIN IMMEDIATE");
|
|
364
|
+
withSqliteTransformPass(() => {
|
|
365
|
+
guardSqliteTransformPass({ assert() {}, remainingMs: () => 100 });
|
|
366
|
+
expect(() =>
|
|
367
|
+
main.db.exec(
|
|
368
|
+
"INSERT INTO main.result VALUES ('prefix'); INSERT INTO aux.result VALUES ('blocked')",
|
|
369
|
+
),
|
|
370
|
+
).toThrow(SqliteAcquisitionBusyError);
|
|
371
|
+
expect(() =>
|
|
372
|
+
main.db.exec(
|
|
373
|
+
"CREATE TABLE applied_once(id); INSERT INTO aux.result VALUES ('blocked')",
|
|
374
|
+
),
|
|
375
|
+
).toThrow(SqliteAcquisitionBusyError);
|
|
376
|
+
expect(() =>
|
|
377
|
+
main.db.exec(
|
|
378
|
+
"CREATE TABLE free.applied_once(id); INSERT INTO aux.result VALUES ('blocked')",
|
|
379
|
+
),
|
|
380
|
+
).toThrow(SqliteAcquisitionBusyError);
|
|
381
|
+
});
|
|
382
|
+
expect(main.db.prepare("SELECT * FROM main.result").all()).toEqual([{ value: "prefix" }]);
|
|
383
|
+
expect(
|
|
384
|
+
main.db.prepare("SELECT name FROM sqlite_schema WHERE name='applied_once'").all(),
|
|
385
|
+
).toHaveLength(1);
|
|
386
|
+
} finally {
|
|
387
|
+
auxiliary.db.exec("ROLLBACK");
|
|
388
|
+
auxiliary.close();
|
|
389
|
+
main.close();
|
|
390
|
+
free.close();
|
|
391
|
+
}
|
|
392
|
+
});
|
package/src/shared/sqlite.ts
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* `run()` → {changes,lastInsertRowid}) is identical and was verified directly.
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
42
|
+
import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
|
|
43
43
|
import { statSync } from "node:fs";
|
|
44
44
|
|
|
45
45
|
// Type import only — runtime is loaded dynamically below. @types/better-sqlite3
|
|
@@ -48,6 +48,16 @@ import { statSync } from "node:fs";
|
|
|
48
48
|
// node:sqlite at runtime (both expose prepare/run/get/all/exec/close).
|
|
49
49
|
import type BetterSqlite3 from "better-sqlite3";
|
|
50
50
|
|
|
51
|
+
// Capture the root before creating request-local AsyncLocalStorage scopes.
|
|
52
|
+
// Shared workers and timers must not inherit callbacks that reject stale
|
|
53
|
+
// database writes: those callbacks can retain an obsolete request's inputs.
|
|
54
|
+
const resourceRoot = new AsyncResource("magic-context:root");
|
|
55
|
+
|
|
56
|
+
/** Create host-owned resources without inheriting request-local state. */
|
|
57
|
+
export function inRootAsyncContext<T>(operation: () => T): T {
|
|
58
|
+
return resourceRoot.runInAsyncScope(operation);
|
|
59
|
+
}
|
|
60
|
+
|
|
51
61
|
/**
|
|
52
62
|
* Slow-write reporting is injected rather than imported: this module is also
|
|
53
63
|
* executed directly by Node (the `node:sqlite` smoke in CI, Pi, Desktop), and
|
|
@@ -420,7 +430,9 @@ function installTransactionRouting(db: BetterSqlite3.Database, readonly: boolean
|
|
|
420
430
|
!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)
|
|
421
431
|
) {
|
|
422
432
|
try {
|
|
423
|
-
|
|
433
|
+
// exec can commit a script prefix before BUSY. Run it once;
|
|
434
|
+
// only prepared statements are safe to probe and retry.
|
|
435
|
+
return withAutocommitTimeout(db, () => nativeExec(sql), false);
|
|
424
436
|
} finally {
|
|
425
437
|
if (mayChangeTagIdentity(sql)) tagIdentityWriteGeneration += 1;
|
|
426
438
|
}
|
|
@@ -587,7 +599,9 @@ function trackSqliteConnection(
|
|
|
587
599
|
|
|
588
600
|
const TrackedDatabase = new Proxy(DatabaseImpl, {
|
|
589
601
|
construct(target, args) {
|
|
590
|
-
const db =
|
|
602
|
+
const db = inRootAsyncContext(
|
|
603
|
+
() => Reflect.construct(target, args, target) as BetterSqlite3.Database,
|
|
604
|
+
);
|
|
591
605
|
return trackSqliteConnection(db, args[0], args[1]);
|
|
592
606
|
},
|
|
593
607
|
}) as typeof BetterSqlite3;
|
|
@@ -1000,33 +1014,60 @@ function foregroundWaitLease() {
|
|
|
1000
1014
|
: undefined;
|
|
1001
1015
|
}
|
|
1002
1016
|
|
|
1003
|
-
/**
|
|
1004
|
-
*
|
|
1005
|
-
*
|
|
1006
|
-
*
|
|
1007
|
-
function withAutocommitTimeout<T>(db: Database, operation: () => T): T {
|
|
1017
|
+
/** Probe a prepared statement's writer lock without charging uncontended work
|
|
1018
|
+
* against the foreground lock-wait budget. An exec script may commit some of
|
|
1019
|
+
* its statements before failing, so it cannot be retried without duplicating
|
|
1020
|
+
* writes; conservatively charge its single attempt's full execution time. */
|
|
1021
|
+
function withAutocommitTimeout<T>(db: Database, operation: () => T, singleStatement = true): T {
|
|
1008
1022
|
assertTransformWrite();
|
|
1009
1023
|
const lease = foregroundWaitLease();
|
|
1010
1024
|
if (isInTransaction(db)) return operation();
|
|
1011
1025
|
const scoped = lease || backgroundWriterScope.getStore();
|
|
1012
1026
|
const previous = scoped ? pragmaNumber(db, "busy_timeout") : null;
|
|
1013
|
-
if (scoped)
|
|
1014
|
-
db.exec(
|
|
1015
|
-
`PRAGMA busy_timeout=${lease ? Math.floor(Math.min(lease.remainingWaitMs, lease.guard?.remainingMs() ?? Infinity)) : SHORT_BUSY_TIMEOUT_MS}`,
|
|
1016
|
-
);
|
|
1017
1027
|
const started = performance.now();
|
|
1018
1028
|
let completed = false;
|
|
1019
|
-
|
|
1029
|
+
const execute = () => {
|
|
1020
1030
|
const result = operation();
|
|
1021
1031
|
completed = true;
|
|
1022
1032
|
return result;
|
|
1033
|
+
};
|
|
1034
|
+
try {
|
|
1035
|
+
if (!scoped) return execute();
|
|
1036
|
+
if (singleStatement) {
|
|
1037
|
+
db.exec("PRAGMA busy_timeout=0");
|
|
1038
|
+
try {
|
|
1039
|
+
return execute();
|
|
1040
|
+
} catch (error) {
|
|
1041
|
+
if (!isTransientSqliteError(error) || isInTransaction(db)) throw error;
|
|
1042
|
+
}
|
|
1043
|
+
assertTransformWrite();
|
|
1044
|
+
}
|
|
1045
|
+
const timeout = Math.floor(
|
|
1046
|
+
Math.min(
|
|
1047
|
+
lease?.remainingWaitMs ?? SHORT_BUSY_TIMEOUT_MS,
|
|
1048
|
+
lease?.guard?.remainingMs() ?? Infinity,
|
|
1049
|
+
),
|
|
1050
|
+
);
|
|
1051
|
+
db.exec(`PRAGMA busy_timeout=${timeout}`);
|
|
1052
|
+
const waitStarted = performance.now();
|
|
1053
|
+
try {
|
|
1054
|
+
return execute();
|
|
1055
|
+
} finally {
|
|
1056
|
+
// Deduct the prepared statement's contended retry or the exec
|
|
1057
|
+
// script's execution from the remaining foreground wait budget;
|
|
1058
|
+
// the native API cannot separate lock waiting from execution.
|
|
1059
|
+
if (lease)
|
|
1060
|
+
lease.remainingWaitMs = Math.max(
|
|
1061
|
+
0,
|
|
1062
|
+
lease.remainingWaitMs - (performance.now() - waitStarted),
|
|
1063
|
+
);
|
|
1064
|
+
}
|
|
1023
1065
|
} catch (error) {
|
|
1024
1066
|
if (lease && isTransientSqliteError(error))
|
|
1025
1067
|
throw new SqliteAcquisitionBusyError(error, "autocommit");
|
|
1026
1068
|
throw error;
|
|
1027
1069
|
} finally {
|
|
1028
1070
|
const elapsed = performance.now() - started;
|
|
1029
|
-
if (lease) lease.remainingWaitMs = Math.max(0, lease.remainingWaitMs - elapsed);
|
|
1030
1071
|
if (previous !== null) db.exec(`PRAGMA busy_timeout=${previous}`);
|
|
1031
1072
|
// Native autocommit does not expose the instant its lock was acquired.
|
|
1032
1073
|
// Label the upper bound so a waiting statement is not blamed as a holder.
|
|
@@ -17,8 +17,8 @@ export const USER_FACING_FAILURES = {
|
|
|
17
17
|
history_boundary_unresolved: {
|
|
18
18
|
code: "MC-H04",
|
|
19
19
|
sentence:
|
|
20
|
-
"This request was not sent:
|
|
21
|
-
action: "
|
|
20
|
+
"This request was not sent: Magic Context could not safely place the history summary boundary in the loaded conversation, and the untrimmed request is larger than the model's context window.",
|
|
21
|
+
action: "Reopen this session in its current project directory, then run /ctx-recomp to rebuild the history summary. A model with a larger context window can also help.",
|
|
22
22
|
},
|
|
23
23
|
history_over_window_unmanaged: {
|
|
24
24
|
code: "MC-H06",
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ensureMemoryEmbeddings2
|
|
3
|
-
} from "./index-w6bd03dc.js";
|
|
4
|
-
import"./index-sf94at64.js";
|
|
5
|
-
import"./index-ax2jhztn.js";
|
|
6
|
-
import"./index-4dhv7mqz.js";
|
|
7
|
-
import"./index-qt1qqasc.js";
|
|
8
|
-
import"./index-gbmqa9x9.js";
|
|
9
|
-
import"./index-vkbqdnkj.js";
|
|
10
|
-
import"./index-g8qbdb03.js";
|
|
11
|
-
import"./index-rzmjkdd6.js";
|
|
12
|
-
import"./index-k6xvbj2e.js";
|
|
13
|
-
import"./index-4mjhqadz.js";
|
|
14
|
-
import"./index-j8epsc0g.js";
|
|
15
|
-
import"./index-qx53vezw.js";
|
|
16
|
-
import"./index-nsjyysj0.js";
|
|
17
|
-
import"./index-0sahzkwr.js";
|
|
18
|
-
import"./index-pavzsdc6.js";
|
|
19
|
-
export {
|
|
20
|
-
ensureMemoryEmbeddings2 as ensureMemoryEmbeddings
|
|
21
|
-
};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isRecompFailure2,
|
|
3
|
-
isRecompSkip2,
|
|
4
|
-
extractRecompReason2,
|
|
5
|
-
setRecompStarting2,
|
|
6
|
-
setRecompNote2,
|
|
7
|
-
setRecompTerminal2,
|
|
8
|
-
buildRecompDeps2,
|
|
9
|
-
runManagedRecomp2
|
|
10
|
-
} from "./index-rwmpkss5.js";
|
|
11
|
-
import"./index-5tbvdff4.js";
|
|
12
|
-
import"./index-sh91t19a.js";
|
|
13
|
-
import"./index-sd3egckz.js";
|
|
14
|
-
import"./index-n7kwfw2r.js";
|
|
15
|
-
import"./index-wq16ahsn.js";
|
|
16
|
-
import"./index-w6bd03dc.js";
|
|
17
|
-
import"./index-9yyqq3mm.js";
|
|
18
|
-
import"./index-sf94at64.js";
|
|
19
|
-
import"./index-ax2jhztn.js";
|
|
20
|
-
import"./index-4dhv7mqz.js";
|
|
21
|
-
import"./index-w23dh319.js";
|
|
22
|
-
import"./index-vt4sf4ep.js";
|
|
23
|
-
import"./index-qt1qqasc.js";
|
|
24
|
-
import"./index-x8a7jmkh.js";
|
|
25
|
-
import"./index-tqf7yg27.js";
|
|
26
|
-
import"./index-gbmqa9x9.js";
|
|
27
|
-
import"./index-vkbqdnkj.js";
|
|
28
|
-
import"./index-4btknbqh.js";
|
|
29
|
-
import"./index-fb3zxn06.js";
|
|
30
|
-
import"./index-j5hce1ab.js";
|
|
31
|
-
import"./index-w4mw92w3.js";
|
|
32
|
-
import"./index-fr0wbhdn.js";
|
|
33
|
-
import"./index-g8qbdb03.js";
|
|
34
|
-
import"./index-rzmjkdd6.js";
|
|
35
|
-
import"./index-n5a170gs.js";
|
|
36
|
-
import"./index-tmtty2x5.js";
|
|
37
|
-
import"./index-1zx87sdm.js";
|
|
38
|
-
import"./index-a8acx4gc.js";
|
|
39
|
-
import"./index-37q80veb.js";
|
|
40
|
-
import"./index-v0p37hm2.js";
|
|
41
|
-
import"./index-k6xvbj2e.js";
|
|
42
|
-
import"./index-h2wc01qk.js";
|
|
43
|
-
import"./index-1bt88epp.js";
|
|
44
|
-
import"./index-58e3y90n.js";
|
|
45
|
-
import"./index-4mjhqadz.js";
|
|
46
|
-
import"./index-j8epsc0g.js";
|
|
47
|
-
import"./index-qx53vezw.js";
|
|
48
|
-
import"./index-nsjyysj0.js";
|
|
49
|
-
import"./index-0sahzkwr.js";
|
|
50
|
-
import"./index-pavzsdc6.js";
|
|
51
|
-
export {
|
|
52
|
-
buildRecompDeps2 as buildRecompDeps,
|
|
53
|
-
extractRecompReason2 as extractRecompReason,
|
|
54
|
-
isRecompFailure2 as isRecompFailure,
|
|
55
|
-
isRecompSkip2 as isRecompSkip,
|
|
56
|
-
runManagedRecomp2 as runManagedRecomp,
|
|
57
|
-
setRecompNote2 as setRecompNote,
|
|
58
|
-
setRecompStarting2 as setRecompStarting,
|
|
59
|
-
setRecompTerminal2 as setRecompTerminal
|
|
60
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ensureMemoryEmbeddings2
|
|
3
|
-
} from "./server-sy4b1sra.js";
|
|
4
|
-
import"./server-fw31krgq.js";
|
|
5
|
-
import"./server-fpqe39as.js";
|
|
6
|
-
import"./server-4dhv7mqz.js";
|
|
7
|
-
import"./server-qt1qqasc.js";
|
|
8
|
-
import"./server-ras2sxnc.js";
|
|
9
|
-
import"./server-hb6xhh9q.js";
|
|
10
|
-
import"./server-kdrezdy0.js";
|
|
11
|
-
import"./server-brhj8qtd.js";
|
|
12
|
-
import"./server-cw6521wn.js";
|
|
13
|
-
import"./server-3t0q2cqx.js";
|
|
14
|
-
import"./server-j8epsc0g.js";
|
|
15
|
-
import"./server-kzns2hbz.js";
|
|
16
|
-
import"./server-t4k4qexw.js";
|
|
17
|
-
import"./server-pavzsdc6.js";
|
|
18
|
-
export {
|
|
19
|
-
ensureMemoryEmbeddings2 as ensureMemoryEmbeddings
|
|
20
|
-
};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isRecompFailure2,
|
|
3
|
-
isRecompSkip2,
|
|
4
|
-
extractRecompReason2,
|
|
5
|
-
setRecompStarting2,
|
|
6
|
-
setRecompNote2,
|
|
7
|
-
setRecompTerminal2,
|
|
8
|
-
buildRecompDeps2,
|
|
9
|
-
runManagedRecomp2
|
|
10
|
-
} from "./server-mv1w7t6z.js";
|
|
11
|
-
import"./server-x08d1xf3.js";
|
|
12
|
-
import"./server-jdwd03ep.js";
|
|
13
|
-
import"./server-7srtwsa4.js";
|
|
14
|
-
import"./server-sy4b1sra.js";
|
|
15
|
-
import"./server-9yyqq3mm.js";
|
|
16
|
-
import"./server-fw31krgq.js";
|
|
17
|
-
import"./server-fpqe39as.js";
|
|
18
|
-
import"./server-4dhv7mqz.js";
|
|
19
|
-
import"./server-t528t8qm.js";
|
|
20
|
-
import"./server-qcw43339.js";
|
|
21
|
-
import"./server-qt1qqasc.js";
|
|
22
|
-
import"./server-676xw7at.js";
|
|
23
|
-
import"./server-d6g4whc2.js";
|
|
24
|
-
import"./server-vb7pbd9p.js";
|
|
25
|
-
import"./server-x8a7jmkh.js";
|
|
26
|
-
import"./server-ras2sxnc.js";
|
|
27
|
-
import"./server-hb6xhh9q.js";
|
|
28
|
-
import"./server-v4fwha43.js";
|
|
29
|
-
import"./server-fb3zxn06.js";
|
|
30
|
-
import"./server-hcvcxzx7.js";
|
|
31
|
-
import"./server-1rfgbjfn.js";
|
|
32
|
-
import"./server-fr0wbhdn.js";
|
|
33
|
-
import"./server-kdrezdy0.js";
|
|
34
|
-
import"./server-brhj8qtd.js";
|
|
35
|
-
import"./server-gtv9wbhq.js";
|
|
36
|
-
import"./server-w3zeywp1.js";
|
|
37
|
-
import"./server-1zx87sdm.js";
|
|
38
|
-
import"./server-wkdgjjch.js";
|
|
39
|
-
import"./server-dd0nja67.js";
|
|
40
|
-
import"./server-51779zs2.js";
|
|
41
|
-
import"./server-cw6521wn.js";
|
|
42
|
-
import"./server-7ekna9zs.js";
|
|
43
|
-
import"./server-6byqfbqf.js";
|
|
44
|
-
import"./server-2ra6pwf3.js";
|
|
45
|
-
import"./server-3t0q2cqx.js";
|
|
46
|
-
import"./server-j8epsc0g.js";
|
|
47
|
-
import"./server-kzns2hbz.js";
|
|
48
|
-
import"./server-t4k4qexw.js";
|
|
49
|
-
import"./server-pavzsdc6.js";
|
|
50
|
-
export {
|
|
51
|
-
buildRecompDeps2 as buildRecompDeps,
|
|
52
|
-
extractRecompReason2 as extractRecompReason,
|
|
53
|
-
isRecompFailure2 as isRecompFailure,
|
|
54
|
-
isRecompSkip2 as isRecompSkip,
|
|
55
|
-
runManagedRecomp2 as runManagedRecomp,
|
|
56
|
-
setRecompNote2 as setRecompNote,
|
|
57
|
-
setRecompStarting2 as setRecompStarting,
|
|
58
|
-
setRecompTerminal2 as setRecompTerminal
|
|
59
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createUnifiedSearchDiagnostics2,
|
|
3
|
-
searchMessageHistory2,
|
|
4
|
-
parseIdShapedQuery2,
|
|
5
|
-
resolveMemoriesByIdsForSearch2,
|
|
6
|
-
unifiedSearch2,
|
|
7
|
-
formatSearchResults2
|
|
8
|
-
} from "./server-nfan6zb6.js";
|
|
9
|
-
import"./server-jdwd03ep.js";
|
|
10
|
-
import"./server-7srtwsa4.js";
|
|
11
|
-
import"./server-sy4b1sra.js";
|
|
12
|
-
import"./server-9yyqq3mm.js";
|
|
13
|
-
import"./server-fw31krgq.js";
|
|
14
|
-
import"./server-fpqe39as.js";
|
|
15
|
-
import"./server-4dhv7mqz.js";
|
|
16
|
-
import"./server-qt1qqasc.js";
|
|
17
|
-
import"./server-ras2sxnc.js";
|
|
18
|
-
import"./server-hb6xhh9q.js";
|
|
19
|
-
import"./server-hcvcxzx7.js";
|
|
20
|
-
import"./server-1rfgbjfn.js";
|
|
21
|
-
import"./server-fr0wbhdn.js";
|
|
22
|
-
import"./server-kdrezdy0.js";
|
|
23
|
-
import"./server-brhj8qtd.js";
|
|
24
|
-
import"./server-gtv9wbhq.js";
|
|
25
|
-
import"./server-w3zeywp1.js";
|
|
26
|
-
import"./server-1zx87sdm.js";
|
|
27
|
-
import"./server-wkdgjjch.js";
|
|
28
|
-
import"./server-dd0nja67.js";
|
|
29
|
-
import"./server-51779zs2.js";
|
|
30
|
-
import"./server-cw6521wn.js";
|
|
31
|
-
import"./server-7ekna9zs.js";
|
|
32
|
-
import"./server-6byqfbqf.js";
|
|
33
|
-
import"./server-2ra6pwf3.js";
|
|
34
|
-
import"./server-3t0q2cqx.js";
|
|
35
|
-
import"./server-j8epsc0g.js";
|
|
36
|
-
import"./server-kzns2hbz.js";
|
|
37
|
-
import"./server-t4k4qexw.js";
|
|
38
|
-
import"./server-pavzsdc6.js";
|
|
39
|
-
export {
|
|
40
|
-
createUnifiedSearchDiagnostics2 as createUnifiedSearchDiagnostics,
|
|
41
|
-
formatSearchResults2 as formatSearchResults,
|
|
42
|
-
parseIdShapedQuery2 as parseIdShapedQuery,
|
|
43
|
-
resolveMemoriesByIdsForSearch2 as resolveMemoriesByIdsForSearch,
|
|
44
|
-
searchMessageHistory2 as searchMessageHistory,
|
|
45
|
-
unifiedSearch2 as unifiedSearch
|
|
46
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
runManagedWrapup2
|
|
3
|
-
} from "./index-w6vr754t.js";
|
|
4
|
-
import"./index-rwmpkss5.js";
|
|
5
|
-
import"./index-5tbvdff4.js";
|
|
6
|
-
import"./index-sh91t19a.js";
|
|
7
|
-
import"./index-sd3egckz.js";
|
|
8
|
-
import"./index-n7kwfw2r.js";
|
|
9
|
-
import"./index-wq16ahsn.js";
|
|
10
|
-
import"./index-w6bd03dc.js";
|
|
11
|
-
import"./index-9yyqq3mm.js";
|
|
12
|
-
import"./index-sf94at64.js";
|
|
13
|
-
import"./index-ax2jhztn.js";
|
|
14
|
-
import"./index-4dhv7mqz.js";
|
|
15
|
-
import"./index-w23dh319.js";
|
|
16
|
-
import"./index-vt4sf4ep.js";
|
|
17
|
-
import"./index-qt1qqasc.js";
|
|
18
|
-
import"./index-x8a7jmkh.js";
|
|
19
|
-
import"./index-tqf7yg27.js";
|
|
20
|
-
import"./index-gbmqa9x9.js";
|
|
21
|
-
import"./index-vkbqdnkj.js";
|
|
22
|
-
import"./index-4btknbqh.js";
|
|
23
|
-
import"./index-fb3zxn06.js";
|
|
24
|
-
import"./index-j5hce1ab.js";
|
|
25
|
-
import"./index-w4mw92w3.js";
|
|
26
|
-
import"./index-fr0wbhdn.js";
|
|
27
|
-
import"./index-g8qbdb03.js";
|
|
28
|
-
import"./index-rzmjkdd6.js";
|
|
29
|
-
import"./index-n5a170gs.js";
|
|
30
|
-
import"./index-tmtty2x5.js";
|
|
31
|
-
import"./index-1zx87sdm.js";
|
|
32
|
-
import"./index-a8acx4gc.js";
|
|
33
|
-
import"./index-37q80veb.js";
|
|
34
|
-
import"./index-v0p37hm2.js";
|
|
35
|
-
import"./index-k6xvbj2e.js";
|
|
36
|
-
import"./index-h2wc01qk.js";
|
|
37
|
-
import"./index-1bt88epp.js";
|
|
38
|
-
import"./index-58e3y90n.js";
|
|
39
|
-
import"./index-4mjhqadz.js";
|
|
40
|
-
import"./index-j8epsc0g.js";
|
|
41
|
-
import"./index-qx53vezw.js";
|
|
42
|
-
import"./index-nsjyysj0.js";
|
|
43
|
-
import"./index-0sahzkwr.js";
|
|
44
|
-
import"./index-pavzsdc6.js";
|
|
45
|
-
export {
|
|
46
|
-
runManagedWrapup2 as runManagedWrapup
|
|
47
|
-
};
|