@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
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import { statSync } from "node:fs";
|
|
4
4
|
var reportSlowPrivilegedWrite;
|
|
5
|
-
function
|
|
5
|
+
function registerSlowWriteReporter2(reporter) {
|
|
6
6
|
reportSlowPrivilegedWrite = reporter;
|
|
7
7
|
}
|
|
8
8
|
var sqliteDiagnosticSink;
|
|
9
|
-
function
|
|
9
|
+
function registerSqliteDiagnosticSink2(sink) {
|
|
10
10
|
sqliteDiagnosticSink = sink;
|
|
11
11
|
}
|
|
12
12
|
function reportSqliteDiagnostic(message) {
|
|
@@ -14,7 +14,7 @@ function reportSqliteDiagnostic(message) {
|
|
|
14
14
|
sqliteDiagnosticSink?.(`[magic-context] ${message}`);
|
|
15
15
|
} catch {}
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function detectSqliteRuntime2() {
|
|
18
18
|
const hasBunVersion = typeof process !== "undefined" && typeof process.versions?.bun === "string";
|
|
19
19
|
const hasBunGlobal = typeof globalThis !== "undefined" && typeof globalThis.Bun !== "undefined";
|
|
20
20
|
return hasBunVersion || hasBunGlobal ? "Bun" : "Node.js";
|
|
@@ -47,10 +47,31 @@ class SqliteRuntimeUnavailableError extends Error {
|
|
|
47
47
|
this.specifier = specifier;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
const
|
|
50
|
+
function isNodeSqliteExperimentalWarning(args) {
|
|
51
|
+
const [warning, options] = args;
|
|
52
|
+
const message = warning instanceof Error ? warning.message : warning;
|
|
53
|
+
const type = typeof options === "string" ? options : options && typeof options === "object" ? options.type : undefined;
|
|
54
|
+
return type === "ExperimentalWarning" && typeof message === "string" && message.startsWith("SQLite is an experimental feature");
|
|
55
|
+
}
|
|
56
|
+
async function importSqliteModuleForRuntime(runtime, specifier, importer) {
|
|
57
|
+
if (runtime !== "Node.js")
|
|
58
|
+
return importer(specifier);
|
|
59
|
+
const originalEmitWarning = process.emitWarning;
|
|
60
|
+
process.emitWarning = function(...args) {
|
|
61
|
+
if (isNodeSqliteExperimentalWarning(args))
|
|
62
|
+
return;
|
|
63
|
+
Reflect.apply(originalEmitWarning, this, args);
|
|
64
|
+
};
|
|
52
65
|
try {
|
|
53
66
|
return await importer(specifier);
|
|
67
|
+
} finally {
|
|
68
|
+
process.emitWarning = originalEmitWarning;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function loadSqliteModule(runtime = detectSqliteRuntime2(), importer = importSqliteModule) {
|
|
72
|
+
const specifier = runtime === "Bun" ? bunSpec : nodeSpec;
|
|
73
|
+
try {
|
|
74
|
+
return await importSqliteModuleForRuntime(runtime, specifier, importer);
|
|
54
75
|
} catch (error) {
|
|
55
76
|
if (isModuleNotFoundError(error, specifier)) {
|
|
56
77
|
throw new SqliteRuntimeUnavailableError(runtime, specifier, error);
|
|
@@ -58,12 +79,87 @@ async function loadSqliteModule(runtime = detectSqliteRuntime(), importer = impo
|
|
|
58
79
|
throw error;
|
|
59
80
|
}
|
|
60
81
|
}
|
|
61
|
-
var detectedRuntime =
|
|
82
|
+
var detectedRuntime = detectSqliteRuntime2();
|
|
62
83
|
var isBun = detectedRuntime === "Bun";
|
|
63
84
|
var sqliteModule = await loadSqliteModule(detectedRuntime);
|
|
64
85
|
var DatabaseImpl = isBun ? sqliteModule.Database : buildNodeSqliteDatabaseClass(sqliteModule.DatabaseSync);
|
|
65
86
|
var trackedSqliteConnections = new Map;
|
|
66
87
|
var nextSqliteConnectionSequence = 1;
|
|
88
|
+
var TAG_COLUMNS_OUTSIDE_IDENTITY = new Set([
|
|
89
|
+
"status",
|
|
90
|
+
"drop_mode",
|
|
91
|
+
"byte_size",
|
|
92
|
+
"input_byte_size",
|
|
93
|
+
"reasoning_byte_size",
|
|
94
|
+
"token_count",
|
|
95
|
+
"input_token_count",
|
|
96
|
+
"caveman_depth",
|
|
97
|
+
"entry_fingerprint",
|
|
98
|
+
"tool_name",
|
|
99
|
+
"harness"
|
|
100
|
+
]);
|
|
101
|
+
var tagIdentityWriteGeneration = 0;
|
|
102
|
+
function mayChangeTagIdentity(sql) {
|
|
103
|
+
if (!/\btags\b/i.test(sql) || /^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql))
|
|
104
|
+
return false;
|
|
105
|
+
if (/^\s*WITH\b/i.test(sql) && !/\b(?:INSERT|UPDATE|DELETE|REPLACE)\b/i.test(sql))
|
|
106
|
+
return false;
|
|
107
|
+
if (/;\s*\S/.test(sql) || /\bREPLACE\b/i.test(sql) || /\bON\s+CONFLICT\b/i.test(sql))
|
|
108
|
+
return true;
|
|
109
|
+
const insert = /^\s*INSERT\s+INTO\s+(?:main\.)?["`]?tags["`]?\s*\(([^)]*)\)/i.exec(sql);
|
|
110
|
+
if (insert) {
|
|
111
|
+
const columns = (insert[1] ?? "").split(",").map((column) => column.trim().replace(/["`[\]]/g, "").toLowerCase());
|
|
112
|
+
return columns.includes("id") || columns.includes("rowid");
|
|
113
|
+
}
|
|
114
|
+
const update = /^\s*UPDATE\s+(?:main\.)?["`]?tags["`]?\s+SET\s+([\s\S]*?)\bWHERE\b/i.exec(sql);
|
|
115
|
+
if (update && !/\bSELECT\b/i.test(sql)) {
|
|
116
|
+
const assignments = topLevelCommaSegments(update[1] ?? "");
|
|
117
|
+
if (!assignments)
|
|
118
|
+
return true;
|
|
119
|
+
return !assignments.every((assignment) => {
|
|
120
|
+
const column = /^\s*["`]?(\w+)["`]?\s*=(?!=)/.exec(assignment)?.[1];
|
|
121
|
+
return column !== undefined && TAG_COLUMNS_OUTSIDE_IDENTITY.has(column.toLowerCase());
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
function topLevelCommaSegments(text) {
|
|
127
|
+
const segments = [];
|
|
128
|
+
let depth = 0;
|
|
129
|
+
let quote = null;
|
|
130
|
+
let start = 0;
|
|
131
|
+
for (let index = 0;index < text.length; index += 1) {
|
|
132
|
+
const char = text[index];
|
|
133
|
+
if (quote) {
|
|
134
|
+
if (char === quote) {
|
|
135
|
+
if (text[index + 1] === quote)
|
|
136
|
+
index += 1;
|
|
137
|
+
else
|
|
138
|
+
quote = null;
|
|
139
|
+
}
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (char === "'" || char === '"' || char === "`")
|
|
143
|
+
quote = char;
|
|
144
|
+
else if (char === "(")
|
|
145
|
+
depth += 1;
|
|
146
|
+
else if (char === ")") {
|
|
147
|
+
depth -= 1;
|
|
148
|
+
if (depth < 0)
|
|
149
|
+
return null;
|
|
150
|
+
} else if (char === "," && depth === 0) {
|
|
151
|
+
segments.push(text.slice(start, index));
|
|
152
|
+
start = index + 1;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (quote || depth !== 0)
|
|
156
|
+
return null;
|
|
157
|
+
segments.push(text.slice(start));
|
|
158
|
+
return segments;
|
|
159
|
+
}
|
|
160
|
+
function getTagIdentityWriteGeneration2() {
|
|
161
|
+
return tagIdentityWriteGeneration;
|
|
162
|
+
}
|
|
67
163
|
function installTransactionRouting(db, readonly) {
|
|
68
164
|
const nativeExec = db.exec.bind(db);
|
|
69
165
|
Object.defineProperty(db, "exec", {
|
|
@@ -71,7 +167,7 @@ function installTransactionRouting(db, readonly) {
|
|
|
71
167
|
writable: true,
|
|
72
168
|
value: (sql) => {
|
|
73
169
|
if (/^\s*(?:COMMIT|END)\b/i.test(sql))
|
|
74
|
-
|
|
170
|
+
assertTransformWrite2();
|
|
75
171
|
if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
|
|
76
172
|
openWriterTransactions.delete(db);
|
|
77
173
|
if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
|
|
@@ -82,8 +178,14 @@ function installTransactionRouting(db, readonly) {
|
|
|
82
178
|
}
|
|
83
179
|
if (WRITER_TRANSACTION_END.test(sql) && openWriterTransactions.has(db))
|
|
84
180
|
return endWriterTransaction(db, () => nativeExec(sql), sql);
|
|
85
|
-
if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql))
|
|
86
|
-
|
|
181
|
+
if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)) {
|
|
182
|
+
try {
|
|
183
|
+
return withAutocommitTimeout(db, () => nativeExec(sql));
|
|
184
|
+
} finally {
|
|
185
|
+
if (mayChangeTagIdentity(sql))
|
|
186
|
+
tagIdentityWriteGeneration += 1;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
87
189
|
return nativeExec(sql);
|
|
88
190
|
}
|
|
89
191
|
});
|
|
@@ -94,13 +196,23 @@ function installTransactionRouting(db, readonly) {
|
|
|
94
196
|
value: (sql) => {
|
|
95
197
|
const statement = nativePrepare(sql);
|
|
96
198
|
if (!readonly && !/^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql)) {
|
|
199
|
+
const changesTagIdentity = mayChangeTagIdentity(sql);
|
|
97
200
|
for (const method of ["run", "get", "all"]) {
|
|
98
201
|
const execute = statement[method].bind(statement);
|
|
99
202
|
Object.defineProperty(statement, method, {
|
|
100
203
|
configurable: true,
|
|
101
|
-
value: (...args) =>
|
|
204
|
+
value: (...args) => {
|
|
205
|
+
try {
|
|
206
|
+
return withAutocommitTimeout(db, () => execute(...args));
|
|
207
|
+
} finally {
|
|
208
|
+
if (changesTagIdentity)
|
|
209
|
+
tagIdentityWriteGeneration += 1;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
102
212
|
});
|
|
103
213
|
}
|
|
214
|
+
if (changesTagIdentity)
|
|
215
|
+
wrapRemainingTagWriteForms(statement);
|
|
104
216
|
}
|
|
105
217
|
return statement;
|
|
106
218
|
}
|
|
@@ -148,6 +260,35 @@ function installTransactionRouting(db, readonly) {
|
|
|
148
260
|
}
|
|
149
261
|
});
|
|
150
262
|
}
|
|
263
|
+
function wrapRemainingTagWriteForms(statement) {
|
|
264
|
+
if (typeof statement.iterate === "function") {
|
|
265
|
+
const iterate = statement.iterate.bind(statement);
|
|
266
|
+
Object.defineProperty(statement, "iterate", {
|
|
267
|
+
configurable: true,
|
|
268
|
+
value: function* (...args) {
|
|
269
|
+
tagIdentityWriteGeneration += 1;
|
|
270
|
+
try {
|
|
271
|
+
yield* iterate(...args);
|
|
272
|
+
} finally {
|
|
273
|
+
tagIdentityWriteGeneration += 1;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
if (typeof statement.values === "function") {
|
|
279
|
+
const values = statement.values.bind(statement);
|
|
280
|
+
Object.defineProperty(statement, "values", {
|
|
281
|
+
configurable: true,
|
|
282
|
+
value: (...args) => {
|
|
283
|
+
try {
|
|
284
|
+
return values(...args);
|
|
285
|
+
} finally {
|
|
286
|
+
tagIdentityWriteGeneration += 1;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
151
292
|
function trackSqliteConnection(db, filename, options) {
|
|
152
293
|
const originalClose = db.close.bind(db);
|
|
153
294
|
const sequence = nextSqliteConnectionSequence++;
|
|
@@ -207,13 +348,17 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
|
|
|
207
348
|
}
|
|
208
349
|
return NodeSqliteDatabase;
|
|
209
350
|
}
|
|
210
|
-
var
|
|
211
|
-
function
|
|
351
|
+
var Database2 = TrackedDatabase;
|
|
352
|
+
function getSqliteDatabasePath2(db) {
|
|
212
353
|
for (const connection of trackedSqliteConnections.values()) {
|
|
213
354
|
if (connection.reference.deref() === db) {
|
|
214
355
|
return connection.filename === ":memory:" || connection.filename === "<buffer>" ? null : connection.filename;
|
|
215
356
|
}
|
|
216
357
|
}
|
|
358
|
+
const native = db;
|
|
359
|
+
const path = native.filename ?? native.name;
|
|
360
|
+
if (typeof path === "string" && path !== ":memory:" && path !== "")
|
|
361
|
+
return path;
|
|
217
362
|
return null;
|
|
218
363
|
}
|
|
219
364
|
function pragmaValue(db, name) {
|
|
@@ -255,7 +400,7 @@ function fts5TableCount(db) {
|
|
|
255
400
|
return null;
|
|
256
401
|
}
|
|
257
402
|
}
|
|
258
|
-
function
|
|
403
|
+
function getSqliteMemoryStats2() {
|
|
259
404
|
const connections = [];
|
|
260
405
|
for (const [sequence, tracked] of trackedSqliteConnections) {
|
|
261
406
|
const db = tracked.reference.deref();
|
|
@@ -297,6 +442,15 @@ function getSqliteMemoryStats() {
|
|
|
297
442
|
}
|
|
298
443
|
var statementOwners = new WeakMap;
|
|
299
444
|
var FIRST_PRUNE_AT = 256;
|
|
445
|
+
function closeReleasingStatements(close, args) {
|
|
446
|
+
if (args[0] === true)
|
|
447
|
+
return close(true);
|
|
448
|
+
try {
|
|
449
|
+
return close(true);
|
|
450
|
+
} catch {
|
|
451
|
+
return close(...args);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
300
454
|
function ownPreparedStatement(db, statement) {
|
|
301
455
|
const finalizable = statement;
|
|
302
456
|
if (typeof finalizable.finalize !== "function")
|
|
@@ -320,7 +474,7 @@ function ownPreparedStatement(db, statement) {
|
|
|
320
474
|
}
|
|
321
475
|
}
|
|
322
476
|
references.clear();
|
|
323
|
-
const result = close
|
|
477
|
+
const result = closeReleasingStatements(close, args);
|
|
324
478
|
if (failure)
|
|
325
479
|
throw failure;
|
|
326
480
|
return result;
|
|
@@ -340,52 +494,59 @@ function ownPreparedStatement(db, statement) {
|
|
|
340
494
|
}
|
|
341
495
|
return statement;
|
|
342
496
|
}
|
|
343
|
-
function
|
|
497
|
+
function prepareCachedStatement2(db, sql) {
|
|
344
498
|
return ownPreparedStatement(db, db.prepare(sql));
|
|
345
499
|
}
|
|
346
500
|
var privilegeDepth = new WeakMap;
|
|
347
501
|
var transformPassScope = new AsyncLocalStorage;
|
|
348
502
|
var admissionScope = new AsyncLocalStorage;
|
|
349
503
|
var backgroundWriterScope = new AsyncLocalStorage;
|
|
350
|
-
function
|
|
504
|
+
function withSqliteBackgroundWriter2(operation) {
|
|
351
505
|
return backgroundWriterScope.run(true, operation);
|
|
352
506
|
}
|
|
353
|
-
function
|
|
507
|
+
function withSqliteTransformPass2(operation) {
|
|
354
508
|
const existing = transformPassScope.getStore();
|
|
355
509
|
if (existing?.active)
|
|
356
510
|
return operation();
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
511
|
+
const reservation = reserveForegroundSqliteTurn();
|
|
512
|
+
const run = (release) => {
|
|
513
|
+
const lease = { active: true, remainingWaitMs: FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS };
|
|
514
|
+
return transformPassScope.run(lease, () => {
|
|
515
|
+
try {
|
|
516
|
+
const result = operation();
|
|
517
|
+
if (result && typeof result.then === "function") {
|
|
518
|
+
return Promise.resolve(result).finally(() => {
|
|
519
|
+
lease.active = false;
|
|
520
|
+
release();
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
lease.active = false;
|
|
524
|
+
release();
|
|
525
|
+
return result;
|
|
526
|
+
} catch (error) {
|
|
527
|
+
lease.active = false;
|
|
528
|
+
release();
|
|
529
|
+
throw error;
|
|
365
530
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
lease.active = false;
|
|
370
|
-
throw error;
|
|
371
|
-
}
|
|
372
|
-
});
|
|
531
|
+
});
|
|
532
|
+
};
|
|
533
|
+
return typeof reservation === "function" ? run(reservation) : reservation.then(run);
|
|
373
534
|
}
|
|
374
|
-
function
|
|
535
|
+
function withoutSqliteTransformPass2(operation) {
|
|
375
536
|
return transformPassScope.run(undefined, operation);
|
|
376
537
|
}
|
|
377
|
-
function
|
|
538
|
+
function assertTransformWrite2() {
|
|
378
539
|
if (!backgroundWriterScope.getStore())
|
|
379
540
|
transformPassScope.getStore()?.guard?.assert();
|
|
380
541
|
}
|
|
381
|
-
function
|
|
542
|
+
function isTransientSqliteError2(error) {
|
|
382
543
|
if (!error || typeof error !== "object")
|
|
383
544
|
return false;
|
|
384
545
|
const value = error;
|
|
385
546
|
return typeof value.code === "string" && /^(SQLITE_BUSY|SQLITE_LOCKED)(_|$)/.test(value.code) || typeof value.errcode === "number" && [5, 6].includes(value.errcode & 255);
|
|
386
547
|
}
|
|
387
548
|
|
|
388
|
-
class
|
|
549
|
+
class SqliteAcquisitionBusyError2 extends Error {
|
|
389
550
|
code = "SQLITE_BUSY";
|
|
390
551
|
stage;
|
|
391
552
|
constructor(cause, stage = "BEGIN IMMEDIATE") {
|
|
@@ -406,7 +567,7 @@ function foregroundWaitLease() {
|
|
|
406
567
|
return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
|
|
407
568
|
}
|
|
408
569
|
function withAutocommitTimeout(db, operation) {
|
|
409
|
-
|
|
570
|
+
assertTransformWrite2();
|
|
410
571
|
const lease = foregroundWaitLease();
|
|
411
572
|
if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
|
|
412
573
|
return operation();
|
|
@@ -416,8 +577,8 @@ function withAutocommitTimeout(db, operation) {
|
|
|
416
577
|
try {
|
|
417
578
|
return operation();
|
|
418
579
|
} catch (error) {
|
|
419
|
-
if (lease &&
|
|
420
|
-
throw new
|
|
580
|
+
if (lease && isTransientSqliteError2(error))
|
|
581
|
+
throw new SqliteAcquisitionBusyError2(error, "autocommit");
|
|
421
582
|
throw error;
|
|
422
583
|
} finally {
|
|
423
584
|
if (lease)
|
|
@@ -427,7 +588,7 @@ function withAutocommitTimeout(db, operation) {
|
|
|
427
588
|
}
|
|
428
589
|
}
|
|
429
590
|
function acquireShort(db, acquire, site) {
|
|
430
|
-
|
|
591
|
+
assertTransformWrite2();
|
|
431
592
|
const started = performance.now();
|
|
432
593
|
const previous = pragmaNumber(db, "busy_timeout");
|
|
433
594
|
const outer = writerAcquisitionScope.getStore();
|
|
@@ -444,8 +605,8 @@ function acquireShort(db, acquire, site) {
|
|
|
444
605
|
acquire();
|
|
445
606
|
acquiredAt = performance.now();
|
|
446
607
|
} catch (error) {
|
|
447
|
-
if (transformPassScope.getStore()?.active &&
|
|
448
|
-
throw new
|
|
608
|
+
if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
|
|
609
|
+
throw new SqliteAcquisitionBusyError2(error, site);
|
|
449
610
|
throw error;
|
|
450
611
|
} finally {
|
|
451
612
|
const attemptMs = (acquiredAt ?? performance.now()) - started;
|
|
@@ -469,23 +630,25 @@ function acquireShort(db, acquire, site) {
|
|
|
469
630
|
}
|
|
470
631
|
function endWriterTransaction(db, end, sql) {
|
|
471
632
|
let ended = false;
|
|
633
|
+
const endStarted = performance.now();
|
|
472
634
|
try {
|
|
473
635
|
const result = end();
|
|
474
636
|
ended = true;
|
|
475
637
|
return result;
|
|
476
638
|
} finally {
|
|
477
639
|
const open = openWriterTransactions.get(db);
|
|
640
|
+
const endMs = performance.now() - endStarted;
|
|
478
641
|
if (open && !isInTransaction(db)) {
|
|
479
642
|
openWriterTransactions.delete(db);
|
|
480
643
|
const holdMs = performance.now() - open.acquiredAt;
|
|
481
644
|
if (open.acquireMs >= SLOW_WRITER_LOG_MS || holdMs >= SLOW_WRITER_LOG_MS) {
|
|
482
645
|
const outcome = /^\s*ROLLBACK/i.test(sql) ? "rolled_back" : ended ? "committed" : "failed";
|
|
483
|
-
reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} attempts=${open.attempts} outcome=${outcome}`);
|
|
646
|
+
reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} end_ms=${Math.round(endMs)} attempts=${open.attempts} outcome=${outcome}`);
|
|
484
647
|
}
|
|
485
648
|
}
|
|
486
649
|
}
|
|
487
650
|
}
|
|
488
|
-
async function
|
|
651
|
+
async function beginSqliteWriterAsync2(db, site) {
|
|
489
652
|
const started = performance.now();
|
|
490
653
|
let attempts = 0;
|
|
491
654
|
for (;; ) {
|
|
@@ -498,10 +661,10 @@ async function beginSqliteWriterAsync(db, site) {
|
|
|
498
661
|
attempts,
|
|
499
662
|
claimed: false
|
|
500
663
|
};
|
|
501
|
-
writerAcquisitionScope.run(acquisition, () =>
|
|
664
|
+
writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter2(() => db.exec("BEGIN IMMEDIATE")));
|
|
502
665
|
return performance.now();
|
|
503
666
|
} catch (error) {
|
|
504
|
-
if (!
|
|
667
|
+
if (!isTransientSqliteError2(error))
|
|
505
668
|
throw error;
|
|
506
669
|
const elapsed = performance.now() - started;
|
|
507
670
|
if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
|
|
@@ -512,7 +675,7 @@ async function beginSqliteWriterAsync(db, site) {
|
|
|
512
675
|
}
|
|
513
676
|
}
|
|
514
677
|
}
|
|
515
|
-
async function
|
|
678
|
+
async function withAsyncPrivilegedWriter2(db, operation, options = {}) {
|
|
516
679
|
const started = performance.now();
|
|
517
680
|
const budgetMs = Math.max(0, Math.min(FOREGROUND_ACQUISITION_BUDGET_MS, options.budgetMs ?? Infinity));
|
|
518
681
|
let attempts = 0;
|
|
@@ -530,12 +693,12 @@ async function withAsyncPrivilegedWriter(db, operation, options = {}) {
|
|
|
530
693
|
claimed: false,
|
|
531
694
|
remainingMs: () => Math.max(0, budgetMs - (performance.now() - started))
|
|
532
695
|
};
|
|
533
|
-
return admissionScope.run(true, () =>
|
|
696
|
+
return admissionScope.run(true, () => withSqliteTransformPass2(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter2(db, () => {
|
|
534
697
|
entered = true;
|
|
535
698
|
return operation();
|
|
536
699
|
}))));
|
|
537
700
|
} catch (error) {
|
|
538
|
-
if (entered || !(error instanceof
|
|
701
|
+
if (entered || !(error instanceof SqliteAcquisitionBusyError2))
|
|
539
702
|
throw error;
|
|
540
703
|
options.beforeRetry?.(error);
|
|
541
704
|
const elapsed = performance.now() - started;
|
|
@@ -566,7 +729,7 @@ function isInTransaction(db) {
|
|
|
566
729
|
const candidate = db;
|
|
567
730
|
return candidate.inTransaction === true || candidate.isTransaction === true;
|
|
568
731
|
}
|
|
569
|
-
function
|
|
732
|
+
function withPrivilegedWriter2(db, operation) {
|
|
570
733
|
const previousDepth = privilegeDepth.get(db) ?? 0;
|
|
571
734
|
const nested = isInTransaction(db);
|
|
572
735
|
const savepoint = "mc_privilege_scope";
|
|
@@ -577,8 +740,8 @@ function withPrivilegedWriter(db, operation) {
|
|
|
577
740
|
try {
|
|
578
741
|
db.exec("BEGIN IMMEDIATE");
|
|
579
742
|
} catch (error) {
|
|
580
|
-
if (transformPassScope.getStore()?.active &&
|
|
581
|
-
throw new
|
|
743
|
+
if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
|
|
744
|
+
throw new SqliteAcquisitionBusyError2(error);
|
|
582
745
|
throw error;
|
|
583
746
|
}
|
|
584
747
|
transactionStartedAt = performance.now();
|
|
@@ -620,5 +783,59 @@ function withPrivilegedWriter(db, operation) {
|
|
|
620
783
|
throw error;
|
|
621
784
|
}
|
|
622
785
|
}
|
|
786
|
+
var indexCoordinationKey = Symbol.for("magic-context.index-foreground-coordination.v1");
|
|
787
|
+
var indexCoordinationHeap = globalThis;
|
|
788
|
+
var indexCoordinationBuffer = indexCoordinationHeap[indexCoordinationKey] ?? new SharedArrayBuffer(3 * Int32Array.BYTES_PER_ELEMENT);
|
|
789
|
+
indexCoordinationHeap[indexCoordinationKey] = indexCoordinationBuffer;
|
|
790
|
+
var indexCoordinationState = new Int32Array(indexCoordinationBuffer);
|
|
791
|
+
function indexCoordinationInput2() {
|
|
792
|
+
return {
|
|
793
|
+
indexCoordination: indexCoordinationBuffer,
|
|
794
|
+
indexOwner: Atomics.add(indexCoordinationState, 2, 1) + 1
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
var yieldIndexTurn = () => new Promise((resolve) => setTimeout(resolve, 1));
|
|
798
|
+
function reserveForegroundSqliteTurn() {
|
|
799
|
+
Atomics.add(indexCoordinationState, 0, 1);
|
|
800
|
+
const release = () => {
|
|
801
|
+
Atomics.sub(indexCoordinationState, 0, 1);
|
|
802
|
+
Atomics.notify(indexCoordinationState, 0);
|
|
803
|
+
};
|
|
804
|
+
if (Atomics.load(indexCoordinationState, 1) === 0)
|
|
805
|
+
return release;
|
|
806
|
+
return (async () => {
|
|
807
|
+
while (Atomics.load(indexCoordinationState, 1) !== 0)
|
|
808
|
+
await yieldIndexTurn();
|
|
809
|
+
return release;
|
|
810
|
+
})();
|
|
811
|
+
}
|
|
812
|
+
function releaseIndexOwner2(input) {
|
|
813
|
+
if (!input.indexCoordination || !input.indexOwner)
|
|
814
|
+
return;
|
|
815
|
+
const shared = new Int32Array(input.indexCoordination);
|
|
816
|
+
Atomics.compareExchange(shared, 1, input.indexOwner, 0);
|
|
817
|
+
Atomics.notify(shared, 1);
|
|
818
|
+
}
|
|
819
|
+
async function withIndexChunk2(input, operation) {
|
|
820
|
+
if (!input.indexCoordination || !input.indexOwner)
|
|
821
|
+
return operation();
|
|
822
|
+
const shared = new Int32Array(input.indexCoordination);
|
|
823
|
+
for (;; ) {
|
|
824
|
+
if (Atomics.load(shared, 0) === 0 && Atomics.compareExchange(shared, 1, 0, input.indexOwner) === 0) {
|
|
825
|
+
if (Atomics.load(shared, 0) === 0)
|
|
826
|
+
break;
|
|
827
|
+
releaseIndexOwner2(input);
|
|
828
|
+
}
|
|
829
|
+
await yieldIndexTurn();
|
|
830
|
+
}
|
|
831
|
+
try {
|
|
832
|
+
return await operation();
|
|
833
|
+
} finally {
|
|
834
|
+
releaseIndexOwner2(input);
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
async function yieldIndexChunk2() {
|
|
838
|
+
await yieldIndexTurn();
|
|
839
|
+
}
|
|
623
840
|
|
|
624
|
-
export {
|
|
841
|
+
export { registerSlowWriteReporter2, registerSqliteDiagnosticSink2, detectSqliteRuntime2, getTagIdentityWriteGeneration2, Database2, getSqliteDatabasePath2, getSqliteMemoryStats2, prepareCachedStatement2, withSqliteBackgroundWriter2, withSqliteTransformPass2, withoutSqliteTransformPass2, assertTransformWrite2, isTransientSqliteError2, SqliteAcquisitionBusyError2, beginSqliteWriterAsync2, withAsyncPrivilegedWriter2, withPrivilegedWriter2, indexCoordinationInput2, releaseIndexOwner2, withIndexChunk2, yieldIndexChunk2 };
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
// src/shared/protected-tools-policy.ts
|
|
2
|
-
var DEFAULT_PROTECTED_TOOLS = {
|
|
3
|
-
todowrite: 1,
|
|
4
|
-
ctx_reduce: 3
|
|
5
|
-
};
|
|
6
|
-
function normalizeProtectedToolName(name) {
|
|
7
|
-
return (name ?? "").toLowerCase().replace(/^mcp_/, "");
|
|
8
|
-
}
|
|
9
|
-
function mergeProtectedTools(...maps) {
|
|
10
|
-
return Object.fromEntries([DEFAULT_PROTECTED_TOOLS, ...maps].flatMap((map) => Object.entries(map ?? {}).map(([name, count]) => [
|
|
11
|
-
normalizeProtectedToolName(name),
|
|
12
|
-
count
|
|
13
|
-
])));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
1
|
// src/shared/historian-tool-template.ts
|
|
17
2
|
class Parser {
|
|
18
3
|
source;
|
|
@@ -241,4 +226,4 @@ function renderToolTemplate(source, input, output, legacyPreview = false) {
|
|
|
241
226
|
return truncate(render(bareOutputNodes, root, legacyPreview), legacyPreview ? 1000 : undefined, legacyPreview);
|
|
242
227
|
}
|
|
243
228
|
|
|
244
|
-
export { toolTemplateError, renderToolTemplate
|
|
229
|
+
export { toolTemplateError, renderToolTemplate };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/shared/harness.ts
|
|
2
|
+
var currentHarness = "opencode";
|
|
3
|
+
var harnessLocked = false;
|
|
4
|
+
function setHarness2(value) {
|
|
5
|
+
if (harnessLocked && currentHarness !== value) {
|
|
6
|
+
throw new Error(`Magic Context: harness already locked to "${currentHarness}"; cannot change to "${value}"`);
|
|
7
|
+
}
|
|
8
|
+
currentHarness = value;
|
|
9
|
+
harnessLocked = true;
|
|
10
|
+
}
|
|
11
|
+
function getHarness2() {
|
|
12
|
+
return currentHarness;
|
|
13
|
+
}
|
|
14
|
+
function harnessOwnsOpenCodeStore2(harness = currentHarness) {
|
|
15
|
+
return harness === "opencode" || harness === "opencode2";
|
|
16
|
+
}
|
|
17
|
+
export { setHarness2, getHarness2, harnessOwnsOpenCodeStore2 };
|