@cortexkit/opencode-magic-context 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/magic-context-prompt.d.ts +1 -1
- package/dist/agents/magic-context-prompt.d.ts.map +1 -1
- package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
- package/dist/auto-search-worker.js +27 -30
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/mural-model-deprecation.d.ts +15 -0
- package/dist/config/mural-model-deprecation.d.ts.map +1 -0
- package/dist/config/project-security.d.ts +0 -3
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +10 -6
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-z44ynfz7.js → conflict-warning-hook-w8cykrnf.js} +12 -10
- package/dist/{context-wq4ffwyb.js → context-m0cy262m.js} +2690 -1903
- package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-sg0xsq7s.js} +4 -3
- package/dist/embedding-activity-g1dhes6g.js +10 -0
- package/dist/embedding-backfill-9rcm1mfy.js +21 -0
- package/dist/embedding-cache-mgyr73ef.js +16 -0
- package/dist/embedding-worker.js +11 -9
- package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
- package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
- package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +16 -3
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
- package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
- package/dist/features/magic-context/message-index.d.ts +7 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
- package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +29 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/session-activity.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
- package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +30 -0
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
- package/dist/features/magic-context/storage-tags.d.ts +144 -4
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/harness-e4avh192.js +10 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +32 -3
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +1 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
- package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
- package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts +12 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +83 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
- package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
- package/dist/hooks/magic-context/sentinel.d.ts +41 -1
- package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
- package/dist/hooks/magic-context/strip-content.d.ts +14 -2
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
- package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
- package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +8 -2
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-w2t4ah5j.js → index-0an7742d.js} +14072 -14286
- package/dist/index-0qhce371.js +120 -0
- package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
- package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
- package/dist/index-14cjxt20.js +819 -0
- package/dist/{v2/server-51dv1pr5.js → index-1qb0z7wa.js} +301 -27
- package/dist/index-2bvekkfy.js +11 -0
- package/dist/{index-sj29b3z2.js → index-2y0s2hep.js} +3 -3
- package/dist/index-4dhv7mqz.js +131 -0
- package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
- package/dist/index-5zygecde.js +152 -0
- package/dist/{index-6d9e1m08.js → index-692jzy0p.js} +17775 -17450
- package/dist/index-72nhv486.js +2307 -0
- package/dist/index-7jzrrxap.js +931 -0
- package/dist/{v2/server-njt3np1k.js → index-7mx8v0pw.js} +220 -961
- package/dist/index-8ajstryz.js +18 -0
- package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
- package/dist/{index-hybnrwq0.js → index-8j7gqj40.js} +131 -128
- package/dist/index-bdckkfw6.js +3261 -0
- package/dist/{index-m5fe6jch.js → index-bhvjj0ys.js} +152 -2453
- package/dist/index-c43kr12f.js +3030 -0
- package/dist/index-cb7emxgj.js +984 -0
- package/dist/index-d9vfe7xq.js +16 -0
- package/dist/{index-5gq3b2ya.js → index-db7zwa3v.js} +147 -209
- package/dist/index-dhwzyd54.js +1142 -0
- package/dist/{index-8da2zjhz.js → index-eeezr5zz.js} +9 -7
- package/dist/{index-cwf6s3ay.js → index-f0h6xwqm.js} +2828 -2618
- package/dist/index-fb3zxn06.js +13 -0
- package/dist/index-fbv1dn35.js +171 -0
- package/dist/index-fr0wbhdn.js +43 -0
- package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
- package/dist/{index-fzbvakh0.js → index-jcbd3znx.js} +3 -3
- package/dist/{index-5a2r0p9f.js → index-k1xb52kd.js} +20 -13
- package/dist/index-k9nnwad5.js +3532 -0
- package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
- package/dist/index-knh4y330.js +566 -0
- package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
- package/dist/{index-gg8j07zz.js → index-mmyh6d8f.js} +4 -4
- package/dist/index-pavzsdc6.js +17 -0
- package/dist/{index-0c82743p.js → index-pdecwzrd.js} +17 -15
- package/dist/index-pg50n748.js +1060 -0
- package/dist/{index-92bp57hg.js → index-q2tqeqde.js} +123 -80
- package/dist/{index-rrrsepyw.js → index-q7h7csab.js} +90 -85
- package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
- package/dist/{index-6wkcswft.js → index-ty64eqcn.js} +28 -18
- package/dist/{index-adwfkpex.js → index-yq8n9qcb.js} +23 -23
- package/dist/{index-9pk9exrb.js → index-z8e0psj8.js} +18 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +586 -344
- package/dist/logger-d3wex3dz.js +20 -0
- package/dist/message-index-bounded-7ezbgddp.js +124 -0
- package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-brbd63hv.js} +8 -6
- package/dist/migration-worker.js +25 -18
- package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/plugin/dream-timer.d.ts +1 -1
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +1 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
- package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler.d.ts +2 -95
- package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
- package/dist/plugin/messages-transform.d.ts +0 -13
- package/dist/plugin/messages-transform.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/project-embedding-registry-7qzptcw7.js +88 -0
- package/dist/raw-ordinal-warmup-worker.js +60 -0
- package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-6k83m4fj.js} +15 -9
- package/dist/read-session-raw-3g9qy1xa.js +58 -0
- package/dist/recomp-orchestrator-d3fp1cy0.js +57 -0
- package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-5ffqq32m.js} +4 -2
- package/dist/search-epax1ecv.js +45 -0
- package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-erecz4y4.js} +10 -7
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
- package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-common.d.ts +58 -0
- package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-node.d.ts +36 -0
- package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-report.d.ts +68 -0
- package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler.d.ts +5 -0
- package/dist/shared/host-stall-profiler.d.ts.map +1 -0
- package/dist/shared/model-resolution.d.ts +2 -3
- package/dist/shared/model-resolution.d.ts.map +1 -1
- package/dist/shared/sqlite.d.ts +30 -0
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/stable-json.d.ts.map +1 -1
- package/dist/shared/user-facing-codes.d.ts +0 -5
- package/dist/shared/user-facing-codes.d.ts.map +1 -1
- package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/sqlite-mhjkerzq.js +46 -0
- package/dist/storage-memory-07fx57k6.js +71 -0
- package/dist/storage-tags-d3b0v2ss.js +131 -0
- package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/constants.d.ts +4 -0
- package/dist/tools/ctx-note/constants.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts +1 -0
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/parameter-descriptions.d.ts +2 -2
- package/dist/tools/parameter-descriptions.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-spcy2qre.js} +35 -20
- package/dist/transformers-node-wasm.js +18415 -18415
- package/dist/v2/auto-search-worker.js +27 -30
- package/dist/v2/{context-14v1hr8b.js → context-sf98kstd.js} +3737 -3004
- package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-3vc0y84t.js} +4 -3
- package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
- package/dist/v2/embedding-backfill-vn8g1nh1.js +21 -0
- package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
- package/dist/v2/embedding-worker.js +12 -9
- package/dist/v2/fold/host-media.d.ts +4 -0
- package/dist/v2/fold/host-media.d.ts.map +1 -1
- package/dist/v2/fold/memory-cache.d.ts +70 -0
- package/dist/v2/fold/memory-cache.d.ts.map +1 -0
- package/dist/v2/fold/native-codec.d.ts +10 -0
- package/dist/v2/fold/native-codec.d.ts.map +1 -0
- package/dist/v2/fold/native-replay.d.ts +58 -0
- package/dist/v2/fold/native-replay.d.ts.map +1 -0
- package/dist/v2/fold/policy.d.ts +24 -0
- package/dist/v2/fold/policy.d.ts.map +1 -0
- package/dist/v2/harness-e4avh192.js +10 -0
- package/dist/v2/hooks/context.d.ts +2 -2
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-manual.d.ts +1 -1
- package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
- package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +1 -2
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/tools.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +6 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/logger-mxd0ym09.js +19 -0
- package/dist/v2/message-index-bounded-dy3s2k1e.js +123 -0
- package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
- package/dist/v2/migration-worker.js +24 -17
- package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/v2/project-embedding-registry-1tgba5dv.js +86 -0
- package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
- package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-rh4khdkv.js} +14 -8
- package/dist/v2/read-session-raw-bsbmf0vj.js +57 -0
- package/dist/v2/recomp-orchestrator-az61rfcg.js +57 -0
- package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-73ax1p5v.js} +3 -3
- package/dist/v2/search-nzkwrc6n.js +45 -0
- package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-6km439kn.js} +9 -8
- package/dist/{index-5eqk6z3s.js → v2/server-1r6pmz4f.js} +301 -27
- package/dist/v2/server-2bvekkfy.js +11 -0
- package/dist/v2/server-2fbhp79z.js +3205 -0
- package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
- package/dist/v2/server-4dhv7mqz.js +131 -0
- package/dist/v2/{server-y10vbq6y.js → server-4k748ke6.js} +11 -1053
- package/dist/v2/{server-vs5gpnd4.js → server-52awr2mw.js} +81 -145
- package/dist/v2/{server-1qbnzc80.js → server-5m3dt5r1.js} +136 -148
- package/dist/v2/server-686jg6eb.js +3508 -0
- package/dist/v2/server-7jzrrxap.js +931 -0
- package/dist/v2/server-7wwc2nga.js +3023 -0
- package/dist/v2/server-8ajstryz.js +18 -0
- package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
- package/dist/v2/{server-d0sraw7m.js → server-8pyt7hev.js} +291 -286
- package/dist/v2/server-8tqanswc.js +984 -0
- package/dist/v2/{server-14vq4kpm.js → server-aan4q8mx.js} +3 -3
- package/dist/v2/server-d9vfe7xq.js +16 -0
- package/dist/{index-x3kwrmqk.js → v2/server-e0vdaae2.js} +35 -792
- package/dist/v2/server-ezhze64f.js +1048 -0
- package/dist/v2/server-fb3zxn06.js +13 -0
- package/dist/v2/server-fr0wbhdn.js +43 -0
- package/dist/v2/server-g5r0n3b6.js +1137 -0
- package/dist/v2/server-gjcr4w98.js +154 -0
- package/dist/v2/server-k228xhjg.js +171 -0
- package/dist/v2/{server-nf82q6pt.js → server-k8x2rbxc.js} +5946 -5602
- package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
- package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
- package/dist/v2/server-pavzsdc6.js +17 -0
- package/dist/v2/{server-e0c1b7a7.js → server-psqc7e9n.js} +122 -79
- package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
- package/dist/v2/server-qye6ykf7.js +120 -0
- package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
- package/dist/v2/server-sggvvzhb.js +759 -0
- package/dist/v2/{server-cpepxy2q.js → server-v06jcv0w.js} +14 -12
- package/dist/v2/server-vqpf3167.js +1048 -0
- package/dist/v2/{server-rz514f14.js → server-x2g40a71.js} +2044 -2060
- package/dist/v2/{server-vd4e7174.js → server-xdfwt6kh.js} +20 -16
- package/dist/v2/{server-efhwzx05.js → server-xxm59eww.js} +23 -23
- package/dist/v2/server-yczc713m.js +564 -0
- package/dist/v2/{server-fcdehk1s.js → server-z2037m6z.js} +4 -4
- package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
- package/dist/v2/{server-6r257mf5.js → server-zxhgvsf9.js} +3 -3
- package/dist/v2/server.js +16 -14
- package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/v2/sqlite-mhjkerzq.js +46 -0
- package/dist/v2/storage-memory-07fx57k6.js +71 -0
- package/dist/v2/storage-tags-w4tv77sn.js +130 -0
- package/dist/v2/store-reader.d.ts +16 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
- package/dist/v2/transformers-node-wasm.js +18415 -18415
- package/dist/v2/tui/index.d.ts.map +1 -1
- package/dist/v2/tui/types.d.ts +1 -10
- package/dist/v2/tui/types.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-mz7efs7w.js} +51 -30
- package/dist/wrapup-orchestrator-amzta1t4.js +44 -0
- package/package.json +4 -3
- package/src/agents/magic-context-prompt.ts +27 -2
- package/src/agents/smart-notes-enabled.test.ts +294 -0
- package/src/agents/smart-notes-on.golden.json +70 -0
- package/src/config/index.test.ts +67 -1
- package/src/config/index.ts +2 -0
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/config/mural-model-deprecation.ts +24 -0
- package/src/config/project-security.hostile-matrix.test.ts +4 -44
- package/src/config/project-security.test.ts +9 -14
- package/src/config/project-security.ts +13 -55
- package/src/config/schema/magic-context.test.ts +2 -2
- package/src/config/schema/magic-context.ts +16 -10
- package/src/features/magic-context/dreamer/task-registry.ts +6 -0
- package/src/shared/conflict-detector.test.ts +56 -0
- package/src/shared/conflict-detector.ts +16 -5
- package/src/shared/host-stall-profiler-bun.ts +358 -0
- package/src/shared/host-stall-profiler-common.ts +159 -0
- package/src/shared/host-stall-profiler-node.test.ts +234 -0
- package/src/shared/host-stall-profiler-node.ts +274 -0
- package/src/shared/host-stall-profiler-report.ts +248 -0
- package/src/shared/host-stall-profiler.ts +57 -0
- package/src/shared/model-resolution.test.ts +54 -17
- package/src/shared/model-resolution.ts +6 -17
- package/src/shared/sqlite.test.ts +52 -0
- package/src/shared/sqlite.ts +339 -23
- package/src/shared/stable-json-linear.test.ts +109 -0
- package/src/shared/stable-json.ts +37 -7
- package/src/shared/user-facing-codes.ts +2 -6
- package/src/shared/write-transaction-attribution.test.ts +2 -2
- package/src/v2/tui/host-contract.test.ts +41 -67
- package/src/v2/tui/index.ts +6 -214
- package/src/v2/tui/types.ts +5 -17
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
- package/dist/features/magic-context/checkout-claim.d.ts +0 -155
- package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
- package/dist/index-bb36vgr3.js +0 -6608
- package/dist/index-fnn5pjtt.js +0 -6554
- package/dist/recomp-orchestrator-rervg6q4.js +0 -42
- package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
- package/dist/v2/server-3trjk1hx.js +0 -6360
- package/dist/v2/server-nm9n3aqq.js +0 -6461
- package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
- /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
- /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./
|
|
4
|
-
|
|
5
|
-
// src/shared/internal-initiator-marker.ts
|
|
6
|
-
var OMO_INTERNAL_INITIATOR_MARKER = "<!-- OMO_INTERNAL_INITIATOR -->";
|
|
7
|
-
|
|
8
|
-
// src/shared/system-directive.ts
|
|
9
|
-
var SYSTEM_DIRECTIVE_PREFIX = "[SYSTEM DIRECTIVE: MAGIC-CONTEXT";
|
|
10
|
-
function isSystemDirective(text) {
|
|
11
|
-
return text.trimStart().startsWith(SYSTEM_DIRECTIVE_PREFIX);
|
|
12
|
-
}
|
|
13
|
-
function removeSystemReminders(text) {
|
|
14
|
-
return text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/gi, "").trim();
|
|
15
|
-
}
|
|
2
|
+
log2
|
|
3
|
+
} from "./index-8j7gqj40.js";
|
|
16
4
|
|
|
17
5
|
// src/hooks/magic-context/read-session-formatting.ts
|
|
18
6
|
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
19
7
|
import { createRequire } from "node:module";
|
|
20
8
|
import { homedir } from "node:os";
|
|
21
9
|
import { dirname, join, resolve } from "node:path";
|
|
22
|
-
import { pathToFileURL } from "node:url";
|
|
10
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
23
11
|
|
|
24
12
|
// src/shared/commit-detection.ts
|
|
25
13
|
var HASH_HEX = "[0-9a-f]{7,12}";
|
|
@@ -32,6 +20,284 @@ function createCommitHashExtractPattern() {
|
|
|
32
20
|
return new RegExp(`\`?\\b(${HASH_HEX})\\b\`?`, "gi");
|
|
33
21
|
}
|
|
34
22
|
|
|
23
|
+
// src/shared/internal-initiator-marker.ts
|
|
24
|
+
var OMO_INTERNAL_INITIATOR_MARKER = "<!-- OMO_INTERNAL_INITIATOR -->";
|
|
25
|
+
|
|
26
|
+
// src/shared/system-directive.ts
|
|
27
|
+
var SYSTEM_DIRECTIVE_PREFIX = "[SYSTEM DIRECTIVE: MAGIC-CONTEXT";
|
|
28
|
+
function isSystemDirective(text) {
|
|
29
|
+
return text.trimStart().startsWith(SYSTEM_DIRECTIVE_PREFIX);
|
|
30
|
+
}
|
|
31
|
+
function removeSystemReminders(text) {
|
|
32
|
+
return text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/gi, "").trim();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// src/hooks/magic-context/token-count-exact.ts
|
|
36
|
+
var NO_RANK = 4294967295;
|
|
37
|
+
var LONG_PIECE_BYTES = 256;
|
|
38
|
+
var MERGE_CACHE_GENERATION = 50000;
|
|
39
|
+
function hasInternals(tokenizer) {
|
|
40
|
+
const value = tokenizer;
|
|
41
|
+
return !!value && value.patternRegex instanceof RegExp && value.patternRegex.global && typeof value.stringRankEncoder === "object" && value.stringRankEncoder !== null && Array.isArray(value.binaryFirstByteIndex);
|
|
42
|
+
}
|
|
43
|
+
var textEncoder = new TextEncoder;
|
|
44
|
+
var textDecoder = new TextDecoder("utf-8");
|
|
45
|
+
function isValidUtf8(bytes) {
|
|
46
|
+
let index = 0;
|
|
47
|
+
while (index < bytes.length) {
|
|
48
|
+
const first = bytes[index];
|
|
49
|
+
let size = 0;
|
|
50
|
+
let codePoint = 0;
|
|
51
|
+
if (first <= 127) {
|
|
52
|
+
size = 1;
|
|
53
|
+
codePoint = first;
|
|
54
|
+
} else if ((first & 224) === 192) {
|
|
55
|
+
size = 2;
|
|
56
|
+
codePoint = first & 31;
|
|
57
|
+
if (first <= 193)
|
|
58
|
+
return false;
|
|
59
|
+
} else if ((first & 240) === 224) {
|
|
60
|
+
size = 3;
|
|
61
|
+
codePoint = first & 15;
|
|
62
|
+
} else if ((first & 248) === 240) {
|
|
63
|
+
size = 4;
|
|
64
|
+
codePoint = first & 7;
|
|
65
|
+
if (first > 244)
|
|
66
|
+
return false;
|
|
67
|
+
} else
|
|
68
|
+
return false;
|
|
69
|
+
if (index + size > bytes.length)
|
|
70
|
+
return false;
|
|
71
|
+
for (let offset = 1;offset < size; offset += 1) {
|
|
72
|
+
const byte = bytes[index + offset];
|
|
73
|
+
if ((byte & 192) !== 128)
|
|
74
|
+
return false;
|
|
75
|
+
codePoint = codePoint << 6 | byte & 63;
|
|
76
|
+
}
|
|
77
|
+
if (size === 2 && codePoint < 128)
|
|
78
|
+
return false;
|
|
79
|
+
if (size === 3 && codePoint < 2048)
|
|
80
|
+
return false;
|
|
81
|
+
if (size === 4 && codePoint < 65536)
|
|
82
|
+
return false;
|
|
83
|
+
if (codePoint >= 55296 && codePoint <= 57343)
|
|
84
|
+
return false;
|
|
85
|
+
if (codePoint > 1114111)
|
|
86
|
+
return false;
|
|
87
|
+
index += size;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
function binarySearchBytes(sorted, key) {
|
|
92
|
+
let low = 0;
|
|
93
|
+
let high = sorted.length - 1;
|
|
94
|
+
while (low <= high) {
|
|
95
|
+
const mid = low + high >>> 1;
|
|
96
|
+
const midKey = sorted[mid][0];
|
|
97
|
+
let compare = 0;
|
|
98
|
+
const shared = Math.min(midKey.length, key.length);
|
|
99
|
+
for (let index = 0;index < shared; index += 1) {
|
|
100
|
+
compare = midKey[index] - key[index];
|
|
101
|
+
if (compare !== 0)
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (compare === 0)
|
|
105
|
+
compare = midKey.length - key.length;
|
|
106
|
+
if (compare === 0)
|
|
107
|
+
return sorted[mid][1];
|
|
108
|
+
if (compare < 0)
|
|
109
|
+
low = mid + 1;
|
|
110
|
+
else
|
|
111
|
+
high = mid - 1;
|
|
112
|
+
}
|
|
113
|
+
return -1;
|
|
114
|
+
}
|
|
115
|
+
function rankOf(tokenizer, slice) {
|
|
116
|
+
if (isValidUtf8(slice)) {
|
|
117
|
+
const rank = tokenizer.stringRankEncoder[textDecoder.decode(slice)];
|
|
118
|
+
if (rank !== undefined)
|
|
119
|
+
return rank;
|
|
120
|
+
}
|
|
121
|
+
const bucket = tokenizer.binaryFirstByteIndex[slice[0]];
|
|
122
|
+
if (bucket !== null && bucket !== undefined) {
|
|
123
|
+
const rank = binarySearchBytes(bucket, slice);
|
|
124
|
+
if (rank !== -1)
|
|
125
|
+
return rank;
|
|
126
|
+
}
|
|
127
|
+
return NO_RANK;
|
|
128
|
+
}
|
|
129
|
+
function mergeByScanning(tokenizer, bytes) {
|
|
130
|
+
const starts = [];
|
|
131
|
+
const ranks = [];
|
|
132
|
+
const pairRank = (index) => {
|
|
133
|
+
const end = starts[index + 2];
|
|
134
|
+
return end === undefined ? NO_RANK : rankOf(tokenizer, bytes.subarray(starts[index], end));
|
|
135
|
+
};
|
|
136
|
+
for (let index = 0;index <= bytes.length; index += 1)
|
|
137
|
+
starts.push(index);
|
|
138
|
+
for (let index = 0;index < starts.length; index += 1)
|
|
139
|
+
ranks.push(pairRank(index));
|
|
140
|
+
while (starts.length > 1) {
|
|
141
|
+
let minRank = NO_RANK;
|
|
142
|
+
let minIndex = -1;
|
|
143
|
+
for (let index = 0;index < ranks.length - 1; index += 1) {
|
|
144
|
+
if (ranks[index] < minRank) {
|
|
145
|
+
minRank = ranks[index];
|
|
146
|
+
minIndex = index;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (minIndex === -1)
|
|
150
|
+
break;
|
|
151
|
+
starts.splice(minIndex + 1, 1);
|
|
152
|
+
ranks.splice(minIndex, 1);
|
|
153
|
+
ranks[minIndex] = pairRank(minIndex);
|
|
154
|
+
if (minIndex > 0)
|
|
155
|
+
ranks[minIndex - 1] = pairRank(minIndex - 1);
|
|
156
|
+
}
|
|
157
|
+
const tokens = [];
|
|
158
|
+
for (let index = 0;index < starts.length - 1; index += 1) {
|
|
159
|
+
const rank = rankOf(tokenizer, bytes.subarray(starts[index], starts[index + 1]));
|
|
160
|
+
if (rank !== NO_RANK)
|
|
161
|
+
tokens.push(rank);
|
|
162
|
+
}
|
|
163
|
+
return tokens;
|
|
164
|
+
}
|
|
165
|
+
function mergeWithHeap(tokenizer, bytes) {
|
|
166
|
+
const length = bytes.length;
|
|
167
|
+
const next = new Int32Array(length + 1);
|
|
168
|
+
const prev = new Int32Array(length + 1);
|
|
169
|
+
const alive = new Uint8Array(length + 1).fill(1);
|
|
170
|
+
const rank = new Float64Array(length + 1).fill(NO_RANK);
|
|
171
|
+
for (let index = 0;index <= length; index += 1) {
|
|
172
|
+
next[index] = index + 1;
|
|
173
|
+
prev[index] = index - 1;
|
|
174
|
+
}
|
|
175
|
+
const heapRank = [];
|
|
176
|
+
const heapAt = [];
|
|
177
|
+
const less = (a, b) => heapRank[a] < heapRank[b] || heapRank[a] === heapRank[b] && heapAt[a] < heapAt[b];
|
|
178
|
+
const swap = (a, b) => {
|
|
179
|
+
[heapRank[a], heapRank[b]] = [heapRank[b], heapRank[a]];
|
|
180
|
+
[heapAt[a], heapAt[b]] = [heapAt[b], heapAt[a]];
|
|
181
|
+
};
|
|
182
|
+
const push = (value, at) => {
|
|
183
|
+
heapRank.push(value);
|
|
184
|
+
heapAt.push(at);
|
|
185
|
+
let child = heapRank.length - 1;
|
|
186
|
+
while (child > 0) {
|
|
187
|
+
const parent = child - 1 >> 1;
|
|
188
|
+
if (!less(child, parent))
|
|
189
|
+
break;
|
|
190
|
+
swap(child, parent);
|
|
191
|
+
child = parent;
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const pop = () => {
|
|
195
|
+
const last = heapRank.length - 1;
|
|
196
|
+
swap(0, last);
|
|
197
|
+
heapRank.pop();
|
|
198
|
+
heapAt.pop();
|
|
199
|
+
let parent = 0;
|
|
200
|
+
for (;; ) {
|
|
201
|
+
const left = parent * 2 + 1;
|
|
202
|
+
const right = left + 1;
|
|
203
|
+
let smallest = parent;
|
|
204
|
+
if (left < heapRank.length && less(left, smallest))
|
|
205
|
+
smallest = left;
|
|
206
|
+
if (right < heapRank.length && less(right, smallest))
|
|
207
|
+
smallest = right;
|
|
208
|
+
if (smallest === parent)
|
|
209
|
+
break;
|
|
210
|
+
swap(parent, smallest);
|
|
211
|
+
parent = smallest;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const pairRank = (at) => {
|
|
215
|
+
const middle = next[at];
|
|
216
|
+
if (middle >= length)
|
|
217
|
+
return NO_RANK;
|
|
218
|
+
return rankOf(tokenizer, bytes.subarray(at, next[middle]));
|
|
219
|
+
};
|
|
220
|
+
const update = (at) => {
|
|
221
|
+
rank[at] = pairRank(at);
|
|
222
|
+
if (rank[at] !== NO_RANK)
|
|
223
|
+
push(rank[at], at);
|
|
224
|
+
};
|
|
225
|
+
for (let at = 0;at < length; at += 1)
|
|
226
|
+
update(at);
|
|
227
|
+
while (heapRank.length > 0) {
|
|
228
|
+
const value = heapRank[0];
|
|
229
|
+
const at = heapAt[0];
|
|
230
|
+
pop();
|
|
231
|
+
if (!alive[at] || rank[at] !== value)
|
|
232
|
+
continue;
|
|
233
|
+
const removed = next[at];
|
|
234
|
+
alive[removed] = 0;
|
|
235
|
+
next[at] = next[removed];
|
|
236
|
+
prev[next[removed]] = at;
|
|
237
|
+
update(at);
|
|
238
|
+
if (at > 0)
|
|
239
|
+
update(prev[at]);
|
|
240
|
+
}
|
|
241
|
+
const tokens = [];
|
|
242
|
+
for (let at = 0;at < length; at = next[at]) {
|
|
243
|
+
const value = rankOf(tokenizer, bytes.subarray(at, next[at]));
|
|
244
|
+
if (value !== NO_RANK)
|
|
245
|
+
tokens.push(value);
|
|
246
|
+
}
|
|
247
|
+
return tokens;
|
|
248
|
+
}
|
|
249
|
+
var mergeCaches = new WeakMap;
|
|
250
|
+
var mergedPieces = 0;
|
|
251
|
+
function mergePiece(tokenizer, piece) {
|
|
252
|
+
let cache = mergeCaches.get(tokenizer);
|
|
253
|
+
if (!cache) {
|
|
254
|
+
cache = { current: new Map, previous: new Map };
|
|
255
|
+
mergeCaches.set(tokenizer, cache);
|
|
256
|
+
}
|
|
257
|
+
let tokens = cache.current.get(piece);
|
|
258
|
+
if (tokens)
|
|
259
|
+
return tokens;
|
|
260
|
+
tokens = cache.previous.get(piece);
|
|
261
|
+
if (!tokens) {
|
|
262
|
+
const bytes = textEncoder.encode(piece);
|
|
263
|
+
mergedPieces += 1;
|
|
264
|
+
tokens = bytes.length > LONG_PIECE_BYTES ? mergeWithHeap(tokenizer, bytes) : mergeByScanning(tokenizer, bytes);
|
|
265
|
+
}
|
|
266
|
+
if (cache.current.size >= MERGE_CACHE_GENERATION) {
|
|
267
|
+
cache.previous = cache.current;
|
|
268
|
+
cache.current = new Map;
|
|
269
|
+
}
|
|
270
|
+
cache.current.set(piece, tokens);
|
|
271
|
+
return tokens;
|
|
272
|
+
}
|
|
273
|
+
function encodeTokensExactly(tokenizer, text) {
|
|
274
|
+
if (!hasInternals(tokenizer)) {
|
|
275
|
+
return tokenizer.encode(text, "all");
|
|
276
|
+
}
|
|
277
|
+
if (text.length < 10) {
|
|
278
|
+
const direct = tokenizer.stringRankEncoder[text];
|
|
279
|
+
if (direct !== undefined)
|
|
280
|
+
return [direct];
|
|
281
|
+
}
|
|
282
|
+
const tokens = [];
|
|
283
|
+
const regex = tokenizer.patternRegex;
|
|
284
|
+
regex.lastIndex = 0;
|
|
285
|
+
for (let match = regex.exec(text);match !== null; match = regex.exec(text)) {
|
|
286
|
+
const piece = match[0];
|
|
287
|
+
const direct = tokenizer.stringRankEncoder[piece];
|
|
288
|
+
if (direct !== undefined) {
|
|
289
|
+
tokens.push(direct);
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
for (const token of mergePiece(tokenizer, piece))
|
|
293
|
+
tokens.push(token);
|
|
294
|
+
}
|
|
295
|
+
return tokens;
|
|
296
|
+
}
|
|
297
|
+
function countTokensExactly(tokenizer, text) {
|
|
298
|
+
return encodeTokensExactly(tokenizer, text).length;
|
|
299
|
+
}
|
|
300
|
+
|
|
35
301
|
// src/hooks/magic-context/read-session-formatting.ts
|
|
36
302
|
var MAX_COMMITS_PER_BLOCK = 5;
|
|
37
303
|
function hasMeaningfulUserText2(parts) {
|
|
@@ -144,22 +410,30 @@ var tokenizerSerializedTableBytes;
|
|
|
144
410
|
function tokenizerPackageRoots() {
|
|
145
411
|
const cwd = process.cwd();
|
|
146
412
|
const openCodeCache = join(process.env.XDG_CACHE_HOME ?? join(homedir(), ".cache"), "opencode");
|
|
147
|
-
const roots = [cwd, openCodeCache];
|
|
148
413
|
const candidates = [];
|
|
149
|
-
|
|
414
|
+
const probeRoot = (root) => {
|
|
150
415
|
for (const packageDir of TOKENIZER_PACKAGE_DIRS) {
|
|
151
416
|
candidates.push(join(root, "node_modules", ...packageDir, "node_modules", "ai-tokenizer"));
|
|
152
417
|
}
|
|
153
418
|
candidates.push(join(root, "node_modules", "ai-tokenizer"));
|
|
419
|
+
};
|
|
420
|
+
for (const root of [cwd, openCodeCache]) {
|
|
421
|
+
probeRoot(root);
|
|
154
422
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
423
|
+
const pushAncestors = (startDir) => {
|
|
424
|
+
let ancestor = startDir;
|
|
425
|
+
while (true) {
|
|
426
|
+
candidates.push(join(ancestor, "node_modules", "ai-tokenizer"));
|
|
427
|
+
const parent = dirname(ancestor);
|
|
428
|
+
if (parent === ancestor)
|
|
429
|
+
break;
|
|
430
|
+
ancestor = parent;
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
|
+
pushAncestors(process.argv[1] ? dirname(resolve(process.argv[1])) : cwd);
|
|
434
|
+
const ownDir = dirname(fileURLToPath(new URL(import.meta.url)));
|
|
435
|
+
pushAncestors(ownDir);
|
|
436
|
+
probeRoot(join(homedir(), ".omp", "plugins"));
|
|
163
437
|
return [...new Set(candidates)];
|
|
164
438
|
}
|
|
165
439
|
function packageImportTarget(value) {
|
|
@@ -264,7 +538,7 @@ function warnTokenizerFallback(error) {
|
|
|
264
538
|
return;
|
|
265
539
|
tokenizerWarningSent = true;
|
|
266
540
|
const reason = error instanceof Error ? error.message : String(error);
|
|
267
|
-
|
|
541
|
+
log2("[magic-context] ai-tokenizer is unavailable; using approximate character-based token counts for this process. Token budgets, persisted per-message counts, and protected-tail/compartment boundaries may be less accurate until restart:", reason);
|
|
268
542
|
}
|
|
269
543
|
async function preloadTokenizer() {
|
|
270
544
|
if (tokenizer)
|
|
@@ -339,7 +613,7 @@ function estimateTokens(text) {
|
|
|
339
613
|
if (!activeTokenizer)
|
|
340
614
|
return estimateTokensHeuristically(text);
|
|
341
615
|
try {
|
|
342
|
-
return activeTokenizer
|
|
616
|
+
return countTokensExactly(activeTokenizer, text);
|
|
343
617
|
} catch (error) {
|
|
344
618
|
tokenizer = undefined;
|
|
345
619
|
tokenizerLoadAttempted = true;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/features/magic-context/memory/normalize-hash.ts
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
function normalizeMemoryContent(content) {
|
|
4
|
+
return content.toLowerCase().replace(/\s+/g, " ").trim();
|
|
5
|
+
}
|
|
6
|
+
function computeNormalizedHash(content) {
|
|
7
|
+
const normalized = normalizeMemoryContent(content);
|
|
8
|
+
return createHash("md5").update(normalized).digest("hex");
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { computeNormalizedHash };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./index-
|
|
2
|
+
log2
|
|
3
|
+
} from "./index-8j7gqj40.js";
|
|
4
4
|
|
|
5
5
|
// src/shared/write-transaction-timing.ts
|
|
6
6
|
var SLOW_WRITE_TRANSACTION_THRESHOLD_MS = 1000;
|
|
@@ -10,7 +10,7 @@ function logSlowWriteTransaction(site, startedAt, thresholdMs = SLOW_WRITE_TRANS
|
|
|
10
10
|
if (durationMs < thresholdMs)
|
|
11
11
|
return;
|
|
12
12
|
const detail = steps ? Object.entries(steps).map(([name, ms]) => `${name}=${ms.toFixed(1)}ms`).join(" ") : "";
|
|
13
|
-
|
|
13
|
+
log2(`[magic-context] slow write transaction: site=${site} held=${durationMs.toFixed(1)}ms${detail ? ` ${detail}` : ""}`);
|
|
14
14
|
} catch {}
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// src/features/magic-context/memory/storage-memory-embeddings.ts
|
|
2
|
+
var saveEmbeddingStatements = new WeakMap;
|
|
3
|
+
var saveEmbeddingIfHashMatchesStatements = new WeakMap;
|
|
4
|
+
var loadAllEmbeddingsStatements = new WeakMap;
|
|
5
|
+
var deleteEmbeddingStatements = new WeakMap;
|
|
6
|
+
var getStoredModelIdStatements = new WeakMap;
|
|
7
|
+
var clearAllEmbeddingsStatements = new WeakMap;
|
|
8
|
+
var clearModelEmbeddingsStatements = new WeakMap;
|
|
9
|
+
function isEmbeddingBlob(value) {
|
|
10
|
+
return value instanceof Uint8Array || value instanceof ArrayBuffer;
|
|
11
|
+
}
|
|
12
|
+
function isEmbeddingRow(row) {
|
|
13
|
+
if (row === null || typeof row !== "object")
|
|
14
|
+
return false;
|
|
15
|
+
const candidate = row;
|
|
16
|
+
return typeof candidate.memoryId === "number" && isEmbeddingBlob(candidate.embedding) && (candidate.modelId === null || typeof candidate.modelId === "string");
|
|
17
|
+
}
|
|
18
|
+
function toFloat32Array(blob) {
|
|
19
|
+
if (blob instanceof Uint8Array) {
|
|
20
|
+
const buffer = blob.buffer.slice(blob.byteOffset, blob.byteOffset + blob.byteLength);
|
|
21
|
+
return new Float32Array(buffer);
|
|
22
|
+
}
|
|
23
|
+
return new Float32Array(blob.slice(0));
|
|
24
|
+
}
|
|
25
|
+
function getSaveEmbeddingIfHashMatchesStatement(db) {
|
|
26
|
+
let stmt = saveEmbeddingIfHashMatchesStatements.get(db);
|
|
27
|
+
if (!stmt) {
|
|
28
|
+
stmt = db.prepare("INSERT INTO memory_embeddings (memory_id, embedding, model_id) SELECT ?, ?, ? FROM memories WHERE id = ? AND normalized_hash = ? ON CONFLICT(memory_id, model_id) DO UPDATE SET embedding = excluded.embedding");
|
|
29
|
+
saveEmbeddingIfHashMatchesStatements.set(db, stmt);
|
|
30
|
+
}
|
|
31
|
+
return stmt;
|
|
32
|
+
}
|
|
33
|
+
function getLoadAllEmbeddingsStatement(db) {
|
|
34
|
+
let stmt = loadAllEmbeddingsStatements.get(db);
|
|
35
|
+
if (!stmt) {
|
|
36
|
+
stmt = db.prepare("SELECT memory_embeddings.memory_id AS memoryId, memory_embeddings.embedding AS embedding, memory_embeddings.model_id AS modelId FROM memory_embeddings INNER JOIN memories ON memories.id = memory_embeddings.memory_id WHERE memories.project_path = ? AND memory_embeddings.model_id = ? ORDER BY memory_embeddings.memory_id ASC");
|
|
37
|
+
loadAllEmbeddingsStatements.set(db, stmt);
|
|
38
|
+
}
|
|
39
|
+
return stmt;
|
|
40
|
+
}
|
|
41
|
+
function saveEmbeddingIfHashMatches(db, memoryId, embedding, modelId, normalizedHash) {
|
|
42
|
+
const blob = Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength);
|
|
43
|
+
return getSaveEmbeddingIfHashMatchesStatement(db).run(memoryId, blob, modelId, memoryId, normalizedHash).changes > 0;
|
|
44
|
+
}
|
|
45
|
+
function loadAllEmbeddings(db, projectPath, modelId) {
|
|
46
|
+
const rows = getLoadAllEmbeddingsStatement(db).all(projectPath, modelId).filter(isEmbeddingRow);
|
|
47
|
+
const embeddings = new Map;
|
|
48
|
+
for (const row of rows) {
|
|
49
|
+
embeddings.set(row.memoryId, {
|
|
50
|
+
embedding: toFloat32Array(row.embedding),
|
|
51
|
+
modelId: row.modelId
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return embeddings;
|
|
55
|
+
}
|
|
56
|
+
function getMemoryEmbedCoverage(db, projectPath, modelId) {
|
|
57
|
+
const row = db.prepare(`SELECT
|
|
58
|
+
COUNT(*) AS total,
|
|
59
|
+
SUM(CASE WHEN EXISTS (
|
|
60
|
+
SELECT 1 FROM memory_embeddings e
|
|
61
|
+
WHERE e.memory_id = m.id AND e.model_id = ?
|
|
62
|
+
) THEN 1 ELSE 0 END) AS embedded
|
|
63
|
+
FROM memories m
|
|
64
|
+
WHERE m.project_path = ? AND m.status = 'active'`).get(modelId, projectPath);
|
|
65
|
+
return {
|
|
66
|
+
total: typeof row?.total === "number" ? row.total : 0,
|
|
67
|
+
embedded: typeof row?.embedded === "number" ? row.embedded : 0
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/features/magic-context/memory/embedding-cache.ts
|
|
72
|
+
var DEFAULT_EMBEDDING_CACHE_TTL_MS = 60000;
|
|
73
|
+
var projectEmbeddingCache = new Map;
|
|
74
|
+
var embeddingCacheTtlMs = DEFAULT_EMBEDDING_CACHE_TTL_MS;
|
|
75
|
+
function cacheKey(projectPath, modelId) {
|
|
76
|
+
return `${projectPath}\x00${modelId}`;
|
|
77
|
+
}
|
|
78
|
+
function getValidCacheEntry(projectPath, modelId) {
|
|
79
|
+
const entry = projectEmbeddingCache.get(cacheKey(projectPath, modelId));
|
|
80
|
+
if (!entry) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (entry.expiresAt <= Date.now()) {
|
|
84
|
+
projectEmbeddingCache.delete(cacheKey(projectPath, modelId));
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return entry;
|
|
88
|
+
}
|
|
89
|
+
function getProjectEmbeddings2(db, projectPath, modelId) {
|
|
90
|
+
const cached = getValidCacheEntry(projectPath, modelId);
|
|
91
|
+
if (cached) {
|
|
92
|
+
return cached.embeddings;
|
|
93
|
+
}
|
|
94
|
+
const embeddings = loadAllEmbeddings(db, projectPath, modelId);
|
|
95
|
+
projectEmbeddingCache.set(cacheKey(projectPath, modelId), {
|
|
96
|
+
embeddings,
|
|
97
|
+
expiresAt: Date.now() + embeddingCacheTtlMs
|
|
98
|
+
});
|
|
99
|
+
return embeddings;
|
|
100
|
+
}
|
|
101
|
+
function peekProjectEmbeddings2(projectPath, modelId) {
|
|
102
|
+
return getValidCacheEntry(projectPath, modelId)?.embeddings ?? null;
|
|
103
|
+
}
|
|
104
|
+
function invalidateProject2(projectPath) {
|
|
105
|
+
for (const key of projectEmbeddingCache.keys()) {
|
|
106
|
+
if (key.startsWith(`${projectPath}\x00`)) {
|
|
107
|
+
projectEmbeddingCache.delete(key);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function invalidateMemory2(projectPath, memoryId) {
|
|
112
|
+
for (const key of projectEmbeddingCache.keys()) {
|
|
113
|
+
if (!key.startsWith(`${projectPath}\x00`))
|
|
114
|
+
continue;
|
|
115
|
+
const entry = projectEmbeddingCache.get(key);
|
|
116
|
+
if (!entry || entry.expiresAt <= Date.now()) {
|
|
117
|
+
projectEmbeddingCache.delete(key);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
entry.embeddings.delete(memoryId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function resetEmbeddingCacheForTests2() {
|
|
124
|
+
projectEmbeddingCache.clear();
|
|
125
|
+
embeddingCacheTtlMs = DEFAULT_EMBEDDING_CACHE_TTL_MS;
|
|
126
|
+
}
|
|
127
|
+
function setEmbeddingCacheTtlForTests2(ttlMs) {
|
|
128
|
+
embeddingCacheTtlMs = Math.max(0, Math.floor(ttlMs));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export { saveEmbeddingIfHashMatches, getMemoryEmbedCoverage, getProjectEmbeddings2, peekProjectEmbeddings2, invalidateProject2, invalidateMemory2, resetEmbeddingCacheForTests2, setEmbeddingCacheTtlForTests2 };
|
|
@@ -190,21 +190,4 @@ function claimOpenCodeDbDiagnosticOnce(surface, resolution) {
|
|
|
190
190
|
return true;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
function closeQuietly(db) {
|
|
195
|
-
if (!db)
|
|
196
|
-
return;
|
|
197
|
-
try {
|
|
198
|
-
db.close();
|
|
199
|
-
} catch {}
|
|
200
|
-
}
|
|
201
|
-
function isKnownAutocommit(db) {
|
|
202
|
-
const state = db;
|
|
203
|
-
try {
|
|
204
|
-
return state.inTransaction === false || state.isTransaction === false;
|
|
205
|
-
} catch {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
export { resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, formatOpenCodeDbMissingBanner, formatOpenCodeDbMissingStatusLine, formatOpenCodeDbReadFailureStatusLine, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, getOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce, closeQuietly, isKnownAutocommit };
|
|
193
|
+
export { resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, formatOpenCodeDbMissingBanner, formatOpenCodeDbMissingStatusLine, formatOpenCodeDbReadFailureStatusLine, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, getOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce };
|