@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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"opencode/full": "ee8313665a36e94be315b564c3959c21644c6b13a6e80de86aff8492a7948248",
|
|
3
|
+
"pi/full": "06d5cdfa5922dc889f8924e40ed60a76055b6f008614f552c11249dbba7ccf32",
|
|
4
|
+
"guidance/full/false/false/false/false": "5fd6f9d5ceadc9afb6c2e5f6f1359ee0fb51d03afa17d002a503a9958941fa84",
|
|
5
|
+
"pi-guidance/full/false/false/false/false": "5fd6f9d5ceadc9afb6c2e5f6f1359ee0fb51d03afa17d002a503a9958941fa84",
|
|
6
|
+
"guidance/full/false/false/false/true": "c07904e2985b91a3bfec547cbd3e6aa3b6eee9e2d0fed49df2aa701bbc927998",
|
|
7
|
+
"pi-guidance/full/false/false/false/true": "c07904e2985b91a3bfec547cbd3e6aa3b6eee9e2d0fed49df2aa701bbc927998",
|
|
8
|
+
"guidance/full/false/false/true/false": "5d2a13e49719520f4282b4cba6c234eed5882eae7d656e5f7fb98e7d3905ebb5",
|
|
9
|
+
"pi-guidance/full/false/false/true/false": "5d2a13e49719520f4282b4cba6c234eed5882eae7d656e5f7fb98e7d3905ebb5",
|
|
10
|
+
"guidance/full/false/false/true/true": "5ba23e90d969f1a25f51e7de836601156be6353ec8d7a1361f34a5961436146a",
|
|
11
|
+
"pi-guidance/full/false/false/true/true": "5ba23e90d969f1a25f51e7de836601156be6353ec8d7a1361f34a5961436146a",
|
|
12
|
+
"guidance/full/false/true/false/false": "3a398d32bc9eea87978aca46679149ff2d7f37ee42e3bdedad3c500505cbf400",
|
|
13
|
+
"pi-guidance/full/false/true/false/false": "3a398d32bc9eea87978aca46679149ff2d7f37ee42e3bdedad3c500505cbf400",
|
|
14
|
+
"guidance/full/false/true/false/true": "eec86c8a69bff34341b30398dc526945ad20648e3b1cb4b67c058dc1dbf98ef8",
|
|
15
|
+
"pi-guidance/full/false/true/false/true": "eec86c8a69bff34341b30398dc526945ad20648e3b1cb4b67c058dc1dbf98ef8",
|
|
16
|
+
"guidance/full/false/true/true/false": "ad7927d9deb91b2ca5c357ff6bd8d932619f90cb8cdf39e27ec6bc6742ed7763",
|
|
17
|
+
"pi-guidance/full/false/true/true/false": "ad7927d9deb91b2ca5c357ff6bd8d932619f90cb8cdf39e27ec6bc6742ed7763",
|
|
18
|
+
"guidance/full/false/true/true/true": "569aeb5e7a7132c89e4b0b78e7ecc1791b14d530a659d7334eff67e54ad14ae8",
|
|
19
|
+
"pi-guidance/full/false/true/true/true": "569aeb5e7a7132c89e4b0b78e7ecc1791b14d530a659d7334eff67e54ad14ae8",
|
|
20
|
+
"guidance/full/true/false/false/false": "f1f0a1c4df72890afdefcb08db70ecdb3cdba8c61b0a9c56b3e1370cca598d26",
|
|
21
|
+
"pi-guidance/full/true/false/false/false": "f1f0a1c4df72890afdefcb08db70ecdb3cdba8c61b0a9c56b3e1370cca598d26",
|
|
22
|
+
"guidance/full/true/false/false/true": "b53542325bb0e5d69adf12e098d8e45e6f73990770a06536545bb13b56872444",
|
|
23
|
+
"pi-guidance/full/true/false/false/true": "b53542325bb0e5d69adf12e098d8e45e6f73990770a06536545bb13b56872444",
|
|
24
|
+
"guidance/full/true/false/true/false": "c6081025c0af192d6f63d6d6f1ebeee1f1e134f8174d90de643d3b156c84b5e9",
|
|
25
|
+
"pi-guidance/full/true/false/true/false": "c6081025c0af192d6f63d6d6f1ebeee1f1e134f8174d90de643d3b156c84b5e9",
|
|
26
|
+
"guidance/full/true/false/true/true": "c8ee6b3237719e4c908241e651f36aa90562ee54a4854b5f5d3ec87e99605db5",
|
|
27
|
+
"pi-guidance/full/true/false/true/true": "c8ee6b3237719e4c908241e651f36aa90562ee54a4854b5f5d3ec87e99605db5",
|
|
28
|
+
"guidance/full/true/true/false/false": "e46393931592b92a96d887a634f11c8970239e753f245c777ff43583356dc73a",
|
|
29
|
+
"pi-guidance/full/true/true/false/false": "e46393931592b92a96d887a634f11c8970239e753f245c777ff43583356dc73a",
|
|
30
|
+
"guidance/full/true/true/false/true": "34e98b5c45d9dfc97ce50bb08d62a5064dc628dd371e4289b5f3c0b9a108b335",
|
|
31
|
+
"pi-guidance/full/true/true/false/true": "34e98b5c45d9dfc97ce50bb08d62a5064dc628dd371e4289b5f3c0b9a108b335",
|
|
32
|
+
"guidance/full/true/true/true/false": "77aaa97847d1cf96b947664a48656cb32ae9c0354882746c2e9961785acc5ce3",
|
|
33
|
+
"pi-guidance/full/true/true/true/false": "77aaa97847d1cf96b947664a48656cb32ae9c0354882746c2e9961785acc5ce3",
|
|
34
|
+
"guidance/full/true/true/true/true": "224fe7ba3904c53b0fa22d079ec7cb7c4a132d8092dade80a86c44d56f588831",
|
|
35
|
+
"pi-guidance/full/true/true/true/true": "224fe7ba3904c53b0fa22d079ec7cb7c4a132d8092dade80a86c44d56f588831",
|
|
36
|
+
"opencode/light": "203313946dd10c99b0e8ae9ddd47bd3f5d7568d6571eb189babb7cb59ef6a2f0",
|
|
37
|
+
"pi/light": "2ab9c355546c723f51df122a04d325ab7e0c700078c30e44452a5eee3d7e37ee",
|
|
38
|
+
"guidance/light/false/false/false/false": "a8713eda6b4d8888f584a9740b69b72c57f1cdff04bc675844c1caa0c95557d7",
|
|
39
|
+
"pi-guidance/light/false/false/false/false": "a8713eda6b4d8888f584a9740b69b72c57f1cdff04bc675844c1caa0c95557d7",
|
|
40
|
+
"guidance/light/false/false/false/true": "7a99730b51c8dd094d052288bb54f9d1b2563ade3cbfafa190496b6fe18e461c",
|
|
41
|
+
"pi-guidance/light/false/false/false/true": "7a99730b51c8dd094d052288bb54f9d1b2563ade3cbfafa190496b6fe18e461c",
|
|
42
|
+
"guidance/light/false/false/true/false": "1a866792b99c84f884941c6a5b269c5df9af394f1bbcba8893a7ea7a60ccd6e0",
|
|
43
|
+
"pi-guidance/light/false/false/true/false": "1a866792b99c84f884941c6a5b269c5df9af394f1bbcba8893a7ea7a60ccd6e0",
|
|
44
|
+
"guidance/light/false/false/true/true": "468fa55f0a35d503787bce7829352e522ef577cd9869b6c14eeb8c8c810c18e5",
|
|
45
|
+
"pi-guidance/light/false/false/true/true": "468fa55f0a35d503787bce7829352e522ef577cd9869b6c14eeb8c8c810c18e5",
|
|
46
|
+
"guidance/light/false/true/false/false": "e57d504f74b82f22ae334424accfee415638e266e14f960f1fabd30d5729aca9",
|
|
47
|
+
"pi-guidance/light/false/true/false/false": "e57d504f74b82f22ae334424accfee415638e266e14f960f1fabd30d5729aca9",
|
|
48
|
+
"guidance/light/false/true/false/true": "c8ed1794cf9ad0d3b3f0bf8e1372e5993f83d860c3459f05727c241444101ad4",
|
|
49
|
+
"pi-guidance/light/false/true/false/true": "c8ed1794cf9ad0d3b3f0bf8e1372e5993f83d860c3459f05727c241444101ad4",
|
|
50
|
+
"guidance/light/false/true/true/false": "bab2bf005b8faa918f91cb280678e571329095ba3d02212fd5360eea3aeb06d5",
|
|
51
|
+
"pi-guidance/light/false/true/true/false": "bab2bf005b8faa918f91cb280678e571329095ba3d02212fd5360eea3aeb06d5",
|
|
52
|
+
"guidance/light/false/true/true/true": "985cc5f091691be624e9e493268cafbf543b39e4eccb67f9cdfb12be75d5543a",
|
|
53
|
+
"pi-guidance/light/false/true/true/true": "985cc5f091691be624e9e493268cafbf543b39e4eccb67f9cdfb12be75d5543a",
|
|
54
|
+
"guidance/light/true/false/false/false": "6fd77355947d510c275f593b87fc013c2ccac439bd3db6ac2f5c1160cb755626",
|
|
55
|
+
"pi-guidance/light/true/false/false/false": "6fd77355947d510c275f593b87fc013c2ccac439bd3db6ac2f5c1160cb755626",
|
|
56
|
+
"guidance/light/true/false/false/true": "8ea26079e952c2cf10730070d46ee072ed0c1346fd41cf4bbfd3cd222dfc4b3b",
|
|
57
|
+
"pi-guidance/light/true/false/false/true": "8ea26079e952c2cf10730070d46ee072ed0c1346fd41cf4bbfd3cd222dfc4b3b",
|
|
58
|
+
"guidance/light/true/false/true/false": "0c18e3350478eac6f4f412def32bb0373bf4e34e028c22db0aa764afbab8d9b5",
|
|
59
|
+
"pi-guidance/light/true/false/true/false": "0c18e3350478eac6f4f412def32bb0373bf4e34e028c22db0aa764afbab8d9b5",
|
|
60
|
+
"guidance/light/true/false/true/true": "b6c622ace8b3a722750f13930ef27bf849ee2b06fa49a4d70095b7d98a08da8b",
|
|
61
|
+
"pi-guidance/light/true/false/true/true": "b6c622ace8b3a722750f13930ef27bf849ee2b06fa49a4d70095b7d98a08da8b",
|
|
62
|
+
"guidance/light/true/true/false/false": "d4da84246319941f74b26e7fbf569d875fe66f3b336b3e43c1dbca1906c895e0",
|
|
63
|
+
"pi-guidance/light/true/true/false/false": "d4da84246319941f74b26e7fbf569d875fe66f3b336b3e43c1dbca1906c895e0",
|
|
64
|
+
"guidance/light/true/true/false/true": "155ced931db6255047bc9122452f6eb0dbd83d3bc6160d6295ca26a3f5baac15",
|
|
65
|
+
"pi-guidance/light/true/true/false/true": "155ced931db6255047bc9122452f6eb0dbd83d3bc6160d6295ca26a3f5baac15",
|
|
66
|
+
"guidance/light/true/true/true/false": "bf0bd6e2b793b580560ce9bb18d039ac375abec3a09a986dc406b081b5ad9079",
|
|
67
|
+
"pi-guidance/light/true/true/true/false": "bf0bd6e2b793b580560ce9bb18d039ac375abec3a09a986dc406b081b5ad9079",
|
|
68
|
+
"guidance/light/true/true/true/true": "6e94bb838eba4d1ebe6ae6205f90fb45589dcce3af6352baa1466eeca437f652",
|
|
69
|
+
"pi-guidance/light/true/true/true/true": "6e94bb838eba4d1ebe6ae6205f90fb45589dcce3af6352baa1466eeca437f652"
|
|
70
|
+
}
|
package/src/config/index.test.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { resolveEpochFloorForPass } from "../features/magic-context/storage-meta-persisted";
|
|
6
6
|
import { buildOpenCodeConfigWarningBanner } from "../shared/config-warning-surface";
|
|
7
|
-
import { resolveHistorianModel } from "../shared/model-resolution";
|
|
7
|
+
import { resolveDreamerTaskModel, resolveHistorianModel } from "../shared/model-resolution";
|
|
8
8
|
import { Database } from "../shared/sqlite";
|
|
9
9
|
import { createTestTempDir, createTestTempDirFromPath } from "../shared/test-temp-dir";
|
|
10
10
|
import {
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
setWindowOverlayPath,
|
|
14
14
|
} from "../shared/window-geometry";
|
|
15
15
|
import { loadPluginConfig, loadPluginConfigDetailed } from "./index";
|
|
16
|
+
import { MURAL_MODEL_DEPRECATION_WARNING } from "./mural-model-deprecation";
|
|
16
17
|
import { resolveConfigProfile } from "./profiles";
|
|
17
18
|
import { getProtectedTokensTierOverrides } from "./project-security";
|
|
18
19
|
import { REMOVED_AGENT_CONFIG_WARNING } from "./removed-agent-config";
|
|
@@ -269,6 +270,71 @@ describe("loadPluginConfig — graduated mural config", () => {
|
|
|
269
270
|
expect.stringContaining('Deprecated "experimental.mural"'),
|
|
270
271
|
);
|
|
271
272
|
});
|
|
273
|
+
|
|
274
|
+
it("loads a config with the retired mural.model, warns once, and leaves compress-cues on the dreamer model", () => {
|
|
275
|
+
const result = loadWithUserConfig(
|
|
276
|
+
JSON.stringify({
|
|
277
|
+
mural: { enabled: true, model: "google/antigravity-gemini-3.8-flash" },
|
|
278
|
+
dreamer: {
|
|
279
|
+
opencode: { model: "open/dreamer-default" },
|
|
280
|
+
pi: { model: "pi/dreamer-default" },
|
|
281
|
+
},
|
|
282
|
+
}),
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
expect(result.mural.enabled).toBe(true);
|
|
286
|
+
expect(
|
|
287
|
+
(result.configWarnings ?? []).filter((w) =>
|
|
288
|
+
w.endsWith(MURAL_MODEL_DEPRECATION_WARNING),
|
|
289
|
+
),
|
|
290
|
+
).toHaveLength(1);
|
|
291
|
+
expect(MURAL_MODEL_DEPRECATION_WARNING).toContain("mural.model");
|
|
292
|
+
expect(
|
|
293
|
+
resolveDreamerTaskModel({ config: result, harness: "opencode", task: "compress-cues" })
|
|
294
|
+
.primary,
|
|
295
|
+
).toEqual({ model: "open/dreamer-default" });
|
|
296
|
+
expect(
|
|
297
|
+
resolveDreamerTaskModel({ config: result, harness: "pi", task: "compress-cues" })
|
|
298
|
+
.primary,
|
|
299
|
+
).toEqual({ model: "pi/dreamer-default" });
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it("emits no mural.model warning when the key is absent", () => {
|
|
303
|
+
const result = loadWithUserConfig(JSON.stringify({ mural: { enabled: true } }));
|
|
304
|
+
|
|
305
|
+
expect((result.configWarnings ?? []).some((w) => w.includes("mural.model"))).toBe(false);
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it("lets a project choose the compress-cues task model like any other dreamer task model", () => {
|
|
309
|
+
const result = loadWithUserAndProjectConfig(
|
|
310
|
+
JSON.stringify({ dreamer: { opencode: { model: "open/user-default" } } }),
|
|
311
|
+
JSON.stringify({
|
|
312
|
+
mural: { model: "repo/ignored" },
|
|
313
|
+
dreamer: {
|
|
314
|
+
opencode: {
|
|
315
|
+
tasks: {
|
|
316
|
+
"compress-cues": { model: "open/project-cues" },
|
|
317
|
+
curate: { model: "open/project-curate" },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
}),
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
expect(
|
|
325
|
+
resolveDreamerTaskModel({ config: result, harness: "opencode", task: "compress-cues" })
|
|
326
|
+
.primary,
|
|
327
|
+
).toEqual({ model: "open/project-cues" });
|
|
328
|
+
expect(
|
|
329
|
+
resolveDreamerTaskModel({ config: result, harness: "opencode", task: "curate" })
|
|
330
|
+
.primary,
|
|
331
|
+
).toEqual({ model: "open/project-curate" });
|
|
332
|
+
expect(
|
|
333
|
+
(result.configWarnings ?? []).filter((w) =>
|
|
334
|
+
w.endsWith(MURAL_MODEL_DEPRECATION_WARNING),
|
|
335
|
+
),
|
|
336
|
+
).toHaveLength(1);
|
|
337
|
+
});
|
|
272
338
|
});
|
|
273
339
|
|
|
274
340
|
describe("loadPluginConfig — transform mode resolution", () => {
|
package/src/config/index.ts
CHANGED
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
} from "./migrate-config-location";
|
|
26
26
|
import { migrateDreamerV2 } from "./migrate-dreamer-v2";
|
|
27
27
|
import { migrateLegacyExperimental } from "./migrate-experimental";
|
|
28
|
+
import { warnDeprecatedMuralModel } from "./mural-model-deprecation";
|
|
28
29
|
import { resolveConfigProfile } from "./profiles";
|
|
29
30
|
import {
|
|
30
31
|
attachProtectedTokensTierOverrides,
|
|
@@ -437,6 +438,7 @@ export function parsePluginConfig(
|
|
|
437
438
|
configWithoutRemovedAgent,
|
|
438
439
|
preMigrationWarnings,
|
|
439
440
|
);
|
|
441
|
+
warnDeprecatedMuralModel(migratedExperimental, preMigrationWarnings);
|
|
440
442
|
// Dreamer v2: convert the legacy v1 dreamer shape (window schedule, tasks
|
|
441
443
|
// array, user_memories/pin_key_files blocks) into the per-task `tasks` record.
|
|
442
444
|
// Runs AFTER migrate-experimental so experimental.user_memories (already
|
|
@@ -53,6 +53,10 @@ const KNOWN_SLOTS: Record<string, KnownSlot> = {
|
|
|
53
53
|
classification: "VERDICT",
|
|
54
54
|
reason: "Correct: circuit state expires and a half-open probe re-evaluates the endpoint.",
|
|
55
55
|
},
|
|
56
|
+
"packages/plugin/src/hooks/magic-context/raw-ordinal-warmup.ts:exitHookRegistered": {
|
|
57
|
+
classification: "PUBLICATION",
|
|
58
|
+
reason: "Correct: records that the one process-exit handler stopping canonical-ordinal warm-up workers is installed; it holds no failure or absence verdict.",
|
|
59
|
+
},
|
|
56
60
|
"packages/plugin/src/features/magic-context/memory/project-identity.ts:homeProjectPermission": {
|
|
57
61
|
classification: "VERDICT",
|
|
58
62
|
reason: "Boot config publishes the home-project permission; the setter replaces it on another host initialization, while explicit resolution arguments override it.",
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mural.model` used to name one cue-compressor model shared by every harness.
|
|
3
|
+
* Model ids differ per harness (OpenCode and Pi spell the same model with
|
|
4
|
+
* different provider prefixes), so a single string could not name a working
|
|
5
|
+
* model on every host. compress-cues now resolves through each harness's
|
|
6
|
+
* dreamer settings like every other dreamer task, and the key is ignored.
|
|
7
|
+
*/
|
|
8
|
+
export const MURAL_MODEL_DEPRECATION_WARNING =
|
|
9
|
+
"mural.model is deprecated and ignored; compress-cues now uses the dreamer model for each harness, like every other dreamer task. To override it, set dreamer.opencode.tasks.compress-cues.model (or the pi/omp equivalent). This key no longer does anything; remove it.";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Pushes the deprecation warning when the config still sets `mural.model`.
|
|
13
|
+
* Call it after the legacy experimental migration so the pre-graduation
|
|
14
|
+
* `experimental.mural.model` spelling is reported the same way.
|
|
15
|
+
*/
|
|
16
|
+
export function warnDeprecatedMuralModel(
|
|
17
|
+
config: Record<string, unknown>,
|
|
18
|
+
warnings: string[],
|
|
19
|
+
): void {
|
|
20
|
+
const mural = config.mural;
|
|
21
|
+
if (typeof mural === "object" && mural !== null && Object.hasOwn(mural, "model")) {
|
|
22
|
+
warnings.push(MURAL_MODEL_DEPRECATION_WARNING);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -112,7 +112,6 @@ function ocTaskBlock(): Record<string, unknown> {
|
|
|
112
112
|
fallback_models: [ocEntry()],
|
|
113
113
|
variant: "task-variant",
|
|
114
114
|
timeout_minutes: 45,
|
|
115
|
-
mural: { model: "hostile/task-mural" },
|
|
116
115
|
...ESCALATION_VALUE,
|
|
117
116
|
};
|
|
118
117
|
}
|
|
@@ -123,14 +122,13 @@ function piTaskBlock(): Record<string, unknown> {
|
|
|
123
122
|
fallback_models: [piEntry()],
|
|
124
123
|
thinking_level: "high",
|
|
125
124
|
timeout_minutes: 45,
|
|
126
|
-
mural: { model: "hostile/task-mural" },
|
|
127
125
|
...ESCALATION_VALUE,
|
|
128
126
|
};
|
|
129
127
|
}
|
|
130
128
|
|
|
131
129
|
/**
|
|
132
130
|
* One project-tier config that plants a value at every executable nested path
|
|
133
|
-
* the per-harness schema admits, plus smuggled escalation /
|
|
131
|
+
* the per-harness schema admits, plus smuggled escalation / extra
|
|
134
132
|
* fields at those same depths.
|
|
135
133
|
*/
|
|
136
134
|
function buildHostileProjectConfig(): Record<string, unknown> {
|
|
@@ -156,8 +154,7 @@ function buildHostileProjectConfig(): Record<string, unknown> {
|
|
|
156
154
|
historian: { opencode: { model: "hostile/profile-historian" } },
|
|
157
155
|
},
|
|
158
156
|
},
|
|
159
|
-
mural: { enabled: true
|
|
160
|
-
experimental: { mural: { enabled: true, model: "hostile/experimental-mural" } },
|
|
157
|
+
mural: { enabled: true },
|
|
161
158
|
historian: {
|
|
162
159
|
model: "hostile/flat-historian",
|
|
163
160
|
fallback_models: ["hostile/flat-fallback"],
|
|
@@ -170,21 +167,18 @@ function buildHostileProjectConfig(): Record<string, unknown> {
|
|
|
170
167
|
model: ocEntry(),
|
|
171
168
|
fallback_models: [ocEntry()],
|
|
172
169
|
variant: "hostile-historian-variant",
|
|
173
|
-
mural: { model: "hostile/historian-oc-mural" },
|
|
174
170
|
...ESCALATION_VALUE,
|
|
175
171
|
},
|
|
176
172
|
pi: {
|
|
177
173
|
model: piEntry(),
|
|
178
174
|
fallback_models: [piEntry()],
|
|
179
175
|
thinking_level: "max",
|
|
180
|
-
mural: { model: "hostile/historian-pi-mural" },
|
|
181
176
|
...ESCALATION_VALUE,
|
|
182
177
|
},
|
|
183
178
|
omp: {
|
|
184
179
|
model: piEntry(),
|
|
185
180
|
fallback_models: [piEntry()],
|
|
186
181
|
thinking_level: "auto",
|
|
187
|
-
mural: { model: "hostile/historian-omp-mural" },
|
|
188
182
|
...ESCALATION_VALUE,
|
|
189
183
|
},
|
|
190
184
|
},
|
|
@@ -197,7 +191,6 @@ function buildHostileProjectConfig(): Record<string, unknown> {
|
|
|
197
191
|
model: ocEntry(),
|
|
198
192
|
fallback_models: [ocEntry()],
|
|
199
193
|
variant: "hostile-dreamer-variant",
|
|
200
|
-
mural: { model: "hostile/dreamer-oc-mural" },
|
|
201
194
|
tasks: ocTasks,
|
|
202
195
|
...ESCALATION_VALUE,
|
|
203
196
|
},
|
|
@@ -205,7 +198,6 @@ function buildHostileProjectConfig(): Record<string, unknown> {
|
|
|
205
198
|
model: piEntry(),
|
|
206
199
|
fallback_models: [piEntry()],
|
|
207
200
|
thinking_level: "medium",
|
|
208
|
-
mural: { model: "hostile/dreamer-pi-mural" },
|
|
209
201
|
tasks: piTasks,
|
|
210
202
|
...ESCALATION_VALUE,
|
|
211
203
|
},
|
|
@@ -213,7 +205,6 @@ function buildHostileProjectConfig(): Record<string, unknown> {
|
|
|
213
205
|
model: piEntry(),
|
|
214
206
|
fallback_models: [piEntry()],
|
|
215
207
|
thinking_level: "auto",
|
|
216
|
-
mural: { model: "hostile/dreamer-omp-mural" },
|
|
217
208
|
tasks: ompTasks,
|
|
218
209
|
...ESCALATION_VALUE,
|
|
219
210
|
},
|
|
@@ -319,25 +310,6 @@ function nestedEscalationPaths(): string[] {
|
|
|
319
310
|
return paths;
|
|
320
311
|
}
|
|
321
312
|
|
|
322
|
-
function nestedMuralModelPaths(): string[] {
|
|
323
|
-
const paths = [
|
|
324
|
-
"mural.model",
|
|
325
|
-
"experimental.mural.model",
|
|
326
|
-
"historian.opencode.mural.model",
|
|
327
|
-
"historian.pi.mural.model",
|
|
328
|
-
"historian.omp.mural.model",
|
|
329
|
-
"dreamer.opencode.mural.model",
|
|
330
|
-
"dreamer.pi.mural.model",
|
|
331
|
-
"dreamer.omp.mural.model",
|
|
332
|
-
];
|
|
333
|
-
for (const task of CANONICAL_DREAM_TASKS) {
|
|
334
|
-
paths.push(`dreamer.opencode.tasks.${task}.mural.model`);
|
|
335
|
-
paths.push(`dreamer.pi.tasks.${task}.mural.model`);
|
|
336
|
-
paths.push(`dreamer.omp.tasks.${task}.mural.model`);
|
|
337
|
-
}
|
|
338
|
-
return paths;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
313
|
function loadWithUserAndProjectConfig(userConfigText: string, projectConfigText: string) {
|
|
342
314
|
const xdg = createTestTempDirFromPath(join(tmpdir(), "mc-hostile-user-"));
|
|
343
315
|
const projectDir = createTestTempDirFromPath(join(tmpdir(), "mc-hostile-proj-"));
|
|
@@ -422,21 +394,13 @@ describe("hostile-config stripping matrix", () => {
|
|
|
422
394
|
if (hasOwnPath(raw, path)) survived.push(`escalation:${path}`);
|
|
423
395
|
else removed.push(path);
|
|
424
396
|
}
|
|
425
|
-
for (const path of nestedMuralModelPaths()) {
|
|
426
|
-
if (hasOwnPath(raw, path)) survived.push(`mural:${path}`);
|
|
427
|
-
else removed.push(path);
|
|
428
|
-
}
|
|
429
397
|
|
|
430
398
|
expect(survived).toEqual([]);
|
|
431
399
|
expect(hasOwnPath(raw, "profiles")).toBe(false);
|
|
432
400
|
expect(readPath(raw, "profile")).toBe("work");
|
|
433
401
|
expect(warningText).toContain("Ignoring profiles from project config");
|
|
434
402
|
expect(removed.sort()).toEqual(
|
|
435
|
-
[
|
|
436
|
-
...historianUserOnlyPaths(),
|
|
437
|
-
...nestedEscalationPaths(),
|
|
438
|
-
...nestedMuralModelPaths(),
|
|
439
|
-
].sort(),
|
|
403
|
+
[...historianUserOnlyPaths(), ...nestedEscalationPaths()].sort(),
|
|
440
404
|
);
|
|
441
405
|
|
|
442
406
|
for (const path of dreamerKeepPaths()) {
|
|
@@ -467,11 +431,7 @@ describe("hostile-config stripping matrix", () => {
|
|
|
467
431
|
expect(readPath(raw, "dreamer.omp.tasks.verify.thinking_level")).toBe("high");
|
|
468
432
|
expect(readPath(raw, "dreamer.omp.tasks.verify.timeout_minutes")).toBe(45);
|
|
469
433
|
|
|
470
|
-
for (const path of [
|
|
471
|
-
...historianUserOnlyPaths(),
|
|
472
|
-
...nestedEscalationPaths(),
|
|
473
|
-
...nestedMuralModelPaths(),
|
|
474
|
-
]) {
|
|
434
|
+
for (const path of [...historianUserOnlyPaths(), ...nestedEscalationPaths()]) {
|
|
475
435
|
expect(warningText).toContain(path);
|
|
476
436
|
}
|
|
477
437
|
});
|
|
@@ -242,26 +242,21 @@ describe("stripUnsafeProjectConfigFields", () => {
|
|
|
242
242
|
expect(warning).toContain("historian.opencode.runner");
|
|
243
243
|
});
|
|
244
244
|
|
|
245
|
-
it("
|
|
245
|
+
it("leaves the ignored mural.model to the deprecation warning instead of a security strip", () => {
|
|
246
|
+
// mural.model no longer selects any model, so it is not a trust boundary;
|
|
247
|
+
// the compress-cues model is a dreamer task model like any other.
|
|
246
248
|
const raw: Record<string, unknown> = {
|
|
247
249
|
mural: { enabled: true, model: "repo-controlled-model" },
|
|
250
|
+
dreamer: { opencode: { tasks: { "compress-cues": { model: "repo/cue-model" } } } },
|
|
248
251
|
};
|
|
249
252
|
|
|
250
253
|
const warnings = stripUnsafeProjectConfigFields(raw);
|
|
251
254
|
|
|
252
|
-
expect(raw.mural).toEqual({ enabled: true });
|
|
253
|
-
expect(
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
const raw: Record<string, unknown> = {
|
|
258
|
-
experimental: { mural: { enabled: true, model: "repo-controlled-model" } },
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
const warnings = stripUnsafeProjectConfigFields(raw);
|
|
262
|
-
|
|
263
|
-
expect(raw.experimental).toEqual({ mural: { enabled: true } });
|
|
264
|
-
expect(warnings.some((w) => w.includes("experimental.mural.model"))).toBe(true);
|
|
255
|
+
expect(raw.mural).toEqual({ enabled: true, model: "repo-controlled-model" });
|
|
256
|
+
expect(raw.dreamer).toEqual({
|
|
257
|
+
opencode: { tasks: { "compress-cues": { model: "repo/cue-model" } } },
|
|
258
|
+
});
|
|
259
|
+
expect(warnings).toEqual([]);
|
|
265
260
|
});
|
|
266
261
|
|
|
267
262
|
it("strips hidden-agent prompt/permission/tools but keeps benign fields", () => {
|
|
@@ -48,6 +48,11 @@ const PROMPT_SURFACE_USER_ONLY_FIELDS = ["guidance_override_path", "tool_descrip
|
|
|
48
48
|
* on for an agent whose allow-list intentionally excludes it.
|
|
49
49
|
* Dreamer model/cadence fields are deliberately NOT stripped: a repo may tune
|
|
50
50
|
* its own dreamer overlays and schedules through the user's provider auth.
|
|
51
|
+
* Every dreamer task sends project memory to its model, so a repository that
|
|
52
|
+
* sets a dreamer model chooses where that memory goes; the project-tier allowance
|
|
53
|
+
* above accepts that. compress-cues follows the same rule: its model comes from
|
|
54
|
+
* dreamer.<harness>.tasks.compress-cues or the harness default, so a project
|
|
55
|
+
* can choose it exactly as it can for any other task.
|
|
51
56
|
* Historian model selection stays USER-tier only, and compaction thresholds are
|
|
52
57
|
* project raise-only, so a cloned repo cannot force earlier compaction or extra
|
|
53
58
|
* historian spend on the user's dime.
|
|
@@ -184,25 +189,6 @@ function stripEscalationAtExecutableSite(
|
|
|
184
189
|
}
|
|
185
190
|
}
|
|
186
191
|
|
|
187
|
-
/** Remove `mural.model` smuggled under hidden-agent trees. Top-level and
|
|
188
|
-
* experimental mural blocks are handled separately so their warnings stay
|
|
189
|
-
* specific; this walk covers harness and task nesting the schema does not
|
|
190
|
-
* admit but a hostile file can still write. */
|
|
191
|
-
function stripNestedMuralModels(
|
|
192
|
-
node: Record<string, unknown>,
|
|
193
|
-
path: string,
|
|
194
|
-
removed: string[],
|
|
195
|
-
): void {
|
|
196
|
-
for (const [key, value] of Object.entries(node)) {
|
|
197
|
-
if (key === "mural" && isPlainObject(value) && "model" in value) {
|
|
198
|
-
delete value.model;
|
|
199
|
-
removed.push(`${path}.${key}.model`);
|
|
200
|
-
} else if (isPlainObject(value)) {
|
|
201
|
-
stripNestedMuralModels(value, `${path}.${key}`, removed);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
192
|
// Must match the schema's execute_threshold_percentage range (20-90). A narrower
|
|
207
193
|
// range here let a valid project value of 81-90 skip the raise-only clamp and
|
|
208
194
|
// reach the merged config as-is, lowering a higher user threshold.
|
|
@@ -368,9 +354,6 @@ function makeProjectThresholdWarning(field: string, reason: string): string {
|
|
|
368
354
|
* provider account. `host_runner` is stripped for the same reason in the other
|
|
369
355
|
* direction: a repo must not switch this machine's pull loop on and start
|
|
370
356
|
* spending the user's provider account on folds.
|
|
371
|
-
* - `mural.model` at the top-level block, the legacy experimental spelling,
|
|
372
|
-
* and any nested `mural.model` under hidden agents — a cloned repo cannot
|
|
373
|
-
* choose where project memory is sent.
|
|
374
357
|
* - `pi.subagent_extensions` — a cloned repo must not choose which extensions
|
|
375
358
|
* the user's Pi child processes load.
|
|
376
359
|
* - `prompt_surface.guidance_override_path` / `tool_descriptions` — a repository
|
|
@@ -472,6 +455,14 @@ export function stripUnsafeProjectConfigFields(projectRaw: Record<string, unknow
|
|
|
472
455
|
);
|
|
473
456
|
}
|
|
474
457
|
|
|
458
|
+
const smartNotes = projectRaw.smart_notes;
|
|
459
|
+
if (isPlainObject(smartNotes) && "enabled" in smartNotes) {
|
|
460
|
+
delete smartNotes.enabled;
|
|
461
|
+
warnings.push(
|
|
462
|
+
"Ignoring smart_notes.enabled from project config (only user-level config may change process-wide tool definitions; restart required).",
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
|
|
475
466
|
// Repositories may select preset routing, but project settings cannot add
|
|
476
467
|
// guidance or tool-description text to the provider-visible prompt; those
|
|
477
468
|
// user-only fields are removed before project settings are merged.
|
|
@@ -606,39 +597,6 @@ export function stripUnsafeProjectConfigFields(projectRaw: Record<string, unknow
|
|
|
606
597
|
);
|
|
607
598
|
}
|
|
608
599
|
|
|
609
|
-
const mural = projectRaw.mural;
|
|
610
|
-
if (isPlainObject(mural) && "model" in mural) {
|
|
611
|
-
delete mural.model;
|
|
612
|
-
warnings.push(
|
|
613
|
-
"Ignoring mural.model from project config (security: the mural cue-compressor model is a user-level setting; a repository cannot choose where project memory is sent).",
|
|
614
|
-
);
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
// Keep the same trust boundary while accepting the pre-graduation spelling.
|
|
618
|
-
// This must run before the in-memory migration moves experimental.mural.model
|
|
619
|
-
// to mural.model, otherwise an untrusted project could bypass the user-only
|
|
620
|
-
// model check.
|
|
621
|
-
const experimental = projectRaw.experimental;
|
|
622
|
-
const legacyMural = isPlainObject(experimental) ? experimental.mural : undefined;
|
|
623
|
-
if (isPlainObject(legacyMural) && "model" in legacyMural) {
|
|
624
|
-
delete legacyMural.model;
|
|
625
|
-
warnings.push(
|
|
626
|
-
"Ignoring experimental.mural.model from project config (security: the mural cue-compressor model is a user-level setting; use user-level mural.model).",
|
|
627
|
-
);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
const nestedMuralRemoved: string[] = [];
|
|
631
|
-
for (const agentKey of HIDDEN_AGENT_KEYS) {
|
|
632
|
-
const block = projectRaw[agentKey];
|
|
633
|
-
if (!isPlainObject(block)) continue;
|
|
634
|
-
stripNestedMuralModels(block, agentKey, nestedMuralRemoved);
|
|
635
|
-
}
|
|
636
|
-
if (nestedMuralRemoved.length > 0) {
|
|
637
|
-
warnings.push(
|
|
638
|
-
`Ignoring ${nestedMuralRemoved.join(", ")} from project config (security: the mural cue-compressor model is a user-level setting; a repository cannot choose where project memory is sent).`,
|
|
639
|
-
);
|
|
640
|
-
}
|
|
641
|
-
|
|
642
600
|
return warnings;
|
|
643
601
|
}
|
|
644
602
|
|
|
@@ -38,7 +38,7 @@ describe("MagicContextConfigSchema", () => {
|
|
|
38
38
|
fail_closed_blocking: true,
|
|
39
39
|
transform_mode: "ts",
|
|
40
40
|
storage: { enforce_private_permissions: true },
|
|
41
|
-
smart_notes: { retina_handoff: false },
|
|
41
|
+
smart_notes: { enabled: true, retina_handoff: false },
|
|
42
42
|
cache_ttl: "5m",
|
|
43
43
|
prompt_surface: { default: "full" },
|
|
44
44
|
execute_threshold_percentage: 65,
|
|
@@ -144,7 +144,7 @@ describe("MagicContextConfigSchema", () => {
|
|
|
144
144
|
overlay: false,
|
|
145
145
|
},
|
|
146
146
|
smart_drops: false,
|
|
147
|
-
smart_notes: { retina_handoff: false },
|
|
147
|
+
smart_notes: { enabled: true, retina_handoff: false },
|
|
148
148
|
shadow_embedding: {
|
|
149
149
|
enabled: false,
|
|
150
150
|
},
|
|
@@ -917,9 +917,9 @@ export interface ShadowEmbeddingConfig {
|
|
|
917
917
|
|
|
918
918
|
export interface MuralConfig {
|
|
919
919
|
enabled: boolean;
|
|
920
|
-
/**
|
|
921
|
-
*
|
|
922
|
-
model?:
|
|
920
|
+
/** Deprecated and ignored: compress-cues takes its model from each
|
|
921
|
+
* harness's dreamer settings, like every other dreamer task. */
|
|
922
|
+
model?: unknown;
|
|
923
923
|
}
|
|
924
924
|
|
|
925
925
|
export interface MagicContextConfig {
|
|
@@ -943,6 +943,8 @@ export interface MagicContextConfig {
|
|
|
943
943
|
historian?: HistorianConfig;
|
|
944
944
|
dreamer?: DreamerConfig;
|
|
945
945
|
smart_notes: {
|
|
946
|
+
/** Enable smart-note authoring and checks for the user; read at process startup. */
|
|
947
|
+
enabled: boolean;
|
|
946
948
|
/** Flip ownership of authoring-compiled conditions from dreamer to retina. */
|
|
947
949
|
retina_handoff: boolean;
|
|
948
950
|
};
|
|
@@ -1121,13 +1123,12 @@ export const MagicContextConfigSchema = z
|
|
|
1121
1123
|
.object({
|
|
1122
1124
|
enabled: z.boolean().default(false),
|
|
1123
1125
|
model: z
|
|
1124
|
-
.
|
|
1125
|
-
.trim()
|
|
1126
|
-
.min(1)
|
|
1126
|
+
.unknown()
|
|
1127
1127
|
.optional()
|
|
1128
1128
|
.describe(
|
|
1129
|
-
"
|
|
1130
|
-
)
|
|
1129
|
+
"Deprecated: ignored. compress-cues now uses the dreamer model for each harness, like every other dreamer task; override it with dreamer.opencode.tasks.compress-cues.model (or the pi/omp equivalent). Remove this key; it no longer does anything.",
|
|
1130
|
+
)
|
|
1131
|
+
.meta({ deprecated: true }),
|
|
1131
1132
|
})
|
|
1132
1133
|
.default({ enabled: false })
|
|
1133
1134
|
.describe(
|
|
@@ -1184,6 +1185,12 @@ export const MagicContextConfigSchema = z
|
|
|
1184
1185
|
),
|
|
1185
1186
|
smart_notes: z
|
|
1186
1187
|
.object({
|
|
1188
|
+
enabled: z
|
|
1189
|
+
.boolean()
|
|
1190
|
+
.default(true)
|
|
1191
|
+
.describe(
|
|
1192
|
+
"Enable smart-note authoring and condition evaluation. User-level only: tool definitions are process-wide. Changes require a host restart and rebuild each session's cached prompt once. Pending notes remain stored and unchecked; already-ready notes still surface.",
|
|
1193
|
+
),
|
|
1187
1194
|
retina_handoff: z
|
|
1188
1195
|
.boolean()
|
|
1189
1196
|
.default(false)
|
|
@@ -1191,7 +1198,7 @@ export const MagicContextConfigSchema = z
|
|
|
1191
1198
|
"When true, dreamer skips smart notes whose surface conditions compiled to retina provider configs at authoring time. Default false keeps both paths active until the retina consumer is deployed.",
|
|
1192
1199
|
),
|
|
1193
1200
|
})
|
|
1194
|
-
.default({ retina_handoff: false })
|
|
1201
|
+
.default({ enabled: true, retina_handoff: false })
|
|
1195
1202
|
.describe("Smart-note ownership transition controls."),
|
|
1196
1203
|
cache_ttl: z
|
|
1197
1204
|
.union([z.string(), z.object({ default: z.string() }).catchall(z.string())])
|
|
@@ -1601,7 +1608,6 @@ export const MagicContextConfigSchema = z
|
|
|
1601
1608
|
/** Settings whose fresh values can be used by later agent runs without changing rendered prompt bytes. */
|
|
1602
1609
|
export const LIVE_RELOAD_CONFIG_PATHS = [
|
|
1603
1610
|
"cache_ttl",
|
|
1604
|
-
"mural.model",
|
|
1605
1611
|
"toast_duration_ms",
|
|
1606
1612
|
"historian.opencode.model",
|
|
1607
1613
|
"historian.opencode.fallback_models",
|
|
@@ -29,6 +29,12 @@ export const CANONICAL_DREAM_TASKS = [
|
|
|
29
29
|
|
|
30
30
|
export type DreamTaskName = (typeof CANONICAL_DREAM_TASKS)[number];
|
|
31
31
|
|
|
32
|
+
export function availableDreamTasks(smartNotesEnabled = true): DreamTaskName[] {
|
|
33
|
+
return CANONICAL_DREAM_TASKS.filter(
|
|
34
|
+
(task) => smartNotesEnabled || task !== "evaluate-smart-notes",
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
32
38
|
/** Prompt-token ceilings informed by docs/reports/dreamer-token-usage.md.
|
|
33
39
|
* Completed Gemini run usage predicts 20-memory mapping/verification batches
|
|
34
40
|
* at about 70% of their allowance
|