@cortexkit/opencode-magic-context 0.46.1 → 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 +112 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/live-run-config.d.ts.map +1 -1
- package/dist/config/migrate-config-location.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 +21 -9
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-7fj2b9jw.js → conflict-warning-hook-w8cykrnf.js} +12 -9
- package/dist/{context-sh2m2vde.js → context-m0cy262m.js} +1785 -913
- package/dist/{derive-budgets-7nj7r1rv.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-gates.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/overflow-detection.d.ts +2 -0
- package/dist/features/magic-context/overflow-detection.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/project-embedding-registry.d.ts +7 -0
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +31 -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/session-project-storage.d.ts +8 -2
- package/dist/features/magic-context/session-project-storage.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-historian-runs.d.ts +2 -5
- package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +12 -0
- package/dist/features/magic-context/storage-meta-persisted.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 +148 -3
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -0
- 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/transform-decision-log.d.ts +4 -2
- 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 +10 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -0
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts +7 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts +4 -0
- package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-omp-loader.fixture.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-omp-loader.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-snapshot.fixture.d.ts +4 -0
- package/dist/hooks/magic-context/auto-search-snapshot.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +98 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-worker.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-worker.d.ts.map +1 -0
- package/dist/hooks/magic-context/caveman-cleanup.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-runner-types.d.ts +3 -5
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts +2 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts +3 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
- package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +2 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-drain-gate.d.ts +11 -0
- package/dist/hooks/magic-context/historian-drain-gate.d.ts.map +1 -0
- 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-assistant-turn.d.ts +25 -0
- package/dist/hooks/magic-context/latest-assistant-turn.d.ts.map +1 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +61 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -0
- 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/module-wire.d.ts.map +1 -1
- 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/opencode-proven-floor.d.ts +6 -0
- package/dist/hooks/magic-context/opencode-proven-floor.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.map +1 -1
- package/dist/hooks/magic-context/protected-tail-boundary.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 +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-status.d.ts +15 -0
- package/dist/hooks/magic-context/reasoning-budget-status.d.ts.map +1 -0
- package/dist/hooks/magic-context/reasoning-budget.d.ts +40 -0
- package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -0
- package/dist/hooks/magic-context/reasoning-removal.d.ts +6 -6
- package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/sentinel.d.ts +45 -1
- package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
- package/dist/hooks/magic-context/strip-content.d.ts +21 -5
- 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 +21 -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/tool-drop-target.d.ts +5 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +3 -28
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +28 -6
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +11 -3
- 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-hpecdzec.js → index-0an7742d.js} +6820 -6587
- 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-sjthx78w.js → index-692jzy0p.js} +16879 -22907
- package/dist/index-72nhv486.js +2307 -0
- package/dist/index-7jzrrxap.js +931 -0
- package/dist/index-7mx8v0pw.js +3591 -0
- 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-8x2v7gg9.js → index-bhvjj0ys.js} +158 -2455
- 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-pkbcrdqs.js → index-f0h6xwqm.js} +3412 -4552
- 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-5p8jdswx.js → index-k1xb52kd.js} +20 -13
- package/dist/index-k9nnwad5.js +3532 -0
- package/dist/{v2/server-fg34g6a5.js → index-kb9nn0a0.js} +309 -52
- package/dist/index-knh4y330.js +566 -0
- package/dist/{index-q4yp4b52.js → index-mfkzp7qj.js} +28 -28
- package/dist/{index-sgthv3f7.js → index-mmyh6d8f.js} +4 -4
- package/dist/index-pavzsdc6.js +17 -0
- package/dist/{index-0d3g3461.js → index-pdecwzrd.js} +19 -16
- package/dist/index-pg50n748.js +1060 -0
- package/dist/index-q2tqeqde.js +2106 -0
- package/dist/index-q7h7csab.js +3469 -0
- package/dist/index-qt1qqasc.js +22 -0
- package/dist/{index-majxda46.js → index-ty64eqcn.js} +28 -18
- package/dist/{index-7qw742ev.js → index-yq8n9qcb.js} +25 -44
- package/dist/{index-sfnj6h8h.js → index-z8e0psj8.js} +20 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1061 -260
- package/dist/logger-d3wex3dz.js +20 -0
- package/dist/message-index-bounded-7ezbgddp.js +124 -0
- package/dist/{v2/message-time-backfill-r6qkem1x.js → message-time-backfill-brbd63hv.js} +8 -6
- package/dist/migration-worker.js +25 -16
- 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 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler-report.d.ts +2 -0
- package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -0
- package/dist/plugin/host-stall-profiler.d.ts +3 -0
- package/dist/plugin/host-stall-profiler.d.ts.map +1 -0
- package/dist/plugin/messages-transform.d.ts +21 -19
- 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-egz7r68d.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-qs0j78v6.js → send-session-notification-erecz4y4.js} +10 -6
- package/dist/shared/auto-search-lifecycle.d.ts +7 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -0
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/historian-tool-expansions.d.ts +1 -1
- package/dist/shared/historian-tool-expansions.d.ts.map +1 -1
- package/dist/shared/historian-tool-template.d.ts +2 -2
- package/dist/shared/historian-tool-template.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 +46 -1
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/stable-json.d.ts.map +1 -1
- package/dist/shared/status-view.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/shared/window-geometry.d.ts +4 -0
- package/dist/shared/window-geometry.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/render.d.ts.map +1 -1
- 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-bqhz6vdr.js → transform-postprocess-phase-spcy2qre.js} +35 -17
- package/dist/transformers-node-wasm.js +18415 -18415
- package/dist/v2/auto-search-worker.js +112 -0
- package/dist/v2/{context-zecmzk5s.js → context-sf98kstd.js} +8378 -8530
- package/dist/v2/{derive-budgets-kdgp4s3r.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/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 +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-68gj6t3e.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
- package/dist/v2/migration-worker.js +24 -15
- 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-8vjp6581.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-dyw42dtr.js → v2/send-session-notification-6km439kn.js} +9 -7
- 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-xa4xe3rv.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-8pyt7hev.js +3408 -0
- 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/v2/server-e0vdaae2.js +3591 -0
- 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-jc7y02q0.js → server-k8x2rbxc.js} +5119 -10948
- package/dist/{index-fg34g6a5.js → v2/server-kb9nn0a0.js} +309 -52
- package/dist/v2/{server-g0fjrkta.js → server-mfkzp7qj.js} +28 -28
- package/dist/v2/server-pavzsdc6.js +17 -0
- package/dist/v2/server-psqc7e9n.js +2106 -0
- package/dist/v2/server-qt1qqasc.js +22 -0
- 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-y8maxeft.js → server-v06jcv0w.js} +16 -13
- package/dist/v2/server-vqpf3167.js +1048 -0
- package/dist/v2/{server-c5gz8wph.js → server-x2g40a71.js} +2048 -2059
- package/dist/v2/{server-wvjvfhck.js → server-xdfwt6kh.js} +20 -16
- package/dist/v2/{server-mcfawjgc.js → server-xxm59eww.js} +25 -44
- package/dist/v2/server-yczc713m.js +564 -0
- package/dist/v2/{server-3n4q9xme.js → server-z2037m6z.js} +4 -4
- package/dist/v2/{server-e29d7p7c.js → server-zm570tr2.js} +166 -160
- 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-0snhvwcv.js → wrapup-orchestrator-mz7efs7w.js} +51 -27
- 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 +8 -0
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/config/live-run-config.test.ts +37 -1
- package/src/config/live-run-config.ts +28 -0
- package/src/config/migrate-config-location.ts +10 -3
- 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 +6 -5
- package/src/config/schema/magic-context.ts +34 -16
- package/src/features/magic-context/dreamer/task-registry.ts +6 -0
- package/src/shared/auto-search-lifecycle.ts +27 -0
- package/src/shared/conflict-detector.test.ts +56 -0
- package/src/shared/conflict-detector.ts +16 -5
- package/src/shared/historian-tool-defaults.json +6 -6
- package/src/shared/historian-tool-expansions.ts +65 -8
- package/src/shared/historian-tool-preview-defaults.json +13 -0
- package/src/shared/historian-tool-template.ts +48 -14
- 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-640-review-r2.test.ts +136 -0
- package/src/shared/sqlite-640-review.test.ts +183 -0
- package/src/shared/sqlite-acquisition-routing.test.ts +18 -0
- package/src/shared/sqlite.test.ts +52 -0
- package/src/shared/sqlite.ts +423 -37
- package/src/shared/stable-json-linear.test.ts +109 -0
- package/src/shared/stable-json.ts +37 -7
- package/src/shared/status-view.test.ts +6 -1
- package/src/shared/status-view.ts +15 -1
- package/src/shared/tag-transcript.ts +6 -0
- package/src/shared/user-facing-codes.ts +2 -6
- package/src/shared/window-geometry.ts +10 -0
- 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-3h0ybwah.js +0 -6540
- package/dist/index-r5hmbx3t.js +0 -7773
- package/dist/recomp-orchestrator-y15j0rb9.js +0 -39
- package/dist/v2/recomp-orchestrator-8ejxvrzz.js +0 -39
- package/dist/v2/server-frbm99q5.js +0 -7698
- package/dist/v2/server-qp5hx1ad.js +0 -6366
- package/dist/wrapup-orchestrator-39amhv9s.js +0 -26
- /package/dist/{index-en1k8h8m.js → index-2pp04pmg.js} +0 -0
- /package/dist/v2/{index-en1k8h8m.js → index-2pp04pmg.js} +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/// <reference types="bun-types" />
|
|
2
|
+
|
|
3
|
+
import { describe, expect, it } from "bun:test";
|
|
4
|
+
import { stableStringify } from "./stable-json";
|
|
5
|
+
|
|
6
|
+
/** stableStringify as it was before it collected pieces: joins at every level. */
|
|
7
|
+
function frozenStableStringify(value: unknown, seen = new WeakSet<object>()): string {
|
|
8
|
+
if (value === undefined) return "undefined";
|
|
9
|
+
if (value === null || typeof value !== "object") return JSON.stringify(value) ?? String(value);
|
|
10
|
+
if (seen.has(value)) return '"[Circular]"';
|
|
11
|
+
seen.add(value);
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return `[${value.map((item) => frozenStableStringify(item, seen)).join(",")}]`;
|
|
14
|
+
}
|
|
15
|
+
const entries = Object.entries(value as Record<string, unknown>).sort(([a], [b]) => {
|
|
16
|
+
if (a < b) return -1;
|
|
17
|
+
if (a > b) return 1;
|
|
18
|
+
return 0;
|
|
19
|
+
});
|
|
20
|
+
return `{${entries
|
|
21
|
+
.map(([key, child]) => `${JSON.stringify(key)}:${frozenStableStringify(child, seen)}`)
|
|
22
|
+
.join(",")}}`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function rng(seed: number): () => number {
|
|
26
|
+
let state = seed >>> 0 || 1;
|
|
27
|
+
return () => {
|
|
28
|
+
state ^= state << 13;
|
|
29
|
+
state >>>= 0;
|
|
30
|
+
state ^= state >>> 17;
|
|
31
|
+
state ^= state << 5;
|
|
32
|
+
state >>>= 0;
|
|
33
|
+
return state / 0x100000000;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function randomValue(random: () => number, depth: number, shared: object[]): unknown {
|
|
38
|
+
const roll = random();
|
|
39
|
+
if (depth > 4 || roll < 0.35) {
|
|
40
|
+
const leaves: unknown[] = [
|
|
41
|
+
"plain",
|
|
42
|
+
'quote " and \\ backslash',
|
|
43
|
+
"ünï 日本 😀 \u2028",
|
|
44
|
+
0,
|
|
45
|
+
-0,
|
|
46
|
+
1.5,
|
|
47
|
+
Number.NaN,
|
|
48
|
+
Number.POSITIVE_INFINITY,
|
|
49
|
+
true,
|
|
50
|
+
false,
|
|
51
|
+
null,
|
|
52
|
+
undefined,
|
|
53
|
+
() => 1,
|
|
54
|
+
Symbol("s"),
|
|
55
|
+
];
|
|
56
|
+
return leaves[Math.floor(random() * leaves.length)];
|
|
57
|
+
}
|
|
58
|
+
if (roll < 0.45 && shared.length > 0) return shared[Math.floor(random() * shared.length)];
|
|
59
|
+
if (roll < 0.7) {
|
|
60
|
+
const array: unknown[] = [];
|
|
61
|
+
const length = Math.floor(random() * 5);
|
|
62
|
+
for (let index = 0; index < length; index += 1) {
|
|
63
|
+
if (random() < 0.15) continue; // leaves a hole
|
|
64
|
+
array[index] = randomValue(random, depth + 1, shared);
|
|
65
|
+
}
|
|
66
|
+
array.length = length;
|
|
67
|
+
if (random() < 0.2) shared.push(array);
|
|
68
|
+
return array;
|
|
69
|
+
}
|
|
70
|
+
const object: Record<string, unknown> = {};
|
|
71
|
+
for (let index = Math.floor(random() * 5); index > 0; index -= 1) {
|
|
72
|
+
const key = ["b", "a", "10", "2", "é", "Z", "key with space"][
|
|
73
|
+
Math.floor(random() * 7)
|
|
74
|
+
] as string;
|
|
75
|
+
object[key] = randomValue(random, depth + 1, shared);
|
|
76
|
+
}
|
|
77
|
+
if (random() < 0.2) shared.push(object);
|
|
78
|
+
if (random() < 0.1) object.self = object;
|
|
79
|
+
return object;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
describe("stableStringify", () => {
|
|
83
|
+
it("writes exactly what it wrote when it joined at every level", () => {
|
|
84
|
+
const random = rng(653);
|
|
85
|
+
let circular = 0;
|
|
86
|
+
let holes = 0;
|
|
87
|
+
for (let sample = 0; sample < 2_000; sample += 1) {
|
|
88
|
+
const value = randomValue(random, 0, []);
|
|
89
|
+
const text = stableStringify(value);
|
|
90
|
+
expect(text).toBe(frozenStableStringify(value));
|
|
91
|
+
if (text.includes('"[Circular]"')) circular += 1;
|
|
92
|
+
if (/\[,|,,|,\]/.test(text)) holes += 1;
|
|
93
|
+
}
|
|
94
|
+
// Shared and cyclic references and array holes were among the samples.
|
|
95
|
+
expect(circular).toBeGreaterThan(50);
|
|
96
|
+
expect(holes).toBeGreaterThan(50);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("copies a deeply nested value once, not once per level", () => {
|
|
100
|
+
// 3,000 levels around a 2 MB string: joining at every level copied about
|
|
101
|
+
// 6 GB of text (over a second); one copy takes a few milliseconds.
|
|
102
|
+
let node: unknown = { body: "x".repeat(2_000_000) };
|
|
103
|
+
for (let depth = 0; depth < 3_000; depth += 1) node = { child: node, depth };
|
|
104
|
+
const started = performance.now();
|
|
105
|
+
const text = stableStringify(node);
|
|
106
|
+
expect(text.length).toBeGreaterThan(2_000_000);
|
|
107
|
+
expect(performance.now() - started).toBeLessThan(300);
|
|
108
|
+
}, 30_000);
|
|
109
|
+
});
|
|
@@ -18,12 +18,38 @@
|
|
|
18
18
|
* signing), build a separate utility — do NOT widen this contract.
|
|
19
19
|
*/
|
|
20
20
|
export function stableStringify(value: unknown, seen = new WeakSet<object>()): string {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
// Collect pieces and join once. Joining at every level copied each nested
|
|
22
|
+
// value's text once per enclosing level, so a large value N levels deep cost
|
|
23
|
+
// N copies of itself.
|
|
24
|
+
const pieces: string[] = [];
|
|
25
|
+
writeStable(value, seen, pieces);
|
|
26
|
+
return pieces.join("");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function writeStable(value: unknown, seen: WeakSet<object>, pieces: string[]): void {
|
|
30
|
+
if (value === undefined) {
|
|
31
|
+
pieces.push("undefined");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (value === null || typeof value !== "object") {
|
|
35
|
+
pieces.push(JSON.stringify(value) ?? String(value));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Any object met a second time, shared or cyclic, is written as "[Circular]".
|
|
39
|
+
if (seen.has(value)) {
|
|
40
|
+
pieces.push('"[Circular]"');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
24
43
|
seen.add(value);
|
|
25
44
|
if (Array.isArray(value)) {
|
|
26
|
-
|
|
45
|
+
pieces.push("[");
|
|
46
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
47
|
+
if (index > 0) pieces.push(",");
|
|
48
|
+
// A hole writes nothing between its commas, as joining a mapped array did.
|
|
49
|
+
if (index in value) writeStable(value[index], seen, pieces);
|
|
50
|
+
}
|
|
51
|
+
pieces.push("]");
|
|
52
|
+
return;
|
|
27
53
|
}
|
|
28
54
|
// Code-point sort (NOT localeCompare). Stable across runtimes/locales.
|
|
29
55
|
const entries = Object.entries(value as Record<string, unknown>).sort(([a], [b]) => {
|
|
@@ -31,7 +57,11 @@ export function stableStringify(value: unknown, seen = new WeakSet<object>()): s
|
|
|
31
57
|
if (a > b) return 1;
|
|
32
58
|
return 0;
|
|
33
59
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.
|
|
60
|
+
pieces.push("{");
|
|
61
|
+
entries.forEach(([key, child], index) => {
|
|
62
|
+
if (index > 0) pieces.push(",");
|
|
63
|
+
pieces.push(JSON.stringify(key), ":");
|
|
64
|
+
writeStable(child, seen, pieces);
|
|
65
|
+
});
|
|
66
|
+
pieces.push("}");
|
|
37
67
|
}
|
|
@@ -118,7 +118,12 @@ describe("status view model", () => {
|
|
|
118
118
|
expect(rowLabels("Tags")).toEqual(["Active", "Dropped", "Total"]);
|
|
119
119
|
expect(rowLabels("Reductions")).toEqual(["Execute threshold", "Last reduce anchor"]);
|
|
120
120
|
expect(rowLabels("Pending Queue")).toEqual(["Drops", "Marker"]);
|
|
121
|
-
expect(rowLabels("Context Details")).toEqual([
|
|
121
|
+
expect(rowLabels("Context Details")).toEqual([
|
|
122
|
+
"Protected tags",
|
|
123
|
+
"Subagent",
|
|
124
|
+
"Denominator",
|
|
125
|
+
"Window source",
|
|
126
|
+
]);
|
|
122
127
|
expect(rowLabels("Cache TTL")).toEqual([
|
|
123
128
|
"Configured",
|
|
124
129
|
"Last response",
|
|
@@ -31,7 +31,11 @@ import {
|
|
|
31
31
|
type UserFacingFailureKey,
|
|
32
32
|
userFacingFailureCode,
|
|
33
33
|
} from "./user-facing-codes";
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
formatWindowDerivationLine,
|
|
36
|
+
formatWindowSource,
|
|
37
|
+
type WindowGeometryResult,
|
|
38
|
+
} from "./window-geometry";
|
|
35
39
|
|
|
36
40
|
/** Theme-independent colour role; each host maps these onto its own palette. */
|
|
37
41
|
export type StatusTone = "accent" | "text" | "muted" | "warning" | "error";
|
|
@@ -656,6 +660,16 @@ function statusSections(source: StatusViewSource, now: number): StatusSection[]
|
|
|
656
660
|
tone: "muted",
|
|
657
661
|
},
|
|
658
662
|
{ label: "Subagent", value: source.isSubagent ? "yes" : "no", tone: "muted" },
|
|
663
|
+
{
|
|
664
|
+
label: "Denominator",
|
|
665
|
+
value: `${Math.round(source.contextLimit)} tokens`,
|
|
666
|
+
tone: "muted",
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
label: "Window source",
|
|
670
|
+
value: formatWindowSource(source.windowGeometry),
|
|
671
|
+
tone: "muted",
|
|
672
|
+
},
|
|
659
673
|
],
|
|
660
674
|
},
|
|
661
675
|
{ title: "Cache TTL", labelWidth: 14, rows: cacheRows(source, now) },
|
|
@@ -1157,6 +1157,10 @@ function buildAggregateTarget(
|
|
|
1157
1157
|
};
|
|
1158
1158
|
|
|
1159
1159
|
return {
|
|
1160
|
+
mutationParts: occurrences.map((occ) => ({
|
|
1161
|
+
message: { info: occ.message.info, parts: [] },
|
|
1162
|
+
part: occ.part,
|
|
1163
|
+
})),
|
|
1160
1164
|
measureReclaim(skeleton) {
|
|
1161
1165
|
let beforeTools = 0;
|
|
1162
1166
|
let afterTools = 0;
|
|
@@ -1319,6 +1323,7 @@ function buildTextTarget(
|
|
|
1319
1323
|
textPrefix: string,
|
|
1320
1324
|
): TagTarget {
|
|
1321
1325
|
return {
|
|
1326
|
+
mutationParts: [{ message: { info: message.info, parts: [] }, part }],
|
|
1322
1327
|
textPrefix,
|
|
1323
1328
|
setContent(content: string): boolean {
|
|
1324
1329
|
return part.setText(content);
|
|
@@ -1351,6 +1356,7 @@ function buildToolTarget(
|
|
|
1351
1356
|
tagId: number,
|
|
1352
1357
|
): TagTarget {
|
|
1353
1358
|
return {
|
|
1359
|
+
mutationParts: [{ message: { info: message.info, parts: [] }, part }],
|
|
1354
1360
|
setContent(content: string): boolean {
|
|
1355
1361
|
return setToolContentOrText(part, content);
|
|
1356
1362
|
},
|
|
@@ -245,12 +245,8 @@ export const USER_FACING_FAILURES = {
|
|
|
245
245
|
sentence: "Magic Context has no context.db.",
|
|
246
246
|
action: "Run `npx @cortexkit/magic-context doctor store init`, then restart ck-mc.",
|
|
247
247
|
},
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
sentence:
|
|
251
|
-
"This request was not sent: this agent is checked out on another machine, so Magic Context will not work on its sessions here.",
|
|
252
|
-
action: "Move the agent back to this machine, then send your message again.",
|
|
253
|
-
},
|
|
248
|
+
// MC-C16 is retired: released builds showed it when a turn was refused because
|
|
249
|
+
// another machine held the session's agent. Do not reuse it for a new failure.
|
|
254
250
|
single_store_migration_required: {
|
|
255
251
|
code: "MC-C14",
|
|
256
252
|
sentence: "Magic Context's Rust mode needs a one-time migration of its store.",
|
|
@@ -89,6 +89,8 @@ export interface WindowDerivation {
|
|
|
89
89
|
geometry: WindowGeometry;
|
|
90
90
|
windowSource: WindowLimitSource;
|
|
91
91
|
absoluteWall: number;
|
|
92
|
+
/** Accepted provider input used to raise the usable denominator above metadata. */
|
|
93
|
+
provenInputTokens?: number;
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
export interface WindowGeometryResult {
|
|
@@ -691,6 +693,7 @@ export function applyProvenInputFloor(
|
|
|
691
693
|
absoluteWall: trustedAbsoluteWall
|
|
692
694
|
? geometry.derivation.absoluteWall
|
|
693
695
|
: Math.max(geometry.derivation.absoluteWall, provenInputTokens),
|
|
696
|
+
provenInputTokens,
|
|
694
697
|
},
|
|
695
698
|
},
|
|
696
699
|
};
|
|
@@ -715,6 +718,13 @@ export function formatWindowDerivationLine(
|
|
|
715
718
|
return `${formatCompactTokens(inputTokens)} / ${formatCompactTokens(result.usableSoft)} usable · window ${formatCompactTokens(result.derivation.window)} · ${formatCompactTokens(result.derivation.reserve)} ${reserveLabel}`;
|
|
716
719
|
}
|
|
717
720
|
|
|
721
|
+
/** Distinguish metadata from a denominator raised by an accepted input measurement. */
|
|
722
|
+
export function formatWindowSource(result: WindowGeometryResult | undefined): string {
|
|
723
|
+
return result?.derivation.provenInputTokens
|
|
724
|
+
? `provider-measured floor (${result.derivation.windowSource})`
|
|
725
|
+
: (result?.derivation.windowSource ?? "unknown");
|
|
726
|
+
}
|
|
727
|
+
|
|
718
728
|
export function formatCompactTokens(value: number): string {
|
|
719
729
|
if (Math.abs(value) >= 1_000_000) {
|
|
720
730
|
return `${(value / 1_000_000).toFixed(1).replace(/\.0$/, "")}m`;
|
|
@@ -87,7 +87,7 @@ const fencedSources: Array<{ path: string; sites: string[]; reporterCalls?: stri
|
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
path: "packages/pi-plugin/src/context-handler.ts",
|
|
90
|
-
sites: ["
|
|
90
|
+
sites: ["pi_fallback_adoption"],
|
|
91
91
|
},
|
|
92
92
|
];
|
|
93
93
|
|
|
@@ -149,7 +149,7 @@ const newlyCoveredSites = [
|
|
|
149
149
|
"pi_materialize_cache",
|
|
150
150
|
"pi_soft_refresh_cache",
|
|
151
151
|
"pi_historian_publish",
|
|
152
|
-
"
|
|
152
|
+
"pi_fallback_adoption",
|
|
153
153
|
"note_nudge_trigger",
|
|
154
154
|
"user_memory_candidate_insert",
|
|
155
155
|
] as const;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { afterEach, expect,
|
|
1
|
+
import { afterEach, expect, test } from "bun:test";
|
|
2
2
|
import { rmSync } from "node:fs";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { Host } from "@opencode/plugin/host";
|
|
6
|
-
import
|
|
6
|
+
import type { MagicContextRpcServer } from "../../shared/rpc-server";
|
|
7
7
|
import { createTestTempDirFromPath } from "../../shared/test-temp-dir";
|
|
8
|
+
import { registerV2Commands } from "../hooks/commands";
|
|
9
|
+
import type { V2CommandDomain } from "../hooks/types";
|
|
8
10
|
import { setupWithJsx } from "./index";
|
|
9
11
|
import type { V2SidebarState, V2SlotClaim, V2TuiContext } from "./types";
|
|
10
12
|
|
|
@@ -110,7 +112,7 @@ function v1Api(directory: string) {
|
|
|
110
112
|
};
|
|
111
113
|
}
|
|
112
114
|
|
|
113
|
-
test("GA 2.0.5
|
|
115
|
+
test("GA 2.0.5 registers each /ctx-* command once on the server, not the TUI keymap", async () => {
|
|
114
116
|
const packageRoot = resolve(import.meta.dir, "../../..");
|
|
115
117
|
const entrypoints = Host.resolve({
|
|
116
118
|
name: "@cortexkit/opencode-magic-context",
|
|
@@ -125,76 +127,48 @@ test("GA 2.0.5 resolves ./tui and executes the union setup contract", async () =
|
|
|
125
127
|
};
|
|
126
128
|
};
|
|
127
129
|
expect(typeof loaded.default.setup).toBe("function");
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (sidebarClaim.append !== "sidebar.content") throw new Error("expected the sidebar claim");
|
|
133
|
-
expect(sidebarClaim.render({ sessionID: "ses-v2-tui" })).toEqual({
|
|
134
|
-
type: "text",
|
|
135
|
-
props: { children: expect.stringContaining("Magic Context") },
|
|
136
|
-
});
|
|
137
|
-
expect(fixture.layers[0]!.commands.map((command) => command.slash.name)).toEqual([
|
|
138
|
-
"ctx-status",
|
|
139
|
-
"ctx-recomp",
|
|
140
|
-
"ctx-dream",
|
|
141
|
-
"ctx-flush",
|
|
142
|
-
"ctx-embed",
|
|
143
|
-
"ctx-wrapup",
|
|
144
|
-
]);
|
|
145
|
-
cleanup();
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
test("GA 2.0.5 registers the keymap layer from the app slot when setup runs outside the provider", async () => {
|
|
149
|
-
const fixture = v2Context();
|
|
150
|
-
let providerAvailable = false;
|
|
151
|
-
Object.assign(fixture.context.keymap, {
|
|
152
|
-
layer: (input: () => unknown) => {
|
|
153
|
-
if (!providerAvailable) throw new Error("Keymap.Provider is missing");
|
|
154
|
-
fixture.layers.push(input() as never);
|
|
130
|
+
const serverCommands: string[] = [];
|
|
131
|
+
const commandDomain: V2CommandDomain = {
|
|
132
|
+
async transform(callback) {
|
|
133
|
+
callback({ add: (definition) => serverCommands.push(definition.name) });
|
|
155
134
|
},
|
|
135
|
+
async reload() {},
|
|
136
|
+
};
|
|
137
|
+
const serverRegistered = await registerV2Commands({
|
|
138
|
+
command: commandDomain,
|
|
139
|
+
rpc: { dispatch: async () => ({}) } as unknown as MagicContextRpcServer,
|
|
140
|
+
directory: process.cwd(),
|
|
141
|
+
compactionEnabled: true,
|
|
156
142
|
});
|
|
157
|
-
|
|
158
|
-
expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content", "app"]);
|
|
159
|
-
expect(fixture.layers).toHaveLength(0);
|
|
143
|
+
expect(serverRegistered).toBe(true);
|
|
160
144
|
|
|
161
|
-
// The app slot render executes inside the component tree, where the provider resolves.
|
|
162
|
-
providerAvailable = true;
|
|
163
|
-
const appClaim = fixture.claims.find((claim) => claim.append === "app");
|
|
164
|
-
if (appClaim?.append !== "app") throw new Error("expected the app slot claim");
|
|
165
|
-
appClaim.render({});
|
|
166
|
-
expect(
|
|
167
|
-
fixture.layers.map((layer) => layer.commands.map((command) => command.slash.name)),
|
|
168
|
-
).toEqual([["ctx-status", "ctx-recomp", "ctx-dream", "ctx-flush", "ctx-embed", "ctx-wrapup"]]);
|
|
169
|
-
// Repeated renders must not stack duplicate layers.
|
|
170
|
-
appClaim.render({});
|
|
171
|
-
expect(fixture.layers).toHaveLength(1);
|
|
172
|
-
cleanup();
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
test("GA 2.0.5 keeps the sidebar when the app-slot keymap registration also fails", async () => {
|
|
176
145
|
const fixture = v2Context();
|
|
177
|
-
|
|
178
|
-
layer: () => {
|
|
179
|
-
throw new Error("Keymap.Provider is missing");
|
|
180
|
-
},
|
|
181
|
-
});
|
|
182
|
-
// The gap is recorded in the plugin log; the TUI host drops console output.
|
|
183
|
-
const logged = spyOn(logger, "log");
|
|
146
|
+
const cleanup = await setupWithJsx(fixture.context, (type, props) => ({ type, props }));
|
|
184
147
|
try {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
148
|
+
expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content"]);
|
|
149
|
+
const sidebarClaim = fixture.claims[0]!;
|
|
150
|
+
if (sidebarClaim.append !== "sidebar.content")
|
|
151
|
+
throw new Error("expected the sidebar claim");
|
|
152
|
+
expect(sidebarClaim.render({ sessionID: "ses-v2-tui" })).toEqual({
|
|
153
|
+
type: "text",
|
|
154
|
+
props: { children: expect.stringContaining("Magic Context") },
|
|
155
|
+
});
|
|
156
|
+
const tuiCommands = fixture.layers.flatMap((layer) =>
|
|
157
|
+
layer.commands.map((command) => command.slash.name),
|
|
158
|
+
);
|
|
159
|
+
const allRegistrations = [...serverCommands, ...tuiCommands].sort();
|
|
160
|
+
const expectedCommands = [
|
|
161
|
+
"ctx-dream",
|
|
162
|
+
"ctx-embed",
|
|
163
|
+
"ctx-flush",
|
|
164
|
+
"ctx-recomp",
|
|
165
|
+
"ctx-status",
|
|
166
|
+
"ctx-wrapup",
|
|
167
|
+
];
|
|
168
|
+
expect(allRegistrations).toEqual(expectedCommands);
|
|
169
|
+
expect(new Set(allRegistrations).size).toBe(expectedCommands.length);
|
|
196
170
|
} finally {
|
|
197
|
-
|
|
171
|
+
cleanup();
|
|
198
172
|
}
|
|
199
173
|
});
|
|
200
174
|
|