@cortexkit/opencode-magic-context 0.49.16 → 0.49.18
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 +76 -63
- package/dist/chunk-embedding-write-worker.js +11 -11
- package/dist/{compaction-marker-candidates-v5c6997n.js → compaction-marker-candidates-n4krhat4.js} +2 -2
- package/dist/compaction-marker-candidates-worker.js +2 -2
- package/dist/config/schema/magic-context.d.ts +394 -394
- package/dist/{conflict-warning-hook-znry4j76.js → conflict-warning-hook-4pmz879v.js} +5 -5
- package/dist/{context-3znk23va.js → context-m897gfp9.js} +304 -145
- package/dist/{embedding-backfill-q4n8dend.js → embedding-backfill-fmz50tsy.js} +11 -11
- package/dist/embedding-worker-process.js +1 -1
- package/dist/embedding-worker.js +4 -4
- package/dist/features/magic-context/compartment-chunk-embedding.d.ts +1 -1
- package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
- package/dist/features/magic-context/git-commits/indexer.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
- package/dist/features/magic-context/memory/project-identity-cache.d.ts +2 -0
- package/dist/features/magic-context/memory/project-identity-cache.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +1 -1
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/message-index.d.ts +5 -0
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +6 -1
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-host-instruction-retention.d.ts +11 -0
- package/dist/features/magic-context/storage-host-instruction-retention.d.ts.map +1 -0
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-shared.d.ts +2 -2
- package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts +9 -1
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts +2 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-hint.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-hint.d.ts.map +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 +10 -2
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/cache-busting-signals.d.ts +22 -1
- package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts +2 -0
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts +4 -2
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/file-token-coverage.d.ts +11 -0
- package/dist/hooks/magic-context/file-token-coverage.d.ts.map +1 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +9 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/host-served-rows.d.ts +25 -0
- package/dist/hooks/magic-context/host-served-rows.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts +7 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/pass-outcome.d.ts +2 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts +2 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/signed-thinking-hold.d.ts +59 -0
- package/dist/hooks/magic-context/signed-thinking-hold.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-diagnostics.d.ts +8 -0
- package/dist/hooks/magic-context/system-prompt-diagnostics.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +6 -1
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/todo-view.d.ts +2 -2
- package/dist/hooks/magic-context/tool-drop-target.d.ts +3 -2
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +6 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-context-state.d.ts +19 -0
- package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +19 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-stage-logger.d.ts +3 -0
- package/dist/hooks/magic-context/transform-stage-logger.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-9nkg2dzk.js → index-24fezq97.js} +3 -3
- package/dist/{index-v9asb16b.js → index-24jbw52d.js} +5 -5
- package/dist/{index-a8bvhwqs.js → index-2vxtcb95.js} +32 -3
- package/dist/{index-f71thw8j.js → index-4s3t0nd0.js} +1 -1
- package/dist/{index-6a6dq53h.js → index-6s5941tm.js} +5 -5
- package/dist/{index-fkx2qnvw.js → index-6x57ar45.js} +2 -2
- package/dist/{index-ek1yxvvz.js → index-936py2wm.js} +361 -70
- package/dist/{index-dqe8pq4x.js → index-a6mc0v4d.js} +6 -3
- package/dist/{index-hehkf6zm.js → index-b5vqckbw.js} +12 -6
- package/dist/{v2/server-wafzvyhg.js → index-beht37jy.js} +8 -0
- package/dist/{index-7b2cfmaz.js → index-bjcnntmz.js} +2 -2
- package/dist/{index-hqkczed7.js → index-c5pytzne.js} +22 -2
- package/dist/{index-nd7m2a5a.js → index-cf74k5ak.js} +27 -5
- package/dist/{index-kn4t1haw.js → index-e4xv8890.js} +531 -253
- package/dist/{index-cj9g0j7a.js → index-fgncb0ng.js} +7 -7
- package/dist/{index-5mwk1nek.js → index-jn12fvvh.js} +1 -1
- package/dist/{index-n6m03s3n.js → index-ke416mdc.js} +1 -1
- package/dist/{index-mtw9e71a.js → index-kq82mtg0.js} +2 -2
- package/dist/{index-n78avt2p.js → index-n37sebck.js} +1 -1
- package/dist/{index-wk0n1cgt.js → index-qn7xstt2.js} +2 -2
- package/dist/{index-v63beg1z.js → index-r4nkrs05.js} +3 -3
- package/dist/{index-j6zw70pf.js → index-rmwykbbb.js} +60 -21
- package/dist/{index-saews2s3.js → index-rr2bb45z.js} +1 -1
- package/dist/{index-ayym1x7f.js → index-s1ex9y6p.js} +195 -748
- package/dist/{index-7pa32z07.js → index-s734jcsr.js} +1 -1
- package/dist/{index-b17m64g9.js → index-s74zqahq.js} +1 -1
- package/dist/{index-4qfy7v57.js → index-s7j8tvhv.js} +31 -20
- package/dist/{index-wv9n2zcq.js → index-v8awdgvd.js} +4 -4
- package/dist/{index-p4vde22c.js → index-x4njr8df.js} +965 -77
- package/dist/{index-qrahzcqv.js → index-ze7mvk54.js} +10 -7
- package/dist/index.js +39 -39
- package/dist/{message-fts-rowid-map-yvx5a9jw.js → message-fts-rowid-map-17s0dfn4.js} +5 -3
- package/dist/{message-index-t4pz7akd.js → message-index-66jv6fh4.js} +13 -13
- package/dist/{message-index-bounded-6th8djy9.js → message-index-bounded-n1frdn85.js} +17 -17
- package/dist/{message-time-backfill-8egzkd3z.js → message-time-backfill-73mmm76q.js} +1 -1
- package/dist/migration-worker.js +8 -8
- package/dist/plugin/dream-timer.d.ts +11 -0
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/{project-embedding-registry-2dea0a77.js → project-embedding-registry-z74mhqkf.js} +10 -10
- package/dist/raw-ordinal-warmup-worker.js +10 -10
- package/dist/{read-session-chunk-4pwqxm5a.js → read-session-chunk-v06g3vka.js} +7 -7
- package/dist/{read-session-raw-5ar8se5v.js → read-session-raw-rsc8c7qy.js} +2 -2
- package/dist/{recomp-orchestrator-tjcaj5x7.js → recomp-orchestrator-ghpk2dtq.js} +24 -24
- package/dist/{search-archive-02jws7hw.js → search-archive-4d53y23e.js} +8 -8
- package/dist/{search-rb01n29x.js → search-nkf271d4.js} +20 -20
- package/dist/{send-session-notification-2x9edkrp.js → send-session-notification-6ve0e8p4.js} +4 -4
- package/dist/shared/historian-cache.d.ts +8 -0
- package/dist/shared/historian-cache.d.ts.map +1 -0
- package/dist/shared/model-suggestion-retry.d.ts +2 -0
- package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
- package/dist/shared/rpc-discovery-cleanup.d.ts +3 -0
- package/dist/shared/rpc-discovery-cleanup.d.ts.map +1 -0
- package/dist/shared/rpc-server.d.ts +2 -0
- package/dist/shared/rpc-server.d.ts.map +1 -1
- package/dist/shared/search-text.d.ts +8 -0
- package/dist/shared/search-text.d.ts.map +1 -0
- package/dist/shared/sqlite.d.ts +4 -2
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/storage-file-mutex.d.ts.map +1 -1
- package/dist/shared/subagent-runner.d.ts +2 -0
- package/dist/shared/subagent-runner.d.ts.map +1 -1
- package/dist/shared/system-directive.d.ts +2 -0
- package/dist/shared/system-directive.d.ts.map +1 -1
- package/dist/{sqlite-4pqyynrs.js → sqlite-zf72c52d.js} +1 -1
- package/dist/{storage-memory-j3v3hc83.js → storage-memory-y3qmy00r.js} +2 -2
- package/dist/{storage-tags-4z1w27xa.js → storage-tags-r7k9tjcv.js} +8 -4
- package/dist/{transform-postprocess-phase-xaw5c3xp.js → transform-postprocess-phase-zpgav0h7.js} +24 -24
- package/dist/v2/auto-search-worker.js +76 -63
- package/dist/v2/chunk-embedding-write-worker.js +11 -11
- package/dist/v2/{compaction-marker-candidates-1vqwr3s5.js → compaction-marker-candidates-ebx3388k.js} +2 -2
- package/dist/v2/compaction-marker-candidates-worker.js +2 -2
- package/dist/v2/{context-acw1nhv8.js → context-f2xh7ba4.js} +1171 -448
- package/dist/v2/embedding-backfill-7c7yr69y.js +23 -0
- package/dist/v2/embedding-worker-process.js +1 -1
- package/dist/v2/embedding-worker.js +4 -4
- package/dist/v2/fold/native-replay.d.ts +11 -2
- package/dist/v2/fold/native-replay.d.ts.map +1 -1
- package/dist/v2/fold/policy.d.ts.map +1 -1
- package/dist/v2/fold/restore.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/hidden-child.d.ts +8 -0
- package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +17 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/{message-fts-rowid-map-8vf0v7cr.js → message-fts-rowid-map-wfx67gfd.js} +5 -3
- package/dist/v2/{message-index-e6qzw477.js → message-index-48f7hw7a.js} +13 -13
- package/dist/v2/{message-index-bounded-dsrf49y7.js → message-index-bounded-w3hfm29z.js} +17 -17
- package/dist/v2/{message-time-backfill-q5pgxf0d.js → message-time-backfill-04t0km1z.js} +1 -1
- package/dist/v2/migration-worker.js +8 -8
- package/dist/v2/{project-embedding-registry-rek75aqw.js → project-embedding-registry-gnkj56xp.js} +10 -10
- package/dist/v2/raw-ordinal-warmup-worker.js +10 -10
- package/dist/v2/{read-session-chunk-7bpygfv2.js → read-session-chunk-zpgmxwte.js} +7 -7
- package/dist/v2/{read-session-raw-pw2n1qgc.js → read-session-raw-yaegtjzh.js} +2 -2
- package/dist/v2/{recomp-orchestrator-hzpgg06e.js → recomp-orchestrator-4vfxej9t.js} +24 -24
- package/dist/v2/{search-archive-fn4wy8sx.js → search-archive-vv48s2aa.js} +8 -8
- package/dist/v2/{search-sf2vg5pk.js → search-kza414f0.js} +20 -20
- package/dist/v2/{send-session-notification-hmr7q0nt.js → send-session-notification-3pxn658x.js} +4 -4
- package/dist/v2/{server-n5q841qn.js → server-1nyybqan.js} +31 -20
- package/dist/v2/{server-785mb90s.js → server-1wy7b9de.js} +6 -3
- package/dist/v2/{server-0mzjjw3s.js → server-27gq4mfz.js} +27 -5
- package/dist/v2/{server-g59aatsz.js → server-2ehj0bw7.js} +965 -77
- package/dist/v2/{server-kqpawe1a.js → server-46neh5fa.js} +12 -6
- package/dist/v2/{server-rrqpvwqd.js → server-6tmj0s7j.js} +2 -2
- package/dist/v2/{server-kr2kc9dz.js → server-8by8qfec.js} +10 -7
- package/dist/v2/{server-r9gjxcte.js → server-a2eqhkxr.js} +7 -7
- package/dist/v2/{server-vbe4se57.js → server-a9xqj88f.js} +1 -1
- package/dist/{index-wafzvyhg.js → v2/server-beht37jy.js} +8 -0
- package/dist/v2/{server-6fyp0v67.js → server-bfpda1tb.js} +195 -749
- package/dist/v2/{server-05xjtq6c.js → server-d04vrx0j.js} +1 -1
- package/dist/v2/{server-zs8d0s3b.js → server-g3qma5c0.js} +1 -1
- package/dist/v2/{server-00hx04yn.js → server-gpvay0xz.js} +2 -2
- package/dist/v2/{server-gha9x4qq.js → server-h1v0pyxb.js} +2 -2
- package/dist/v2/{server-hgg55hde.js → server-hy3d3vsx.js} +1 -1
- package/dist/v2/{server-vgpab6rd.js → server-my7k4eds.js} +4 -4
- package/dist/v2/{server-d8tj10db.js → server-n1prf1g6.js} +1 -1
- package/dist/v2/{server-n78avt2p.js → server-n37sebck.js} +1 -1
- package/dist/v2/{server-y5pznjt9.js → server-nj659894.js} +5 -5
- package/dist/v2/{server-zyw55ygv.js → server-qv7f0hhe.js} +5 -5
- package/dist/v2/{server-e3ftpk7v.js → server-rmygf5pn.js} +32 -3
- package/dist/v2/{server-0ppsweh6.js → server-tgnbmwah.js} +22 -2
- package/dist/v2/{server-1hcbw661.js → server-xhab8jx8.js} +60 -21
- package/dist/v2/{server-6714jebr.js → server-xj136kt8.js} +1 -1
- package/dist/v2/{server-aavz8pm6.js → server-zzkj2fch.js} +3 -3
- package/dist/v2/server.js +4 -4
- package/dist/v2/{sqlite-4pqyynrs.js → sqlite-zf72c52d.js} +1 -1
- package/dist/v2/{storage-memory-j3v3hc83.js → storage-memory-y3qmy00r.js} +2 -2
- package/dist/v2/{storage-tags-hkwtbp3g.js → storage-tags-3wdb8zph.js} +8 -4
- package/dist/v2/store-reader.d.ts +8 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-x4xj1782.js → wrapup-orchestrator-psqz7yh0.js} +24 -24
- package/dist/wrapup-orchestrator-s9zc5b00.js +48 -0
- package/package.json +1 -1
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/shared/historian-cache.test.ts +69 -0
- package/src/shared/historian-cache.ts +55 -0
- package/src/shared/model-suggestion-retry.ts +2 -0
- package/src/shared/rpc-discovery-cleanup.test.ts +57 -0
- package/src/shared/rpc-discovery-cleanup.ts +57 -0
- package/src/shared/rpc-server.ts +36 -13
- package/src/shared/search-text.test.ts +47 -0
- package/src/shared/search-text.ts +63 -0
- package/src/shared/sqlite.test.ts +56 -0
- package/src/shared/sqlite.ts +51 -2
- package/src/shared/storage-file-mutex-review.test.ts +22 -2
- package/src/shared/storage-file-mutex.ts +11 -1
- package/src/shared/subagent-runner.ts +2 -0
- package/src/shared/system-directive.ts +19 -1
- package/src/shared/tag-transcript.ts +12 -4
- package/dist/v2/embedding-backfill-jyd6492b.js +0 -23
- package/dist/wrapup-orchestrator-vj2tbp22.js +0 -48
|
@@ -196,6 +196,8 @@ export declare class V2StoreReader {
|
|
|
196
196
|
latestMessageTime(sessionID: string): number | undefined;
|
|
197
197
|
/** Parent links are recorded by the host before a child's first context pass. */
|
|
198
198
|
isSubagent(sessionID: string): boolean | null;
|
|
199
|
+
/** Authoritative liveness snapshot for background orphan cleanup. */
|
|
200
|
+
sessionIds(): string[];
|
|
199
201
|
/**
|
|
200
202
|
* The most recently updated top-level user session the host created in
|
|
201
203
|
* `directory`, or undefined when there is none. Children, Magic Context's
|
|
@@ -257,6 +259,12 @@ export declare class V2StoreReader {
|
|
|
257
259
|
spanRowStamps(sessionID: string, after: number, through: number): Map<number, string>;
|
|
258
260
|
/** Conversational rows at or before `throughSeq`, newest first. */
|
|
259
261
|
rawRowsThrough(sessionID: string, throughSeq: number, limit: number): StoreRow[];
|
|
262
|
+
/**
|
|
263
|
+
* Instruction-update rows (`type = 'system'`) at or before `throughSeq`,
|
|
264
|
+
* oldest first. Only these rows are read, so a long session pays for its few
|
|
265
|
+
* instruction rows rather than for its whole history.
|
|
266
|
+
*/
|
|
267
|
+
instructionRowsThrough(sessionID: string, throughSeq: number): StoreRow[];
|
|
260
268
|
sequenceForId(sessionID: string, id: string | null | undefined): number | undefined;
|
|
261
269
|
/** Native synthetics are user-shaped on the wire; their store kind is unambiguous. */
|
|
262
270
|
syntheticMessageIDs(sessionID: string): Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-reader.d.ts","sourceRoot":"","sources":["../../src/v2/store-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store-reader.d.ts","sourceRoot":"","sources":["../../src/v2/store-reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAOvF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yFAAyF;AACzF,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,MAAM,CAER;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAW,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,MAAM,CAER;AAGD,MAAM,MAAM,WAAW,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,GACZ,MAAM,CAAC;AAEb,eAAO,MAAM,iBAAiB,yEAOa,CAAC;AAI5C,eAAO,MAAM,mBAAmB,QAkBP,CAAC;AAC1B,MAAM,WAAW,WAAW;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AACD,MAAM,WAAW,QAAS,SAAQ,WAAW;IACzC,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;CACnD;AACD,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,SAAS,MAAM,GAAG,QAAQ,GAAG,CAAC,SAAS,YAAY,GAAG,cAAc,GAAG,WAAW,CAAC;CAC7F;AAKD,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AAEvF,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACjE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,QAAQ,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACxB;AAiFD,wBAAgB,6BAA6B,IAAI,0BAA0B,CAqB1E;AAED,wBAAgB,+BAA+B,CAAC,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAUhG;AAiBD,UAAU,gBAAgB;IACtB,EAAE,EAAE,QAAQ,CAAC;IACb,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB;AA8BD;;;;;;;;8CAQ8C;AAC9C,qBAAa,iBAAiB;IAOd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;gBAExB,QAAQ,SAAI;IAKzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAIjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAwBvC,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAK3C,OAAO,CAAC,MAAM;IAKd;;;OAGG;IACH,IAAI,IAAI,MAAM,IAAI;IAYlB,4EAA4E;IAC5E,QAAQ,IAAI,OAAO;IAInB,mCAAmC;IACnC,SAAS,IAAI,MAAM;IAInB,8FAA8F;IAC9F,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBxD,OAAO,CAAC,WAAW;CAQtB;AAED,0GAA0G;AAC1G,qBAAa,aAAa;IAKlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAL1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,MAAM,CAAS;gBAEF,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,iBAAiB,YAAA;IAM7C;;;;;;;gFAO4E;IAC5E,YAAY,IAAI,MAAM;IAMtB,OAAO,CAAC,OAAO;IAYf,KAAK,IAAI,IAAI;IAOb,kFAAkF;IAClF,IAAI,CACA,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,WAAW,CAAC;KACjB,GACP;QAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;IA4BnD;;;;OAIG;IACH,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,uBAAuB,GAChC,QAAQ,EAAE;IAkDb,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAWvC;;;;OAIG;IACH,oBAAoB,CAChB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,KAAK,EAAE,MAAM,GACd,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOxD,iFAAiF;IACjF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAQ7C,qEAAqE;IACrE,UAAU,IAAI,MAAM,EAAE;IAMtB;;;;;;;;;;;;;OAaG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAuBnE;;mEAE+D;IAC/D,mBAAmB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAmBvE,2BAA2B,CACvB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GAChB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAgBtB;sFACkF;IAClF,qBAAqB,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC5B,GACF,KAAK,CAAC;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,uBAAuB,EAAE,MAAM,CAAC;KACnC,CAAC;IAsDF;;;;2BAIuB;IACvB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAOzD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAS7C,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAW3D,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,SAAS,MAAM,EAAE,GACvB,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAWzD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAuBhE,iBAAiB,CACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAClB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBtB,kBAAkB,CACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,sBAAsB,GAAG,IAAI,EACpC,KAAK,EAAE,MAAM,GACd,qBAAqB,EAAE;IA6B1B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;IAMpE;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAmBrF,mEAAmE;IACnE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;IAgBhF;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAazE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAQnF,sFAAsF;IACtF,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAOnD;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAiClD,4DAA4D;IAC5D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IAOrE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM;IAavE,OAAO,CAAC,kBAAkB;IAc1B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAMvE,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAM9E,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE;IAO3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOvD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOzC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE;IAU5E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS;IAUrE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS;IAU3D,8EAA8E;IAC9E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAWrC;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAItC,OAAO,CAAC,GAAG;CAcd"}
|
|
@@ -19,18 +19,18 @@ import {
|
|
|
19
19
|
registerActiveCompartmentRun,
|
|
20
20
|
setRecompStarting2,
|
|
21
21
|
setRecompTerminal2
|
|
22
|
-
} from "./server-
|
|
23
|
-
import"./server-
|
|
24
|
-
import"./server-
|
|
25
|
-
import"./server-
|
|
22
|
+
} from "./server-bfpda1tb.js";
|
|
23
|
+
import"./server-8by8qfec.js";
|
|
24
|
+
import"./server-tgnbmwah.js";
|
|
25
|
+
import"./server-6tmj0s7j.js";
|
|
26
26
|
import {
|
|
27
27
|
inRootAsyncContext2
|
|
28
|
-
} from "./server-
|
|
28
|
+
} from "./server-beht37jy.js";
|
|
29
29
|
import"./server-51779zs2.js";
|
|
30
|
-
import"./server-
|
|
31
|
-
import"./server-
|
|
32
|
-
import"./server-
|
|
33
|
-
import"./server-
|
|
30
|
+
import"./server-xj136kt8.js";
|
|
31
|
+
import"./server-1wy7b9de.js";
|
|
32
|
+
import"./server-46neh5fa.js";
|
|
33
|
+
import"./server-2ehj0bw7.js";
|
|
34
34
|
import {
|
|
35
35
|
getWrapupInProgressState,
|
|
36
36
|
acquireWrapupInProgress,
|
|
@@ -39,37 +39,37 @@ import {
|
|
|
39
39
|
getHistorianFailureState,
|
|
40
40
|
clearEmergencyRecovery,
|
|
41
41
|
prepareRawSessionOrdinals2
|
|
42
|
-
} from "./server-
|
|
42
|
+
} from "./server-xhab8jx8.js";
|
|
43
43
|
import"./server-pwv4ezb0.js";
|
|
44
|
-
import"./server-
|
|
44
|
+
import"./server-a2eqhkxr.js";
|
|
45
45
|
import"./server-1zx87sdm.js";
|
|
46
|
-
import"./server-
|
|
46
|
+
import"./server-27gq4mfz.js";
|
|
47
47
|
import"./server-271qxsf5.js";
|
|
48
48
|
import"./server-2ra6pwf3.js";
|
|
49
|
-
import"./server-
|
|
50
|
-
import"./server-
|
|
49
|
+
import"./server-n1prf1g6.js";
|
|
50
|
+
import"./server-g3qma5c0.js";
|
|
51
51
|
import"./server-fr0wbhdn.js";
|
|
52
|
-
import"./server-
|
|
53
|
-
import"./server-
|
|
52
|
+
import"./server-gpvay0xz.js";
|
|
53
|
+
import"./server-rmygf5pn.js";
|
|
54
54
|
import"./server-fb3zxn06.js";
|
|
55
|
-
import"./server-
|
|
55
|
+
import"./server-my7k4eds.js";
|
|
56
56
|
import {
|
|
57
57
|
pushNotification2
|
|
58
58
|
} from "./server-x8a7jmkh.js";
|
|
59
|
-
import"./server-
|
|
59
|
+
import"./server-d04vrx0j.js";
|
|
60
60
|
import"./server-qt1qqasc.js";
|
|
61
|
-
import"./server-
|
|
61
|
+
import"./server-hy3d3vsx.js";
|
|
62
62
|
import"./server-4dhv7mqz.js";
|
|
63
|
-
import"./server-
|
|
64
|
-
import"./server-
|
|
65
|
-
import"./server-
|
|
66
|
-
import"./server-
|
|
63
|
+
import"./server-h1v0pyxb.js";
|
|
64
|
+
import"./server-zzkj2fch.js";
|
|
65
|
+
import"./server-n37sebck.js";
|
|
66
|
+
import"./server-nj659894.js";
|
|
67
67
|
import"./server-tbe1femw.js";
|
|
68
68
|
import"./server-34kwfsr4.js";
|
|
69
69
|
import"./server-h0410h0v.js";
|
|
70
70
|
import {
|
|
71
71
|
sendStatusNotification2
|
|
72
|
-
} from "./server-
|
|
72
|
+
} from "./server-a9xqj88f.js";
|
|
73
73
|
import"./server-6pmqg9m4.js";
|
|
74
74
|
|
|
75
75
|
// src/hooks/magic-context/wrapup-orchestrator.ts
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runManagedWrapup2
|
|
3
|
+
} from "./index-24jbw52d.js";
|
|
4
|
+
import"./index-r4nkrs05.js";
|
|
5
|
+
import"./index-s1ex9y6p.js";
|
|
6
|
+
import"./index-4s3t0nd0.js";
|
|
7
|
+
import"./index-v8awdgvd.js";
|
|
8
|
+
import"./index-x4njr8df.js";
|
|
9
|
+
import"./index-sd3egckz.js";
|
|
10
|
+
import"./index-24fezq97.js";
|
|
11
|
+
import"./index-ze7mvk54.js";
|
|
12
|
+
import"./index-n37sebck.js";
|
|
13
|
+
import"./index-4dhv7mqz.js";
|
|
14
|
+
import"./index-v10f1rjv.js";
|
|
15
|
+
import"./index-s74zqahq.js";
|
|
16
|
+
import"./index-qt1qqasc.js";
|
|
17
|
+
import"./index-rmwykbbb.js";
|
|
18
|
+
import"./index-cf74k5ak.js";
|
|
19
|
+
import"./index-1zx87sdm.js";
|
|
20
|
+
import"./index-kq82mtg0.js";
|
|
21
|
+
import"./index-x8a7jmkh.js";
|
|
22
|
+
import"./index-y9f76s3f.js";
|
|
23
|
+
import"./index-bjcnntmz.js";
|
|
24
|
+
import"./index-wgypt3cs.js";
|
|
25
|
+
import"./index-rr2bb45z.js";
|
|
26
|
+
import"./index-b5vqckbw.js";
|
|
27
|
+
import"./index-6x57ar45.js";
|
|
28
|
+
import"./index-fgncb0ng.js";
|
|
29
|
+
import"./index-fb3zxn06.js";
|
|
30
|
+
import"./index-qn7xstt2.js";
|
|
31
|
+
import"./index-2vxtcb95.js";
|
|
32
|
+
import"./index-a6mc0v4d.js";
|
|
33
|
+
import"./index-fr0wbhdn.js";
|
|
34
|
+
import"./index-nj7yykkx.js";
|
|
35
|
+
import"./index-ke416mdc.js";
|
|
36
|
+
import"./index-bp5083x2.js";
|
|
37
|
+
import"./index-58e3y90n.js";
|
|
38
|
+
import"./index-s734jcsr.js";
|
|
39
|
+
import"./index-v0p37hm2.js";
|
|
40
|
+
import"./index-k29z4aqh.js";
|
|
41
|
+
import"./index-c5pytzne.js";
|
|
42
|
+
import"./index-beht37jy.js";
|
|
43
|
+
import"./index-j75v2476.js";
|
|
44
|
+
import"./index-g2q4htwp.js";
|
|
45
|
+
import"./index-pavzsdc6.js";
|
|
46
|
+
export {
|
|
47
|
+
runManagedWrapup2 as runManagedWrapup
|
|
48
|
+
};
|
package/package.json
CHANGED
|
@@ -188,6 +188,10 @@ const KNOWN_SLOTS: Record<string, KnownSlot> = {
|
|
|
188
188
|
classification: "DIAGNOSTIC",
|
|
189
189
|
reason: "Most-recent diagnostic: every open attempt clears or overwrites it.",
|
|
190
190
|
},
|
|
191
|
+
"packages/pi-plugin/src/pi-append-compaction.ts:loggedIncompatibleHost": {
|
|
192
|
+
classification: "DIAGNOSTIC",
|
|
193
|
+
reason: "Log-once flag for the incompatible-host error line only: the binding and getEntry checks run again on every adaptPiAppendCompaction call, so a host that becomes compatible gets markers without a restart.",
|
|
194
|
+
},
|
|
191
195
|
"packages/plugin/src/shared/models-dev-cache.ts:apiCache": {
|
|
192
196
|
classification: "PUBLICATION",
|
|
193
197
|
reason: "Publishes last-known-good model metadata, not a failure verdict; refresh writes a later successful value.",
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { withoutHistorianTailCache } from "./historian-cache";
|
|
3
|
+
|
|
4
|
+
// Deliberately non-canonical JSON catches accidental parse/stringify rewrites.
|
|
5
|
+
const anthropicBody = String.raw`{ "model":"claude-test", "max_tokens":1e3, "system":[{"type":"text","text":"stable \\n prefix","cache_control":{"type":"ephemeral"}}], "messages":[{"role":"user","content":[{"type":"text", "text":"seed \\u0041 / chunk \ud83d\udc4b", "cache_control":{"type":"ephemeral","ttl":"5m"}}]}], "temperature":0.00 }`;
|
|
6
|
+
const systemOnlyBody = anthropicBody.replace(
|
|
7
|
+
', "cache_control":{"type":"ephemeral","ttl":"5m"}',
|
|
8
|
+
"",
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
describe("historian wire cache markers", () => {
|
|
12
|
+
test("retry retains an existing whole-tail read and fresh repair retains the system read", () => {
|
|
13
|
+
const initial = JSON.parse(anthropicBody);
|
|
14
|
+
const prefixes = (request: typeof initial): string[] => {
|
|
15
|
+
let prefix = "";
|
|
16
|
+
const marked: string[] = [];
|
|
17
|
+
for (const block of [
|
|
18
|
+
...request.system,
|
|
19
|
+
...request.messages.flatMap((message: { content: unknown[] }) => message.content),
|
|
20
|
+
]) {
|
|
21
|
+
prefix += block.text;
|
|
22
|
+
if (block.cache_control) marked.push(prefix);
|
|
23
|
+
}
|
|
24
|
+
return marked;
|
|
25
|
+
};
|
|
26
|
+
const written = new Set(prefixes(initial));
|
|
27
|
+
const retry = JSON.parse(anthropicBody);
|
|
28
|
+
expect(prefixes(retry).filter((prefix) => written.has(prefix))).toHaveLength(2);
|
|
29
|
+
const repair = JSON.parse(withoutHistorianTailCache(anthropicBody));
|
|
30
|
+
repair.messages[0].content[0].text += "\n\nValidation error and invalid XML";
|
|
31
|
+
expect(prefixes(repair).filter((prefix) => written.has(prefix))).toEqual([
|
|
32
|
+
initial.system[0].text,
|
|
33
|
+
]);
|
|
34
|
+
expect(repair.messages[0].content[0].cache_control).toBeUndefined();
|
|
35
|
+
});
|
|
36
|
+
test("splices only tail marker bytes without changing prompt or generation bytes", () => {
|
|
37
|
+
expect(withoutHistorianTailCache(anthropicBody)).toBe(systemOnlyBody);
|
|
38
|
+
expect(JSON.parse(systemOnlyBody).system).toEqual(JSON.parse(anthropicBody).system);
|
|
39
|
+
expect(JSON.parse(systemOnlyBody).messages[0].content[0].text).toBe(
|
|
40
|
+
JSON.parse(anthropicBody).messages[0].content[0].text,
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
test("removes first, middle and sole properties, preserving other bytes", () => {
|
|
44
|
+
for (const [block, expected] of [
|
|
45
|
+
['{"cache_control":{}, "type":"text","text":"x"}', '{"type":"text","text":"x"}'],
|
|
46
|
+
['{"type":"text", "cache_control":{}, "text":"x"}', '{"type":"text", "text":"x"}'],
|
|
47
|
+
['{"cache_control":{}}', "{}"],
|
|
48
|
+
]) {
|
|
49
|
+
const body = JSON.stringify({
|
|
50
|
+
model: "claude",
|
|
51
|
+
max_tokens: 100,
|
|
52
|
+
system: [{ type: "text", text: "system", cache_control: { type: "ephemeral" } }],
|
|
53
|
+
messages: [{ role: "user", content: [] }],
|
|
54
|
+
}).replace('"content":[]', `"content":[${block}]`);
|
|
55
|
+
expect(withoutHistorianTailCache(body)).toBe(body.replace(block, expected));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
test("unknown, wrapped and automatic-cache envelopes are byte-identical", () => {
|
|
59
|
+
for (const body of [
|
|
60
|
+
'{"model":"claude","messages":[],"max_tokens":100}',
|
|
61
|
+
'{"model":"gpt","messages":[{"role":"user","content":"x"}],"max_tokens":100}',
|
|
62
|
+
'{"anthropic_version":"bedrock-2023-05-31","messages":[],"system":[],"max_tokens":100}',
|
|
63
|
+
'{"instances":[{"messages":[]}]}',
|
|
64
|
+
anthropicBody.replace(',"cache_control":{"type":"ephemeral"}', ""),
|
|
65
|
+
anthropicBody.replace('"temperature":0.00', '"cache_control":{"type":"ephemeral"}'),
|
|
66
|
+
])
|
|
67
|
+
expect(withoutHistorianTailCache(body)).toBe(body);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type Node, parseTree } from "jsonc-parser/lib/esm/main.js";
|
|
2
|
+
|
|
3
|
+
export type HistorianCacheTail = "write" | "skip";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Remove only message-block cache markers from a recognized Anthropic Messages
|
|
7
|
+
* body. Splicing property spans preserves every other wire byte, including
|
|
8
|
+
* number spelling, escaping and whitespace. Unknown envelopes stay untouched.
|
|
9
|
+
*/
|
|
10
|
+
export function withoutHistorianTailCache(body: string): string {
|
|
11
|
+
const value = JSON.parse(body);
|
|
12
|
+
if (
|
|
13
|
+
!value ||
|
|
14
|
+
typeof value.model !== "string" ||
|
|
15
|
+
typeof value.max_tokens !== "number" ||
|
|
16
|
+
!Array.isArray(value.system) ||
|
|
17
|
+
value.system.length === 0 ||
|
|
18
|
+
!value.system.every(
|
|
19
|
+
(part: { type?: unknown; text?: unknown }) =>
|
|
20
|
+
part?.type === "text" && typeof part.text === "string",
|
|
21
|
+
) ||
|
|
22
|
+
!value.system.some((part: { cache_control?: unknown }) => part.cache_control) ||
|
|
23
|
+
!Array.isArray(value.messages) ||
|
|
24
|
+
value.cache_control !== undefined
|
|
25
|
+
)
|
|
26
|
+
return body;
|
|
27
|
+
|
|
28
|
+
const root = parseTree(body);
|
|
29
|
+
const property = (node: Node | undefined, key: string): Node | undefined =>
|
|
30
|
+
node?.children?.find((child) => child.children?.[0]?.value === key)?.children?.[1];
|
|
31
|
+
const removals: Array<[number, number]> = [];
|
|
32
|
+
for (const message of property(root, "messages")?.children ?? []) {
|
|
33
|
+
for (const block of property(message, "content")?.children ?? []) {
|
|
34
|
+
if (block.type !== "object") continue;
|
|
35
|
+
const fields = block.children ?? [];
|
|
36
|
+
fields.forEach((field, index) => {
|
|
37
|
+
if (field.children?.[0]?.value !== "cache_control") return;
|
|
38
|
+
const next = fields[index + 1];
|
|
39
|
+
const previous = fields[index - 1];
|
|
40
|
+
removals.push(
|
|
41
|
+
next
|
|
42
|
+
? [field.offset, next.offset]
|
|
43
|
+
: [
|
|
44
|
+
previous ? previous.offset + previous.length : field.offset,
|
|
45
|
+
field.offset + field.length,
|
|
46
|
+
],
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
for (const [start, end] of removals.sort((a, b) => b[0] - a[0])) {
|
|
52
|
+
body = body.slice(0, start) + body.slice(end);
|
|
53
|
+
}
|
|
54
|
+
return body;
|
|
55
|
+
}
|
|
@@ -41,6 +41,8 @@ export type PromptBody = {
|
|
|
41
41
|
export type PromptArgs = {
|
|
42
42
|
path: { id: string };
|
|
43
43
|
body: PromptBody;
|
|
44
|
+
/** Controls hidden historian message-block cache markers; never serialized in the prompt body. */
|
|
45
|
+
cacheTail?: import("./historian-cache").HistorianCacheTail;
|
|
44
46
|
signal?: AbortSignal;
|
|
45
47
|
[key: string]: unknown;
|
|
46
48
|
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { expect, spyOn, test } from "bun:test";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { MagicContextRpcServer } from "./rpc-server";
|
|
6
|
+
import * as utils from "./rpc-utils";
|
|
7
|
+
import { createTestTempDirFromPath } from "./test-temp-dir";
|
|
8
|
+
|
|
9
|
+
test("RPC startup reaps dead records across projects but keeps live and inconclusive records", async () => {
|
|
10
|
+
const root = createTestTempDirFromPath(join(tmpdir(), "rpc-reap-"));
|
|
11
|
+
const server = new MagicContextRpcServer(root, "/current-project");
|
|
12
|
+
const dir = utils.rpcPortDir(root, "/other-project");
|
|
13
|
+
const empty = utils.rpcPortDir(root, "/empty-project");
|
|
14
|
+
mkdirSync(dir, { recursive: true });
|
|
15
|
+
mkdirSync(empty, { recursive: true });
|
|
16
|
+
for (const pid of [999999, 888888, process.pid])
|
|
17
|
+
writeFileSync(
|
|
18
|
+
join(dir, `port-${pid}.json`),
|
|
19
|
+
JSON.stringify({ port: 1234, pid, token: "do-not-log" }),
|
|
20
|
+
);
|
|
21
|
+
const probe = spyOn(utils, "inspectProcessesAsync").mockResolvedValue({
|
|
22
|
+
pi: { state: "absent", processIds: [] },
|
|
23
|
+
evidence: () => ({ processStartTime: null, commandLine: null, imageName: null }),
|
|
24
|
+
liveness: (pid: number) =>
|
|
25
|
+
pid === 999999 ? "dead" : pid === 888888 ? "inconclusive" : "alive",
|
|
26
|
+
} as Awaited<ReturnType<typeof utils.inspectProcessesAsync>>);
|
|
27
|
+
try {
|
|
28
|
+
await server.start();
|
|
29
|
+
expect(readdirSync(dir).sort()).toEqual(
|
|
30
|
+
[`port-${process.pid}.json`, "port-888888.json"].sort(),
|
|
31
|
+
);
|
|
32
|
+
expect(existsSync(empty)).toBe(false);
|
|
33
|
+
} finally {
|
|
34
|
+
server.stop();
|
|
35
|
+
probe.mockRestore();
|
|
36
|
+
rmSync(root, { recursive: true, force: true });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("RPC stop removes its empty discovery directory but preserves other instances", async () => {
|
|
41
|
+
const root = createTestTempDirFromPath(join(tmpdir(), "rpc-stop-reap-"));
|
|
42
|
+
const first = new MagicContextRpcServer(root, root);
|
|
43
|
+
const second = new MagicContextRpcServer(root, root);
|
|
44
|
+
const directory = utils.rpcPortDir(root, root);
|
|
45
|
+
try {
|
|
46
|
+
await first.start();
|
|
47
|
+
await second.start();
|
|
48
|
+
first.stop();
|
|
49
|
+
expect(readdirSync(directory)).toHaveLength(1);
|
|
50
|
+
second.stop();
|
|
51
|
+
expect(existsSync(directory)).toBe(false);
|
|
52
|
+
} finally {
|
|
53
|
+
first.stop();
|
|
54
|
+
second.stop();
|
|
55
|
+
rmSync(root, { recursive: true, force: true });
|
|
56
|
+
}
|
|
57
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type Dirent, promises as fs } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { inspectProcessesAsync, parseRpcPortFile } from "./rpc-utils";
|
|
4
|
+
|
|
5
|
+
/** Reap only records proven dead; live, unreadable and uncertain records stay. */
|
|
6
|
+
export async function reapDeadRpcDiscovery(storageDir: string): Promise<void> {
|
|
7
|
+
const root = join(storageDir, "rpc");
|
|
8
|
+
let directories: Dirent[];
|
|
9
|
+
try {
|
|
10
|
+
directories = await fs.readdir(root, { withFileTypes: true });
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const records: { path: string; content: string; pid: number }[] = [];
|
|
15
|
+
const projectDirs: string[] = [];
|
|
16
|
+
for (const entry of directories) {
|
|
17
|
+
if (!entry.isDirectory() || !/^[0-9a-f]{16}$/.test(entry.name)) continue;
|
|
18
|
+
const directory = join(root, entry.name);
|
|
19
|
+
projectDirs.push(directory);
|
|
20
|
+
try {
|
|
21
|
+
for (const name of await fs.readdir(directory)) {
|
|
22
|
+
const match = /^port-(\d+)(?:-[0-9a-f]+)?\.json$/.exec(name);
|
|
23
|
+
if (!match) continue;
|
|
24
|
+
const path = join(directory, name);
|
|
25
|
+
try {
|
|
26
|
+
const content = await fs.readFile(path, "utf8");
|
|
27
|
+
const record = parseRpcPortFile(content, Number(match[1]));
|
|
28
|
+
if (record && record.pid === Number(match[1]))
|
|
29
|
+
records.push({ path, content, pid: record.pid });
|
|
30
|
+
} catch {
|
|
31
|
+
// Another host may be publishing or stopping this record.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} catch {
|
|
35
|
+
// An inaccessible project must not prevent cleanup of other projects.
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Read records before a fresh process snapshot so a recently started host
|
|
39
|
+
// cannot be mistaken for a PID missing from an older cached snapshot.
|
|
40
|
+
const processes = records.length ? await inspectProcessesAsync(true) : undefined;
|
|
41
|
+
for (const record of records) {
|
|
42
|
+
if (processes?.liveness(record.pid) !== "dead") continue;
|
|
43
|
+
try {
|
|
44
|
+
if ((await fs.readFile(record.path, "utf8")) === record.content)
|
|
45
|
+
await fs.unlink(record.path);
|
|
46
|
+
} catch {
|
|
47
|
+
// Leave the record for a later pass; never recursively remove its directory.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for (const directory of projectDirs) {
|
|
51
|
+
try {
|
|
52
|
+
await fs.rmdir(directory);
|
|
53
|
+
} catch {
|
|
54
|
+
// Leave non-empty directories untouched; they may still contain records for hosts not proven dead.
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/shared/rpc-server.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { randomBytes, timingSafeEqual } from "node:crypto";
|
|
2
|
-
import { readdirSync, readFileSync, unlinkSync } from "node:fs";
|
|
2
|
+
import { readdirSync, readFileSync, rmdirSync, unlinkSync } from "node:fs";
|
|
3
3
|
import type { Server, ServerWebSocket } from "bun";
|
|
4
4
|
import { log } from "./logger";
|
|
5
|
+
import { reapDeadRpcDiscovery } from "./rpc-discovery-cleanup";
|
|
5
6
|
import {
|
|
6
7
|
acknowledgeNotifications,
|
|
7
8
|
drainNotifications,
|
|
@@ -82,6 +83,7 @@ export class MagicContextRpcServer {
|
|
|
82
83
|
private portFilePath: string;
|
|
83
84
|
private portDir: string;
|
|
84
85
|
private startedAt = Date.now();
|
|
86
|
+
private stopped = false;
|
|
85
87
|
private readonly instanceId = randomBytes(8).toString("hex");
|
|
86
88
|
private unregisterOwnInstance: (() => void) | null = null;
|
|
87
89
|
/** Every authenticated WS socket, so dispose can close them all. */
|
|
@@ -93,7 +95,10 @@ export class MagicContextRpcServer {
|
|
|
93
95
|
// discovers/guesses the port.
|
|
94
96
|
private readonly token = randomBytes(32).toString("hex");
|
|
95
97
|
|
|
96
|
-
constructor(
|
|
98
|
+
constructor(
|
|
99
|
+
private storageDir: string,
|
|
100
|
+
directory: string,
|
|
101
|
+
) {
|
|
97
102
|
this.portFilePath = rpcPortFilePath(storageDir, directory, process.pid, this.instanceId);
|
|
98
103
|
this.portDir = rpcPortDir(storageDir, directory);
|
|
99
104
|
}
|
|
@@ -131,6 +136,9 @@ export class MagicContextRpcServer {
|
|
|
131
136
|
log("rpc server skipped: Bun runtime not available (no TUI consumer)");
|
|
132
137
|
return 0;
|
|
133
138
|
}
|
|
139
|
+
this.stopped = false;
|
|
140
|
+
await reapDeadRpcDiscovery(this.storageDir);
|
|
141
|
+
if (this.stopped) return 0;
|
|
134
142
|
this.startedAt = Date.now();
|
|
135
143
|
const self = this;
|
|
136
144
|
const server = inRootAsyncContext(() =>
|
|
@@ -172,17 +180,26 @@ export class MagicContextRpcServer {
|
|
|
172
180
|
// The discovery file carries the RPC bearer token. The shared writer
|
|
173
181
|
// creates its directory and temporary file with owner-only modes.
|
|
174
182
|
this.unregisterOwnInstance ??= registerOwnRpcServerInstance(this.instanceId);
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
const publish = () =>
|
|
184
|
+
writeStorageFileAtomicSync(
|
|
185
|
+
this.portFilePath,
|
|
186
|
+
JSON.stringify({
|
|
187
|
+
port: this.port,
|
|
188
|
+
pid: process.pid,
|
|
189
|
+
started_at: this.startedAt,
|
|
190
|
+
kind: "OpenCode server",
|
|
191
|
+
token: this.token,
|
|
192
|
+
instance_id: this.instanceId,
|
|
193
|
+
}),
|
|
194
|
+
);
|
|
195
|
+
try {
|
|
196
|
+
publish();
|
|
197
|
+
} catch (error) {
|
|
198
|
+
// An empty-directory reaper can race the writer before its temp
|
|
199
|
+
// file exists. Recreate the directory and retry that case only.
|
|
200
|
+
if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error;
|
|
201
|
+
publish();
|
|
202
|
+
}
|
|
186
203
|
log(`[rpc] server listening on 127.0.0.1:${this.port}`);
|
|
187
204
|
} catch (err) {
|
|
188
205
|
log(`[rpc] failed to write port file: ${err}`);
|
|
@@ -193,6 +210,7 @@ export class MagicContextRpcServer {
|
|
|
193
210
|
|
|
194
211
|
/** Stop the server: close every socket, stop accepting, remove port file. */
|
|
195
212
|
stop(): void {
|
|
213
|
+
this.stopped = true;
|
|
196
214
|
for (const ws of this.sockets) {
|
|
197
215
|
try {
|
|
198
216
|
if (ws.data.authTimer) clearTimeout(ws.data.authTimer);
|
|
@@ -213,6 +231,11 @@ export class MagicContextRpcServer {
|
|
|
213
231
|
} catch {
|
|
214
232
|
// Intentional: port file may already be gone
|
|
215
233
|
}
|
|
234
|
+
try {
|
|
235
|
+
rmdirSync(this.portDir);
|
|
236
|
+
} catch {
|
|
237
|
+
// Other instances' discovery records must survive this server's stop.
|
|
238
|
+
}
|
|
216
239
|
this.unregisterOwnInstance?.();
|
|
217
240
|
this.unregisterOwnInstance = null;
|
|
218
241
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { cleanSearchText, keywordRelevance, matchedSearchSnippet } from "./search-text";
|
|
3
|
+
import { removeSystemReminders } from "./system-directive";
|
|
4
|
+
|
|
5
|
+
test("nested reminder contents stay quarantined through the outer closing tag", () => {
|
|
6
|
+
expect(
|
|
7
|
+
removeSystemReminders(
|
|
8
|
+
'before <SYSTEM-REMINDER origin="host">outer <system-reminder>inner</system-reminder> leaked tail</SYSTEM-REMINDER> after',
|
|
9
|
+
),
|
|
10
|
+
).toBe("before after");
|
|
11
|
+
expect(removeSystemReminders("before <system-reminder>unfinished")).toBe("before");
|
|
12
|
+
expect(removeSystemReminders("before </system-reminder> after")).toBe("before after");
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test("mismatched notification closes cannot release hidden content", () => {
|
|
16
|
+
expect(cleanSearchText("kept <task>hidden </task_cohort> still hidden</task> kept")).toBe(
|
|
17
|
+
"kept kept",
|
|
18
|
+
);
|
|
19
|
+
expect(cleanSearchText("kept <task id='finished'/> kept")).toBe("kept kept");
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test("task notification trees and cut legacy XML never become hint text", () => {
|
|
23
|
+
expect(
|
|
24
|
+
cleanSearchText(
|
|
25
|
+
'<task_cohort id="parent"><task id="child">background result</task>status</task_cohort> actual answer',
|
|
26
|
+
),
|
|
27
|
+
).toBe("actual answer");
|
|
28
|
+
expect(cleanSearchText('<task id="truncated">background result…')).toBe("");
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test("keyword confidence measures absolute distinct term coverage, not result rank", () => {
|
|
32
|
+
expect(keywordRelevance("explain historian cache wiring", "cache icons")).toBeCloseTo(0.2);
|
|
33
|
+
expect(
|
|
34
|
+
keywordRelevance("historian cache wiring", "historian cache wiring details"),
|
|
35
|
+
).toBeCloseTo(0.8);
|
|
36
|
+
expect(keywordRelevance("historian cache wiring", "<task>historian cache wiring</task>")).toBe(
|
|
37
|
+
0,
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("matched snippets prefer a dense passage over an irrelevant first line", () => {
|
|
42
|
+
const content = `Header cache. ${"padding ".repeat(150)}Historian cache wiring uses incremental pools. ${"trailing ".repeat(100)}`;
|
|
43
|
+
const snippet = matchedSearchSnippet(content, "historian cache wiring", 80);
|
|
44
|
+
expect(snippet).toContain("Historian cache wiring");
|
|
45
|
+
expect(snippet).not.toContain("Header");
|
|
46
|
+
expect(matchedSearchSnippet(content, "unrelated deployment")).toBe("");
|
|
47
|
+
});
|