@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,148 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./server-
|
|
4
|
-
import {
|
|
5
|
-
sessionLog
|
|
6
|
-
} from "./server-1qbnzc80.js";
|
|
2
|
+
sessionLog2
|
|
3
|
+
} from "./server-5m3dt5r1.js";
|
|
7
4
|
import {
|
|
8
5
|
isKnownAutocommit
|
|
9
|
-
} from "./server-
|
|
10
|
-
|
|
11
|
-
// src/features/magic-context/tool-definition-tokens.ts
|
|
12
|
-
import { createHash } from "node:crypto";
|
|
13
|
-
|
|
14
|
-
// src/shared/stable-json.ts
|
|
15
|
-
function stableStringify(value, seen = new WeakSet) {
|
|
16
|
-
if (value === undefined)
|
|
17
|
-
return "undefined";
|
|
18
|
-
if (value === null || typeof value !== "object")
|
|
19
|
-
return JSON.stringify(value) ?? String(value);
|
|
20
|
-
if (seen.has(value))
|
|
21
|
-
return '"[Circular]"';
|
|
22
|
-
seen.add(value);
|
|
23
|
-
if (Array.isArray(value)) {
|
|
24
|
-
return `[${value.map((item) => stableStringify(item, seen)).join(",")}]`;
|
|
25
|
-
}
|
|
26
|
-
const entries = Object.entries(value).sort(([a], [b]) => {
|
|
27
|
-
if (a < b)
|
|
28
|
-
return -1;
|
|
29
|
-
if (a > b)
|
|
30
|
-
return 1;
|
|
31
|
-
return 0;
|
|
32
|
-
});
|
|
33
|
-
return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child, seen)}`).join(",")}}`;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// src/features/magic-context/tool-definition-tokens.ts
|
|
37
|
-
var measurements = new Map;
|
|
38
|
-
var fingerprints = new Map;
|
|
39
|
-
var persistenceDb = null;
|
|
40
|
-
var cachedInsertStmt = null;
|
|
41
|
-
function keyFor(providerID, modelID, agentName) {
|
|
42
|
-
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
43
|
-
return `${providerID}/${modelID}/${agent}`;
|
|
44
|
-
}
|
|
45
|
-
function fingerprintFor(description, parameters) {
|
|
46
|
-
return createHash("sha256").update(description).update("\x00").update(stableStringify(parameters)).digest("hex");
|
|
47
|
-
}
|
|
48
|
-
function getCurrentToolSetHash(providerID, modelID, agentName) {
|
|
49
|
-
if (!providerID || !modelID)
|
|
50
|
-
return "";
|
|
51
|
-
const toolIds = measurements.get(keyFor(providerID, modelID, agentName));
|
|
52
|
-
if (!toolIds || toolIds.size === 0)
|
|
53
|
-
return "";
|
|
54
|
-
return createHash("sha256").update(Array.from(toolIds.keys()).sort().join("\x00")).digest("hex");
|
|
55
|
-
}
|
|
56
|
-
function getToolDefinitionMeasurementSignature(providerID, modelID, agentName) {
|
|
57
|
-
const key = keyFor(providerID, modelID, agentName);
|
|
58
|
-
const measured = measurements.get(key);
|
|
59
|
-
const observed = fingerprints.get(key);
|
|
60
|
-
if (!measured || !observed || [...measured.keys()].some((id) => !observed.has(id)))
|
|
61
|
-
return;
|
|
62
|
-
return createHash("sha256").update(JSON.stringify([...measured.keys()].sort().map((id) => [id, observed.get(id)]))).digest("hex");
|
|
63
|
-
}
|
|
64
|
-
function setDatabase(db) {
|
|
65
|
-
persistenceDb = db;
|
|
66
|
-
cachedInsertStmt = null;
|
|
67
|
-
}
|
|
68
|
-
function loadToolDefinitionMeasurements(db) {
|
|
69
|
-
let rows = [];
|
|
70
|
-
try {
|
|
71
|
-
rows = db.prepare("SELECT provider_id, model_id, agent_name, tool_id, token_count FROM tool_definition_measurements").all();
|
|
72
|
-
} catch {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
for (const row of rows) {
|
|
76
|
-
const key = keyFor(row.provider_id, row.model_id, row.agent_name);
|
|
77
|
-
let inner = measurements.get(key);
|
|
78
|
-
if (!inner) {
|
|
79
|
-
inner = new Map;
|
|
80
|
-
measurements.set(key, inner);
|
|
81
|
-
}
|
|
82
|
-
inner.set(row.tool_id, row.token_count);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
function recordToolDefinition(providerID, modelID, agentName, toolID, description, parameters) {
|
|
86
|
-
if (!providerID || !modelID || !toolID)
|
|
87
|
-
return;
|
|
88
|
-
const key = keyFor(providerID, modelID, agentName);
|
|
89
|
-
const fp = fingerprintFor(description ?? "", parameters);
|
|
90
|
-
let innerFp = fingerprints.get(key);
|
|
91
|
-
if (innerFp && innerFp.get(toolID) === fp)
|
|
92
|
-
return;
|
|
93
|
-
let paramsText = "";
|
|
94
|
-
try {
|
|
95
|
-
paramsText = parameters === undefined ? "" : JSON.stringify(parameters);
|
|
96
|
-
} catch {
|
|
97
|
-
paramsText = "";
|
|
98
|
-
}
|
|
99
|
-
const tokens = estimateTokens(description ?? "") + estimateTokens(paramsText);
|
|
100
|
-
let inner = measurements.get(key);
|
|
101
|
-
if (!inner) {
|
|
102
|
-
inner = new Map;
|
|
103
|
-
measurements.set(key, inner);
|
|
104
|
-
}
|
|
105
|
-
inner.set(toolID, tokens);
|
|
106
|
-
if (!innerFp) {
|
|
107
|
-
innerFp = new Map;
|
|
108
|
-
fingerprints.set(key, innerFp);
|
|
109
|
-
}
|
|
110
|
-
innerFp.set(toolID, fp);
|
|
111
|
-
if (persistenceDb) {
|
|
112
|
-
try {
|
|
113
|
-
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
114
|
-
if (!cachedInsertStmt) {
|
|
115
|
-
cachedInsertStmt = persistenceDb.prepare(`INSERT OR REPLACE INTO tool_definition_measurements
|
|
116
|
-
(provider_id, model_id, agent_name, tool_id, token_count, recorded_at)
|
|
117
|
-
VALUES (?, ?, ?, ?, ?, ?)`);
|
|
118
|
-
}
|
|
119
|
-
cachedInsertStmt.run(providerID, modelID, agent, toolID, tokens, Date.now());
|
|
120
|
-
} catch {
|
|
121
|
-
cachedInsertStmt = null;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function getLargestMeasuredToolDefinitionTokens() {
|
|
126
|
-
let largest = 0;
|
|
127
|
-
for (const tools of measurements.values()) {
|
|
128
|
-
let total = 0;
|
|
129
|
-
for (const tokens of tools.values())
|
|
130
|
-
total += tokens;
|
|
131
|
-
largest = Math.max(largest, total);
|
|
132
|
-
}
|
|
133
|
-
return largest > 0 ? largest : undefined;
|
|
134
|
-
}
|
|
135
|
-
function getMeasuredToolDefinitionTokens(providerID, modelID, agentName) {
|
|
136
|
-
if (!providerID || !modelID)
|
|
137
|
-
return;
|
|
138
|
-
const inner = measurements.get(keyFor(providerID, modelID, agentName));
|
|
139
|
-
if (!inner || inner.size === 0)
|
|
140
|
-
return;
|
|
141
|
-
let total = 0;
|
|
142
|
-
for (const tokens of inner.values())
|
|
143
|
-
total += tokens;
|
|
144
|
-
return total;
|
|
145
|
-
}
|
|
6
|
+
} from "./server-8ajstryz.js";
|
|
146
7
|
|
|
147
8
|
// src/features/magic-context/storage-schema-helpers.ts
|
|
148
9
|
var columnCaches = new WeakMap;
|
|
@@ -416,11 +277,11 @@ function installV95PerfSchema(db, verifyExistingMap = false, allowCreateMap = tr
|
|
|
416
277
|
try {
|
|
417
278
|
entries = JSON.parse(row.entries);
|
|
418
279
|
} catch {
|
|
419
|
-
|
|
280
|
+
sessionLog2(row.session_id, "v95 temporal metadata: malformed JSON skipped; original blob retained");
|
|
420
281
|
continue;
|
|
421
282
|
}
|
|
422
283
|
if (!Array.isArray(entries)) {
|
|
423
|
-
|
|
284
|
+
sessionLog2(row.session_id, "v95 temporal metadata: non-array JSON skipped; original blob retained");
|
|
424
285
|
continue;
|
|
425
286
|
}
|
|
426
287
|
const kept = [];
|
|
@@ -490,4 +351,79 @@ function tagOrderConstraintIndex(db) {
|
|
|
490
351
|
throw new Error("tags lacks its UNIQUE(session_id, tag_number) ordering constraint");
|
|
491
352
|
}
|
|
492
353
|
|
|
493
|
-
|
|
354
|
+
// src/features/magic-context/storage-tag-identity-revision.ts
|
|
355
|
+
var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:";
|
|
356
|
+
function tagIdentityRevisionKey(sessionId) {
|
|
357
|
+
return `${TAG_IDENTITY_REVISION_PREFIX}${sessionId}`;
|
|
358
|
+
}
|
|
359
|
+
var BUMP = (session) => `INSERT INTO schema_migrations_meta (key, value)
|
|
360
|
+
VALUES ('${TAG_IDENTITY_REVISION_PREFIX}' || ${session}, '1')
|
|
361
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT)`;
|
|
362
|
+
var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
363
|
+
AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
|
|
364
|
+
ON main.tags
|
|
365
|
+
BEGIN
|
|
366
|
+
${BUMP("OLD.session_id")};
|
|
367
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
368
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
369
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
370
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT);
|
|
371
|
+
END`;
|
|
372
|
+
function installTagIdentityRevisionTrigger(db) {
|
|
373
|
+
db.exec(TRIGGER_SQL);
|
|
374
|
+
}
|
|
375
|
+
function deleteTagIdentityRevisions(db, sessionIds) {
|
|
376
|
+
const statement = db.prepare("DELETE FROM schema_migrations_meta WHERE key = ? AND NOT EXISTS (SELECT 1 FROM tags WHERE session_id = ?)");
|
|
377
|
+
for (const sessionId of sessionIds)
|
|
378
|
+
statement.run(tagIdentityRevisionKey(sessionId), sessionId);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// src/shared/stable-json.ts
|
|
382
|
+
function stableStringify(value, seen = new WeakSet) {
|
|
383
|
+
const pieces = [];
|
|
384
|
+
writeStable(value, seen, pieces);
|
|
385
|
+
return pieces.join("");
|
|
386
|
+
}
|
|
387
|
+
function writeStable(value, seen, pieces) {
|
|
388
|
+
if (value === undefined) {
|
|
389
|
+
pieces.push("undefined");
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (value === null || typeof value !== "object") {
|
|
393
|
+
pieces.push(JSON.stringify(value) ?? String(value));
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
if (seen.has(value)) {
|
|
397
|
+
pieces.push('"[Circular]"');
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
seen.add(value);
|
|
401
|
+
if (Array.isArray(value)) {
|
|
402
|
+
pieces.push("[");
|
|
403
|
+
for (let index = 0;index < value.length; index += 1) {
|
|
404
|
+
if (index > 0)
|
|
405
|
+
pieces.push(",");
|
|
406
|
+
if (index in value)
|
|
407
|
+
writeStable(value[index], seen, pieces);
|
|
408
|
+
}
|
|
409
|
+
pieces.push("]");
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
const entries = Object.entries(value).sort(([a], [b]) => {
|
|
413
|
+
if (a < b)
|
|
414
|
+
return -1;
|
|
415
|
+
if (a > b)
|
|
416
|
+
return 1;
|
|
417
|
+
return 0;
|
|
418
|
+
});
|
|
419
|
+
pieces.push("{");
|
|
420
|
+
entries.forEach(([key, child], index) => {
|
|
421
|
+
if (index > 0)
|
|
422
|
+
pieces.push(",");
|
|
423
|
+
pieces.push(JSON.stringify(key), ":");
|
|
424
|
+
writeStable(child, seen, pieces);
|
|
425
|
+
});
|
|
426
|
+
pieces.push("}");
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
currentHarness = value;
|
|
9
|
-
harnessLocked = true;
|
|
10
|
-
}
|
|
11
|
-
function getHarness() {
|
|
12
|
-
return currentHarness;
|
|
13
|
-
}
|
|
14
|
-
function harnessOwnsOpenCodeStore(harness = currentHarness) {
|
|
15
|
-
return harness === "opencode" || harness === "opencode2";
|
|
16
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
getHarness2
|
|
3
|
+
} from "./server-pavzsdc6.js";
|
|
4
|
+
|
|
5
|
+
// src/shared/logger.ts
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import * as path2 from "node:path";
|
|
17
8
|
|
|
18
9
|
// src/shared/data-path.ts
|
|
19
10
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
@@ -28,10 +19,10 @@ var registeredTempDirs = new Set;
|
|
|
28
19
|
function getDataDir() {
|
|
29
20
|
return process.env.XDG_DATA_HOME ?? path.join(os.homedir(), ".local", "share");
|
|
30
21
|
}
|
|
31
|
-
function getMagicContextTempDir(harness =
|
|
22
|
+
function getMagicContextTempDir(harness = getHarness2()) {
|
|
32
23
|
return path.join(os.tmpdir(), harness, "magic-context");
|
|
33
24
|
}
|
|
34
|
-
function getMagicContextLogPath(harness =
|
|
25
|
+
function getMagicContextLogPath(harness = getHarness2()) {
|
|
35
26
|
const envPath = process.env.MAGIC_CONTEXT_LOG_PATH?.trim();
|
|
36
27
|
if (envPath)
|
|
37
28
|
return envPath;
|
|
@@ -112,14 +103,6 @@ function getLegacyOpenCodeMagicContextStorageDir() {
|
|
|
112
103
|
return path.join(getOpenCodeStorageDir(), "plugin", "magic-context");
|
|
113
104
|
}
|
|
114
105
|
|
|
115
|
-
// src/shared/stale-plugin-build.ts
|
|
116
|
-
import { posix } from "node:path";
|
|
117
|
-
import { fileURLToPath } from "node:url";
|
|
118
|
-
|
|
119
|
-
// src/shared/logger.ts
|
|
120
|
-
import * as fs from "node:fs";
|
|
121
|
-
import * as path2 from "node:path";
|
|
122
|
-
|
|
123
106
|
// src/shared/redaction.ts
|
|
124
107
|
import { homedir as homedir2, userInfo } from "node:os";
|
|
125
108
|
function escapeRegex(value) {
|
|
@@ -337,6 +320,122 @@ function sanitizeConfigValue(value, keyPath = []) {
|
|
|
337
320
|
return value;
|
|
338
321
|
}
|
|
339
322
|
|
|
323
|
+
// src/shared/stale-plugin-build.ts
|
|
324
|
+
import { posix } from "node:path";
|
|
325
|
+
import { fileURLToPath } from "node:url";
|
|
326
|
+
var STATE = Symbol.for("magic-context.stale-plugin-build");
|
|
327
|
+
function state() {
|
|
328
|
+
const globals = globalThis;
|
|
329
|
+
return globals[STATE] ??= {
|
|
330
|
+
hosts: new Map,
|
|
331
|
+
loggedChunks: new Set,
|
|
332
|
+
notified: false
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
function absolutePath(value) {
|
|
336
|
+
let path = value;
|
|
337
|
+
if (path.startsWith("file:")) {
|
|
338
|
+
try {
|
|
339
|
+
path = fileURLToPath(path);
|
|
340
|
+
} catch {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
path = path.replaceAll("\\", "/").replace(/^\/(?=[A-Za-z]:\/)/, "");
|
|
345
|
+
if (!path.startsWith("/") && !/^[A-Za-z]:\//.test(path))
|
|
346
|
+
return;
|
|
347
|
+
path = posix.normalize(path);
|
|
348
|
+
return /^[A-Za-z]:\//.test(path) ? path.toLowerCase() : path;
|
|
349
|
+
}
|
|
350
|
+
function distForModule(moduleUrl) {
|
|
351
|
+
const path = absolutePath(moduleUrl);
|
|
352
|
+
if (!path)
|
|
353
|
+
return;
|
|
354
|
+
const dist = path.lastIndexOf("/dist/");
|
|
355
|
+
return dist < 0 ? undefined : path.slice(0, dist + "/dist".length);
|
|
356
|
+
}
|
|
357
|
+
function stalePluginBuildGuidance(harness) {
|
|
358
|
+
return harness === "pi" || harness === "omp" ? "Magic Context was rebuilt while this Pi was running; type /reload to load the new build" : "Magic Context was rebuilt while this OpenCode host was running; restart the host to load the new build";
|
|
359
|
+
}
|
|
360
|
+
function deliverNotice(host) {
|
|
361
|
+
const current = state();
|
|
362
|
+
if (current.notified || !current.pendingNotice || !host.notify)
|
|
363
|
+
return;
|
|
364
|
+
current.notified = true;
|
|
365
|
+
try {
|
|
366
|
+
Promise.resolve(host.notify(current.pendingNotice)).catch(() => {});
|
|
367
|
+
} catch {}
|
|
368
|
+
}
|
|
369
|
+
function registerStalePluginBuildHost(options) {
|
|
370
|
+
const dist = distForModule(options.moduleUrl);
|
|
371
|
+
if (!dist)
|
|
372
|
+
return;
|
|
373
|
+
const host = { ...options, dist };
|
|
374
|
+
state().hosts.set(dist, host);
|
|
375
|
+
deliverNotice(host);
|
|
376
|
+
}
|
|
377
|
+
function classifyStalePluginBuild(error) {
|
|
378
|
+
if (error instanceof StalePluginBuildError)
|
|
379
|
+
return error.build;
|
|
380
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
381
|
+
const missing = message.match(/(?:Cannot find module|ENOENT reading)\s+(['"])(.*?)\1/);
|
|
382
|
+
if (!missing)
|
|
383
|
+
return null;
|
|
384
|
+
let chunk = absolutePath(missing[2]);
|
|
385
|
+
if (!chunk && /^\.\.?[/\\]/.test(missing[2])) {
|
|
386
|
+
const importer = message.slice((missing.index ?? 0) + missing[0].length).match(/(?:imported from|from)\s+(?:['"]([^'"]+)['"]|([^\n]+))/);
|
|
387
|
+
const from = importer && absolutePath((importer[1] ?? importer[2]).trim());
|
|
388
|
+
if (from)
|
|
389
|
+
chunk = absolutePath(posix.join(posix.dirname(from), missing[2].replaceAll("\\", "/")));
|
|
390
|
+
}
|
|
391
|
+
if (!chunk)
|
|
392
|
+
return null;
|
|
393
|
+
for (const host of state().hosts.values()) {
|
|
394
|
+
if (chunk.startsWith(`${host.dist}/`)) {
|
|
395
|
+
return { chunk, guidance: stalePluginBuildGuidance(host.harness) };
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
const ownDist = distForModule(import.meta.url);
|
|
399
|
+
return ownDist && chunk.startsWith(`${ownDist}/`) ? { chunk, guidance: stalePluginBuildGuidance(getHarness2()) } : null;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
class StalePluginBuildError extends Error {
|
|
403
|
+
build;
|
|
404
|
+
constructor(build) {
|
|
405
|
+
super(build.guidance);
|
|
406
|
+
this.build = build;
|
|
407
|
+
this.name = "StalePluginBuildError";
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
function stalePluginBuildDiagnostic(error) {
|
|
411
|
+
const pending = state().pendingNotice;
|
|
412
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
413
|
+
if (pending && message.includes(pending))
|
|
414
|
+
return null;
|
|
415
|
+
const build = classifyStalePluginBuild(error);
|
|
416
|
+
if (!build)
|
|
417
|
+
return;
|
|
418
|
+
const current = state();
|
|
419
|
+
current.pendingNotice ??= build.guidance;
|
|
420
|
+
for (const host of current.hosts.values())
|
|
421
|
+
deliverNotice(host);
|
|
422
|
+
if (current.loggedChunks.has(build.chunk))
|
|
423
|
+
return null;
|
|
424
|
+
current.loggedChunks.add(build.chunk);
|
|
425
|
+
return `[magic-context] stale plugin build: missing ${build.chunk.replace(/[\r\n]/g, " ")}; ${build.guidance}`;
|
|
426
|
+
}
|
|
427
|
+
async function importPluginModule(load) {
|
|
428
|
+
try {
|
|
429
|
+
return await load();
|
|
430
|
+
} catch (error) {
|
|
431
|
+
const build = classifyStalePluginBuild(error);
|
|
432
|
+
if (!build)
|
|
433
|
+
throw error;
|
|
434
|
+
log2("[magic-context] lazy import failed", error);
|
|
435
|
+
throw new StalePluginBuildError(build);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
340
439
|
// src/shared/logger.ts
|
|
341
440
|
var isTestEnv = false;
|
|
342
441
|
var buffer = [];
|
|
@@ -480,10 +579,10 @@ function scheduleFlush() {
|
|
|
480
579
|
}, FLUSH_INTERVAL_MS);
|
|
481
580
|
}
|
|
482
581
|
var lineForwarder = null;
|
|
483
|
-
function
|
|
582
|
+
function setLogLineForwarder2(forward) {
|
|
484
583
|
lineForwarder = forward;
|
|
485
584
|
}
|
|
486
|
-
function
|
|
585
|
+
function writeForwardedLogLine2(line) {
|
|
487
586
|
if (isTestEnv)
|
|
488
587
|
return;
|
|
489
588
|
try {
|
|
@@ -496,7 +595,7 @@ function writeForwardedLogLine(line) {
|
|
|
496
595
|
scheduleFlush();
|
|
497
596
|
} catch {}
|
|
498
597
|
}
|
|
499
|
-
function
|
|
598
|
+
function log2(message, data) {
|
|
500
599
|
try {
|
|
501
600
|
let diagnostic = stalePluginBuildDiagnostic(data);
|
|
502
601
|
if (diagnostic === undefined)
|
|
@@ -528,135 +627,24 @@ ${data.stack}` : ""}`)}` : ` ${JSON.stringify(sanitizeConfigValue(data))}`;
|
|
|
528
627
|
}
|
|
529
628
|
} catch {}
|
|
530
629
|
}
|
|
531
|
-
function
|
|
532
|
-
|
|
630
|
+
function sessionLog2(sessionId, message, data) {
|
|
631
|
+
log2(`[magic-context][${sessionId}] ${message}`, data);
|
|
533
632
|
}
|
|
534
|
-
function
|
|
633
|
+
function getLoggerDiagnostics2() {
|
|
535
634
|
return {
|
|
536
635
|
swallowedWriteCount,
|
|
537
636
|
lastErrorMessage,
|
|
538
637
|
lastErrorTime
|
|
539
638
|
};
|
|
540
639
|
}
|
|
541
|
-
function
|
|
640
|
+
function flushLogger2() {
|
|
542
641
|
flush();
|
|
543
642
|
}
|
|
643
|
+
function getLogFilePath2() {
|
|
644
|
+
return getMagicContextLogPath();
|
|
645
|
+
}
|
|
544
646
|
if (!isTestEnv) {
|
|
545
647
|
process.on("exit", flush);
|
|
546
648
|
}
|
|
547
649
|
|
|
548
|
-
|
|
549
|
-
var STATE = Symbol.for("magic-context.stale-plugin-build");
|
|
550
|
-
function state() {
|
|
551
|
-
const globals = globalThis;
|
|
552
|
-
return globals[STATE] ??= {
|
|
553
|
-
hosts: new Map,
|
|
554
|
-
loggedChunks: new Set,
|
|
555
|
-
notified: false
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
function absolutePath(value) {
|
|
559
|
-
let path = value;
|
|
560
|
-
if (path.startsWith("file:")) {
|
|
561
|
-
try {
|
|
562
|
-
path = fileURLToPath(path);
|
|
563
|
-
} catch {
|
|
564
|
-
return;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
path = path.replaceAll("\\", "/").replace(/^\/(?=[A-Za-z]:\/)/, "");
|
|
568
|
-
if (!path.startsWith("/") && !/^[A-Za-z]:\//.test(path))
|
|
569
|
-
return;
|
|
570
|
-
path = posix.normalize(path);
|
|
571
|
-
return /^[A-Za-z]:\//.test(path) ? path.toLowerCase() : path;
|
|
572
|
-
}
|
|
573
|
-
function distForModule(moduleUrl) {
|
|
574
|
-
const path = absolutePath(moduleUrl);
|
|
575
|
-
if (!path)
|
|
576
|
-
return;
|
|
577
|
-
const dist = path.lastIndexOf("/dist/");
|
|
578
|
-
return dist < 0 ? undefined : path.slice(0, dist + "/dist".length);
|
|
579
|
-
}
|
|
580
|
-
function stalePluginBuildGuidance(harness) {
|
|
581
|
-
return harness === "pi" || harness === "omp" ? "Magic Context was rebuilt while this Pi was running; type /reload to load the new build" : "Magic Context was rebuilt while this OpenCode host was running; restart the host to load the new build";
|
|
582
|
-
}
|
|
583
|
-
function deliverNotice(host) {
|
|
584
|
-
const current = state();
|
|
585
|
-
if (current.notified || !current.pendingNotice || !host.notify)
|
|
586
|
-
return;
|
|
587
|
-
current.notified = true;
|
|
588
|
-
try {
|
|
589
|
-
Promise.resolve(host.notify(current.pendingNotice)).catch(() => {});
|
|
590
|
-
} catch {}
|
|
591
|
-
}
|
|
592
|
-
function registerStalePluginBuildHost(options) {
|
|
593
|
-
const dist = distForModule(options.moduleUrl);
|
|
594
|
-
if (!dist)
|
|
595
|
-
return;
|
|
596
|
-
const host = { ...options, dist };
|
|
597
|
-
state().hosts.set(dist, host);
|
|
598
|
-
deliverNotice(host);
|
|
599
|
-
}
|
|
600
|
-
function classifyStalePluginBuild(error) {
|
|
601
|
-
if (error instanceof StalePluginBuildError)
|
|
602
|
-
return error.build;
|
|
603
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
604
|
-
const missing = message.match(/(?:Cannot find module|ENOENT reading)\s+(['"])(.*?)\1/);
|
|
605
|
-
if (!missing)
|
|
606
|
-
return null;
|
|
607
|
-
let chunk = absolutePath(missing[2]);
|
|
608
|
-
if (!chunk && /^\.\.?[/\\]/.test(missing[2])) {
|
|
609
|
-
const importer = message.slice((missing.index ?? 0) + missing[0].length).match(/(?:imported from|from)\s+(?:['"]([^'"]+)['"]|([^\n]+))/);
|
|
610
|
-
const from = importer && absolutePath((importer[1] ?? importer[2]).trim());
|
|
611
|
-
if (from)
|
|
612
|
-
chunk = absolutePath(posix.join(posix.dirname(from), missing[2].replaceAll("\\", "/")));
|
|
613
|
-
}
|
|
614
|
-
if (!chunk)
|
|
615
|
-
return null;
|
|
616
|
-
for (const host of state().hosts.values()) {
|
|
617
|
-
if (chunk.startsWith(`${host.dist}/`)) {
|
|
618
|
-
return { chunk, guidance: stalePluginBuildGuidance(host.harness) };
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
const ownDist = distForModule(import.meta.url);
|
|
622
|
-
return ownDist && chunk.startsWith(`${ownDist}/`) ? { chunk, guidance: stalePluginBuildGuidance(getHarness()) } : null;
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
class StalePluginBuildError extends Error {
|
|
626
|
-
build;
|
|
627
|
-
constructor(build) {
|
|
628
|
-
super(build.guidance);
|
|
629
|
-
this.build = build;
|
|
630
|
-
this.name = "StalePluginBuildError";
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
function stalePluginBuildDiagnostic(error) {
|
|
634
|
-
const pending = state().pendingNotice;
|
|
635
|
-
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
636
|
-
if (pending && message.includes(pending))
|
|
637
|
-
return null;
|
|
638
|
-
const build = classifyStalePluginBuild(error);
|
|
639
|
-
if (!build)
|
|
640
|
-
return;
|
|
641
|
-
const current = state();
|
|
642
|
-
current.pendingNotice ??= build.guidance;
|
|
643
|
-
for (const host of current.hosts.values())
|
|
644
|
-
deliverNotice(host);
|
|
645
|
-
if (current.loggedChunks.has(build.chunk))
|
|
646
|
-
return null;
|
|
647
|
-
current.loggedChunks.add(build.chunk);
|
|
648
|
-
return `[magic-context] stale plugin build: missing ${build.chunk.replace(/[\r\n]/g, " ")}; ${build.guidance}`;
|
|
649
|
-
}
|
|
650
|
-
async function importPluginModule(load) {
|
|
651
|
-
try {
|
|
652
|
-
return await load();
|
|
653
|
-
} catch (error) {
|
|
654
|
-
const build = classifyStalePluginBuild(error);
|
|
655
|
-
if (!build)
|
|
656
|
-
throw error;
|
|
657
|
-
log("[magic-context] lazy import failed", error);
|
|
658
|
-
throw new StalePluginBuildError(build);
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
export { setHarness, getHarness, harnessOwnsOpenCodeStore, getDataDir, ensureCortexKitArtifactGitignore, getProjectMagicContextHistorianDir, getMagicContextStorageDir, getLegacyOpenCodeMagicContextStorageDir, sanitizeDiagnosticText, hasShareabilitySensitiveText, registerStalePluginBuildHost, classifyStalePluginBuild, importPluginModule, setLogLineForwarder, writeForwardedLogLine, log, sessionLog, getLoggerDiagnostics, flushLogger };
|
|
650
|
+
export { getDataDir, ensureCortexKitArtifactGitignore, getProjectMagicContextHistorianDir, getMagicContextStorageDir, getLegacyOpenCodeMagicContextStorageDir, sanitizeDiagnosticText, hasShareabilitySensitiveText, registerStalePluginBuildHost, classifyStalePluginBuild, importPluginModule, setLogLineForwarder2, writeForwardedLogLine2, log2, sessionLog2, getLoggerDiagnostics2, flushLogger2, getLogFilePath2 };
|