@remnic/core 10.0.96 → 10.0.98
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/access-admin-ops-surface.js +29 -29
- package/dist/access-cli.js +29 -29
- package/dist/access-extraction-force-flush.js +29 -29
- package/dist/access-http-briefing.js +29 -29
- package/dist/access-http-query.js +29 -29
- package/dist/access-http-types.d.ts +2 -0
- package/dist/access-http-types.d.ts.map +1 -1
- package/dist/access-http.d.ts +1 -0
- package/dist/access-http.d.ts.map +1 -1
- package/dist/access-http.js +29 -29
- package/dist/access-identity-continuity-surface.js +29 -29
- package/dist/access-lcm-surface.js +29 -29
- package/dist/access-mcp.js +29 -29
- package/dist/access-observe-write-surface.js +29 -29
- package/dist/access-operations-batch.js +29 -29
- package/dist/access-operations.js +29 -29
- package/dist/access-recall-concurrency.js +29 -29
- package/dist/access-recall-response.js +29 -29
- package/dist/access-recall-surface.js +29 -29
- package/dist/access-service.js +29 -29
- package/dist/active-recall.js +2 -2
- package/dist/briefing.js +3 -3
- package/dist/causal-consolidation.js +4 -4
- package/dist/{chunk-XPCUKWLE.js → chunk-3DQZ2GAY.js} +2 -2
- package/dist/{chunk-4WKR4P7H.js → chunk-3WDFQKB4.js} +2 -2
- package/dist/{chunk-NTDHSV7N.js → chunk-4PXDXCNE.js} +2 -2
- package/dist/{chunk-TFMLRVMW.js → chunk-5DGK7E4W.js} +48 -26
- package/dist/chunk-5DGK7E4W.js.map +1 -0
- package/dist/{chunk-KE3JWIZK.js → chunk-6RW5TONS.js} +7 -7
- package/dist/{chunk-3VWU3KF3.js → chunk-6VAIFSDG.js} +2 -2
- package/dist/{chunk-NT772J7I.js → chunk-A2D5WZRO.js} +2 -2
- package/dist/{chunk-IBKGQ6EY.js → chunk-B2BMTXIF.js} +2 -2
- package/dist/{chunk-WVIWDMFB.js → chunk-BUOP3DOK.js} +6 -2
- package/dist/{chunk-WVIWDMFB.js.map → chunk-BUOP3DOK.js.map} +1 -1
- package/dist/{chunk-4HK7DYOL.js → chunk-CCQEANCY.js} +2 -2
- package/dist/{chunk-HA5DASDG.js → chunk-CH2N4XCJ.js} +2 -2
- package/dist/{chunk-4CXK3GT3.js → chunk-D6WJNWZG.js} +2 -2
- package/dist/{chunk-NX4XDDFQ.js → chunk-E3YHIAO3.js} +3 -3
- package/dist/{chunk-EJ23D4JG.js → chunk-ECC6AAEE.js} +3 -3
- package/dist/{chunk-DWWX3FU3.js → chunk-EHJ2RYR7.js} +3 -3
- package/dist/{chunk-5AJIGWY4.js → chunk-FHQ5SPMD.js} +2 -2
- package/dist/{chunk-53ZVHXVZ.js → chunk-FVPWQWIK.js} +2 -2
- package/dist/{chunk-B7L4ZYFY.js → chunk-KI7E3N6Q.js} +3 -3
- package/dist/{chunk-U6TC6Z5B.js → chunk-MXXTU4R2.js} +2 -2
- package/dist/{chunk-7E7J7QXB.js → chunk-OTSRGZRU.js} +2 -2
- package/dist/{chunk-GLDIMGOS.js → chunk-PWATRW3H.js} +2 -2
- package/dist/{chunk-R4JYSBZE.js → chunk-RXL67CV6.js} +2 -2
- package/dist/{chunk-JH5AV542.js → chunk-SFZEJJ6V.js} +2 -2
- package/dist/{chunk-2LCX6TAD.js → chunk-SW3WUUYA.js} +2 -2
- package/dist/{chunk-F4BUSX3D.js → chunk-TFI2Y5AR.js} +2 -2
- package/dist/{chunk-LRLQ2PRP.js → chunk-TZKK72BY.js} +3 -3
- package/dist/{chunk-RUQE5C32.js → chunk-UG54AEUG.js} +2 -2
- package/dist/{chunk-V7T45MI6.js → chunk-VRBTZDQ5.js} +2 -2
- package/dist/{chunk-KVHGCISP.js → chunk-XP5CKXFV.js} +7 -7
- package/dist/{chunk-ICHLN5L6.js → chunk-YCQMNW3F.js} +2 -2
- package/dist/cli.js +29 -29
- package/dist/coding/export-okf-codegraph.js +2 -2
- package/dist/compounding/engine.js +4 -4
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.js +3 -3
- package/dist/connectors/index.js +3 -3
- package/dist/convergence-refresh.js +5 -5
- package/dist/corpus-watermark.js +5 -5
- package/dist/entity-retrieval.js +3 -3
- package/dist/explicit-capture.js +29 -29
- package/dist/extraction.js +3 -3
- package/dist/harmonic-retrieval.js +3 -3
- package/dist/index.js +29 -29
- package/dist/location/index.js +4 -4
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection-runner.js +5 -5
- package/dist/maintenance/rebuild-memory-projection.js +4 -4
- package/dist/namespaces/migrate.js +4 -4
- package/dist/namespaces/search.d.ts.map +1 -1
- package/dist/namespaces/search.js +1 -1
- package/dist/namespaces/storage.js +3 -3
- package/dist/operator-doctor-corpus.js +6 -6
- package/dist/operator-toolkit.js +9 -9
- package/dist/orchestration/backlog-scheduler.js +30 -30
- package/dist/orchestration/buffer-drain-runner.js +30 -30
- package/dist/orchestration/maintenance.js +11 -11
- package/dist/orchestration/orchestrator-init.d.ts +3 -0
- package/dist/orchestration/orchestrator-init.d.ts.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +29 -29
- package/dist/recall-navigation.js +29 -29
- package/dist/resume-bundles.js +2 -2
- package/dist/semantic-consolidation.js +4 -4
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/source-agent-qualifier.js +3 -3
- package/dist/standup/build.js +3 -3
- package/dist/storage.js +2 -2
- package/dist/transfer/export-okf.js +3 -3
- package/dist/verified-recall.js +3 -3
- package/dist/who-knows-cli.js +4 -4
- package/dist/who-knows.js +3 -3
- package/package.json +2 -2
- package/src/access-http-cancellation.test.ts +45 -0
- package/src/access-http-types.ts +2 -0
- package/src/access-http.ts +13 -1
- package/src/namespaces/search.test.ts +35 -0
- package/src/namespaces/search.ts +7 -1
- package/src/orchestration/orchestrator-init.ts +25 -0
- package/src/orchestrator-init.test.ts +132 -1
- package/src/orchestrator.ts +3 -0
- package/dist/chunk-TFMLRVMW.js.map +0 -1
- /package/dist/{chunk-XPCUKWLE.js.map → chunk-3DQZ2GAY.js.map} +0 -0
- /package/dist/{chunk-4WKR4P7H.js.map → chunk-3WDFQKB4.js.map} +0 -0
- /package/dist/{chunk-NTDHSV7N.js.map → chunk-4PXDXCNE.js.map} +0 -0
- /package/dist/{chunk-KE3JWIZK.js.map → chunk-6RW5TONS.js.map} +0 -0
- /package/dist/{chunk-3VWU3KF3.js.map → chunk-6VAIFSDG.js.map} +0 -0
- /package/dist/{chunk-NT772J7I.js.map → chunk-A2D5WZRO.js.map} +0 -0
- /package/dist/{chunk-IBKGQ6EY.js.map → chunk-B2BMTXIF.js.map} +0 -0
- /package/dist/{chunk-4HK7DYOL.js.map → chunk-CCQEANCY.js.map} +0 -0
- /package/dist/{chunk-HA5DASDG.js.map → chunk-CH2N4XCJ.js.map} +0 -0
- /package/dist/{chunk-4CXK3GT3.js.map → chunk-D6WJNWZG.js.map} +0 -0
- /package/dist/{chunk-NX4XDDFQ.js.map → chunk-E3YHIAO3.js.map} +0 -0
- /package/dist/{chunk-EJ23D4JG.js.map → chunk-ECC6AAEE.js.map} +0 -0
- /package/dist/{chunk-DWWX3FU3.js.map → chunk-EHJ2RYR7.js.map} +0 -0
- /package/dist/{chunk-5AJIGWY4.js.map → chunk-FHQ5SPMD.js.map} +0 -0
- /package/dist/{chunk-53ZVHXVZ.js.map → chunk-FVPWQWIK.js.map} +0 -0
- /package/dist/{chunk-B7L4ZYFY.js.map → chunk-KI7E3N6Q.js.map} +0 -0
- /package/dist/{chunk-U6TC6Z5B.js.map → chunk-MXXTU4R2.js.map} +0 -0
- /package/dist/{chunk-7E7J7QXB.js.map → chunk-OTSRGZRU.js.map} +0 -0
- /package/dist/{chunk-GLDIMGOS.js.map → chunk-PWATRW3H.js.map} +0 -0
- /package/dist/{chunk-R4JYSBZE.js.map → chunk-RXL67CV6.js.map} +0 -0
- /package/dist/{chunk-JH5AV542.js.map → chunk-SFZEJJ6V.js.map} +0 -0
- /package/dist/{chunk-2LCX6TAD.js.map → chunk-SW3WUUYA.js.map} +0 -0
- /package/dist/{chunk-F4BUSX3D.js.map → chunk-TFI2Y5AR.js.map} +0 -0
- /package/dist/{chunk-LRLQ2PRP.js.map → chunk-TZKK72BY.js.map} +0 -0
- /package/dist/{chunk-RUQE5C32.js.map → chunk-UG54AEUG.js.map} +0 -0
- /package/dist/{chunk-V7T45MI6.js.map → chunk-VRBTZDQ5.js.map} +0 -0
- /package/dist/{chunk-KVHGCISP.js.map → chunk-XP5CKXFV.js.map} +0 -0
- /package/dist/{chunk-ICHLN5L6.js.map → chunk-YCQMNW3F.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runRecallNavigation
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5DGK7E4W.js";
|
|
4
4
|
import "./chunk-6P7U3HWG.js";
|
|
5
5
|
import "./chunk-PQM3B54K.js";
|
|
6
6
|
import "./chunk-B3DR2JBZ.js";
|
|
@@ -10,7 +10,7 @@ import "./chunk-W4F3C7N7.js";
|
|
|
10
10
|
import "./chunk-MPC7TYTZ.js";
|
|
11
11
|
import "./chunk-MMACM5G2.js";
|
|
12
12
|
import "./chunk-FXZTL7F7.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-VRBTZDQ5.js";
|
|
14
14
|
import "./chunk-BV2TIZ4F.js";
|
|
15
15
|
import "./chunk-HDDRVXX4.js";
|
|
16
16
|
import "./chunk-PYHOAXTI.js";
|
|
@@ -24,11 +24,11 @@ import "./chunk-HRMOKGQM.js";
|
|
|
24
24
|
import "./chunk-QV2VZKD5.js";
|
|
25
25
|
import "./chunk-UP6MOYCB.js";
|
|
26
26
|
import "./chunk-IFBSZGW3.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-TFI2Y5AR.js";
|
|
28
28
|
import "./chunk-RXSGBO7Y.js";
|
|
29
29
|
import "./chunk-TBUEE7XF.js";
|
|
30
30
|
import "./chunk-5PHOU5QI.js";
|
|
31
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-6RW5TONS.js";
|
|
32
32
|
import "./chunk-I74SUMNI.js";
|
|
33
33
|
import "./chunk-ILNPU5W5.js";
|
|
34
34
|
import "./chunk-FGDKJJZS.js";
|
|
@@ -36,12 +36,12 @@ import "./chunk-AJVLDJU6.js";
|
|
|
36
36
|
import "./chunk-SZDLX763.js";
|
|
37
37
|
import "./chunk-PYIFUBRK.js";
|
|
38
38
|
import "./chunk-EDR6CVWZ.js";
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-6VAIFSDG.js";
|
|
40
|
+
import "./chunk-CCQEANCY.js";
|
|
41
41
|
import "./chunk-WHCD4Z3D.js";
|
|
42
42
|
import "./chunk-YQJCWR4R.js";
|
|
43
43
|
import "./chunk-VZAKYDMJ.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-ECC6AAEE.js";
|
|
45
45
|
import "./chunk-7IGMKQWK.js";
|
|
46
46
|
import "./chunk-666A3MOW.js";
|
|
47
47
|
import "./chunk-VDC6RZI4.js";
|
|
@@ -57,7 +57,7 @@ import "./chunk-TECVW3JP.js";
|
|
|
57
57
|
import "./chunk-C5JF6EZ7.js";
|
|
58
58
|
import "./chunk-KBL3JJR6.js";
|
|
59
59
|
import "./chunk-RZN4LQ5Y.js";
|
|
60
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-E3YHIAO3.js";
|
|
61
61
|
import "./chunk-JVBAPAWZ.js";
|
|
62
62
|
import "./chunk-V5OCT34X.js";
|
|
63
63
|
import "./chunk-OIG4ZFMB.js";
|
|
@@ -75,10 +75,10 @@ import "./chunk-7RKSJVOQ.js";
|
|
|
75
75
|
import "./chunk-HCAGBFE7.js";
|
|
76
76
|
import "./chunk-SI36RWC3.js";
|
|
77
77
|
import "./chunk-NJAIR57U.js";
|
|
78
|
-
import "./chunk-
|
|
78
|
+
import "./chunk-FVPWQWIK.js";
|
|
79
79
|
import "./chunk-HL4DB7TO.js";
|
|
80
|
-
import "./chunk-
|
|
81
|
-
import "./chunk-
|
|
80
|
+
import "./chunk-MXXTU4R2.js";
|
|
81
|
+
import "./chunk-RXL67CV6.js";
|
|
82
82
|
import "./chunk-BANSBRNX.js";
|
|
83
83
|
import "./chunk-JWX2Q6HS.js";
|
|
84
84
|
import "./chunk-47DU4SGJ.js";
|
|
@@ -100,8 +100,8 @@ import "./chunk-77NTFICT.js";
|
|
|
100
100
|
import "./chunk-LJLGH2DE.js";
|
|
101
101
|
import "./chunk-ODZKV2F7.js";
|
|
102
102
|
import "./chunk-WWDO7ZWM.js";
|
|
103
|
-
import "./chunk-
|
|
104
|
-
import "./chunk-
|
|
103
|
+
import "./chunk-UG54AEUG.js";
|
|
104
|
+
import "./chunk-YCQMNW3F.js";
|
|
105
105
|
import "./chunk-FQACH7MC.js";
|
|
106
106
|
import "./chunk-B2NXOVZN.js";
|
|
107
107
|
import "./chunk-WQ4XKIOX.js";
|
|
@@ -144,13 +144,13 @@ import "./chunk-MGN2RQRG.js";
|
|
|
144
144
|
import "./chunk-EVWDNKQA.js";
|
|
145
145
|
import "./chunk-2LA3H54D.js";
|
|
146
146
|
import "./chunk-ROI7BK7H.js";
|
|
147
|
-
import "./chunk-
|
|
148
|
-
import "./chunk-
|
|
147
|
+
import "./chunk-XP5CKXFV.js";
|
|
148
|
+
import "./chunk-FHQ5SPMD.js";
|
|
149
149
|
import "./chunk-KFY3SGN7.js";
|
|
150
150
|
import "./chunk-3T74IZB3.js";
|
|
151
151
|
import "./chunk-CMTINOFS.js";
|
|
152
152
|
import "./chunk-IQMDQJCD.js";
|
|
153
|
-
import "./chunk-
|
|
153
|
+
import "./chunk-3WDFQKB4.js";
|
|
154
154
|
import "./chunk-32CA7B6L.js";
|
|
155
155
|
import "./chunk-7IWRLYFJ.js";
|
|
156
156
|
import "./chunk-23L3IXFD.js";
|
|
@@ -173,7 +173,7 @@ import "./chunk-MDPT6QFK.js";
|
|
|
173
173
|
import "./chunk-UOBPK2OS.js";
|
|
174
174
|
import "./chunk-2YA5N2BY.js";
|
|
175
175
|
import "./chunk-3HSRWJTC.js";
|
|
176
|
-
import "./chunk-
|
|
176
|
+
import "./chunk-4PXDXCNE.js";
|
|
177
177
|
import "./chunk-HUDPXTXW.js";
|
|
178
178
|
import "./chunk-AZEZSQ5R.js";
|
|
179
179
|
import "./chunk-YAZNBMNF.js";
|
|
@@ -225,7 +225,7 @@ import "./chunk-DGFU5MSX.js";
|
|
|
225
225
|
import "./chunk-3FBAEPCU.js";
|
|
226
226
|
import "./chunk-7T4TOGMS.js";
|
|
227
227
|
import "./chunk-7YQ6ESEA.js";
|
|
228
|
-
import "./chunk-
|
|
228
|
+
import "./chunk-CH2N4XCJ.js";
|
|
229
229
|
import "./chunk-NVKO5YKP.js";
|
|
230
230
|
import "./chunk-SVH57F5Z.js";
|
|
231
231
|
import "./chunk-MKYRCCSN.js";
|
|
@@ -252,9 +252,9 @@ import "./chunk-HRATODNO.js";
|
|
|
252
252
|
import "./chunk-WTWQA7BB.js";
|
|
253
253
|
import "./chunk-VZIAVM72.js";
|
|
254
254
|
import "./chunk-VEWZZM3H.js";
|
|
255
|
-
import "./chunk-
|
|
256
|
-
import "./chunk-
|
|
257
|
-
import "./chunk-
|
|
255
|
+
import "./chunk-OTSRGZRU.js";
|
|
256
|
+
import "./chunk-EHJ2RYR7.js";
|
|
257
|
+
import "./chunk-SW3WUUYA.js";
|
|
258
258
|
import "./chunk-UFGFMWAD.js";
|
|
259
259
|
import "./chunk-FL3O34XF.js";
|
|
260
260
|
import "./chunk-YNDLCWXS.js";
|
|
@@ -262,10 +262,10 @@ import "./chunk-AUDJPF4N.js";
|
|
|
262
262
|
import "./chunk-44442YCH.js";
|
|
263
263
|
import "./chunk-Y4Z4I6WK.js";
|
|
264
264
|
import "./chunk-7G5NTS7F.js";
|
|
265
|
-
import "./chunk-
|
|
266
|
-
import "./chunk-
|
|
265
|
+
import "./chunk-SFZEJJ6V.js";
|
|
266
|
+
import "./chunk-KI7E3N6Q.js";
|
|
267
267
|
import "./chunk-KJTKLXTH.js";
|
|
268
|
-
import "./chunk-
|
|
268
|
+
import "./chunk-PWATRW3H.js";
|
|
269
269
|
import "./chunk-2DQ2XREU.js";
|
|
270
270
|
import "./chunk-3I4FUAVJ.js";
|
|
271
271
|
import "./chunk-OKTXM5H4.js";
|
|
@@ -273,8 +273,8 @@ import "./chunk-ZUMHQEW4.js";
|
|
|
273
273
|
import "./chunk-D24OXEPB.js";
|
|
274
274
|
import "./chunk-ZAJLJ35W.js";
|
|
275
275
|
import "./chunk-4NZQ7IID.js";
|
|
276
|
-
import "./chunk-
|
|
277
|
-
import "./chunk-
|
|
276
|
+
import "./chunk-A2D5WZRO.js";
|
|
277
|
+
import "./chunk-3DQZ2GAY.js";
|
|
278
278
|
import "./chunk-3UXOZBHV.js";
|
|
279
279
|
import "./chunk-AL3TCNSJ.js";
|
|
280
280
|
import "./chunk-5JMAGU26.js";
|
|
@@ -299,7 +299,7 @@ import "./chunk-U4LUIE6Y.js";
|
|
|
299
299
|
import "./chunk-YN2DQ2D6.js";
|
|
300
300
|
import "./chunk-FKBGK3NC.js";
|
|
301
301
|
import "./chunk-ZY2MNJR6.js";
|
|
302
|
-
import "./chunk-
|
|
302
|
+
import "./chunk-B2BMTXIF.js";
|
|
303
303
|
import "./chunk-EKUI7I2X.js";
|
|
304
304
|
import "./chunk-ENQCH3SW.js";
|
|
305
305
|
import "./chunk-6ZELOK6O.js";
|
|
@@ -364,13 +364,13 @@ import "./chunk-ZCUTSMR2.js";
|
|
|
364
364
|
import "./chunk-QDW3E4RD.js";
|
|
365
365
|
import "./chunk-GKL6QYZO.js";
|
|
366
366
|
import "./chunk-ZJP66Q4I.js";
|
|
367
|
-
import "./chunk-
|
|
367
|
+
import "./chunk-D6WJNWZG.js";
|
|
368
368
|
import "./chunk-QGVCFVX6.js";
|
|
369
369
|
import "./chunk-UHVXE24Y.js";
|
|
370
370
|
import "./chunk-O3JG4PD3.js";
|
|
371
371
|
import "./chunk-G6OFEGUR.js";
|
|
372
372
|
import "./chunk-RFUL2ZIQ.js";
|
|
373
|
-
import "./chunk-
|
|
373
|
+
import "./chunk-BUOP3DOK.js";
|
|
374
374
|
import "./chunk-FVMEZ57K.js";
|
|
375
375
|
import "./chunk-DOJBV6WR.js";
|
|
376
376
|
import "./chunk-PFUXPTBT.js";
|
package/dist/resume-bundles.js
CHANGED
|
@@ -53,13 +53,13 @@ import "./chunk-ZCUTSMR2.js";
|
|
|
53
53
|
import "./chunk-QDW3E4RD.js";
|
|
54
54
|
import "./chunk-GKL6QYZO.js";
|
|
55
55
|
import "./chunk-ZJP66Q4I.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-D6WJNWZG.js";
|
|
57
57
|
import "./chunk-QGVCFVX6.js";
|
|
58
58
|
import "./chunk-UHVXE24Y.js";
|
|
59
59
|
import "./chunk-O3JG4PD3.js";
|
|
60
60
|
import "./chunk-G6OFEGUR.js";
|
|
61
61
|
import "./chunk-RFUL2ZIQ.js";
|
|
62
|
-
import "./chunk-
|
|
62
|
+
import "./chunk-BUOP3DOK.js";
|
|
63
63
|
import "./chunk-FVMEZ57K.js";
|
|
64
64
|
import "./chunk-DOJBV6WR.js";
|
|
65
65
|
import "./chunk-PFUXPTBT.js";
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
materializeAfterSemanticConsolidation,
|
|
8
8
|
parseConsolidationResponse,
|
|
9
9
|
parseOperatorAwareConsolidationResponse
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-A2D5WZRO.js";
|
|
11
|
+
import "./chunk-3DQZ2GAY.js";
|
|
12
12
|
import "./chunk-3UXOZBHV.js";
|
|
13
13
|
import "./chunk-AL3TCNSJ.js";
|
|
14
14
|
import {
|
|
@@ -18,13 +18,13 @@ import "./chunk-TOTT6S2V.js";
|
|
|
18
18
|
import "./chunk-236PXYG7.js";
|
|
19
19
|
import "./chunk-ZCUTSMR2.js";
|
|
20
20
|
import "./chunk-QDW3E4RD.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-D6WJNWZG.js";
|
|
22
22
|
import "./chunk-QGVCFVX6.js";
|
|
23
23
|
import "./chunk-UHVXE24Y.js";
|
|
24
24
|
import "./chunk-O3JG4PD3.js";
|
|
25
25
|
import "./chunk-G6OFEGUR.js";
|
|
26
26
|
import "./chunk-RFUL2ZIQ.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-BUOP3DOK.js";
|
|
28
28
|
import "./chunk-FVMEZ57K.js";
|
|
29
29
|
import "./chunk-DOJBV6WR.js";
|
|
30
30
|
import "./chunk-PFUXPTBT.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
promoteSemanticRuleFromMemory,
|
|
3
3
|
setSemanticRulePromotionTestHooks
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-UG54AEUG.js";
|
|
5
|
+
import "./chunk-D6WJNWZG.js";
|
|
6
6
|
import "./chunk-QGVCFVX6.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-O3JG4PD3.js";
|
|
9
9
|
import "./chunk-G6OFEGUR.js";
|
|
10
10
|
import "./chunk-RFUL2ZIQ.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-BUOP3DOK.js";
|
|
12
12
|
import "./chunk-FVMEZ57K.js";
|
|
13
13
|
import "./chunk-DOJBV6WR.js";
|
|
14
14
|
import "./chunk-PFUXPTBT.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedSemanticRuleResults,
|
|
3
3
|
searchVerifiedSemanticRules
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-YCQMNW3F.js";
|
|
5
|
+
import "./chunk-D6WJNWZG.js";
|
|
6
6
|
import "./chunk-QGVCFVX6.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-O3JG4PD3.js";
|
|
9
9
|
import "./chunk-G6OFEGUR.js";
|
|
10
10
|
import "./chunk-RFUL2ZIQ.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-BUOP3DOK.js";
|
|
12
12
|
import "./chunk-FVMEZ57K.js";
|
|
13
13
|
import "./chunk-DOJBV6WR.js";
|
|
14
14
|
import "./chunk-PFUXPTBT.js";
|
|
@@ -11,7 +11,7 @@ import "./chunk-PT4DZDJA.js";
|
|
|
11
11
|
import "./chunk-MLAMXQAW.js";
|
|
12
12
|
import "./chunk-AIYXVWUH.js";
|
|
13
13
|
import "./chunk-VEWZZM3H.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-3DQZ2GAY.js";
|
|
15
15
|
import "./chunk-3UXOZBHV.js";
|
|
16
16
|
import "./chunk-AL3TCNSJ.js";
|
|
17
17
|
import "./chunk-HCCRWSP7.js";
|
|
@@ -26,13 +26,13 @@ import "./chunk-236PXYG7.js";
|
|
|
26
26
|
import "./chunk-ZCUTSMR2.js";
|
|
27
27
|
import "./chunk-QDW3E4RD.js";
|
|
28
28
|
import "./chunk-ZJP66Q4I.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-D6WJNWZG.js";
|
|
30
30
|
import "./chunk-QGVCFVX6.js";
|
|
31
31
|
import "./chunk-UHVXE24Y.js";
|
|
32
32
|
import "./chunk-O3JG4PD3.js";
|
|
33
33
|
import "./chunk-G6OFEGUR.js";
|
|
34
34
|
import "./chunk-RFUL2ZIQ.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-BUOP3DOK.js";
|
|
36
36
|
import "./chunk-FVMEZ57K.js";
|
|
37
37
|
import "./chunk-DOJBV6WR.js";
|
|
38
38
|
import "./chunk-PFUXPTBT.js";
|
package/dist/standup/build.js
CHANGED
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
parseStandupDate,
|
|
4
4
|
previousActiveDate,
|
|
5
5
|
standupHelp
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-TFI2Y5AR.js";
|
|
7
|
+
import "../chunk-D6WJNWZG.js";
|
|
8
8
|
import "../chunk-QGVCFVX6.js";
|
|
9
9
|
import "../chunk-UHVXE24Y.js";
|
|
10
10
|
import "../chunk-O3JG4PD3.js";
|
|
11
11
|
import "../chunk-G6OFEGUR.js";
|
|
12
12
|
import "../chunk-RFUL2ZIQ.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-BUOP3DOK.js";
|
|
14
14
|
import "../chunk-FVMEZ57K.js";
|
|
15
15
|
import "../chunk-DOJBV6WR.js";
|
|
16
16
|
import "../chunk-PFUXPTBT.js";
|
package/dist/storage.js
CHANGED
|
@@ -14,13 +14,13 @@ import {
|
|
|
14
14
|
parseFrontmatter,
|
|
15
15
|
parseFrontmatterStringValue,
|
|
16
16
|
serializeEntityFile
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-D6WJNWZG.js";
|
|
18
18
|
import "./chunk-QGVCFVX6.js";
|
|
19
19
|
import "./chunk-UHVXE24Y.js";
|
|
20
20
|
import "./chunk-O3JG4PD3.js";
|
|
21
21
|
import "./chunk-G6OFEGUR.js";
|
|
22
22
|
import "./chunk-RFUL2ZIQ.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-BUOP3DOK.js";
|
|
24
24
|
import "./chunk-FVMEZ57K.js";
|
|
25
25
|
import "./chunk-DOJBV6WR.js";
|
|
26
26
|
import "./chunk-PFUXPTBT.js";
|
|
@@ -4,19 +4,19 @@ import {
|
|
|
4
4
|
exportOkfBundle,
|
|
5
5
|
firstHeading,
|
|
6
6
|
parseIncludeStatus
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-VRBTZDQ5.js";
|
|
8
8
|
import {
|
|
9
9
|
OKF_EXPORT_VERSION
|
|
10
10
|
} from "../chunk-I7TR2OCU.js";
|
|
11
11
|
import "../chunk-D24OXEPB.js";
|
|
12
12
|
import "../chunk-3UXOZBHV.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-D6WJNWZG.js";
|
|
14
14
|
import "../chunk-QGVCFVX6.js";
|
|
15
15
|
import "../chunk-UHVXE24Y.js";
|
|
16
16
|
import "../chunk-O3JG4PD3.js";
|
|
17
17
|
import "../chunk-G6OFEGUR.js";
|
|
18
18
|
import "../chunk-RFUL2ZIQ.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-BUOP3DOK.js";
|
|
20
20
|
import "../chunk-FVMEZ57K.js";
|
|
21
21
|
import "../chunk-DOJBV6WR.js";
|
|
22
22
|
import "../chunk-PFUXPTBT.js";
|
package/dist/verified-recall.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FVPWQWIK.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-D6WJNWZG.js";
|
|
7
7
|
import "./chunk-QGVCFVX6.js";
|
|
8
8
|
import "./chunk-UHVXE24Y.js";
|
|
9
9
|
import "./chunk-O3JG4PD3.js";
|
|
10
10
|
import "./chunk-G6OFEGUR.js";
|
|
11
11
|
import "./chunk-RFUL2ZIQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-BUOP3DOK.js";
|
|
13
13
|
import "./chunk-FVMEZ57K.js";
|
|
14
14
|
import "./chunk-DOJBV6WR.js";
|
|
15
15
|
import "./chunk-PFUXPTBT.js";
|
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-MXXTU4R2.js";
|
|
8
|
+
import "./chunk-RXL67CV6.js";
|
|
9
|
+
import "./chunk-D6WJNWZG.js";
|
|
10
10
|
import "./chunk-QGVCFVX6.js";
|
|
11
11
|
import "./chunk-UHVXE24Y.js";
|
|
12
12
|
import "./chunk-O3JG4PD3.js";
|
|
13
13
|
import "./chunk-G6OFEGUR.js";
|
|
14
14
|
import "./chunk-RFUL2ZIQ.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-BUOP3DOK.js";
|
|
16
16
|
import "./chunk-FVMEZ57K.js";
|
|
17
17
|
import "./chunk-DOJBV6WR.js";
|
|
18
18
|
import "./chunk-PFUXPTBT.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-RXL67CV6.js";
|
|
13
|
+
import "./chunk-D6WJNWZG.js";
|
|
14
14
|
import "./chunk-QGVCFVX6.js";
|
|
15
15
|
import "./chunk-UHVXE24Y.js";
|
|
16
16
|
import "./chunk-O3JG4PD3.js";
|
|
17
17
|
import "./chunk-G6OFEGUR.js";
|
|
18
18
|
import "./chunk-RFUL2ZIQ.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-BUOP3DOK.js";
|
|
20
20
|
import "./chunk-FVMEZ57K.js";
|
|
21
21
|
import "./chunk-DOJBV6WR.js";
|
|
22
22
|
import "./chunk-PFUXPTBT.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.98",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3386,7 +3386,7 @@
|
|
|
3386
3386
|
"core"
|
|
3387
3387
|
],
|
|
3388
3388
|
"peerDependencies": {
|
|
3389
|
-
"@remnic/coding-graph": "^10.0.
|
|
3389
|
+
"@remnic/coding-graph": "^10.0.98"
|
|
3390
3390
|
},
|
|
3391
3391
|
"peerDependenciesMeta": {
|
|
3392
3392
|
"@remnic/coding-graph": {
|
|
@@ -96,6 +96,51 @@ test("HTTP recall aborts in-flight work when the client disconnects", async () =
|
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
+
test("stop() does not wait for an in-flight request longer than the grace period", async () => {
|
|
100
|
+
// An in-flight recall or observe holds server.close() open. On jarvis-ml a
|
|
101
|
+
// restart sat in listener-closure until systemd's 700 s stop timeout killed
|
|
102
|
+
// the process. After the grace period stop() must cut the connection, which
|
|
103
|
+
// also aborts the request's signal.
|
|
104
|
+
const started = deferred<void>();
|
|
105
|
+
const settled = deferred<void>();
|
|
106
|
+
let observedSignal: AbortSignal | undefined;
|
|
107
|
+
const stub: Pick<EngramAccessService, "recall"> = {
|
|
108
|
+
recall: async (input: EngramAccessRecallRequest) => {
|
|
109
|
+
observedSignal = input.abortSignal;
|
|
110
|
+
started.resolve();
|
|
111
|
+
await new Promise<void>((_resolve, reject) => {
|
|
112
|
+
input.abortSignal?.addEventListener("abort", () => reject(input.abortSignal?.reason), { once: true });
|
|
113
|
+
}).finally(() => settled.resolve());
|
|
114
|
+
// SAFETY: the request is aborted before this return is read; the value is never used.
|
|
115
|
+
return {} as never;
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
// SAFETY: the server calls only recall on this route and the stub implements it.
|
|
119
|
+
const service = stub as EngramAccessService;
|
|
120
|
+
const server = new EngramAccessHttpServer({
|
|
121
|
+
service,
|
|
122
|
+
port: 0,
|
|
123
|
+
authToken: "test-token",
|
|
124
|
+
adminConsoleEnabled: false,
|
|
125
|
+
stopGraceMs: 50,
|
|
126
|
+
});
|
|
127
|
+
const status = await server.start();
|
|
128
|
+
const client = httpRequest({
|
|
129
|
+
host: "127.0.0.1",
|
|
130
|
+
port: status.port,
|
|
131
|
+
path: "/engram/v1/recall",
|
|
132
|
+
method: "POST",
|
|
133
|
+
headers: { authorization: "Bearer test-token", "content-type": "application/json" },
|
|
134
|
+
});
|
|
135
|
+
client.on("error", () => {});
|
|
136
|
+
client.end(JSON.stringify({ query: "never finishes" }));
|
|
137
|
+
await waitFor(started.promise);
|
|
138
|
+
|
|
139
|
+
await waitFor(server.stop(), 2_000);
|
|
140
|
+
await waitFor(settled.promise);
|
|
141
|
+
assert.equal(observedSignal?.aborted, true);
|
|
142
|
+
});
|
|
143
|
+
|
|
99
144
|
test("a queued recall rejects immediately on abort — before the holder releases — and never starts", async () => {
|
|
100
145
|
const firstStarted = deferred<void>();
|
|
101
146
|
const releaseFirst = deferred<void>();
|
package/src/access-http-types.ts
CHANGED
|
@@ -42,6 +42,8 @@ export interface EngramAccessHttpServerOptions {
|
|
|
42
42
|
tokenPathPolicy?: (connector: string, pathname: string | undefined) => boolean;
|
|
43
43
|
principal?: string;
|
|
44
44
|
maxBodyBytes?: number;
|
|
45
|
+
/** How long stop() lets in-flight requests finish before it cuts their connections (default 10000 ms). */
|
|
46
|
+
stopGraceMs?: number;
|
|
45
47
|
/**
|
|
46
48
|
* Max non-replayed write requests per rolling window before 429
|
|
47
49
|
* `write_rate_limited` (issue #1937). Positive integer; defaults to 30.
|
package/src/access-http.ts
CHANGED
|
@@ -289,6 +289,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
289
289
|
private readonly tokenPathPolicy?: (connector: string, pathname: string | undefined) => boolean;
|
|
290
290
|
private readonly authenticatedPrincipal?: string;
|
|
291
291
|
protected readonly maxBodyBytes: number;
|
|
292
|
+
private readonly stopGraceMs: number;
|
|
292
293
|
private readonly adminConsoleEnabled: boolean;
|
|
293
294
|
protected readonly adminConsolePublicDir: string;
|
|
294
295
|
private readonly adminConsolePrefillToken?: string;
|
|
@@ -338,6 +339,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
338
339
|
this.authTokenEntriesGetter = options.authTokenEntriesGetter;
|
|
339
340
|
this.tokenPathPolicy = options.tokenPathPolicy;
|
|
340
341
|
this.authenticatedPrincipal = options.principal?.trim() || undefined;
|
|
342
|
+
this.stopGraceMs = Number.isFinite(options.stopGraceMs) ? Math.max(0, Math.floor(options.stopGraceMs ?? 10_000)) : 10_000;
|
|
341
343
|
this.maxBodyBytes = Number.isFinite(options.maxBodyBytes)
|
|
342
344
|
? Math.max(1, Math.floor(options.maxBodyBytes ?? 131072))
|
|
343
345
|
: 131072;
|
|
@@ -516,9 +518,19 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
516
518
|
try { res.end(); } catch { /* ignore */ }
|
|
517
519
|
}
|
|
518
520
|
this.sseClients.clear();
|
|
519
|
-
|
|
521
|
+
// server.close() waits for every open request. An in-flight recall or
|
|
522
|
+
// observe (extraction can run for minutes) kept it open until systemd's
|
|
523
|
+
// 700 s stop timeout killed the process. Let requests finish for the grace
|
|
524
|
+
// period, then cut their connections; that also aborts their signals.
|
|
525
|
+
const closed = new Promise<void>((resolve, reject) => {
|
|
520
526
|
server.close((err) => (err ? reject(err) : resolve()));
|
|
521
527
|
});
|
|
528
|
+
const cutTimer = setTimeout(() => server.closeAllConnections(), this.stopGraceMs);
|
|
529
|
+
try {
|
|
530
|
+
await closed;
|
|
531
|
+
} finally {
|
|
532
|
+
clearTimeout(cutTimer);
|
|
533
|
+
}
|
|
522
534
|
}
|
|
523
535
|
|
|
524
536
|
/**
|
|
@@ -507,6 +507,41 @@ test("searchAcrossNamespaces still rejects when the caller aborts", async () =>
|
|
|
507
507
|
assert.equal(degradations.length, 0, "a caller abort is not a backend degradation");
|
|
508
508
|
});
|
|
509
509
|
|
|
510
|
+
test("searchAcrossNamespaces with an already aborted caller leaves no unhandled backend rejection", async () => {
|
|
511
|
+
// The backend leg gets the aborted signal and rejects after the router has
|
|
512
|
+
// already returned its own rejection. Nothing may be left holding that
|
|
513
|
+
// second rejection: on the daemon it is an unhandled AbortError and the
|
|
514
|
+
// process exits (jarvis-ml, 12 Nov 2026).
|
|
515
|
+
class AbortingBackend extends FakeBackend {
|
|
516
|
+
override async search(): Promise<QmdSearchResult[]> {
|
|
517
|
+
await setImmediate();
|
|
518
|
+
throw Object.assign(new Error("QMD inflight search aborted"), { name: "AbortError" });
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
const router = new NamespaceSearchRouter(
|
|
522
|
+
config(),
|
|
523
|
+
{ storageFor: async (namespace: string) => ({ dir: `/tmp/remnic/${namespace}` }) },
|
|
524
|
+
() => new AbortingBackend(false),
|
|
525
|
+
);
|
|
526
|
+
let unhandled = 0;
|
|
527
|
+
const onUnhandled = () => {
|
|
528
|
+
unhandled += 1;
|
|
529
|
+
};
|
|
530
|
+
process.on("unhandledRejection", onUnhandled);
|
|
531
|
+
try {
|
|
532
|
+
const caller = new AbortController();
|
|
533
|
+
caller.abort();
|
|
534
|
+
await assert.rejects(
|
|
535
|
+
router.searchAcrossNamespaces({ query: "a", namespaces: ["main"], maxResults: 10, execution: { signal: caller.signal } }),
|
|
536
|
+
{ message: "operation aborted" },
|
|
537
|
+
);
|
|
538
|
+
for (let i = 0; i < 5; i += 1) await setImmediate();
|
|
539
|
+
assert.equal(unhandled, 0);
|
|
540
|
+
} finally {
|
|
541
|
+
process.off("unhandledRejection", onUnhandled);
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
|
|
510
545
|
test("searchAcrossNamespaces propagates backend errors instead of masking them", async () => {
|
|
511
546
|
const degradations: SearchDegradation[] = [];
|
|
512
547
|
class ThrowingBackend extends FakeBackend {
|
package/src/namespaces/search.ts
CHANGED
|
@@ -622,7 +622,13 @@ class NamespaceSearchAbortError extends Error {
|
|
|
622
622
|
|
|
623
623
|
function awaitWithAbort<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T> {
|
|
624
624
|
if (!signal) return operation;
|
|
625
|
-
if (signal.aborted)
|
|
625
|
+
if (signal.aborted) {
|
|
626
|
+
// The operation was started with this same aborted signal and will reject
|
|
627
|
+
// on its own. Without a handler that second rejection is unhandled and
|
|
628
|
+
// ends the process.
|
|
629
|
+
operation.catch(() => {});
|
|
630
|
+
return Promise.reject(new NamespaceSearchAbortError());
|
|
631
|
+
}
|
|
626
632
|
|
|
627
633
|
return new Promise<T>((resolve, reject) => {
|
|
628
634
|
const onAbort = () => {
|
|
@@ -115,6 +115,7 @@ export class OrchestratorInitCoordinator {
|
|
|
115
115
|
| { epoch: number; controller: AbortController }
|
|
116
116
|
| undefined;
|
|
117
117
|
private readonly startupStorageWrites = new Set<Promise<void>>();
|
|
118
|
+
private readonly startupWarmups = new Set<Promise<void>>();
|
|
118
119
|
|
|
119
120
|
constructor(
|
|
120
121
|
private readonly deps: OrchestratorInitDeps,
|
|
@@ -138,6 +139,11 @@ export class OrchestratorInitCoordinator {
|
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
|
|
142
|
+
/** Wait for background startup warm-ups; destroy() only, never the deferredReady gate. */
|
|
143
|
+
async drainStartupWarmups(): Promise<void> {
|
|
144
|
+
await Promise.allSettled([...this.startupWarmups]);
|
|
145
|
+
}
|
|
146
|
+
|
|
141
147
|
async drainEntityMigrations(): Promise<void> {
|
|
142
148
|
await Promise.allSettled([...this.startupStorageWrites]);
|
|
143
149
|
const drains = [this.deps.storage.drainEntityCanonicalIdMigration()];
|
|
@@ -657,6 +663,25 @@ export class OrchestratorInitCoordinator {
|
|
|
657
663
|
|
|
658
664
|
if (signal.aborted || !this.isCurrentStartupEpoch(epoch)) return;
|
|
659
665
|
|
|
666
|
+
// Build the default namespace's authoritative fact-hash index now, in the
|
|
667
|
+
// background. The first explicit save otherwise pays the whole hot+cold
|
|
668
|
+
// corpus rebuild (measured 3.1 s CPU, 11 to 33 s wall on jarvis-ml). A save
|
|
669
|
+
// that arrives mid-build joins this same in-flight promise inside
|
|
670
|
+
// StorageManager, so the rebuild never runs twice. Not awaited: the
|
|
671
|
+
// deferredReady gate must not wait on it, and a failure only means the first
|
|
672
|
+
// save builds the index itself, as before.
|
|
673
|
+
const factHashWarm = (async () => {
|
|
674
|
+
const storage = await this.deps.storageRouter.storageFor(this.deps.config.defaultNamespace);
|
|
675
|
+
await storage.isFactContentHashAuthoritative();
|
|
676
|
+
})().catch((err) => {
|
|
677
|
+
log.debug(`fact-hash index startup warm-up failed (non-fatal): ${err}`);
|
|
678
|
+
});
|
|
679
|
+
// Tracked apart from startupStorageWrites: destroy() waits for it so the
|
|
680
|
+
// rebuild never touches state/ after teardown, but the deferredReady gate
|
|
681
|
+
// (which drains startupStorageWrites) must not.
|
|
682
|
+
this.startupWarmups.add(factHashWarm);
|
|
683
|
+
void factHashWarm.finally(() => this.startupWarmups.delete(factHashWarm));
|
|
684
|
+
|
|
660
685
|
// Warmup: run cheap searches to pre-load QMD embedding models and the
|
|
661
686
|
// embedding-fallback JSON index so the first real recall is fast.
|
|
662
687
|
const warmupPromises: Promise<void>[] = [];
|