@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// src/shared/protected-tools-policy.ts
|
|
2
|
+
var DEFAULT_PROTECTED_TOOLS = {
|
|
3
|
+
todowrite: 1,
|
|
4
|
+
ctx_reduce: 3
|
|
5
|
+
};
|
|
6
|
+
function normalizeProtectedToolName(name) {
|
|
7
|
+
return (name ?? "").toLowerCase().replace(/^mcp_/, "");
|
|
8
|
+
}
|
|
9
|
+
function mergeProtectedTools(...maps) {
|
|
10
|
+
return Object.fromEntries([DEFAULT_PROTECTED_TOOLS, ...maps].flatMap((map) => Object.entries(map ?? {}).map(([name, count]) => [
|
|
11
|
+
normalizeProtectedToolName(name),
|
|
12
|
+
count
|
|
13
|
+
])));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { DEFAULT_PROTECTED_TOOLS, normalizeProtectedToolName, mergeProtectedTools };
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./index-
|
|
2
|
+
sessionLog2
|
|
3
|
+
} from "./index-nsjyysj0.js";
|
|
4
4
|
import {
|
|
5
|
-
renderUserFacingFailure,
|
|
6
|
-
userFacingFailureCode,
|
|
7
5
|
clearEmergencyRecovery,
|
|
8
6
|
dropSlot,
|
|
9
7
|
executeContextRecomp
|
|
10
|
-
} from "./index-
|
|
8
|
+
} from "./index-2jcbj7r1.js";
|
|
9
|
+
import {
|
|
10
|
+
renderUserFacingFailure,
|
|
11
|
+
userFacingFailureCode
|
|
12
|
+
} from "./index-kmpvemph.js";
|
|
11
13
|
|
|
12
14
|
// src/hooks/magic-context/recomp-orchestrator.ts
|
|
13
15
|
function resolveLiveModelKey(liveSessionState, sessionId) {
|
|
@@ -126,7 +128,7 @@ async function runManagedRecomp2(ctx, sessionId, options) {
|
|
|
126
128
|
return message;
|
|
127
129
|
} catch (error) {
|
|
128
130
|
const failure = renderUserFacingFailure("recomp_unavailable");
|
|
129
|
-
|
|
131
|
+
sessionLog2(sessionId, `recomp failed code=${userFacingFailureCode("recomp_unavailable")}`, error);
|
|
130
132
|
setRecompTerminal2(ctx.liveSessionState, sessionId, "failed", failure);
|
|
131
133
|
return `## Magic Recomp — Failed
|
|
132
134
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// src/shared/sqlite-context-pragmas.ts
|
|
2
|
+
function configureContextDatabasePragmas2(db, readonly = false) {
|
|
3
|
+
const [row] = db.prepare(readonly ? "PRAGMA journal_mode" : "PRAGMA journal_mode=WAL").all();
|
|
4
|
+
const mode = row?.journal_mode?.toLowerCase();
|
|
5
|
+
if (mode === "memory" || readonly && mode !== "wal")
|
|
6
|
+
return;
|
|
7
|
+
if (mode !== "wal") {
|
|
8
|
+
throw new Error(`context.db requires WAL before synchronous=NORMAL (got ${mode ?? "unknown"})`);
|
|
9
|
+
}
|
|
10
|
+
db.exec("PRAGMA synchronous=NORMAL");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { configureContextDatabasePragmas2 };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/features/magic-context/memory/constants.ts
|
|
2
|
+
var V2_MEMORY_CATEGORIES = [
|
|
3
|
+
"PROJECT_RULES",
|
|
4
|
+
"ARCHITECTURE",
|
|
5
|
+
"CONSTRAINTS",
|
|
6
|
+
"CONFIG_VALUES",
|
|
7
|
+
"NAMING"
|
|
8
|
+
];
|
|
9
|
+
var PROMOTABLE_CATEGORIES = [
|
|
10
|
+
...V2_MEMORY_CATEGORIES,
|
|
11
|
+
"ARCHITECTURE_DECISIONS",
|
|
12
|
+
"CONFIG_DEFAULTS",
|
|
13
|
+
"USER_PREFERENCES",
|
|
14
|
+
"USER_DIRECTIVES",
|
|
15
|
+
"ENVIRONMENT",
|
|
16
|
+
"WORKFLOW_RULES",
|
|
17
|
+
"KNOWN_ISSUES"
|
|
18
|
+
];
|
|
19
|
+
var CATEGORY_PRIORITY = [
|
|
20
|
+
...V2_MEMORY_CATEGORIES,
|
|
21
|
+
"USER_DIRECTIVES",
|
|
22
|
+
"USER_PREFERENCES",
|
|
23
|
+
"CONFIG_DEFAULTS",
|
|
24
|
+
"ARCHITECTURE_DECISIONS",
|
|
25
|
+
"ENVIRONMENT",
|
|
26
|
+
"WORKFLOW_RULES",
|
|
27
|
+
"KNOWN_ISSUES"
|
|
28
|
+
];
|
|
29
|
+
var MEMORY_CATEGORY_ORDER_UNKNOWN = 99;
|
|
30
|
+
var MEMORY_CATEGORY_ORDER_PRIORITY = CATEGORY_PRIORITY.reduce((acc, category, index) => {
|
|
31
|
+
acc[category] = index;
|
|
32
|
+
return acc;
|
|
33
|
+
}, {});
|
|
34
|
+
var MEMORY_CATEGORY_ORDER_SQL = `CASE category ${CATEGORY_PRIORITY.map((category, index) => `WHEN '${category}' THEN ${index}`).join(" ")} ELSE ${MEMORY_CATEGORY_ORDER_UNKNOWN} END`;
|
|
35
|
+
function getMemoryCategoryOrder(category) {
|
|
36
|
+
return MEMORY_CATEGORY_ORDER_PRIORITY[category] ?? MEMORY_CATEGORY_ORDER_UNKNOWN;
|
|
37
|
+
}
|
|
38
|
+
var CATEGORY_DEFAULT_TTL = {
|
|
39
|
+
WORKFLOW_RULES: 90 * 24 * 60 * 60 * 1000,
|
|
40
|
+
KNOWN_ISSUES: 30 * 24 * 60 * 60 * 1000
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { V2_MEMORY_CATEGORIES, PROMOTABLE_CATEGORIES, CATEGORY_PRIORITY, MEMORY_CATEGORY_ORDER_SQL, getMemoryCategoryOrder, CATEGORY_DEFAULT_TTL };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveDreamerTaskModel2
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-8cd2j99z.js";
|
|
4
4
|
|
|
5
5
|
// src/features/magic-context/dreamer/task-registry.ts
|
|
6
6
|
var CANONICAL_DREAM_TASKS = [
|
|
@@ -17,6 +17,9 @@ var CANONICAL_DREAM_TASKS = [
|
|
|
17
17
|
"promote-primers",
|
|
18
18
|
"refresh-primers"
|
|
19
19
|
];
|
|
20
|
+
function availableDreamTasks(smartNotesEnabled = true) {
|
|
21
|
+
return CANONICAL_DREAM_TASKS.filter((task) => smartNotesEnabled || task !== "evaluate-smart-notes");
|
|
22
|
+
}
|
|
20
23
|
var DREAM_TOOL_LOOP_TOKEN_BUDGETS = {
|
|
21
24
|
"map-memories": 2500000,
|
|
22
25
|
verify: 2500000,
|
|
@@ -150,13 +153,12 @@ function compareTaskOrder(a, b) {
|
|
|
150
153
|
}
|
|
151
154
|
|
|
152
155
|
// src/features/magic-context/dreamer/task-config.ts
|
|
153
|
-
function buildDreamTaskRuntimeConfigs2(dreamer, harness, language,
|
|
154
|
-
return
|
|
156
|
+
function buildDreamTaskRuntimeConfigs2(dreamer, harness, language, smartNotesEnabled = true) {
|
|
157
|
+
return availableDreamTasks(smartNotesEnabled).map((task) => {
|
|
155
158
|
const resolved = resolveDreamerTaskModel2({
|
|
156
159
|
config: { dreamer },
|
|
157
160
|
harness,
|
|
158
|
-
task
|
|
159
|
-
muralModel
|
|
161
|
+
task
|
|
160
162
|
});
|
|
161
163
|
return {
|
|
162
164
|
task,
|
|
@@ -184,13 +186,13 @@ function dreamTaskScheduled2(dreamer, task) {
|
|
|
184
186
|
const schedule = dreamer?.tasks?.[task]?.schedule;
|
|
185
187
|
return typeof schedule === "string" && schedule.trim() !== "";
|
|
186
188
|
}
|
|
187
|
-
function enabledDreamTasks2(dreamer) {
|
|
189
|
+
function enabledDreamTasks2(dreamer, smartNotesEnabled = true) {
|
|
188
190
|
if (!dreamer?.tasks)
|
|
189
191
|
return [];
|
|
190
|
-
return
|
|
192
|
+
return availableDreamTasks(smartNotesEnabled).filter((t) => dreamer.tasks[t]?.schedule?.trim());
|
|
191
193
|
}
|
|
192
|
-
function summarizeDreamSchedule2(dreamer) {
|
|
193
|
-
const enabled = enabledDreamTasks2(dreamer);
|
|
194
|
+
function summarizeDreamSchedule2(dreamer, smartNotesEnabled = true) {
|
|
195
|
+
const enabled = enabledDreamTasks2(dreamer, smartNotesEnabled);
|
|
194
196
|
if (enabled.length === 0)
|
|
195
197
|
return "manual-only";
|
|
196
198
|
return enabled.map((t) => `${t} ${dreamer?.tasks[t]?.schedule}`).join(", ");
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import {
|
|
2
|
+
withSqliteBackgroundWriter2,
|
|
3
|
+
withoutSqliteTransformPass2
|
|
4
|
+
} from "./index-kb9nn0a0.js";
|
|
5
|
+
import {
|
|
6
|
+
logSlowWriteTransaction
|
|
7
|
+
} from "./index-4mjhqadz.js";
|
|
8
|
+
|
|
9
|
+
// src/features/magic-context/message-fts-rowid-map.ts
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
var MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE = 100;
|
|
12
|
+
var BACKFILL_STATE_ID = 1;
|
|
13
|
+
var EMPTY_INDEX_CONTENT_HASH = createHash("sha256").update("").digest("hex");
|
|
14
|
+
var upsertMapStatements = new WeakMap;
|
|
15
|
+
var rangeReadyStatements = new WeakMap;
|
|
16
|
+
var updateTimeStatements = new WeakMap;
|
|
17
|
+
var activeBackfills = new WeakMap;
|
|
18
|
+
function getUpsertMapStatement(db) {
|
|
19
|
+
let statement = upsertMapStatements.get(db);
|
|
20
|
+
if (!statement) {
|
|
21
|
+
statement = db.prepare(`INSERT INTO message_fts_rowid_map
|
|
22
|
+
(session_id, message_ordinal, fts_rowid, message_time_ms)
|
|
23
|
+
VALUES (?, ?, ?, ?)
|
|
24
|
+
ON CONFLICT(session_id, message_ordinal) DO UPDATE SET
|
|
25
|
+
fts_rowid = excluded.fts_rowid,
|
|
26
|
+
message_time_ms = COALESCE(
|
|
27
|
+
excluded.message_time_ms,
|
|
28
|
+
message_fts_rowid_map.message_time_ms
|
|
29
|
+
)`);
|
|
30
|
+
upsertMapStatements.set(db, statement);
|
|
31
|
+
}
|
|
32
|
+
return statement;
|
|
33
|
+
}
|
|
34
|
+
function getBackfillState(db) {
|
|
35
|
+
const row = db.prepare(`SELECT watermark_rowid AS watermarkRowid, completed
|
|
36
|
+
FROM message_fts_rowid_map_backfill_state
|
|
37
|
+
WHERE id = ?`).get(BACKFILL_STATE_ID);
|
|
38
|
+
return {
|
|
39
|
+
processed: 0,
|
|
40
|
+
watermarkRowid: typeof row?.watermarkRowid === "number" && Number.isSafeInteger(row.watermarkRowid) ? row.watermarkRowid : 0,
|
|
41
|
+
completed: row?.completed === 1
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function recordMessageFtsRowid(db, sessionId, messageOrdinal, ftsRowid, messageTimeMs = null) {
|
|
45
|
+
const numericRowid = Number(ftsRowid);
|
|
46
|
+
if (!Number.isSafeInteger(numericRowid) || numericRowid <= 0) {
|
|
47
|
+
throw new Error(`invalid message FTS rowid: ${String(ftsRowid)}`);
|
|
48
|
+
}
|
|
49
|
+
const normalizedTime = typeof messageTimeMs === "number" && Number.isSafeInteger(messageTimeMs) && messageTimeMs >= 0 ? messageTimeMs : null;
|
|
50
|
+
getUpsertMapStatement(db).run(sessionId, messageOrdinal, numericRowid, normalizedTime);
|
|
51
|
+
}
|
|
52
|
+
function recordIndexedMessageTime(db, sessionId, messageOrdinal, messageTimeMs) {
|
|
53
|
+
if (typeof messageTimeMs !== "number" || !Number.isSafeInteger(messageTimeMs) || messageTimeMs < 0) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let statement = updateTimeStatements.get(db);
|
|
57
|
+
if (!statement) {
|
|
58
|
+
statement = db.prepare(`UPDATE message_fts_rowid_map
|
|
59
|
+
SET message_time_ms = ?
|
|
60
|
+
WHERE session_id = ? AND message_ordinal = ?
|
|
61
|
+
AND message_time_ms IS NULL`);
|
|
62
|
+
updateTimeStatements.set(db, statement);
|
|
63
|
+
}
|
|
64
|
+
statement.run(messageTimeMs, sessionId, messageOrdinal);
|
|
65
|
+
}
|
|
66
|
+
function backfillMessageFtsRowidMapBatch(db, batchSize = MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE) {
|
|
67
|
+
const boundedBatchSize = Number.isFinite(batchSize) ? Math.min(MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE, Math.max(1, Math.floor(batchSize))) : MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE;
|
|
68
|
+
let progress = {
|
|
69
|
+
processed: 0,
|
|
70
|
+
watermarkRowid: 0,
|
|
71
|
+
completed: false
|
|
72
|
+
};
|
|
73
|
+
let transactionStartedAt = 0;
|
|
74
|
+
db.transaction(() => {
|
|
75
|
+
transactionStartedAt = performance.now();
|
|
76
|
+
db.prepare(`INSERT OR IGNORE INTO message_fts_rowid_map_backfill_state
|
|
77
|
+
(id, watermark_rowid, completed) VALUES (?, 0, 0)`).run(BACKFILL_STATE_ID);
|
|
78
|
+
const state = getBackfillState(db);
|
|
79
|
+
if (state.completed) {
|
|
80
|
+
progress = state;
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const rows = db.prepare(`SELECT rowid AS ftsRowid,
|
|
84
|
+
session_id AS sessionId, message_ordinal AS messageOrdinal
|
|
85
|
+
FROM message_history_fts WHERE rowid > ? ORDER BY rowid ASC LIMIT ?`).all(state.watermarkRowid, boundedBatchSize);
|
|
86
|
+
let watermarkRowid = state.watermarkRowid;
|
|
87
|
+
for (const row of rows) {
|
|
88
|
+
const ftsRowid = Number(row.ftsRowid);
|
|
89
|
+
const messageOrdinal = Number(row.messageOrdinal);
|
|
90
|
+
if (Number.isSafeInteger(ftsRowid) && ftsRowid > watermarkRowid) {
|
|
91
|
+
watermarkRowid = ftsRowid;
|
|
92
|
+
}
|
|
93
|
+
if (typeof row.sessionId === "string" && Number.isSafeInteger(messageOrdinal) && messageOrdinal >= 0 && Number.isSafeInteger(ftsRowid) && ftsRowid > 0) {
|
|
94
|
+
recordMessageFtsRowid(db, row.sessionId, messageOrdinal, ftsRowid);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const completed = rows.length < boundedBatchSize;
|
|
98
|
+
db.prepare(`UPDATE message_fts_rowid_map_backfill_state
|
|
99
|
+
SET watermark_rowid = ?, completed = ?, updated_at = ?
|
|
100
|
+
WHERE id = ?`).run(watermarkRowid, completed ? 1 : 0, Date.now(), BACKFILL_STATE_ID);
|
|
101
|
+
progress = {
|
|
102
|
+
processed: rows.length,
|
|
103
|
+
watermarkRowid,
|
|
104
|
+
completed
|
|
105
|
+
};
|
|
106
|
+
}).immediate();
|
|
107
|
+
logSlowWriteTransaction("message_fts_rowid_backfill", transactionStartedAt);
|
|
108
|
+
return progress;
|
|
109
|
+
}
|
|
110
|
+
async function runMessageFtsRowidMapBackfill(db) {
|
|
111
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
112
|
+
for (;; ) {
|
|
113
|
+
const progress = backfillMessageFtsRowidMapBatch(db);
|
|
114
|
+
if (progress.completed)
|
|
115
|
+
return;
|
|
116
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function startMessageFtsRowidMapBackfill(db) {
|
|
120
|
+
const active = activeBackfills.get(db);
|
|
121
|
+
if (active)
|
|
122
|
+
return active;
|
|
123
|
+
const run = withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => runMessageFtsRowidMapBackfill(db))).finally(() => {
|
|
124
|
+
activeBackfills.delete(db);
|
|
125
|
+
});
|
|
126
|
+
activeBackfills.set(db, run);
|
|
127
|
+
return run;
|
|
128
|
+
}
|
|
129
|
+
function messageFtsOrdinalRangeIsMapped(db, sessionId, startOrdinal, endOrdinal) {
|
|
130
|
+
if (endOrdinal < startOrdinal)
|
|
131
|
+
return true;
|
|
132
|
+
if (getBackfillState(db).completed)
|
|
133
|
+
return true;
|
|
134
|
+
let statement = rangeReadyStatements.get(db);
|
|
135
|
+
if (!statement) {
|
|
136
|
+
statement = db.prepare(`SELECT COUNT(DISTINCT source.message_ordinal) AS sourceOrdinalCount,
|
|
137
|
+
COUNT(DISTINCT CASE
|
|
138
|
+
WHEN source.role IN ('user', 'assistant')
|
|
139
|
+
AND source.normalized_content_hash != ?
|
|
140
|
+
THEN source.message_ordinal
|
|
141
|
+
END) AS expectedMapCount,
|
|
142
|
+
COUNT(DISTINCT CASE
|
|
143
|
+
WHEN source.role IN ('user', 'assistant')
|
|
144
|
+
AND source.normalized_content_hash != ?
|
|
145
|
+
AND map.fts_rowid IS NOT NULL
|
|
146
|
+
THEN source.message_ordinal
|
|
147
|
+
END) AS mappedCount
|
|
148
|
+
FROM message_history_source AS source
|
|
149
|
+
LEFT JOIN message_fts_rowid_map AS map
|
|
150
|
+
ON map.session_id = source.session_id
|
|
151
|
+
AND map.message_ordinal = source.message_ordinal
|
|
152
|
+
WHERE source.session_id = ?
|
|
153
|
+
AND source.message_ordinal BETWEEN ? AND ?`);
|
|
154
|
+
rangeReadyStatements.set(db, statement);
|
|
155
|
+
}
|
|
156
|
+
const row = statement.get(EMPTY_INDEX_CONTENT_HASH, EMPTY_INDEX_CONTENT_HASH, sessionId, startOrdinal, endOrdinal);
|
|
157
|
+
const ordinalCount = endOrdinal - startOrdinal + 1;
|
|
158
|
+
return row?.sourceOrdinalCount === ordinalCount && row.expectedMapCount === row.mappedCount;
|
|
159
|
+
}
|
|
160
|
+
function deleteUnmappedMessageFtsRows(db, sessionIds) {
|
|
161
|
+
if (sessionIds.length === 0)
|
|
162
|
+
return;
|
|
163
|
+
const state = getBackfillState(db);
|
|
164
|
+
if (state.completed)
|
|
165
|
+
return;
|
|
166
|
+
const placeholders = sessionIds.map(() => "?").join(", ");
|
|
167
|
+
db.prepare(`DELETE FROM message_history_fts
|
|
168
|
+
WHERE rowid > ? AND session_id IN (${placeholders})`).run(state.watermarkRowid, ...sessionIds);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export { recordMessageFtsRowid, recordIndexedMessageTime, startMessageFtsRowidMapBackfill, messageFtsOrdinalRangeIsMapped, deleteUnmappedMessageFtsRows };
|