@cortexkit/opencode-magic-context 0.47.0 → 0.49.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-kzx4dmk1.js} +12 -10
- package/dist/{context-wq4ffwyb.js → context-nj5f293n.js} +2765 -1925
- package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-qz5rrr08.js} +4 -3
- package/dist/embedding-activity-g1dhes6g.js +10 -0
- package/dist/embedding-backfill-aetxv1vt.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/git-commits/search-git-commits.d.ts +2 -0
- package/dist/features/magic-context/git-commits/search-git-commits.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-rerank.d.ts +35 -0
- package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
- package/dist/features/magic-context/search.d.ts +40 -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-persisted.d.ts +13 -2
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +7 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta.d.ts +1 -1
- package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +50 -0
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
- package/dist/features/magic-context/storage-tags.d.ts +153 -4
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -1
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
- package/dist/features/magic-context/tagger.d.ts +2 -0
- package/dist/features/magic-context/tagger.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +4 -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-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +34 -3
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +3 -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/emergency-fail-closed.d.ts +28 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +3 -2
- 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/latest-thinking-recovery.d.ts +7 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.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/pass-outcome.d.ts +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- 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 +19 -1
- 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 +118 -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/rust-mode-transform.d.ts +36 -0
- package/dist/hooks/magic-context/rust-mode-transform.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/shared-compartment-boundaries.d.ts +8 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
- 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 +13 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +9 -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-q6hef7fh.js → index-0sahzkwr.js} +6 -19
- package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
- package/dist/{index-5gq3b2ya.js → index-1bt88epp.js} +227 -205
- package/dist/{index-cwf6s3ay.js → index-1g30axtz.js} +3279 -2907
- package/dist/{index-5a2r0p9f.js → index-1r0k9js3.js} +20 -13
- package/dist/index-2bvekkfy.js +11 -0
- package/dist/{index-6d9e1m08.js → index-2jcbj7r1.js} +13301 -13225
- package/dist/index-2jgwttpt.js +3269 -0
- package/dist/index-4dhv7mqz.js +131 -0
- package/dist/{index-sj29b3z2.js → index-4mjhqadz.js} +3 -3
- package/dist/{index-0c82743p.js → index-57mrqed8.js} +17 -15
- package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
- package/dist/index-7jzrrxap.js +931 -0
- package/dist/index-8ajstryz.js +18 -0
- package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
- package/dist/{index-6wkcswft.js → index-9qjqq45k.js} +29 -19
- package/dist/{index-adwfkpex.js → index-9rt53q79.js} +23 -23
- package/dist/index-b7mv1jx3.js +1060 -0
- package/dist/index-d9vfe7xq.js +16 -0
- package/dist/{index-gg8j07zz.js → index-ezmszwbd.js} +8 -6
- package/dist/index-fb3zxn06.js +13 -0
- package/dist/index-fr0wbhdn.js +43 -0
- package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
- package/dist/index-gzcmtmar.js +171 -0
- package/dist/{index-w2t4ah5j.js → index-h2py7207.js} +6762 -7400
- package/dist/index-h2wc01qk.js +120 -0
- package/dist/index-h5zfkjyk.js +1277 -0
- package/dist/{index-92bp57hg.js → index-ha87j7a8.js} +1343 -149
- package/dist/index-hj2q50k0.js +856 -0
- package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
- package/dist/index-kmpvemph.js +1314 -0
- package/dist/index-kp5qe690.js +3030 -0
- package/dist/{index-m5fe6jch.js → index-kq57tdf0.js} +152 -2453
- package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
- package/dist/{v2/server-njt3np1k.js → index-nm6a8xpd.js} +220 -961
- package/dist/{index-hybnrwq0.js → index-nsjyysj0.js} +137 -130
- package/dist/index-nydv6g8r.js +3569 -0
- package/dist/index-pavzsdc6.js +17 -0
- package/dist/index-peshmj6h.js +152 -0
- package/dist/index-pxwp2hjk.js +571 -0
- package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
- package/dist/{v2/server-51dv1pr5.js → index-qx53vezw.js} +301 -27
- package/dist/{index-rrrsepyw.js → index-s4j7t92z.js} +90 -85
- package/dist/{index-9pk9exrb.js → index-stbr4ce6.js} +18 -18
- package/dist/{index-fzbvakh0.js → index-tqf7yg27.js} +3 -3
- package/dist/index-vkbqdnkj.js +2307 -0
- package/dist/{index-8da2zjhz.js → index-z1tjp257.js} +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +608 -349
- package/dist/logger-ewak5q1s.js +20 -0
- package/dist/message-index-bounded-h0mrd4pr.js +124 -0
- package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-8x06r9kx.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 +3 -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-rtt0djyb.js +88 -0
- package/dist/raw-ordinal-warmup-worker.js +60 -0
- package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-ty89v75e.js} +17 -9
- package/dist/read-session-raw-8sjbc9h0.js +60 -0
- package/dist/recomp-orchestrator-4f1yyd1q.js +57 -0
- package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-q0cyrx3x.js} +4 -2
- package/dist/search-pz4f4wge.js +45 -0
- package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-38cd5dqt.js} +10 -7
- package/dist/shared/auto-search-lifecycle.d.ts +14 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
- 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/logger.d.ts.map +1 -1
- package/dist/shared/model-resolution.d.ts +2 -3
- package/dist/shared/model-resolution.d.ts.map +1 -1
- package/dist/shared/models-dev-temperature.d.ts +18 -0
- package/dist/shared/models-dev-temperature.d.ts.map +1 -0
- package/dist/shared/project-directory-key.d.ts +16 -0
- package/dist/shared/project-directory-key.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/subagent-temperature.d.ts +46 -0
- package/dist/shared/subagent-temperature.d.ts.map +1 -0
- 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-k0pda32s.js +133 -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-reduce/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -0
- package/dist/tools/ctx-search/types.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-tck4g20s.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-crbt6p1y.js} +4708 -4218
- package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-fgej9j46.js} +4 -3
- package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
- package/dist/v2/embedding-backfill-ph1qfyn3.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/hidden-child-native.d.ts.map +1 -1
- package/dist/v2/hidden-completion.d.ts +7 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- 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 +5 -3
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/generate.d.ts +9 -2
- package/dist/v2/hooks/generate.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-pj02s7sr.js +19 -0
- package/dist/v2/message-index-bounded-xwqdywxg.js +123 -0
- package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-cje68egj.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-d6m7tyxr.js +86 -0
- package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
- package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-8p5mdryx.js} +16 -8
- package/dist/v2/read-session-raw-j8dvp7f4.js +59 -0
- package/dist/v2/recomp-orchestrator-ckfgt6wq.js +57 -0
- package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-y3p1hce9.js} +3 -3
- package/dist/v2/search-ym8rehhz.js +45 -0
- package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-5m0yapqx.js} +9 -8
- package/dist/v2/{server-rz514f14.js → server-19zjmn02.js} +2044 -2060
- package/dist/v2/server-1tk82krw.js +796 -0
- package/dist/v2/server-2bvekkfy.js +11 -0
- package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
- package/dist/v2/server-2s6ayq3t.js +1048 -0
- package/dist/v2/{server-fcdehk1s.js → server-2s9qz6n7.js} +4 -4
- package/dist/v2/server-3j4d00kf.js +171 -0
- package/dist/v2/{server-14vq4kpm.js → server-3t0q2cqx.js} +3 -3
- package/dist/v2/server-4dhv7mqz.js +131 -0
- package/dist/v2/server-4ez8mntn.js +3213 -0
- package/dist/v2/{server-6r257mf5.js → server-676xw7at.js} +3 -3
- package/dist/v2/{server-vs5gpnd4.js → server-6byqfbqf.js} +165 -145
- package/dist/v2/server-7ekna9zs.js +120 -0
- package/dist/v2/server-7h861yms.js +1272 -0
- package/dist/v2/server-7jzrrxap.js +931 -0
- package/dist/v2/server-8ajstryz.js +18 -0
- package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
- package/dist/v2/{server-cpepxy2q.js → server-8k2agx29.js} +14 -12
- package/dist/v2/server-c5rrgrcd.js +3545 -0
- package/dist/v2/server-d9vfe7xq.js +16 -0
- package/dist/v2/server-fb3zxn06.js +13 -0
- package/dist/v2/server-fr0wbhdn.js +43 -0
- package/dist/v2/{server-y10vbq6y.js → server-hb6xhh9q.js} +11 -1053
- package/dist/v2/server-jvxzm1jy.js +3023 -0
- package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
- package/dist/{index-5eqk6z3s.js → v2/server-kzns2hbz.js} +301 -27
- package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
- package/dist/v2/server-pavzsdc6.js +17 -0
- package/dist/v2/{server-vd4e7174.js → server-pj4pjv02.js} +21 -17
- package/dist/v2/{server-e0c1b7a7.js → server-q4ph9bwn.js} +1340 -148
- package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
- package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
- package/dist/v2/{server-d0sraw7m.js → server-sa8jvrfc.js} +291 -286
- package/dist/v2/server-ss95ky04.js +1048 -0
- package/dist/v2/{server-1qbnzc80.js → server-t4k4qexw.js} +142 -150
- package/dist/{index-x3kwrmqk.js → v2/server-v4mewb78.js} +35 -792
- package/dist/v2/server-w32kmdez.js +154 -0
- package/dist/v2/{server-nf82q6pt.js → server-x4hscabv.js} +5547 -5449
- package/dist/v2/server-xwz4dqh9.js +569 -0
- package/dist/v2/{server-efhwzx05.js → server-ycw9qqcy.js} +23 -23
- package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
- package/dist/v2/server-zp53y8js.js +1311 -0
- 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-8vw924zn.js +132 -0
- package/dist/v2/store-reader.d.ts +24 -2
- 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-a7efxaax.js} +51 -30
- package/dist/wrapup-orchestrator-barbc6h9.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/auto-search-lifecycle.ts +43 -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/logger.test.ts +38 -0
- package/src/shared/logger.ts +10 -2
- package/src/shared/model-resolution.test.ts +54 -17
- package/src/shared/model-resolution.ts +6 -17
- package/src/shared/models-dev-temperature.ts +107 -0
- package/src/shared/project-directory-key.test.ts +59 -0
- package/src/shared/project-directory-key.ts +20 -0
- 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/subagent-temperature.test.ts +270 -0
- package/src/shared/subagent-temperature.ts +110 -0
- package/src/shared/user-facing-codes.ts +2 -6
- package/src/shared/write-transaction-attribution.test.ts +2 -2
- package/src/v2/tui/host-contract.test.ts +41 -67
- package/src/v2/tui/index.ts +6 -214
- package/src/v2/tui/types.ts +5 -17
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
- package/dist/features/magic-context/checkout-claim.d.ts +0 -155
- package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
- package/dist/index-bb36vgr3.js +0 -6608
- package/dist/index-fnn5pjtt.js +0 -6554
- package/dist/recomp-orchestrator-rervg6q4.js +0 -42
- package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
- package/dist/v2/server-3trjk1hx.js +0 -6360
- package/dist/v2/server-nm9n3aqq.js +0 -6461
- package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
- /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
- /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./server-
|
|
2
|
+
observeEmbeddingActivity2
|
|
3
|
+
} from "./server-qt1qqasc.js";
|
|
4
4
|
import {
|
|
5
5
|
importPluginModule,
|
|
6
|
-
|
|
7
|
-
} from "./server-
|
|
6
|
+
sessionLog2
|
|
7
|
+
} from "./server-t4k4qexw.js";
|
|
8
8
|
import {
|
|
9
9
|
isDefaultSessionTitle2
|
|
10
|
-
} from "./server-
|
|
10
|
+
} from "./server-676xw7at.js";
|
|
11
11
|
import {
|
|
12
12
|
shouldHoldIgnoredNotification
|
|
13
|
-
} from "./server-
|
|
13
|
+
} from "./server-pj4pjv02.js";
|
|
14
14
|
import {
|
|
15
15
|
getErrorMessage
|
|
16
16
|
} from "./server-y8v6yerm.js";
|
|
@@ -29,7 +29,7 @@ var noticeDeleter;
|
|
|
29
29
|
var notificationDiagnosticObserverForTests;
|
|
30
30
|
function notificationDiagnostic(sessionId, message) {
|
|
31
31
|
notificationDiagnosticObserverForTests?.(message);
|
|
32
|
-
|
|
32
|
+
sessionLog2(sessionId, message);
|
|
33
33
|
}
|
|
34
34
|
function queueIgnoredNotification(notification) {
|
|
35
35
|
const queued = queuedIgnoredNotifications.get(notification.sessionId) ?? [];
|
|
@@ -38,7 +38,7 @@ function queueIgnoredNotification(notification) {
|
|
|
38
38
|
queued.push(notification);
|
|
39
39
|
if (queued.length > MAX_QUEUED_IGNORED_NOTIFICATIONS2) {
|
|
40
40
|
queued.splice(0, queued.length - MAX_QUEUED_IGNORED_NOTIFICATIONS2);
|
|
41
|
-
|
|
41
|
+
sessionLog2(notification.sessionId, `ignored notification queue full; dropped oldest entries (kept newest ${MAX_QUEUED_IGNORED_NOTIFICATIONS2})`);
|
|
42
42
|
}
|
|
43
43
|
queuedIgnoredNotifications.set(notification.sessionId, queued);
|
|
44
44
|
}
|
|
@@ -66,7 +66,7 @@ async function trySendTuiToast(sessionId, text, params, forcePersist) {
|
|
|
66
66
|
}, sessionId);
|
|
67
67
|
return true;
|
|
68
68
|
} catch {
|
|
69
|
-
|
|
69
|
+
sessionLog2(sessionId, "TUI RPC toast enqueue failed, falling back to ignored message");
|
|
70
70
|
return false;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -102,7 +102,7 @@ function notifyDelivered(sessionId, params) {
|
|
|
102
102
|
try {
|
|
103
103
|
params.onDelivered?.();
|
|
104
104
|
} catch (error) {
|
|
105
|
-
|
|
105
|
+
sessionLog2(sessionId, "notification delivery callback failed:", getErrorMessage(error));
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
function hasNotificationSessionClient(client) {
|
|
@@ -142,9 +142,9 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
|
|
|
142
142
|
holdIgnoredNotification({ client, sessionId, text, params, forcePersist }, "during target checks");
|
|
143
143
|
return "queued";
|
|
144
144
|
}
|
|
145
|
-
const { waitForSafeNotificationTarget } = await importPluginModule(() => import("./safe-notification-target-
|
|
145
|
+
const { waitForSafeNotificationTarget } = await importPluginModule(() => import("./safe-notification-target-y3p1hce9.js"));
|
|
146
146
|
if (await waitForSafeNotificationTarget(client, sessionId) === "skip") {
|
|
147
|
-
|
|
147
|
+
sessionLog2(sessionId, "notification skipped (session not titled yet)");
|
|
148
148
|
return "skipped";
|
|
149
149
|
}
|
|
150
150
|
if ((activityEpoch.get(sessionId) ?? 0) !== epoch)
|
|
@@ -154,7 +154,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
|
|
|
154
154
|
return "queued";
|
|
155
155
|
}
|
|
156
156
|
if (!hasNotificationSessionClient(client)) {
|
|
157
|
-
|
|
157
|
+
sessionLog2(sessionId, "session prompt API unavailable for notification");
|
|
158
158
|
return "failed";
|
|
159
159
|
}
|
|
160
160
|
const c = client;
|
|
@@ -201,7 +201,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
|
|
|
201
201
|
} else if (typeof c.session?.promptAsync === "function") {
|
|
202
202
|
result = await c.session.promptAsync(input);
|
|
203
203
|
} else {
|
|
204
|
-
|
|
204
|
+
sessionLog2(sessionId, "session prompt API unavailable for notification");
|
|
205
205
|
return "failed";
|
|
206
206
|
}
|
|
207
207
|
const messageId = extractPromptedMessageId(result);
|
|
@@ -221,7 +221,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
|
|
|
221
221
|
return "sent";
|
|
222
222
|
} catch (error) {
|
|
223
223
|
const msg = getErrorMessage(error);
|
|
224
|
-
|
|
224
|
+
sessionLog2(sessionId, "failed to send notification:", msg);
|
|
225
225
|
return "failed";
|
|
226
226
|
}
|
|
227
227
|
}
|
|
@@ -244,7 +244,7 @@ async function deleteNoticeMessage(sessionId, messageId) {
|
|
|
244
244
|
if (noticeDeleter)
|
|
245
245
|
return noticeDeleter(sessionId, messageId);
|
|
246
246
|
if (!notificationServerUrl) {
|
|
247
|
-
|
|
247
|
+
sessionLog2(sessionId, "cannot roll back notice: no server URL for session.message.delete");
|
|
248
248
|
return false;
|
|
249
249
|
}
|
|
250
250
|
const url = `${notificationServerUrl}/session/${encodeURIComponent(sessionId)}/message/${encodeURIComponent(messageId)}`;
|
|
@@ -256,12 +256,12 @@ async function deleteNoticeMessage(sessionId, messageId) {
|
|
|
256
256
|
signal: AbortSignal.timeout(1e4)
|
|
257
257
|
});
|
|
258
258
|
if (!response.ok) {
|
|
259
|
-
|
|
259
|
+
sessionLog2(sessionId, `notice rollback DELETE failed status=${response.status} url=${url}`);
|
|
260
260
|
return false;
|
|
261
261
|
}
|
|
262
262
|
return true;
|
|
263
263
|
} catch (error) {
|
|
264
|
-
|
|
264
|
+
sessionLog2(sessionId, "notice rollback DELETE error:", getErrorMessage(error));
|
|
265
265
|
return false;
|
|
266
266
|
}
|
|
267
267
|
}
|
|
@@ -274,10 +274,10 @@ async function revertNoticeIfUnsafe(notification) {
|
|
|
274
274
|
if (deleted) {
|
|
275
275
|
notificationDiagnostic(notification.sessionId, `notice rolled back (deleted row ${notification.messageId}); consumed after append`);
|
|
276
276
|
} else {
|
|
277
|
-
|
|
277
|
+
sessionLog2(notification.sessionId, "failed to roll back a notice that landed while a run was active");
|
|
278
278
|
}
|
|
279
279
|
} else {
|
|
280
|
-
|
|
280
|
+
sessionLog2(notification.sessionId, "notice landed while a run was active but the new row id was not returned");
|
|
281
281
|
}
|
|
282
282
|
lastDeliveredText.set(notification.sessionId, notification.text);
|
|
283
283
|
return true;
|
|
@@ -309,7 +309,7 @@ async function sendCommandResult2(client, sessionId, text, params) {
|
|
|
309
309
|
}
|
|
310
310
|
return disposition;
|
|
311
311
|
} catch (error) {
|
|
312
|
-
|
|
312
|
+
sessionLog2(sessionId, "command result delivery failed:", getErrorMessage(error));
|
|
313
313
|
return "failed";
|
|
314
314
|
}
|
|
315
315
|
}
|
|
@@ -361,7 +361,7 @@ function clearIgnoredMessages2(sessionId) {
|
|
|
361
361
|
activityEpoch.delete(sessionId);
|
|
362
362
|
}
|
|
363
363
|
function observeIgnoredNotificationEvent2(event) {
|
|
364
|
-
|
|
364
|
+
observeEmbeddingActivity2(event);
|
|
365
365
|
const record = (value) => value !== null && typeof value === "object" ? value : undefined;
|
|
366
366
|
const props = record(event.properties);
|
|
367
367
|
const info = record(props?.info);
|
|
@@ -396,7 +396,7 @@ async function sendStatusNotification2(_client, sessionId, text, params) {
|
|
|
396
396
|
notifyDelivered(sessionId, params);
|
|
397
397
|
return "sent";
|
|
398
398
|
} catch (error) {
|
|
399
|
-
|
|
399
|
+
sessionLog2(sessionId, "status RPC enqueue failed:", getErrorMessage(error));
|
|
400
400
|
return "failed";
|
|
401
401
|
}
|
|
402
402
|
}
|
|
@@ -1,165 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
toolTemplateError
|
|
2
|
+
toolTemplateError
|
|
3
|
+
} from "./server-mfkzp7qj.js";
|
|
4
|
+
import {
|
|
3
5
|
DEFAULT_PROTECTED_TOOLS,
|
|
4
6
|
mergeProtectedTools
|
|
5
|
-
} from "./server-
|
|
7
|
+
} from "./server-d9vfe7xq.js";
|
|
6
8
|
import {
|
|
7
9
|
modelRefLookupOrder
|
|
8
10
|
} from "./server-avwt563y.js";
|
|
9
11
|
|
|
10
|
-
// src/agents/language-directive.ts
|
|
11
|
-
var ENGLISH_LANGUAGE_NAMES = new Intl.DisplayNames(["en"], {
|
|
12
|
-
type: "language",
|
|
13
|
-
fallback: "none"
|
|
14
|
-
});
|
|
15
|
-
function resolveLanguageName(language) {
|
|
16
|
-
const code = typeof language === "string" ? language.trim().toLowerCase() : "";
|
|
17
|
-
if (!/^[a-z]{2}$/.test(code))
|
|
18
|
-
return "";
|
|
19
|
-
let english;
|
|
20
|
-
try {
|
|
21
|
-
english = ENGLISH_LANGUAGE_NAMES.of(code) ?? undefined;
|
|
22
|
-
} catch {
|
|
23
|
-
return "";
|
|
24
|
-
}
|
|
25
|
-
if (!english)
|
|
26
|
-
return "";
|
|
27
|
-
let endonym;
|
|
28
|
-
try {
|
|
29
|
-
endonym = new Intl.DisplayNames([code], { type: "language", fallback: "none" }).of(code) ?? undefined;
|
|
30
|
-
} catch {
|
|
31
|
-
endonym = undefined;
|
|
32
|
-
}
|
|
33
|
-
return endonym && endonym !== english ? `${english} (${endonym})` : english;
|
|
34
|
-
}
|
|
35
|
-
function isValidLanguageCode(language) {
|
|
36
|
-
return resolveLanguageName(language) !== "";
|
|
37
|
-
}
|
|
38
|
-
function buildContentLanguageDirective(language, options = {}) {
|
|
39
|
-
const target = resolveLanguageName(language);
|
|
40
|
-
if (!target)
|
|
41
|
-
return "";
|
|
42
|
-
const lines = [
|
|
43
|
-
"## Output language",
|
|
44
|
-
"",
|
|
45
|
-
`Write human-readable prose you author in: ${target}.`,
|
|
46
|
-
"",
|
|
47
|
-
"Do not translate or rename structural tokens. Copy required output schemas exactly:",
|
|
48
|
-
"- XML tag names, XML attribute names, JSON keys, tool names, tool-call argument keys, enum values, booleans/null, and required sentinel strings stay in English exactly as shown.",
|
|
49
|
-
"- Keep code identifiers, file paths, commands, config keys, CLI flags, URLs, commit hashes, model/provider IDs, stack traces, diagnostics, and transcript role markers such as U:, A:, and TC: verbatim.",
|
|
50
|
-
"- Localize only free-text prose values/content: summaries, memory text, explanations, titles, observations, and answers — unless the prompt says to preserve original wording.",
|
|
51
|
-
"",
|
|
52
|
-
"These literal values must remain English when used:",
|
|
53
|
-
"PROJECT_RULES, ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING;",
|
|
54
|
-
"causal_incident, trajectory_correction;",
|
|
55
|
-
"feature, design, docs, release, investigation, bug, refactor, infra;",
|
|
56
|
-
"memory, observation; true, false; No relevant memories found.",
|
|
57
|
-
"",
|
|
58
|
-
"Preserve the required output shape. Do not add commentary outside the requested XML/JSON/tool output."
|
|
59
|
-
];
|
|
60
|
-
if (options.preserveUserQuotes) {
|
|
61
|
-
lines.push("", `Preserve U: lines and directly quoted user text in their original source language; write the surrounding summary prose in ${target}.`);
|
|
62
|
-
}
|
|
63
|
-
if (options.retrospective) {
|
|
64
|
-
lines.push("", `Write the lesson text in ${target}; paraphrase source text and never quote the user.`);
|
|
65
|
-
}
|
|
66
|
-
return lines.join(`
|
|
67
|
-
`);
|
|
68
|
-
}
|
|
69
|
-
function withContentLanguageDirective(systemPrompt, language, options = {}) {
|
|
70
|
-
const directive = buildContentLanguageDirective(language, options);
|
|
71
|
-
return directive ? `${systemPrompt}
|
|
72
|
-
|
|
73
|
-
${directive}` : systemPrompt;
|
|
74
|
-
}
|
|
75
|
-
function buildPrimaryLanguageDirective(language) {
|
|
76
|
-
const target = resolveLanguageName(language);
|
|
77
|
-
if (!target)
|
|
78
|
-
return "";
|
|
79
|
-
return `Use ${target} for your natural-language replies to the user unless the user explicitly asks for another language. Keep code, identifiers, file paths, commands, logs, and quoted text verbatim.`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// src/shared/prompt-surface.ts
|
|
83
|
-
function promptSurfaceConfigIdentity(config) {
|
|
84
|
-
return JSON.stringify({
|
|
85
|
-
default: config?.default ?? "full",
|
|
86
|
-
models: Object.entries(config?.models ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0),
|
|
87
|
-
guidanceOverridePath: config?.guidance_override_path ?? null,
|
|
88
|
-
toolDescriptions: Object.entries(config?.tool_descriptions ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
function isValidPromptSurfaceModelKey(key) {
|
|
92
|
-
if (key.length === 0 || key.trim() !== key)
|
|
93
|
-
return false;
|
|
94
|
-
const slash = key.indexOf("/");
|
|
95
|
-
if (slash < 0)
|
|
96
|
-
return !key.includes("*");
|
|
97
|
-
if (slash === 0 || slash === key.length - 1)
|
|
98
|
-
return false;
|
|
99
|
-
const provider = key.slice(0, slash);
|
|
100
|
-
const modelID = key.slice(slash + 1);
|
|
101
|
-
if (provider.trim() !== provider || modelID.trim() !== modelID || provider.includes("*") || modelID.includes("*") && modelID !== "*") {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
if (modelID === "*")
|
|
105
|
-
return true;
|
|
106
|
-
return modelID.length > 0 && !modelID.startsWith("/") && !modelID.endsWith("/") && !modelID.includes("//");
|
|
107
|
-
}
|
|
108
|
-
function modelKeyLookupOrder(modelKey) {
|
|
109
|
-
if (!modelKey)
|
|
110
|
-
return [];
|
|
111
|
-
const slash = modelKey.indexOf("/");
|
|
112
|
-
if (slash <= 0 || slash === modelKey.length - 1)
|
|
113
|
-
return [];
|
|
114
|
-
const provider = modelKey.slice(0, slash);
|
|
115
|
-
let modelID = modelKey.slice(slash + 1);
|
|
116
|
-
const providerRefs = modelRefLookupOrder(`${provider}/${modelID}`);
|
|
117
|
-
const candidates = [];
|
|
118
|
-
while (modelID.length > 0) {
|
|
119
|
-
for (const providerRef of providerRefs) {
|
|
120
|
-
const providerSlash = providerRef.indexOf("/");
|
|
121
|
-
const providerPrefix = providerRef.slice(0, providerSlash);
|
|
122
|
-
candidates.push({ key: `${providerPrefix}/${modelID}`, source: "exact" });
|
|
123
|
-
}
|
|
124
|
-
candidates.push({ key: modelID, source: "bare" });
|
|
125
|
-
const lastDash = modelID.lastIndexOf("-");
|
|
126
|
-
if (lastDash <= 0)
|
|
127
|
-
break;
|
|
128
|
-
modelID = modelID.slice(0, lastDash);
|
|
129
|
-
}
|
|
130
|
-
for (const providerRef of providerRefs) {
|
|
131
|
-
const providerSlash = providerRef.indexOf("/");
|
|
132
|
-
const providerPrefix = providerRef.slice(0, providerSlash);
|
|
133
|
-
candidates.push({ key: `${providerPrefix}/*`, source: "wildcard" });
|
|
134
|
-
}
|
|
135
|
-
const seen = new Set;
|
|
136
|
-
return candidates.filter((candidate) => {
|
|
137
|
-
if (seen.has(candidate.key))
|
|
138
|
-
return false;
|
|
139
|
-
seen.add(candidate.key);
|
|
140
|
-
return true;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
function resolveModelConfigValue(values, modelKey) {
|
|
144
|
-
if (!values)
|
|
145
|
-
return;
|
|
146
|
-
for (const candidate of modelKeyLookupOrder(modelKey)) {
|
|
147
|
-
const value = values[candidate.key];
|
|
148
|
-
if (value !== undefined) {
|
|
149
|
-
return { value, source: candidate.source };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
function resolvePromptSurface(config, modelKey) {
|
|
155
|
-
const fallback = config?.default ?? "full";
|
|
156
|
-
const match = resolveModelConfigValue(config?.models, modelKey);
|
|
157
|
-
if (match) {
|
|
158
|
-
return { preset: match.value, source: match.source };
|
|
159
|
-
}
|
|
160
|
-
return { preset: fallback, source: "default" };
|
|
161
|
-
}
|
|
162
|
-
|
|
163
12
|
// src/config/schema/magic-context.ts
|
|
164
13
|
import { homedir } from "node:os";
|
|
165
14
|
|
|
@@ -5019,6 +4868,78 @@ function superRefine(fn, params) {
|
|
|
5019
4868
|
}
|
|
5020
4869
|
// ../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
5021
4870
|
config(en_default());
|
|
4871
|
+
// src/agents/language-directive.ts
|
|
4872
|
+
var ENGLISH_LANGUAGE_NAMES = new Intl.DisplayNames(["en"], {
|
|
4873
|
+
type: "language",
|
|
4874
|
+
fallback: "none"
|
|
4875
|
+
});
|
|
4876
|
+
function resolveLanguageName(language) {
|
|
4877
|
+
const code = typeof language === "string" ? language.trim().toLowerCase() : "";
|
|
4878
|
+
if (!/^[a-z]{2}$/.test(code))
|
|
4879
|
+
return "";
|
|
4880
|
+
let english;
|
|
4881
|
+
try {
|
|
4882
|
+
english = ENGLISH_LANGUAGE_NAMES.of(code) ?? undefined;
|
|
4883
|
+
} catch {
|
|
4884
|
+
return "";
|
|
4885
|
+
}
|
|
4886
|
+
if (!english)
|
|
4887
|
+
return "";
|
|
4888
|
+
let endonym;
|
|
4889
|
+
try {
|
|
4890
|
+
endonym = new Intl.DisplayNames([code], { type: "language", fallback: "none" }).of(code) ?? undefined;
|
|
4891
|
+
} catch {
|
|
4892
|
+
endonym = undefined;
|
|
4893
|
+
}
|
|
4894
|
+
return endonym && endonym !== english ? `${english} (${endonym})` : english;
|
|
4895
|
+
}
|
|
4896
|
+
function isValidLanguageCode(language) {
|
|
4897
|
+
return resolveLanguageName(language) !== "";
|
|
4898
|
+
}
|
|
4899
|
+
function buildContentLanguageDirective(language, options = {}) {
|
|
4900
|
+
const target = resolveLanguageName(language);
|
|
4901
|
+
if (!target)
|
|
4902
|
+
return "";
|
|
4903
|
+
const lines = [
|
|
4904
|
+
"## Output language",
|
|
4905
|
+
"",
|
|
4906
|
+
`Write human-readable prose you author in: ${target}.`,
|
|
4907
|
+
"",
|
|
4908
|
+
"Do not translate or rename structural tokens. Copy required output schemas exactly:",
|
|
4909
|
+
"- XML tag names, XML attribute names, JSON keys, tool names, tool-call argument keys, enum values, booleans/null, and required sentinel strings stay in English exactly as shown.",
|
|
4910
|
+
"- Keep code identifiers, file paths, commands, config keys, CLI flags, URLs, commit hashes, model/provider IDs, stack traces, diagnostics, and transcript role markers such as U:, A:, and TC: verbatim.",
|
|
4911
|
+
"- Localize only free-text prose values/content: summaries, memory text, explanations, titles, observations, and answers — unless the prompt says to preserve original wording.",
|
|
4912
|
+
"",
|
|
4913
|
+
"These literal values must remain English when used:",
|
|
4914
|
+
"PROJECT_RULES, ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING;",
|
|
4915
|
+
"causal_incident, trajectory_correction;",
|
|
4916
|
+
"feature, design, docs, release, investigation, bug, refactor, infra;",
|
|
4917
|
+
"memory, observation; true, false; No relevant memories found.",
|
|
4918
|
+
"",
|
|
4919
|
+
"Preserve the required output shape. Do not add commentary outside the requested XML/JSON/tool output."
|
|
4920
|
+
];
|
|
4921
|
+
if (options.preserveUserQuotes) {
|
|
4922
|
+
lines.push("", `Preserve U: lines and directly quoted user text in their original source language; write the surrounding summary prose in ${target}.`);
|
|
4923
|
+
}
|
|
4924
|
+
if (options.retrospective) {
|
|
4925
|
+
lines.push("", `Write the lesson text in ${target}; paraphrase source text and never quote the user.`);
|
|
4926
|
+
}
|
|
4927
|
+
return lines.join(`
|
|
4928
|
+
`);
|
|
4929
|
+
}
|
|
4930
|
+
function withContentLanguageDirective(systemPrompt, language, options = {}) {
|
|
4931
|
+
const directive = buildContentLanguageDirective(language, options);
|
|
4932
|
+
return directive ? `${systemPrompt}
|
|
4933
|
+
|
|
4934
|
+
${directive}` : systemPrompt;
|
|
4935
|
+
}
|
|
4936
|
+
function buildPrimaryLanguageDirective(language) {
|
|
4937
|
+
const target = resolveLanguageName(language);
|
|
4938
|
+
if (!target)
|
|
4939
|
+
return "";
|
|
4940
|
+
return `Use ${target} for your natural-language replies to the user unless the user explicitly asks for another language. Keep code, identifiers, file paths, commands, logs, and quoted text verbatim.`;
|
|
4941
|
+
}
|
|
4942
|
+
|
|
5022
4943
|
// src/features/magic-context/dreamer/cron.ts
|
|
5023
4944
|
var FIELDS = [
|
|
5024
4945
|
{ name: "minute", min: 0, max: 59 },
|
|
@@ -5169,6 +5090,87 @@ function nextDueAtMs(expression, afterMs, consumedScheduledAtMs, maxSearchMs = M
|
|
|
5169
5090
|
return next ? next.getTime() : null;
|
|
5170
5091
|
}
|
|
5171
5092
|
|
|
5093
|
+
// src/shared/prompt-surface.ts
|
|
5094
|
+
function promptSurfaceConfigIdentity(config) {
|
|
5095
|
+
return JSON.stringify({
|
|
5096
|
+
default: config?.default ?? "full",
|
|
5097
|
+
models: Object.entries(config?.models ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0),
|
|
5098
|
+
guidanceOverridePath: config?.guidance_override_path ?? null,
|
|
5099
|
+
toolDescriptions: Object.entries(config?.tool_descriptions ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
5100
|
+
});
|
|
5101
|
+
}
|
|
5102
|
+
function isValidPromptSurfaceModelKey(key) {
|
|
5103
|
+
if (key.length === 0 || key.trim() !== key)
|
|
5104
|
+
return false;
|
|
5105
|
+
const slash = key.indexOf("/");
|
|
5106
|
+
if (slash < 0)
|
|
5107
|
+
return !key.includes("*");
|
|
5108
|
+
if (slash === 0 || slash === key.length - 1)
|
|
5109
|
+
return false;
|
|
5110
|
+
const provider = key.slice(0, slash);
|
|
5111
|
+
const modelID = key.slice(slash + 1);
|
|
5112
|
+
if (provider.trim() !== provider || modelID.trim() !== modelID || provider.includes("*") || modelID.includes("*") && modelID !== "*") {
|
|
5113
|
+
return false;
|
|
5114
|
+
}
|
|
5115
|
+
if (modelID === "*")
|
|
5116
|
+
return true;
|
|
5117
|
+
return modelID.length > 0 && !modelID.startsWith("/") && !modelID.endsWith("/") && !modelID.includes("//");
|
|
5118
|
+
}
|
|
5119
|
+
function modelKeyLookupOrder(modelKey) {
|
|
5120
|
+
if (!modelKey)
|
|
5121
|
+
return [];
|
|
5122
|
+
const slash = modelKey.indexOf("/");
|
|
5123
|
+
if (slash <= 0 || slash === modelKey.length - 1)
|
|
5124
|
+
return [];
|
|
5125
|
+
const provider = modelKey.slice(0, slash);
|
|
5126
|
+
let modelID = modelKey.slice(slash + 1);
|
|
5127
|
+
const providerRefs = modelRefLookupOrder(`${provider}/${modelID}`);
|
|
5128
|
+
const candidates = [];
|
|
5129
|
+
while (modelID.length > 0) {
|
|
5130
|
+
for (const providerRef of providerRefs) {
|
|
5131
|
+
const providerSlash = providerRef.indexOf("/");
|
|
5132
|
+
const providerPrefix = providerRef.slice(0, providerSlash);
|
|
5133
|
+
candidates.push({ key: `${providerPrefix}/${modelID}`, source: "exact" });
|
|
5134
|
+
}
|
|
5135
|
+
candidates.push({ key: modelID, source: "bare" });
|
|
5136
|
+
const lastDash = modelID.lastIndexOf("-");
|
|
5137
|
+
if (lastDash <= 0)
|
|
5138
|
+
break;
|
|
5139
|
+
modelID = modelID.slice(0, lastDash);
|
|
5140
|
+
}
|
|
5141
|
+
for (const providerRef of providerRefs) {
|
|
5142
|
+
const providerSlash = providerRef.indexOf("/");
|
|
5143
|
+
const providerPrefix = providerRef.slice(0, providerSlash);
|
|
5144
|
+
candidates.push({ key: `${providerPrefix}/*`, source: "wildcard" });
|
|
5145
|
+
}
|
|
5146
|
+
const seen = new Set;
|
|
5147
|
+
return candidates.filter((candidate) => {
|
|
5148
|
+
if (seen.has(candidate.key))
|
|
5149
|
+
return false;
|
|
5150
|
+
seen.add(candidate.key);
|
|
5151
|
+
return true;
|
|
5152
|
+
});
|
|
5153
|
+
}
|
|
5154
|
+
function resolveModelConfigValue(values, modelKey) {
|
|
5155
|
+
if (!values)
|
|
5156
|
+
return;
|
|
5157
|
+
for (const candidate of modelKeyLookupOrder(modelKey)) {
|
|
5158
|
+
const value = values[candidate.key];
|
|
5159
|
+
if (value !== undefined) {
|
|
5160
|
+
return { value, source: candidate.source };
|
|
5161
|
+
}
|
|
5162
|
+
}
|
|
5163
|
+
return;
|
|
5164
|
+
}
|
|
5165
|
+
function resolvePromptSurface(config, modelKey) {
|
|
5166
|
+
const fallback = config?.default ?? "full";
|
|
5167
|
+
const match = resolveModelConfigValue(config?.models, modelKey);
|
|
5168
|
+
if (match) {
|
|
5169
|
+
return { preset: match.value, source: match.source };
|
|
5170
|
+
}
|
|
5171
|
+
return { preset: fallback, source: "default" };
|
|
5172
|
+
}
|
|
5173
|
+
|
|
5172
5174
|
// src/config/schema/agent-overrides.ts
|
|
5173
5175
|
var PermissionValueSchema = _enum(["ask", "allow", "deny"]);
|
|
5174
5176
|
var PermissionSchema = object({
|
|
@@ -5585,7 +5587,7 @@ var MagicContextConfigSchema = object({
|
|
|
5585
5587
|
allow_home_project: boolean2().default(false).describe("Allow Magic Context sessions launched from the exact canonical home directory. A non-git home uses its deterministic dir: identity; a home repository uses its git: identity. USER-LEVEL ONLY: project config is ignored. The home identity is excluded from registry seed exports, never resolves descendants by containment, and cannot join a workspace."),
|
|
5586
5588
|
mural: object({
|
|
5587
5589
|
enabled: boolean2().default(false),
|
|
5588
|
-
model:
|
|
5590
|
+
model: unknown().optional().describe("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.").meta({ deprecated: true })
|
|
5589
5591
|
}).default({ enabled: false }).describe("Experimental mural: a single deterministically-rendered image of project memories that did not fit the context budget. Cues are compressed per-memory by the compress-cues dreamer task."),
|
|
5590
5592
|
transform_mode: _enum(["ts", "rust"]).default("ts").describe('Experimental: routes the entire Magic Context runtime for the project through the ck-mc Rust module over subc (requires user-level `subc` config); "ts" is the current TypeScript pipeline.'),
|
|
5591
5593
|
auto_update: boolean2().optional().describe("Enable automatic npm self-update checks for the OpenCode plugin. Security: USER-only in config loader, so hostile project configs cannot suppress updates."),
|
|
@@ -5595,8 +5597,9 @@ var MagicContextConfigSchema = object({
|
|
|
5595
5597
|
historian: HistorianConfigSchema.describe("Historian metadata plus independent strict OpenCode, Pi, and OMP execution blocks. Retained metadata stays at historian; model, fallback_models, variant, and thinking_level belong only in historian.opencode, historian.pi, or historian.omp."),
|
|
5596
5598
|
dreamer: DreamerConfigSchema.optional().describe("Dreamer metadata and scheduling plus independent strict OpenCode, Pi, and OMP execution blocks. schedule and promotion_threshold stay at dreamer.tasks; model, fallback_models, variant, thinking_level, and timeout_minutes belong only in the matching harness block."),
|
|
5597
5599
|
smart_notes: object({
|
|
5600
|
+
enabled: boolean2().default(true).describe("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."),
|
|
5598
5601
|
retina_handoff: boolean2().default(false).describe("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.")
|
|
5599
|
-
}).default({ retina_handoff: false }).describe("Smart-note ownership transition controls."),
|
|
5602
|
+
}).default({ enabled: true, retina_handoff: false }).describe("Smart-note ownership transition controls."),
|
|
5600
5603
|
cache_ttl: union([string(), object({ default: string() }).catchall(string())]).default("5m").describe(`How long Magic Context assumes the provider's cached prefix stays valid. This is MC's own deferral gate — it does not change the provider's actual cache lifetime. String (e.g. "5m", "1h", "30s") or per-model object ({ default: "5m", "provider/model": "1h", "provider/*": "never" }); keys resolve most-specific first (exact provider/model, bare model ID, shorter dash-prefixes, then the provider/* wildcard, then default). User and project settings, including an explicit "5m" or object default, apply on the next pass. Only built-in defaults are frozen per session, including across restarts: when unset, GPT-5.6 and later (including gpt-6*, through any provider prefix) use 30m, other models use 5m. /ctx-status shows the effective TTL and whether it comes from your config or a frozen built-in default. Editing the TTL does not itself rewrite prompt bytes; a lowered TTL rebuilds only after normal idle expiry. OpenAI documents at least 30 minutes since the latest write or reuse: https://developers.openai.com/api/docs/guides/prompt-caching (Cache lifetime and Summary of model differences). Set to "never" to mean MC never assumes expiry (for lanes kept warm externally by a cache-keep tool) — disables the idle-TTL heuristic so MC never initiates a rebuild based on elapsed time. Provider-side extended TTL is a separate request-level concern (cache_control: { ttl } in the request body).`),
|
|
5601
5604
|
prompt_surface: PromptSurfaceConfigSchema.default({ default: "full" }).describe("Prompt-surface presets: default is full; models use bare model IDs, provider/model, or provider/* routing keys. Guidance and tool-description overrides are user-level only. OpenCode 1.x, Pi, and OMP register tool descriptions once per process (they follow the default preset). OpenCode 2 rewrites the five ctx_* descriptions per request from the draft model."),
|
|
5602
5605
|
output_reserve: union([
|
|
@@ -5701,7 +5704,6 @@ var MagicContextConfigSchema = object({
|
|
|
5701
5704
|
});
|
|
5702
5705
|
var LIVE_RELOAD_CONFIG_PATHS = [
|
|
5703
5706
|
"cache_ttl",
|
|
5704
|
-
"mural.model",
|
|
5705
5707
|
"toast_duration_ms",
|
|
5706
5708
|
"historian.opencode.model",
|
|
5707
5709
|
"historian.opencode.fallback_models",
|