@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI5E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI5E,OAAO,EAOH,KAAK,kBAAkB,EAC1B,MAAM,2BAA2B,CAAC;AAUnC,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAC;AAY5D;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAyBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,IAAI,CACR,YAAY,EACV,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,CACzB,GACF,MAAM,CA6BR;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoBhE;AAOD,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;AAE5E,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAqM9F;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAStE;;;;;AAED,wBAAuD"}
|
package/dist/v2/tui/types.d.ts
CHANGED
|
@@ -138,22 +138,13 @@ export interface V2TuiContext {
|
|
|
138
138
|
};
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
-
/**
|
|
142
|
-
* A slot claim's `render` runs inside the host's component tree; `app` is the
|
|
143
|
-
* always-mounted root slot, which is where `keymap.layer()` can be called from
|
|
144
|
-
* when plugin `setup()` runs outside the keymap provider (see index.ts).
|
|
145
|
-
*/
|
|
141
|
+
/** The sidebar slot used by the OpenCode 2 TUI. */
|
|
146
142
|
export type V2SlotClaim = {
|
|
147
143
|
readonly append: "sidebar.content";
|
|
148
144
|
readonly render: (input: {
|
|
149
145
|
readonly sessionID: string;
|
|
150
146
|
}) => unknown;
|
|
151
|
-
} | {
|
|
152
|
-
readonly append: "app";
|
|
153
|
-
readonly render: (input: Readonly<Record<string, never>>) => unknown;
|
|
154
147
|
};
|
|
155
|
-
/** The layer object `context.keymap.layer()` accepts, derived from the context type. */
|
|
156
|
-
export type V2KeymapLayer = ReturnType<Parameters<V2TuiContext["keymap"]["layer"]>[0]>;
|
|
157
148
|
export interface V2SidebarState {
|
|
158
149
|
snapshots: Record<string, SidebarSnapshot | undefined>;
|
|
159
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import"./server-pavzsdc6.js";
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./server-
|
|
4
|
-
import"./server-
|
|
3
|
+
sessionLog2
|
|
4
|
+
} from "./server-t4k4qexw.js";
|
|
5
|
+
import"./server-sa8jvrfc.js";
|
|
5
6
|
import {
|
|
6
7
|
COMPARTMENT_LEASE_RENEWAL_MS,
|
|
7
8
|
acquireCompartmentLease,
|
|
@@ -24,31 +25,47 @@ import {
|
|
|
24
25
|
registerActiveCompartmentRun,
|
|
25
26
|
setRecompStarting2,
|
|
26
27
|
setRecompTerminal2
|
|
27
|
-
} from "./server-
|
|
28
|
-
import"./server-
|
|
29
|
-
import"./server-
|
|
30
|
-
import"./server-
|
|
31
|
-
import"./server-
|
|
32
|
-
import"./server-
|
|
33
|
-
import"./server-
|
|
28
|
+
} from "./server-x4hscabv.js";
|
|
29
|
+
import"./server-kzns2hbz.js";
|
|
30
|
+
import"./server-hb6xhh9q.js";
|
|
31
|
+
import"./server-kb9nn0a0.js";
|
|
32
|
+
import"./server-3j4d00kf.js";
|
|
33
|
+
import"./server-ss95ky04.js";
|
|
34
|
+
import"./server-1tk82krw.js";
|
|
35
|
+
import"./server-6byqfbqf.js";
|
|
34
36
|
import"./server-1zx87sdm.js";
|
|
35
|
-
import"./server-
|
|
36
|
-
import"./server-
|
|
37
|
-
import"./server-
|
|
38
|
-
import"./server-
|
|
39
|
-
import"./server-
|
|
37
|
+
import"./server-c5rrgrcd.js";
|
|
38
|
+
import"./server-mfkzp7qj.js";
|
|
39
|
+
import"./server-7h861yms.js";
|
|
40
|
+
import"./server-2ra6pwf3.js";
|
|
41
|
+
import"./server-pj4pjv02.js";
|
|
42
|
+
import {
|
|
43
|
+
prepareRawSessionOrdinals2
|
|
44
|
+
} from "./server-4ez8mntn.js";
|
|
45
|
+
import"./server-7ekna9zs.js";
|
|
46
|
+
import"./server-fr0wbhdn.js";
|
|
47
|
+
import"./server-v4mewb78.js";
|
|
48
|
+
import"./server-xwz4dqh9.js";
|
|
49
|
+
import"./server-zm570tr2.js";
|
|
50
|
+
import"./server-fb3zxn06.js";
|
|
51
|
+
import"./server-jvxzm1jy.js";
|
|
52
|
+
import"./server-zp53y8js.js";
|
|
40
53
|
import {
|
|
41
54
|
pushNotification2
|
|
42
55
|
} from "./server-x8a7jmkh.js";
|
|
43
|
-
import"./server-
|
|
44
|
-
import"./server-
|
|
45
|
-
import"./server-
|
|
46
|
-
import"./server-
|
|
47
|
-
import"./server-
|
|
56
|
+
import"./server-qt1qqasc.js";
|
|
57
|
+
import"./server-4dhv7mqz.js";
|
|
58
|
+
import"./server-2s6ayq3t.js";
|
|
59
|
+
import"./server-w32kmdez.js";
|
|
60
|
+
import"./server-7jzrrxap.js";
|
|
61
|
+
import"./server-19zjmn02.js";
|
|
62
|
+
import"./server-8k2agx29.js";
|
|
63
|
+
import"./server-2s9qz6n7.js";
|
|
64
|
+
import"./server-676xw7at.js";
|
|
48
65
|
import {
|
|
49
66
|
sendStatusNotification2
|
|
50
|
-
} from "./server-
|
|
51
|
-
import"./server-
|
|
67
|
+
} from "./server-ycw9qqcy.js";
|
|
68
|
+
import"./server-3t0q2cqx.js";
|
|
52
69
|
|
|
53
70
|
// src/hooks/magic-context/wrapup-orchestrator.ts
|
|
54
71
|
import * as crypto from "node:crypto";
|
|
@@ -140,7 +157,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
|
|
|
140
157
|
const remainingMs = () => Math.max(0, waitStartedAt + maxWaitMs - Date.now());
|
|
141
158
|
for (;; ) {
|
|
142
159
|
if (remainingMs() <= 0) {
|
|
143
|
-
|
|
160
|
+
sessionLog2(sessionId, "wrapup: timed out waiting for the compartment-state lease");
|
|
144
161
|
return { ok: false, reason: "timeout" };
|
|
145
162
|
}
|
|
146
163
|
const active = getActiveCompartmentRun(sessionId);
|
|
@@ -151,7 +168,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
|
|
|
151
168
|
emitWrapupProgress(ctx, sessionId, { note: "Waiting for the active historian run…" });
|
|
152
169
|
const outcome = await waitForActiveRunWithin(active.promise, remainingMs());
|
|
153
170
|
if (outcome === "timeout") {
|
|
154
|
-
|
|
171
|
+
sessionLog2(sessionId, "wrapup: timed out waiting for the active historian run");
|
|
155
172
|
return { ok: false, reason: "timeout" };
|
|
156
173
|
}
|
|
157
174
|
continue;
|
|
@@ -174,10 +191,10 @@ async function runOneWrapupIteration(args) {
|
|
|
174
191
|
const renewal = setInterval(() => {
|
|
175
192
|
try {
|
|
176
193
|
if (!renewCompartmentLease(ctx.db, sessionId, leaseHolderId)) {
|
|
177
|
-
|
|
194
|
+
sessionLog2(sessionId, "wrapup: compartment lease renewal failed");
|
|
178
195
|
}
|
|
179
196
|
} catch (err) {
|
|
180
|
-
|
|
197
|
+
sessionLog2(sessionId, `wrapup: compartment lease renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
|
|
181
198
|
}
|
|
182
199
|
}, COMPARTMENT_LEASE_RENEWAL_MS);
|
|
183
200
|
const runCompartmentAgentForWrapup = ctx.runCompartmentAgentForWrapup ?? runCompartmentAgent;
|
|
@@ -223,13 +240,17 @@ async function runOneWrapupIteration(args) {
|
|
|
223
240
|
return { ran: true };
|
|
224
241
|
} finally {
|
|
225
242
|
clearInterval(renewal);
|
|
226
|
-
releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId,
|
|
243
|
+
releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId, sessionLog2);
|
|
227
244
|
}
|
|
228
245
|
}
|
|
229
246
|
async function runManagedWrapup(ctx, sessionId, options) {
|
|
230
247
|
const messagesToKeep = Math.max(1, Math.floor(options.messagesToKeep));
|
|
231
248
|
setRecompStarting2(ctx.liveSessionState, sessionId, "Estimating wrapup…", "wrapup");
|
|
232
249
|
try {
|
|
250
|
+
if (!await prepareRawSessionOrdinals2(sessionId)) {
|
|
251
|
+
setRecompTerminal2(ctx.liveSessionState, sessionId, "failed", "Session ordinals are warming; retry wrapup shortly.");
|
|
252
|
+
return "Wrapup deferred while session ordinals warm in the background. Retry shortly.";
|
|
253
|
+
}
|
|
233
254
|
return await runStartedWrapup(ctx, sessionId, messagesToKeep);
|
|
234
255
|
} catch (error) {
|
|
235
256
|
const reason = error instanceof Error ? error.message : String(error);
|
|
@@ -282,7 +303,7 @@ ${message}`;
|
|
|
282
303
|
if (ownershipLost)
|
|
283
304
|
return;
|
|
284
305
|
ownershipLost = true;
|
|
285
|
-
|
|
306
|
+
sessionLog2(sessionId, "wrapup: durable marker ownership lost; aborting loop");
|
|
286
307
|
};
|
|
287
308
|
const renewWrapupMarker = (updates) => {
|
|
288
309
|
const updated = updateWrapupInProgress(ctx.db, sessionId, wrapupHolderId, updates);
|
|
@@ -299,7 +320,7 @@ ${message}`;
|
|
|
299
320
|
chunkIndex
|
|
300
321
|
});
|
|
301
322
|
} catch (err) {
|
|
302
|
-
|
|
323
|
+
sessionLog2(sessionId, `wrapup: marker renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
|
|
303
324
|
}
|
|
304
325
|
}, 60000);
|
|
305
326
|
markerRenewal.unref?.();
|
|
@@ -355,7 +376,7 @@ ${message}`;
|
|
|
355
376
|
if (lastEnd + 1 >= plan.targetEligibleEndOrdinal)
|
|
356
377
|
break;
|
|
357
378
|
chunkIndex += 1;
|
|
358
|
-
|
|
379
|
+
sessionLog2(sessionId, `wrapup chunk ${chunkIndex}: ${describeBoundaryDiagnostics(plan.snapshot)}`);
|
|
359
380
|
emitWrapupProgress(ctx, sessionId, {
|
|
360
381
|
processedMessages: Math.max(0, lastEnd),
|
|
361
382
|
totalMessages: Math.max(0, plan.targetEligibleEndOrdinal - 1),
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runManagedWrapup2
|
|
3
|
+
} from "./index-1r0k9js3.js";
|
|
4
|
+
import"./index-ezmszwbd.js";
|
|
5
|
+
import"./index-2jcbj7r1.js";
|
|
6
|
+
import"./index-kmpvemph.js";
|
|
7
|
+
import"./index-hj2q50k0.js";
|
|
8
|
+
import"./index-peshmj6h.js";
|
|
9
|
+
import"./index-7jzrrxap.js";
|
|
10
|
+
import"./index-kp5qe690.js";
|
|
11
|
+
import"./index-b7mv1jx3.js";
|
|
12
|
+
import"./index-4dhv7mqz.js";
|
|
13
|
+
import"./index-sd3egckz.js";
|
|
14
|
+
import"./index-9rt53q79.js";
|
|
15
|
+
import"./index-qt1qqasc.js";
|
|
16
|
+
import"./index-57mrqed8.js";
|
|
17
|
+
import"./index-tqf7yg27.js";
|
|
18
|
+
import"./index-kq57tdf0.js";
|
|
19
|
+
import"./index-vkbqdnkj.js";
|
|
20
|
+
import"./index-s4j7t92z.js";
|
|
21
|
+
import"./index-fb3zxn06.js";
|
|
22
|
+
import"./index-nm6a8xpd.js";
|
|
23
|
+
import"./index-fr0wbhdn.js";
|
|
24
|
+
import"./index-pxwp2hjk.js";
|
|
25
|
+
import"./index-gzcmtmar.js";
|
|
26
|
+
import"./index-2jgwttpt.js";
|
|
27
|
+
import"./index-nydv6g8r.js";
|
|
28
|
+
import"./index-9qjqq45k.js";
|
|
29
|
+
import"./index-h5zfkjyk.js";
|
|
30
|
+
import"./index-1zx87sdm.js";
|
|
31
|
+
import"./index-mfkzp7qj.js";
|
|
32
|
+
import"./index-h2wc01qk.js";
|
|
33
|
+
import"./index-1bt88epp.js";
|
|
34
|
+
import"./index-58e3y90n.js";
|
|
35
|
+
import"./index-qx53vezw.js";
|
|
36
|
+
import"./index-4mjhqadz.js";
|
|
37
|
+
import"./index-kb9nn0a0.js";
|
|
38
|
+
import"./index-nsjyysj0.js";
|
|
39
|
+
import"./index-0sahzkwr.js";
|
|
40
|
+
import"./index-pavzsdc6.js";
|
|
41
|
+
import"./index-x8a7jmkh.js";
|
|
42
|
+
export {
|
|
43
|
+
runManagedWrapup2 as runManagedWrapup
|
|
44
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/opencode-magic-context",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OpenCode plugin for Magic Context — cross-session memory and context management",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"README.md"
|
|
38
38
|
],
|
|
39
39
|
"scripts": {
|
|
40
|
-
"build": "bun ../../scripts/check-bun.mjs && tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && bun ../../scripts/clean-dist-chunks.mjs dist index.js transformers-web.js transformers-node-wasm.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts --outdir dist --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && bun run build:v2 && tsc --emitDeclarationOnly",
|
|
41
|
-
"build:v2": "bun ../../scripts/clean-dist-chunks.mjs dist/v2 server.js embedding-worker.js migration-worker.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/v2/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist/v2 && bun build src/v2/server.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts --outdir dist/v2 --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite",
|
|
40
|
+
"build": "bun ../../scripts/check-bun.mjs && tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && bun ../../scripts/clean-dist-chunks.mjs dist index.js transformers-web.js transformers-node-wasm.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts src/hooks/magic-context/raw-ordinal-warmup-worker.ts --outdir dist --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && bun run build:v2 && tsc --emitDeclarationOnly",
|
|
41
|
+
"build:v2": "bun ../../scripts/clean-dist-chunks.mjs dist/v2 server.js embedding-worker.js migration-worker.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/v2/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist/v2 && bun build src/v2/server.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts src/hooks/magic-context/raw-ordinal-warmup-worker.ts --outdir dist/v2 --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite",
|
|
42
42
|
"build:tui": "bun scripts/build-tui.ts",
|
|
43
43
|
"check:tui-compiled": "git diff --exit-code -- src/tui-compiled && test -z \"$(git status --porcelain -- src/tui-compiled)\"",
|
|
44
44
|
"check:transformers-node-wasm": "bun scripts/verify-transformers-node-wasm.ts",
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
"@opencode/client": "2.0.22",
|
|
82
82
|
"effect": "4.0.0-rc.112",
|
|
83
83
|
"@ai-sdk/anthropic": "3.0.82",
|
|
84
|
+
"ai": "6.0.168",
|
|
84
85
|
"@huggingface/transformers": "^4.3.0",
|
|
85
86
|
"@ai-sdk/openai-compatible": "2.0.41",
|
|
86
87
|
"@biomejs/biome": "^2.5.1",
|
|
@@ -103,6 +103,26 @@ const TOOL_HISTORY_GUIDANCE_LIGHT = `Older work is filed off the desk into \`<se
|
|
|
103
103
|
|
|
104
104
|
const SMART_NOTE_GUIDANCE_LIGHT = `; a \`surface_condition\` leaves the note with an outside checker that returns it when the condition holds`;
|
|
105
105
|
|
|
106
|
+
/** Remove smart-note clauses and sections from user guidance when the capability is unavailable. */
|
|
107
|
+
function withoutSmartNoteGuidance(text: string): string {
|
|
108
|
+
let smartSectionLevel = 0;
|
|
109
|
+
return text
|
|
110
|
+
.replace(` ${SMART_NOTE_GUIDANCE}`, "")
|
|
111
|
+
.replace(SMART_NOTE_GUIDANCE_LIGHT, "")
|
|
112
|
+
.split("\n")
|
|
113
|
+
.filter((line) => {
|
|
114
|
+
const mentionsSmartNotes = /smart[-_ ]notes?|surface_condition|outside checker/i.test(
|
|
115
|
+
line,
|
|
116
|
+
);
|
|
117
|
+
const heading = /^\s*(#{1,6})\s/.exec(line);
|
|
118
|
+
if (heading && (!smartSectionLevel || heading[1].length <= smartSectionLevel)) {
|
|
119
|
+
smartSectionLevel = mentionsSmartNotes ? heading[1].length : 0;
|
|
120
|
+
}
|
|
121
|
+
return !smartSectionLevel && !mentionsSmartNotes;
|
|
122
|
+
})
|
|
123
|
+
.join("\n");
|
|
124
|
+
}
|
|
125
|
+
|
|
106
126
|
const TEMPORAL_AWARENESS_GUIDANCE_LIGHT = `, \`<!-- +Xm -->\` (time since your last reply)`;
|
|
107
127
|
|
|
108
128
|
const BASE_INTRO_LIGHT = (
|
|
@@ -169,7 +189,9 @@ export function buildMagicContextSection(
|
|
|
169
189
|
memoryEnabled = true,
|
|
170
190
|
preset: PromptSurfacePreset = "full",
|
|
171
191
|
primaryOverride?: string,
|
|
192
|
+
smartNotesEnabled = true,
|
|
172
193
|
): string {
|
|
194
|
+
dreamerEnabled = dreamerEnabled && smartNotesEnabled;
|
|
173
195
|
// Subagent sessions: minimal §N§ + ctx_reduce mechanics only. Bypasses the
|
|
174
196
|
// long-term-partner frame, memory/search/note guidance, and the reduction
|
|
175
197
|
// taxonomy — none of which apply to a bounded single-task child. Only
|
|
@@ -191,10 +213,13 @@ export function buildMagicContextSection(
|
|
|
191
213
|
const languageGuidance = languageDirective ? `\n\n${languageDirective}` : "";
|
|
192
214
|
|
|
193
215
|
if (primaryOverride !== undefined) {
|
|
194
|
-
// A user override owns
|
|
216
|
+
// A user override owns primary prose, except for unavailable smart-note clauses. Runtime clauses stay
|
|
195
217
|
// composer-owned so an override cannot suppress temporal guidance, the
|
|
196
218
|
// warning against overly compressed prose, or the language directive.
|
|
197
|
-
|
|
219
|
+
const primary = smartNotesEnabled
|
|
220
|
+
? primaryOverride
|
|
221
|
+
: withoutSmartNoteGuidance(primaryOverride);
|
|
222
|
+
return `${primary}${temporalOverrideGuidance}${cavemanWarning}${languageGuidance}`;
|
|
198
223
|
}
|
|
199
224
|
|
|
200
225
|
if (!ctxReduceCallable) {
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { afterEach, expect, test } from "bun:test";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { rmSync } from "node:fs";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { tool } from "@opencode-ai/plugin";
|
|
7
|
+
import { parsePluginConfig } from "../config";
|
|
8
|
+
import { sampleLiveConfig } from "../config/live-run-config";
|
|
9
|
+
import { stripUnsafeProjectConfigFields } from "../config/project-security";
|
|
10
|
+
import { evaluateSmartNotes } from "../features/magic-context/dreamer/evaluate-smart-notes";
|
|
11
|
+
import { writeTaskScheduleState } from "../features/magic-context/dreamer/storage-task-schedule";
|
|
12
|
+
import { buildDreamTaskRuntimeConfigs } from "../features/magic-context/dreamer/task-config";
|
|
13
|
+
import { resolveProjectIdentityForSession } from "../features/magic-context/memory/project-identity";
|
|
14
|
+
import { runDueCompiledSmartNoteChecks } from "../features/magic-context/smart-notes/runner";
|
|
15
|
+
import {
|
|
16
|
+
addNote,
|
|
17
|
+
closeDatabase,
|
|
18
|
+
getNotes,
|
|
19
|
+
markNoteReady,
|
|
20
|
+
openDatabase,
|
|
21
|
+
} from "../features/magic-context/storage";
|
|
22
|
+
import { onNoteTrigger, peekNoteNudgeText } from "../hooks/magic-context/note-nudger";
|
|
23
|
+
import { buildSidebarSnapshot } from "../plugin/rpc-handlers";
|
|
24
|
+
import { createToolRegistry } from "../plugin/tool-registry";
|
|
25
|
+
import { createTestTempDirFromPath } from "../shared/test-temp-dir";
|
|
26
|
+
import { createCtxNoteTools } from "../tools/ctx-note/tools";
|
|
27
|
+
import { CTX_NOTE_LIGHT_DESCRIPTION } from "../tools/light-descriptions";
|
|
28
|
+
import { applyJsonSchemaParameterDescriptions } from "../tools/parameter-descriptions";
|
|
29
|
+
import { registerTools } from "../v2/hooks/tools";
|
|
30
|
+
import { buildMagicContextSection } from "./magic-context-prompt";
|
|
31
|
+
import golden from "./smart-notes-on.golden.json";
|
|
32
|
+
|
|
33
|
+
// Freeze the OpenCode/Pi note definitions and primary guidance from master before this switch existed:
|
|
34
|
+
// default-on must preserve sessions' cached prompts. Source copies came from git show at
|
|
35
|
+
// 8d8f44bdaaba450ae136e20dd2476b3b41294416; SHA-256 hashes JSON.stringify of rendered strings
|
|
36
|
+
// and { description, schema } tool surfaces, not expectations calculated by the gated implementation.
|
|
37
|
+
|
|
38
|
+
const digest = (value: unknown) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
39
|
+
const expected = golden as Record<string, string>;
|
|
40
|
+
const oldXdg = process.env.XDG_DATA_HOME;
|
|
41
|
+
let dir: string | undefined;
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
closeDatabase();
|
|
44
|
+
if (oldXdg === undefined) delete process.env.XDG_DATA_HOME;
|
|
45
|
+
else process.env.XDG_DATA_HOME = oldXdg;
|
|
46
|
+
if (dir) rmSync(dir, { recursive: true, force: true });
|
|
47
|
+
});
|
|
48
|
+
function fixture() {
|
|
49
|
+
dir = createTestTempDirFromPath(join(tmpdir(), "smart-notes-enabled-"));
|
|
50
|
+
process.env.XDG_DATA_HOME = dir;
|
|
51
|
+
return openDatabase();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
test("enabled guidance is byte-identical to master on every built-in primary variant", () => {
|
|
55
|
+
for (const preset of ["full", "light"] as const)
|
|
56
|
+
for (const reduce of [false, true])
|
|
57
|
+
for (const memory of [false, true])
|
|
58
|
+
for (const dreamer of [false, true])
|
|
59
|
+
for (const temporal of [false, true]) {
|
|
60
|
+
for (const enabled of [undefined, true]) {
|
|
61
|
+
const text = buildMagicContextSection(
|
|
62
|
+
null,
|
|
63
|
+
20,
|
|
64
|
+
reduce,
|
|
65
|
+
dreamer,
|
|
66
|
+
temporal,
|
|
67
|
+
false,
|
|
68
|
+
false,
|
|
69
|
+
undefined,
|
|
70
|
+
memory,
|
|
71
|
+
preset,
|
|
72
|
+
undefined,
|
|
73
|
+
enabled,
|
|
74
|
+
);
|
|
75
|
+
expect(digest(text)).toBe(
|
|
76
|
+
expected[
|
|
77
|
+
`guidance/${preset}/${reduce}/${memory}/${dreamer}/${temporal}`
|
|
78
|
+
],
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test("disabled guidance removes every smart-note clause on OpenCode 1 and 2", () => {
|
|
85
|
+
const override =
|
|
86
|
+
"Custom guidance\n### Smart notes\n#### Verification\nUse an external condition to park work.\n### Ordinary notes\nKeep intentions in ctx_note.";
|
|
87
|
+
const custom = buildMagicContextSection(
|
|
88
|
+
null,
|
|
89
|
+
20,
|
|
90
|
+
true,
|
|
91
|
+
true,
|
|
92
|
+
false,
|
|
93
|
+
false,
|
|
94
|
+
false,
|
|
95
|
+
undefined,
|
|
96
|
+
true,
|
|
97
|
+
"full",
|
|
98
|
+
override,
|
|
99
|
+
false,
|
|
100
|
+
);
|
|
101
|
+
expect(custom).not.toContain("external condition");
|
|
102
|
+
expect(custom).toContain("Keep intentions in ctx_note");
|
|
103
|
+
for (const preset of ["full", "light"] as const)
|
|
104
|
+
for (const reduce of [false, true])
|
|
105
|
+
for (const memory of [false, true]) {
|
|
106
|
+
const text = buildMagicContextSection(
|
|
107
|
+
null,
|
|
108
|
+
20,
|
|
109
|
+
reduce,
|
|
110
|
+
true,
|
|
111
|
+
true,
|
|
112
|
+
false,
|
|
113
|
+
false,
|
|
114
|
+
undefined,
|
|
115
|
+
memory,
|
|
116
|
+
preset,
|
|
117
|
+
undefined,
|
|
118
|
+
false,
|
|
119
|
+
);
|
|
120
|
+
expect(text).not.toMatch(/surface_condition|smart.note|outside checker/i);
|
|
121
|
+
expect(text).toContain("ctx_note");
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test("startup capability is user-only, default on, and excluded from live reload", () => {
|
|
126
|
+
const boot = parsePluginConfig({});
|
|
127
|
+
expect(boot.smart_notes.enabled).toBe(true);
|
|
128
|
+
const off = parsePluginConfig({ smart_notes: { enabled: false } });
|
|
129
|
+
expect(off.smart_notes.enabled).toBe(false);
|
|
130
|
+
expect(sampleLiveConfig(boot, off).smart_notes.enabled).toBe(true);
|
|
131
|
+
const project = { smart_notes: { enabled: false, retina_handoff: true } };
|
|
132
|
+
const warnings = stripUnsafeProjectConfigFields(project);
|
|
133
|
+
expect(project.smart_notes).toEqual({ retina_handoff: true } as never);
|
|
134
|
+
expect(warnings.join(" ")).toContain("smart_notes.enabled");
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test("disabled dreamer task and compiled sweep leave pending notes unchecked", async () => {
|
|
138
|
+
const db = fixture();
|
|
139
|
+
const project = "git:smart-notes-enabled";
|
|
140
|
+
addNote(db, "smart", {
|
|
141
|
+
projectPath: project,
|
|
142
|
+
sessionId: "ses-off",
|
|
143
|
+
content: "parked",
|
|
144
|
+
surfaceCondition: "repository condition",
|
|
145
|
+
});
|
|
146
|
+
const config = parsePluginConfig({ dreamer: {}, smart_notes: { enabled: false } });
|
|
147
|
+
expect(
|
|
148
|
+
buildDreamTaskRuntimeConfigs(config.dreamer, "opencode", undefined, false).map(
|
|
149
|
+
(t) => t.task,
|
|
150
|
+
),
|
|
151
|
+
).not.toContain("evaluate-smart-notes");
|
|
152
|
+
const result = await evaluateSmartNotes({
|
|
153
|
+
db,
|
|
154
|
+
projectIdentity: project,
|
|
155
|
+
smartNotesEnabled: false,
|
|
156
|
+
} as never);
|
|
157
|
+
expect(result).toEqual({ ran: false, pending: 1, surfaced: 0 });
|
|
158
|
+
expect(
|
|
159
|
+
await runDueCompiledSmartNoteChecks({
|
|
160
|
+
db,
|
|
161
|
+
projectIdentity: project,
|
|
162
|
+
projectRoot: dir!,
|
|
163
|
+
smartNotesEnabled: false,
|
|
164
|
+
}),
|
|
165
|
+
).toEqual({ ran: 0, surfaced: 0, failed: 0, networkFailed: 0 });
|
|
166
|
+
expect(getNotes(db, { projectPath: project })[0]?.lastCheckedAt).toBeNull();
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
test("OpenCode 1 and 2 disabled tool surfaces refuse cached conditions and retain ready/read/dismiss", async () => {
|
|
170
|
+
const db = fixture();
|
|
171
|
+
const config = parsePluginConfig({
|
|
172
|
+
smart_notes: { enabled: false },
|
|
173
|
+
dreamer: {},
|
|
174
|
+
memory: { enabled: false },
|
|
175
|
+
});
|
|
176
|
+
const registry = createToolRegistry({
|
|
177
|
+
ctx: { directory: dir! } as never,
|
|
178
|
+
pluginConfig: config,
|
|
179
|
+
});
|
|
180
|
+
const registered: Array<{
|
|
181
|
+
name: string;
|
|
182
|
+
description: string;
|
|
183
|
+
input: unknown;
|
|
184
|
+
execute: (input: unknown, call: unknown) => Promise<{ content: string }>;
|
|
185
|
+
}> = [];
|
|
186
|
+
await registerTools(
|
|
187
|
+
{
|
|
188
|
+
location: { directory: dir },
|
|
189
|
+
tool: {
|
|
190
|
+
transform: async (callback: (editor: unknown) => void) =>
|
|
191
|
+
callback({ add: (definition: never) => registered.push(definition) }),
|
|
192
|
+
},
|
|
193
|
+
} as never,
|
|
194
|
+
db,
|
|
195
|
+
config,
|
|
196
|
+
);
|
|
197
|
+
const v2 = registered.find((t) => t.name === "ctx_note")!;
|
|
198
|
+
expect(v2).toBeDefined();
|
|
199
|
+
expect(
|
|
200
|
+
JSON.stringify({
|
|
201
|
+
description: registry.ctx_note.description,
|
|
202
|
+
schema: tool.schema.toJSONSchema(tool.schema.object(registry.ctx_note.args)),
|
|
203
|
+
}),
|
|
204
|
+
).not.toMatch(/surface_condition|smart.note|outside checker/i);
|
|
205
|
+
expect(JSON.stringify({ description: v2.description, schema: v2.input })).not.toMatch(
|
|
206
|
+
/surface_condition|smart.note|outside checker/i,
|
|
207
|
+
);
|
|
208
|
+
const call = { sessionID: "ses-off", messageID: "msg-off", agent: "build", progress: () => {} };
|
|
209
|
+
expect(
|
|
210
|
+
await registry.ctx_note.execute(
|
|
211
|
+
{ content: "old", surface_condition: "cached" } as never,
|
|
212
|
+
{ ...call, directory: dir } as never,
|
|
213
|
+
),
|
|
214
|
+
).toContain("Smart notes are disabled");
|
|
215
|
+
expect(
|
|
216
|
+
(await v2.execute({ content: "old", surface_condition: "cached" }, call)).content,
|
|
217
|
+
).toContain("Smart notes are disabled");
|
|
218
|
+
expect(getNotes(db, {})).toHaveLength(0);
|
|
219
|
+
const local = createCtxNoteTools({
|
|
220
|
+
db,
|
|
221
|
+
smartNotesEnabled: false,
|
|
222
|
+
resolveProjectPath: () => "git:fixture",
|
|
223
|
+
}).ctx_note;
|
|
224
|
+
const ready = addNote(db, "smart", {
|
|
225
|
+
projectPath: "git:fixture",
|
|
226
|
+
content: "already fired",
|
|
227
|
+
surfaceCondition: "done",
|
|
228
|
+
});
|
|
229
|
+
const pending = addNote(db, "smart", {
|
|
230
|
+
projectPath: "git:fixture",
|
|
231
|
+
content: "still parked",
|
|
232
|
+
surfaceCondition: "later",
|
|
233
|
+
});
|
|
234
|
+
markNoteReady(db, ready.id, "already true");
|
|
235
|
+
onNoteTrigger(db, "ses-off", "historian_complete");
|
|
236
|
+
expect(peekNoteNudgeText(db, "ses-off", "u-1", "git:fixture")).toBeNull();
|
|
237
|
+
expect(peekNoteNudgeText(db, "ses-off", "u-2", "git:fixture")).toContain("already fired");
|
|
238
|
+
const ctx = { sessionID: "ses-off", directory: dir } as never;
|
|
239
|
+
expect(await local.execute({ action: "read" }, ctx)).toContain("already fired");
|
|
240
|
+
expect(await local.execute({ action: "read", note_ids: [pending.id] }, ctx)).toContain(
|
|
241
|
+
"still parked",
|
|
242
|
+
);
|
|
243
|
+
expect(
|
|
244
|
+
await local.execute({ action: "dismiss", note_ids: [ready.id, pending.id] }, ctx),
|
|
245
|
+
).toContain("Dismissed 2 of 2");
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
test("enabled ctx_note schema and description match master golden on both OpenCode versions", () => {
|
|
249
|
+
for (const preset of ["full", "light"] as const)
|
|
250
|
+
for (const enabled of [undefined, true]) {
|
|
251
|
+
const definition = createCtxNoteTools({
|
|
252
|
+
db: null as never,
|
|
253
|
+
smartNotesEnabled: enabled,
|
|
254
|
+
}).ctx_note;
|
|
255
|
+
const schema = tool.schema.toJSONSchema(tool.schema.object(definition.args));
|
|
256
|
+
applyJsonSchemaParameterDescriptions("ctx_note", schema, preset);
|
|
257
|
+
expect(
|
|
258
|
+
digest({
|
|
259
|
+
description:
|
|
260
|
+
preset === "light" ? CTX_NOTE_LIGHT_DESCRIPTION : definition.description,
|
|
261
|
+
schema,
|
|
262
|
+
}),
|
|
263
|
+
).toBe(expected[`opencode/${preset}`]);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
test("disabled status omits parked task backlog and historical failure without deleting them", () => {
|
|
268
|
+
const db = fixture();
|
|
269
|
+
const projectPath = resolveProjectIdentityForSession(dir!)!;
|
|
270
|
+
writeTaskScheduleState(db, {
|
|
271
|
+
projectPath,
|
|
272
|
+
task: "evaluate-smart-notes",
|
|
273
|
+
schedule: "0 3 * * *",
|
|
274
|
+
lastRunAt: null,
|
|
275
|
+
nextDueAt: 1,
|
|
276
|
+
lastStatus: "failed",
|
|
277
|
+
lastError: "old evaluation failure",
|
|
278
|
+
retryCount: 2,
|
|
279
|
+
});
|
|
280
|
+
const on = buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
|
|
281
|
+
smart_notes: { enabled: true },
|
|
282
|
+
});
|
|
283
|
+
expect(on.dreamerFailures?.map((state) => state.task)).toContain("evaluate-smart-notes");
|
|
284
|
+
const off = buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
|
|
285
|
+
smart_notes: { enabled: false },
|
|
286
|
+
});
|
|
287
|
+
expect(off.dreamerBacklog).not.toHaveProperty("evaluate-smart-notes");
|
|
288
|
+
expect(off.dreamerFailures?.map((state) => state.task)).not.toContain("evaluate-smart-notes");
|
|
289
|
+
expect(
|
|
290
|
+
buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
|
|
291
|
+
smart_notes: { enabled: true },
|
|
292
|
+
}).dreamerFailures?.map((state) => state.task),
|
|
293
|
+
).toContain("evaluate-smart-notes");
|
|
294
|
+
});
|