@cortexkit/opencode-magic-context 0.46.1 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/magic-context-prompt.d.ts +1 -1
- package/dist/agents/magic-context-prompt.d.ts.map +1 -1
- package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
- package/dist/auto-search-worker.js +112 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/live-run-config.d.ts.map +1 -1
- package/dist/config/migrate-config-location.d.ts.map +1 -1
- package/dist/config/mural-model-deprecation.d.ts +15 -0
- package/dist/config/mural-model-deprecation.d.ts.map +1 -0
- package/dist/config/project-security.d.ts +0 -3
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +21 -9
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-7fj2b9jw.js → conflict-warning-hook-w8cykrnf.js} +12 -9
- package/dist/{context-sh2m2vde.js → context-m0cy262m.js} +1785 -913
- package/dist/{derive-budgets-7nj7r1rv.js → derive-budgets-sg0xsq7s.js} +4 -3
- package/dist/embedding-activity-g1dhes6g.js +10 -0
- package/dist/embedding-backfill-9rcm1mfy.js +21 -0
- package/dist/embedding-cache-mgyr73ef.js +16 -0
- package/dist/embedding-worker.js +11 -9
- package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
- package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
- package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +16 -3
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
- package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
- package/dist/features/magic-context/message-index.d.ts +7 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
- package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
- package/dist/features/magic-context/overflow-detection.d.ts +2 -0
- package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
- package/dist/features/magic-context/project-embedding-registry.d.ts +7 -0
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +31 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/session-activity.d.ts.map +1 -1
- package/dist/features/magic-context/session-project-storage.d.ts +8 -2
- package/dist/features/magic-context/session-project-storage.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
- package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-historian-runs.d.ts +2 -5
- package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +12 -0
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +30 -0
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
- package/dist/features/magic-context/storage-tags.d.ts +148 -3
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -0
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +4 -2
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/harness-e4avh192.js +10 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts +10 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -0
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts +7 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts +4 -0
- package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-omp-loader.fixture.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-omp-loader.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-snapshot.fixture.d.ts +4 -0
- package/dist/hooks/magic-context/auto-search-snapshot.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +98 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-worker.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-worker.d.ts.map +1 -0
- package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +1 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-types.d.ts +3 -5
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts +2 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts +3 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
- package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +2 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-drain-gate.d.ts +11 -0
- package/dist/hooks/magic-context/historian-drain-gate.d.ts.map +1 -0
- package/dist/hooks/magic-context/hook.d.ts +3 -2
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/latest-assistant-turn.d.ts +25 -0
- package/dist/hooks/magic-context/latest-assistant-turn.d.ts.map +1 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +61 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
- package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/opencode-proven-floor.d.ts +6 -0
- package/dist/hooks/magic-context/opencode-proven-floor.d.ts.map +1 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
- package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
- package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts +12 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +83 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
- package/dist/hooks/magic-context/reasoning-budget-status.d.ts +15 -0
- package/dist/hooks/magic-context/reasoning-budget-status.d.ts.map +1 -0
- package/dist/hooks/magic-context/reasoning-budget.d.ts +40 -0
- package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -0
- package/dist/hooks/magic-context/reasoning-removal.d.ts +6 -6
- package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/sentinel.d.ts +45 -1
- package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
- package/dist/hooks/magic-context/strip-content.d.ts +21 -5
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +21 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
- package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
- package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts +5 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +3 -28
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +28 -6
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +11 -3
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-hpecdzec.js → index-0an7742d.js} +6820 -6587
- package/dist/index-0qhce371.js +120 -0
- package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
- package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
- package/dist/index-14cjxt20.js +819 -0
- package/dist/{v2/server-51dv1pr5.js → index-1qb0z7wa.js} +301 -27
- package/dist/index-2bvekkfy.js +11 -0
- package/dist/{index-sj29b3z2.js → index-2y0s2hep.js} +3 -3
- package/dist/index-4dhv7mqz.js +131 -0
- package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
- package/dist/index-5zygecde.js +152 -0
- package/dist/{index-sjthx78w.js → index-692jzy0p.js} +16879 -22907
- package/dist/index-72nhv486.js +2307 -0
- package/dist/index-7jzrrxap.js +931 -0
- package/dist/index-7mx8v0pw.js +3591 -0
- package/dist/index-8ajstryz.js +18 -0
- package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
- package/dist/{index-hybnrwq0.js → index-8j7gqj40.js} +131 -128
- package/dist/index-bdckkfw6.js +3261 -0
- package/dist/{index-8x2v7gg9.js → index-bhvjj0ys.js} +158 -2455
- package/dist/index-c43kr12f.js +3030 -0
- package/dist/index-cb7emxgj.js +984 -0
- package/dist/index-d9vfe7xq.js +16 -0
- package/dist/{index-5gq3b2ya.js → index-db7zwa3v.js} +147 -209
- package/dist/index-dhwzyd54.js +1142 -0
- package/dist/{index-8da2zjhz.js → index-eeezr5zz.js} +9 -7
- package/dist/{index-pkbcrdqs.js → index-f0h6xwqm.js} +3412 -4552
- package/dist/index-fb3zxn06.js +13 -0
- package/dist/index-fbv1dn35.js +171 -0
- package/dist/index-fr0wbhdn.js +43 -0
- package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
- package/dist/{index-fzbvakh0.js → index-jcbd3znx.js} +3 -3
- package/dist/{index-5p8jdswx.js → index-k1xb52kd.js} +20 -13
- package/dist/index-k9nnwad5.js +3532 -0
- package/dist/{v2/server-fg34g6a5.js → index-kb9nn0a0.js} +309 -52
- package/dist/index-knh4y330.js +566 -0
- package/dist/{index-q4yp4b52.js → index-mfkzp7qj.js} +28 -28
- package/dist/{index-sgthv3f7.js → index-mmyh6d8f.js} +4 -4
- package/dist/index-pavzsdc6.js +17 -0
- package/dist/{index-0d3g3461.js → index-pdecwzrd.js} +19 -16
- package/dist/index-pg50n748.js +1060 -0
- package/dist/index-q2tqeqde.js +2106 -0
- package/dist/index-q7h7csab.js +3469 -0
- package/dist/index-qt1qqasc.js +22 -0
- package/dist/{index-majxda46.js → index-ty64eqcn.js} +28 -18
- package/dist/{index-7qw742ev.js → index-yq8n9qcb.js} +25 -44
- package/dist/{index-sfnj6h8h.js → index-z8e0psj8.js} +20 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1061 -260
- package/dist/logger-d3wex3dz.js +20 -0
- package/dist/message-index-bounded-7ezbgddp.js +124 -0
- package/dist/{v2/message-time-backfill-r6qkem1x.js → message-time-backfill-brbd63hv.js} +8 -6
- package/dist/migration-worker.js +25 -16
- package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/plugin/dream-timer.d.ts +1 -1
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +3 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler-report.d.ts +2 -0
- package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -0
- package/dist/plugin/host-stall-profiler.d.ts +3 -0
- package/dist/plugin/host-stall-profiler.d.ts.map +1 -0
- package/dist/plugin/messages-transform.d.ts +21 -19
- package/dist/plugin/messages-transform.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/project-embedding-registry-7qzptcw7.js +88 -0
- package/dist/raw-ordinal-warmup-worker.js +60 -0
- package/dist/{read-session-chunk-egz7r68d.js → read-session-chunk-6k83m4fj.js} +15 -9
- package/dist/read-session-raw-3g9qy1xa.js +58 -0
- package/dist/recomp-orchestrator-d3fp1cy0.js +57 -0
- package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-5ffqq32m.js} +4 -2
- package/dist/search-epax1ecv.js +45 -0
- package/dist/{v2/send-session-notification-qs0j78v6.js → send-session-notification-erecz4y4.js} +10 -6
- package/dist/shared/auto-search-lifecycle.d.ts +7 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -0
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/historian-tool-expansions.d.ts +1 -1
- package/dist/shared/historian-tool-expansions.d.ts.map +1 -1
- package/dist/shared/historian-tool-template.d.ts +2 -2
- package/dist/shared/historian-tool-template.d.ts.map +1 -1
- package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
- package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-common.d.ts +58 -0
- package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-node.d.ts +36 -0
- package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-report.d.ts +68 -0
- package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler.d.ts +5 -0
- package/dist/shared/host-stall-profiler.d.ts.map +1 -0
- package/dist/shared/model-resolution.d.ts +2 -3
- package/dist/shared/model-resolution.d.ts.map +1 -1
- package/dist/shared/sqlite.d.ts +46 -1
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/stable-json.d.ts.map +1 -1
- package/dist/shared/status-view.d.ts.map +1 -1
- package/dist/shared/user-facing-codes.d.ts +0 -5
- package/dist/shared/user-facing-codes.d.ts.map +1 -1
- package/dist/shared/window-geometry.d.ts +4 -0
- package/dist/shared/window-geometry.d.ts.map +1 -1
- package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/sqlite-mhjkerzq.js +46 -0
- package/dist/storage-memory-07fx57k6.js +71 -0
- package/dist/storage-tags-d3b0v2ss.js +131 -0
- package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
- package/dist/tools/ctx-expand/render.d.ts.map +1 -1
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/constants.d.ts +4 -0
- package/dist/tools/ctx-note/constants.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts +1 -0
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/parameter-descriptions.d.ts +2 -2
- package/dist/tools/parameter-descriptions.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-bqhz6vdr.js → transform-postprocess-phase-spcy2qre.js} +35 -17
- package/dist/transformers-node-wasm.js +18415 -18415
- package/dist/v2/auto-search-worker.js +112 -0
- package/dist/v2/{context-zecmzk5s.js → context-sf98kstd.js} +8378 -8530
- package/dist/v2/{derive-budgets-kdgp4s3r.js → derive-budgets-3vc0y84t.js} +4 -3
- package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
- package/dist/v2/embedding-backfill-vn8g1nh1.js +21 -0
- package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
- package/dist/v2/embedding-worker.js +12 -9
- package/dist/v2/fold/host-media.d.ts +4 -0
- package/dist/v2/fold/host-media.d.ts.map +1 -1
- package/dist/v2/fold/memory-cache.d.ts +70 -0
- package/dist/v2/fold/memory-cache.d.ts.map +1 -0
- package/dist/v2/fold/native-codec.d.ts +10 -0
- package/dist/v2/fold/native-codec.d.ts.map +1 -0
- package/dist/v2/fold/native-replay.d.ts +58 -0
- package/dist/v2/fold/native-replay.d.ts.map +1 -0
- package/dist/v2/fold/policy.d.ts +24 -0
- package/dist/v2/fold/policy.d.ts.map +1 -0
- package/dist/v2/harness-e4avh192.js +10 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts +2 -2
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-manual.d.ts +1 -1
- package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
- package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +1 -2
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/tools.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +6 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/logger-mxd0ym09.js +19 -0
- package/dist/v2/message-index-bounded-dy3s2k1e.js +123 -0
- package/dist/{message-time-backfill-68gj6t3e.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
- package/dist/v2/migration-worker.js +24 -15
- package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/v2/project-embedding-registry-1tgba5dv.js +86 -0
- package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
- package/dist/v2/{read-session-chunk-8vjp6581.js → read-session-chunk-rh4khdkv.js} +14 -8
- package/dist/v2/read-session-raw-bsbmf0vj.js +57 -0
- package/dist/v2/recomp-orchestrator-az61rfcg.js +57 -0
- package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-73ax1p5v.js} +3 -3
- package/dist/v2/search-nzkwrc6n.js +45 -0
- package/dist/{send-session-notification-dyw42dtr.js → v2/send-session-notification-6km439kn.js} +9 -7
- package/dist/{index-5eqk6z3s.js → v2/server-1r6pmz4f.js} +301 -27
- package/dist/v2/server-2bvekkfy.js +11 -0
- package/dist/v2/server-2fbhp79z.js +3205 -0
- package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
- package/dist/v2/server-4dhv7mqz.js +131 -0
- package/dist/v2/{server-xa4xe3rv.js → server-4k748ke6.js} +11 -1053
- package/dist/v2/{server-vs5gpnd4.js → server-52awr2mw.js} +81 -145
- package/dist/v2/{server-1qbnzc80.js → server-5m3dt5r1.js} +136 -148
- package/dist/v2/server-686jg6eb.js +3508 -0
- package/dist/v2/server-7jzrrxap.js +931 -0
- package/dist/v2/server-7wwc2nga.js +3023 -0
- package/dist/v2/server-8ajstryz.js +18 -0
- package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
- package/dist/v2/server-8pyt7hev.js +3408 -0
- package/dist/v2/server-8tqanswc.js +984 -0
- package/dist/v2/{server-14vq4kpm.js → server-aan4q8mx.js} +3 -3
- package/dist/v2/server-d9vfe7xq.js +16 -0
- package/dist/v2/server-e0vdaae2.js +3591 -0
- package/dist/v2/server-ezhze64f.js +1048 -0
- package/dist/v2/server-fb3zxn06.js +13 -0
- package/dist/v2/server-fr0wbhdn.js +43 -0
- package/dist/v2/server-g5r0n3b6.js +1137 -0
- package/dist/v2/server-gjcr4w98.js +154 -0
- package/dist/v2/server-k228xhjg.js +171 -0
- package/dist/v2/{server-jc7y02q0.js → server-k8x2rbxc.js} +5119 -10948
- package/dist/{index-fg34g6a5.js → v2/server-kb9nn0a0.js} +309 -52
- package/dist/v2/{server-g0fjrkta.js → server-mfkzp7qj.js} +28 -28
- package/dist/v2/server-pavzsdc6.js +17 -0
- package/dist/v2/server-psqc7e9n.js +2106 -0
- package/dist/v2/server-qt1qqasc.js +22 -0
- package/dist/v2/server-qye6ykf7.js +120 -0
- package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
- package/dist/v2/server-sggvvzhb.js +759 -0
- package/dist/v2/{server-y8maxeft.js → server-v06jcv0w.js} +16 -13
- package/dist/v2/server-vqpf3167.js +1048 -0
- package/dist/v2/{server-c5gz8wph.js → server-x2g40a71.js} +2048 -2059
- package/dist/v2/{server-wvjvfhck.js → server-xdfwt6kh.js} +20 -16
- package/dist/v2/{server-mcfawjgc.js → server-xxm59eww.js} +25 -44
- package/dist/v2/server-yczc713m.js +564 -0
- package/dist/v2/{server-3n4q9xme.js → server-z2037m6z.js} +4 -4
- package/dist/v2/{server-e29d7p7c.js → server-zm570tr2.js} +166 -160
- package/dist/v2/{server-6r257mf5.js → server-zxhgvsf9.js} +3 -3
- package/dist/v2/server.js +16 -14
- package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/v2/sqlite-mhjkerzq.js +46 -0
- package/dist/v2/storage-memory-07fx57k6.js +71 -0
- package/dist/v2/storage-tags-w4tv77sn.js +130 -0
- package/dist/v2/store-reader.d.ts +16 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
- package/dist/v2/transformers-node-wasm.js +18415 -18415
- package/dist/v2/tui/index.d.ts.map +1 -1
- package/dist/v2/tui/types.d.ts +1 -10
- package/dist/v2/tui/types.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-0snhvwcv.js → wrapup-orchestrator-mz7efs7w.js} +51 -27
- package/dist/wrapup-orchestrator-amzta1t4.js +44 -0
- package/package.json +4 -3
- package/src/agents/magic-context-prompt.ts +27 -2
- package/src/agents/smart-notes-enabled.test.ts +294 -0
- package/src/agents/smart-notes-on.golden.json +70 -0
- package/src/config/index.test.ts +67 -1
- package/src/config/index.ts +8 -0
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/config/live-run-config.test.ts +37 -1
- package/src/config/live-run-config.ts +28 -0
- package/src/config/migrate-config-location.ts +10 -3
- package/src/config/mural-model-deprecation.ts +24 -0
- package/src/config/project-security.hostile-matrix.test.ts +4 -44
- package/src/config/project-security.test.ts +9 -14
- package/src/config/project-security.ts +13 -55
- package/src/config/schema/magic-context.test.ts +6 -5
- package/src/config/schema/magic-context.ts +34 -16
- package/src/features/magic-context/dreamer/task-registry.ts +6 -0
- package/src/shared/auto-search-lifecycle.ts +27 -0
- package/src/shared/conflict-detector.test.ts +56 -0
- package/src/shared/conflict-detector.ts +16 -5
- package/src/shared/historian-tool-defaults.json +6 -6
- package/src/shared/historian-tool-expansions.ts +65 -8
- package/src/shared/historian-tool-preview-defaults.json +13 -0
- package/src/shared/historian-tool-template.ts +48 -14
- package/src/shared/host-stall-profiler-bun.ts +358 -0
- package/src/shared/host-stall-profiler-common.ts +159 -0
- package/src/shared/host-stall-profiler-node.test.ts +234 -0
- package/src/shared/host-stall-profiler-node.ts +274 -0
- package/src/shared/host-stall-profiler-report.ts +248 -0
- package/src/shared/host-stall-profiler.ts +57 -0
- package/src/shared/model-resolution.test.ts +54 -17
- package/src/shared/model-resolution.ts +6 -17
- package/src/shared/sqlite-640-review-r2.test.ts +136 -0
- package/src/shared/sqlite-640-review.test.ts +183 -0
- package/src/shared/sqlite-acquisition-routing.test.ts +18 -0
- package/src/shared/sqlite.test.ts +52 -0
- package/src/shared/sqlite.ts +423 -37
- package/src/shared/stable-json-linear.test.ts +109 -0
- package/src/shared/stable-json.ts +37 -7
- package/src/shared/status-view.test.ts +6 -1
- package/src/shared/status-view.ts +15 -1
- package/src/shared/tag-transcript.ts +6 -0
- package/src/shared/user-facing-codes.ts +2 -6
- package/src/shared/window-geometry.ts +10 -0
- package/src/shared/write-transaction-attribution.test.ts +2 -2
- package/src/v2/tui/host-contract.test.ts +41 -67
- package/src/v2/tui/index.ts +6 -214
- package/src/v2/tui/types.ts +5 -17
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
- package/dist/features/magic-context/checkout-claim.d.ts +0 -155
- package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
- package/dist/index-3h0ybwah.js +0 -6540
- package/dist/index-r5hmbx3t.js +0 -7773
- package/dist/recomp-orchestrator-y15j0rb9.js +0 -39
- package/dist/v2/recomp-orchestrator-8ejxvrzz.js +0 -39
- package/dist/v2/server-frbm99q5.js +0 -7698
- package/dist/v2/server-qp5hx1ad.js +0 -6366
- package/dist/wrapup-orchestrator-39amhv9s.js +0 -26
- /package/dist/{index-en1k8h8m.js → index-2pp04pmg.js} +0 -0
- /package/dist/v2/{index-en1k8h8m.js → index-2pp04pmg.js} +0 -0
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import { statSync } from "node:fs";
|
|
4
4
|
var reportSlowPrivilegedWrite;
|
|
5
|
-
function
|
|
5
|
+
function registerSlowWriteReporter2(reporter) {
|
|
6
6
|
reportSlowPrivilegedWrite = reporter;
|
|
7
7
|
}
|
|
8
8
|
var sqliteDiagnosticSink;
|
|
9
|
-
function
|
|
9
|
+
function registerSqliteDiagnosticSink2(sink) {
|
|
10
10
|
sqliteDiagnosticSink = sink;
|
|
11
11
|
}
|
|
12
12
|
function reportSqliteDiagnostic(message) {
|
|
@@ -14,7 +14,7 @@ function reportSqliteDiagnostic(message) {
|
|
|
14
14
|
sqliteDiagnosticSink?.(`[magic-context] ${message}`);
|
|
15
15
|
} catch {}
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function detectSqliteRuntime2() {
|
|
18
18
|
const hasBunVersion = typeof process !== "undefined" && typeof process.versions?.bun === "string";
|
|
19
19
|
const hasBunGlobal = typeof globalThis !== "undefined" && typeof globalThis.Bun !== "undefined";
|
|
20
20
|
return hasBunVersion || hasBunGlobal ? "Bun" : "Node.js";
|
|
@@ -47,10 +47,31 @@ class SqliteRuntimeUnavailableError extends Error {
|
|
|
47
47
|
this.specifier = specifier;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
const
|
|
50
|
+
function isNodeSqliteExperimentalWarning(args) {
|
|
51
|
+
const [warning, options] = args;
|
|
52
|
+
const message = warning instanceof Error ? warning.message : warning;
|
|
53
|
+
const type = typeof options === "string" ? options : options && typeof options === "object" ? options.type : undefined;
|
|
54
|
+
return type === "ExperimentalWarning" && typeof message === "string" && message.startsWith("SQLite is an experimental feature");
|
|
55
|
+
}
|
|
56
|
+
async function importSqliteModuleForRuntime(runtime, specifier, importer) {
|
|
57
|
+
if (runtime !== "Node.js")
|
|
58
|
+
return importer(specifier);
|
|
59
|
+
const originalEmitWarning = process.emitWarning;
|
|
60
|
+
process.emitWarning = function(...args) {
|
|
61
|
+
if (isNodeSqliteExperimentalWarning(args))
|
|
62
|
+
return;
|
|
63
|
+
Reflect.apply(originalEmitWarning, this, args);
|
|
64
|
+
};
|
|
52
65
|
try {
|
|
53
66
|
return await importer(specifier);
|
|
67
|
+
} finally {
|
|
68
|
+
process.emitWarning = originalEmitWarning;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function loadSqliteModule(runtime = detectSqliteRuntime2(), importer = importSqliteModule) {
|
|
72
|
+
const specifier = runtime === "Bun" ? bunSpec : nodeSpec;
|
|
73
|
+
try {
|
|
74
|
+
return await importSqliteModuleForRuntime(runtime, specifier, importer);
|
|
54
75
|
} catch (error) {
|
|
55
76
|
if (isModuleNotFoundError(error, specifier)) {
|
|
56
77
|
throw new SqliteRuntimeUnavailableError(runtime, specifier, error);
|
|
@@ -58,18 +79,95 @@ async function loadSqliteModule(runtime = detectSqliteRuntime(), importer = impo
|
|
|
58
79
|
throw error;
|
|
59
80
|
}
|
|
60
81
|
}
|
|
61
|
-
var detectedRuntime =
|
|
82
|
+
var detectedRuntime = detectSqliteRuntime2();
|
|
62
83
|
var isBun = detectedRuntime === "Bun";
|
|
63
84
|
var sqliteModule = await loadSqliteModule(detectedRuntime);
|
|
64
85
|
var DatabaseImpl = isBun ? sqliteModule.Database : buildNodeSqliteDatabaseClass(sqliteModule.DatabaseSync);
|
|
65
86
|
var trackedSqliteConnections = new Map;
|
|
66
87
|
var nextSqliteConnectionSequence = 1;
|
|
88
|
+
var TAG_COLUMNS_OUTSIDE_IDENTITY = new Set([
|
|
89
|
+
"status",
|
|
90
|
+
"drop_mode",
|
|
91
|
+
"byte_size",
|
|
92
|
+
"input_byte_size",
|
|
93
|
+
"reasoning_byte_size",
|
|
94
|
+
"token_count",
|
|
95
|
+
"input_token_count",
|
|
96
|
+
"caveman_depth",
|
|
97
|
+
"entry_fingerprint",
|
|
98
|
+
"tool_name",
|
|
99
|
+
"harness"
|
|
100
|
+
]);
|
|
101
|
+
var tagIdentityWriteGeneration = 0;
|
|
102
|
+
function mayChangeTagIdentity(sql) {
|
|
103
|
+
if (!/\btags\b/i.test(sql) || /^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql))
|
|
104
|
+
return false;
|
|
105
|
+
if (/^\s*WITH\b/i.test(sql) && !/\b(?:INSERT|UPDATE|DELETE|REPLACE)\b/i.test(sql))
|
|
106
|
+
return false;
|
|
107
|
+
if (/;\s*\S/.test(sql) || /\bREPLACE\b/i.test(sql) || /\bON\s+CONFLICT\b/i.test(sql))
|
|
108
|
+
return true;
|
|
109
|
+
const insert = /^\s*INSERT\s+INTO\s+(?:main\.)?["`]?tags["`]?\s*\(([^)]*)\)/i.exec(sql);
|
|
110
|
+
if (insert) {
|
|
111
|
+
const columns = (insert[1] ?? "").split(",").map((column) => column.trim().replace(/["`[\]]/g, "").toLowerCase());
|
|
112
|
+
return columns.includes("id") || columns.includes("rowid");
|
|
113
|
+
}
|
|
114
|
+
const update = /^\s*UPDATE\s+(?:main\.)?["`]?tags["`]?\s+SET\s+([\s\S]*?)\bWHERE\b/i.exec(sql);
|
|
115
|
+
if (update && !/\bSELECT\b/i.test(sql)) {
|
|
116
|
+
const assignments = topLevelCommaSegments(update[1] ?? "");
|
|
117
|
+
if (!assignments)
|
|
118
|
+
return true;
|
|
119
|
+
return !assignments.every((assignment) => {
|
|
120
|
+
const column = /^\s*["`]?(\w+)["`]?\s*=(?!=)/.exec(assignment)?.[1];
|
|
121
|
+
return column !== undefined && TAG_COLUMNS_OUTSIDE_IDENTITY.has(column.toLowerCase());
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
function topLevelCommaSegments(text) {
|
|
127
|
+
const segments = [];
|
|
128
|
+
let depth = 0;
|
|
129
|
+
let quote = null;
|
|
130
|
+
let start = 0;
|
|
131
|
+
for (let index = 0;index < text.length; index += 1) {
|
|
132
|
+
const char = text[index];
|
|
133
|
+
if (quote) {
|
|
134
|
+
if (char === quote) {
|
|
135
|
+
if (text[index + 1] === quote)
|
|
136
|
+
index += 1;
|
|
137
|
+
else
|
|
138
|
+
quote = null;
|
|
139
|
+
}
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (char === "'" || char === '"' || char === "`")
|
|
143
|
+
quote = char;
|
|
144
|
+
else if (char === "(")
|
|
145
|
+
depth += 1;
|
|
146
|
+
else if (char === ")") {
|
|
147
|
+
depth -= 1;
|
|
148
|
+
if (depth < 0)
|
|
149
|
+
return null;
|
|
150
|
+
} else if (char === "," && depth === 0) {
|
|
151
|
+
segments.push(text.slice(start, index));
|
|
152
|
+
start = index + 1;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (quote || depth !== 0)
|
|
156
|
+
return null;
|
|
157
|
+
segments.push(text.slice(start));
|
|
158
|
+
return segments;
|
|
159
|
+
}
|
|
160
|
+
function getTagIdentityWriteGeneration2() {
|
|
161
|
+
return tagIdentityWriteGeneration;
|
|
162
|
+
}
|
|
67
163
|
function installTransactionRouting(db, readonly) {
|
|
68
164
|
const nativeExec = db.exec.bind(db);
|
|
69
165
|
Object.defineProperty(db, "exec", {
|
|
70
166
|
configurable: true,
|
|
71
167
|
writable: true,
|
|
72
168
|
value: (sql) => {
|
|
169
|
+
if (/^\s*(?:COMMIT|END)\b/i.test(sql))
|
|
170
|
+
assertTransformWrite2();
|
|
73
171
|
if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
|
|
74
172
|
openWriterTransactions.delete(db);
|
|
75
173
|
if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
|
|
@@ -80,8 +178,14 @@ function installTransactionRouting(db, readonly) {
|
|
|
80
178
|
}
|
|
81
179
|
if (WRITER_TRANSACTION_END.test(sql) && openWriterTransactions.has(db))
|
|
82
180
|
return endWriterTransaction(db, () => nativeExec(sql), sql);
|
|
83
|
-
if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql))
|
|
84
|
-
|
|
181
|
+
if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)) {
|
|
182
|
+
try {
|
|
183
|
+
return withAutocommitTimeout(db, () => nativeExec(sql));
|
|
184
|
+
} finally {
|
|
185
|
+
if (mayChangeTagIdentity(sql))
|
|
186
|
+
tagIdentityWriteGeneration += 1;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
85
189
|
return nativeExec(sql);
|
|
86
190
|
}
|
|
87
191
|
});
|
|
@@ -92,13 +196,23 @@ function installTransactionRouting(db, readonly) {
|
|
|
92
196
|
value: (sql) => {
|
|
93
197
|
const statement = nativePrepare(sql);
|
|
94
198
|
if (!readonly && !/^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql)) {
|
|
199
|
+
const changesTagIdentity = mayChangeTagIdentity(sql);
|
|
95
200
|
for (const method of ["run", "get", "all"]) {
|
|
96
201
|
const execute = statement[method].bind(statement);
|
|
97
202
|
Object.defineProperty(statement, method, {
|
|
98
203
|
configurable: true,
|
|
99
|
-
value: (...args) =>
|
|
204
|
+
value: (...args) => {
|
|
205
|
+
try {
|
|
206
|
+
return withAutocommitTimeout(db, () => execute(...args));
|
|
207
|
+
} finally {
|
|
208
|
+
if (changesTagIdentity)
|
|
209
|
+
tagIdentityWriteGeneration += 1;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
100
212
|
});
|
|
101
213
|
}
|
|
214
|
+
if (changesTagIdentity)
|
|
215
|
+
wrapRemainingTagWriteForms(statement);
|
|
102
216
|
}
|
|
103
217
|
return statement;
|
|
104
218
|
}
|
|
@@ -146,6 +260,35 @@ function installTransactionRouting(db, readonly) {
|
|
|
146
260
|
}
|
|
147
261
|
});
|
|
148
262
|
}
|
|
263
|
+
function wrapRemainingTagWriteForms(statement) {
|
|
264
|
+
if (typeof statement.iterate === "function") {
|
|
265
|
+
const iterate = statement.iterate.bind(statement);
|
|
266
|
+
Object.defineProperty(statement, "iterate", {
|
|
267
|
+
configurable: true,
|
|
268
|
+
value: function* (...args) {
|
|
269
|
+
tagIdentityWriteGeneration += 1;
|
|
270
|
+
try {
|
|
271
|
+
yield* iterate(...args);
|
|
272
|
+
} finally {
|
|
273
|
+
tagIdentityWriteGeneration += 1;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
if (typeof statement.values === "function") {
|
|
279
|
+
const values = statement.values.bind(statement);
|
|
280
|
+
Object.defineProperty(statement, "values", {
|
|
281
|
+
configurable: true,
|
|
282
|
+
value: (...args) => {
|
|
283
|
+
try {
|
|
284
|
+
return values(...args);
|
|
285
|
+
} finally {
|
|
286
|
+
tagIdentityWriteGeneration += 1;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
149
292
|
function trackSqliteConnection(db, filename, options) {
|
|
150
293
|
const originalClose = db.close.bind(db);
|
|
151
294
|
const sequence = nextSqliteConnectionSequence++;
|
|
@@ -205,7 +348,19 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
|
|
|
205
348
|
}
|
|
206
349
|
return NodeSqliteDatabase;
|
|
207
350
|
}
|
|
208
|
-
var
|
|
351
|
+
var Database2 = TrackedDatabase;
|
|
352
|
+
function getSqliteDatabasePath2(db) {
|
|
353
|
+
for (const connection of trackedSqliteConnections.values()) {
|
|
354
|
+
if (connection.reference.deref() === db) {
|
|
355
|
+
return connection.filename === ":memory:" || connection.filename === "<buffer>" ? null : connection.filename;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
const native = db;
|
|
359
|
+
const path = native.filename ?? native.name;
|
|
360
|
+
if (typeof path === "string" && path !== ":memory:" && path !== "")
|
|
361
|
+
return path;
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
209
364
|
function pragmaValue(db, name) {
|
|
210
365
|
const row = db.prepare(`PRAGMA ${name}`).get();
|
|
211
366
|
if (!row)
|
|
@@ -245,7 +400,7 @@ function fts5TableCount(db) {
|
|
|
245
400
|
return null;
|
|
246
401
|
}
|
|
247
402
|
}
|
|
248
|
-
function
|
|
403
|
+
function getSqliteMemoryStats2() {
|
|
249
404
|
const connections = [];
|
|
250
405
|
for (const [sequence, tracked] of trackedSqliteConnections) {
|
|
251
406
|
const db = tracked.reference.deref();
|
|
@@ -287,6 +442,15 @@ function getSqliteMemoryStats() {
|
|
|
287
442
|
}
|
|
288
443
|
var statementOwners = new WeakMap;
|
|
289
444
|
var FIRST_PRUNE_AT = 256;
|
|
445
|
+
function closeReleasingStatements(close, args) {
|
|
446
|
+
if (args[0] === true)
|
|
447
|
+
return close(true);
|
|
448
|
+
try {
|
|
449
|
+
return close(true);
|
|
450
|
+
} catch {
|
|
451
|
+
return close(...args);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
290
454
|
function ownPreparedStatement(db, statement) {
|
|
291
455
|
const finalizable = statement;
|
|
292
456
|
if (typeof finalizable.finalize !== "function")
|
|
@@ -310,7 +474,7 @@ function ownPreparedStatement(db, statement) {
|
|
|
310
474
|
}
|
|
311
475
|
}
|
|
312
476
|
references.clear();
|
|
313
|
-
const result = close
|
|
477
|
+
const result = closeReleasingStatements(close, args);
|
|
314
478
|
if (failure)
|
|
315
479
|
throw failure;
|
|
316
480
|
return result;
|
|
@@ -330,48 +494,59 @@ function ownPreparedStatement(db, statement) {
|
|
|
330
494
|
}
|
|
331
495
|
return statement;
|
|
332
496
|
}
|
|
333
|
-
function
|
|
497
|
+
function prepareCachedStatement2(db, sql) {
|
|
334
498
|
return ownPreparedStatement(db, db.prepare(sql));
|
|
335
499
|
}
|
|
336
500
|
var privilegeDepth = new WeakMap;
|
|
337
501
|
var transformPassScope = new AsyncLocalStorage;
|
|
338
502
|
var admissionScope = new AsyncLocalStorage;
|
|
339
503
|
var backgroundWriterScope = new AsyncLocalStorage;
|
|
340
|
-
function
|
|
504
|
+
function withSqliteBackgroundWriter2(operation) {
|
|
341
505
|
return backgroundWriterScope.run(true, operation);
|
|
342
506
|
}
|
|
343
|
-
function
|
|
507
|
+
function withSqliteTransformPass2(operation) {
|
|
344
508
|
const existing = transformPassScope.getStore();
|
|
345
509
|
if (existing?.active)
|
|
346
510
|
return operation();
|
|
347
|
-
const
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
511
|
+
const reservation = reserveForegroundSqliteTurn();
|
|
512
|
+
const run = (release) => {
|
|
513
|
+
const lease = { active: true, remainingWaitMs: FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS };
|
|
514
|
+
return transformPassScope.run(lease, () => {
|
|
515
|
+
try {
|
|
516
|
+
const result = operation();
|
|
517
|
+
if (result && typeof result.then === "function") {
|
|
518
|
+
return Promise.resolve(result).finally(() => {
|
|
519
|
+
lease.active = false;
|
|
520
|
+
release();
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
lease.active = false;
|
|
524
|
+
release();
|
|
525
|
+
return result;
|
|
526
|
+
} catch (error) {
|
|
527
|
+
lease.active = false;
|
|
528
|
+
release();
|
|
529
|
+
throw error;
|
|
355
530
|
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
lease.active = false;
|
|
360
|
-
throw error;
|
|
361
|
-
}
|
|
362
|
-
});
|
|
531
|
+
});
|
|
532
|
+
};
|
|
533
|
+
return typeof reservation === "function" ? run(reservation) : reservation.then(run);
|
|
363
534
|
}
|
|
364
|
-
function
|
|
535
|
+
function withoutSqliteTransformPass2(operation) {
|
|
365
536
|
return transformPassScope.run(undefined, operation);
|
|
366
537
|
}
|
|
367
|
-
function
|
|
538
|
+
function assertTransformWrite2() {
|
|
539
|
+
if (!backgroundWriterScope.getStore())
|
|
540
|
+
transformPassScope.getStore()?.guard?.assert();
|
|
541
|
+
}
|
|
542
|
+
function isTransientSqliteError2(error) {
|
|
368
543
|
if (!error || typeof error !== "object")
|
|
369
544
|
return false;
|
|
370
545
|
const value = error;
|
|
371
546
|
return typeof value.code === "string" && /^(SQLITE_BUSY|SQLITE_LOCKED)(_|$)/.test(value.code) || typeof value.errcode === "number" && [5, 6].includes(value.errcode & 255);
|
|
372
547
|
}
|
|
373
548
|
|
|
374
|
-
class
|
|
549
|
+
class SqliteAcquisitionBusyError2 extends Error {
|
|
375
550
|
code = "SQLITE_BUSY";
|
|
376
551
|
stage;
|
|
377
552
|
constructor(cause, stage = "BEGIN IMMEDIATE") {
|
|
@@ -392,6 +567,7 @@ function foregroundWaitLease() {
|
|
|
392
567
|
return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
|
|
393
568
|
}
|
|
394
569
|
function withAutocommitTimeout(db, operation) {
|
|
570
|
+
assertTransformWrite2();
|
|
395
571
|
const lease = foregroundWaitLease();
|
|
396
572
|
if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
|
|
397
573
|
return operation();
|
|
@@ -401,8 +577,8 @@ function withAutocommitTimeout(db, operation) {
|
|
|
401
577
|
try {
|
|
402
578
|
return operation();
|
|
403
579
|
} catch (error) {
|
|
404
|
-
if (lease &&
|
|
405
|
-
throw new
|
|
580
|
+
if (lease && isTransientSqliteError2(error))
|
|
581
|
+
throw new SqliteAcquisitionBusyError2(error, "autocommit");
|
|
406
582
|
throw error;
|
|
407
583
|
} finally {
|
|
408
584
|
if (lease)
|
|
@@ -412,6 +588,7 @@ function withAutocommitTimeout(db, operation) {
|
|
|
412
588
|
}
|
|
413
589
|
}
|
|
414
590
|
function acquireShort(db, acquire, site) {
|
|
591
|
+
assertTransformWrite2();
|
|
415
592
|
const started = performance.now();
|
|
416
593
|
const previous = pragmaNumber(db, "busy_timeout");
|
|
417
594
|
const outer = writerAcquisitionScope.getStore();
|
|
@@ -423,13 +600,13 @@ function acquireShort(db, acquire, site) {
|
|
|
423
600
|
let acquiredAt;
|
|
424
601
|
try {
|
|
425
602
|
const lease = foregroundWaitLease();
|
|
426
|
-
const timeout =
|
|
603
|
+
const timeout = Math.floor(Math.min(lease ? lease.remainingWaitMs : SHORT_BUSY_TIMEOUT_MS, owner?.remainingMs?.() ?? lease?.guard?.remainingMs() ?? Infinity));
|
|
427
604
|
db.exec(`PRAGMA busy_timeout=${timeout}`);
|
|
428
605
|
acquire();
|
|
429
606
|
acquiredAt = performance.now();
|
|
430
607
|
} catch (error) {
|
|
431
|
-
if (transformPassScope.getStore()?.active &&
|
|
432
|
-
throw new
|
|
608
|
+
if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
|
|
609
|
+
throw new SqliteAcquisitionBusyError2(error, site);
|
|
433
610
|
throw error;
|
|
434
611
|
} finally {
|
|
435
612
|
const attemptMs = (acquiredAt ?? performance.now()) - started;
|
|
@@ -453,23 +630,25 @@ function acquireShort(db, acquire, site) {
|
|
|
453
630
|
}
|
|
454
631
|
function endWriterTransaction(db, end, sql) {
|
|
455
632
|
let ended = false;
|
|
633
|
+
const endStarted = performance.now();
|
|
456
634
|
try {
|
|
457
635
|
const result = end();
|
|
458
636
|
ended = true;
|
|
459
637
|
return result;
|
|
460
638
|
} finally {
|
|
461
639
|
const open = openWriterTransactions.get(db);
|
|
640
|
+
const endMs = performance.now() - endStarted;
|
|
462
641
|
if (open && !isInTransaction(db)) {
|
|
463
642
|
openWriterTransactions.delete(db);
|
|
464
643
|
const holdMs = performance.now() - open.acquiredAt;
|
|
465
644
|
if (open.acquireMs >= SLOW_WRITER_LOG_MS || holdMs >= SLOW_WRITER_LOG_MS) {
|
|
466
645
|
const outcome = /^\s*ROLLBACK/i.test(sql) ? "rolled_back" : ended ? "committed" : "failed";
|
|
467
|
-
reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} attempts=${open.attempts} outcome=${outcome}`);
|
|
646
|
+
reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} end_ms=${Math.round(endMs)} attempts=${open.attempts} outcome=${outcome}`);
|
|
468
647
|
}
|
|
469
648
|
}
|
|
470
649
|
}
|
|
471
650
|
}
|
|
472
|
-
async function
|
|
651
|
+
async function beginSqliteWriterAsync2(db, site) {
|
|
473
652
|
const started = performance.now();
|
|
474
653
|
let attempts = 0;
|
|
475
654
|
for (;; ) {
|
|
@@ -482,10 +661,10 @@ async function beginSqliteWriterAsync(db, site) {
|
|
|
482
661
|
attempts,
|
|
483
662
|
claimed: false
|
|
484
663
|
};
|
|
485
|
-
writerAcquisitionScope.run(acquisition, () =>
|
|
664
|
+
writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter2(() => db.exec("BEGIN IMMEDIATE")));
|
|
486
665
|
return performance.now();
|
|
487
666
|
} catch (error) {
|
|
488
|
-
if (!
|
|
667
|
+
if (!isTransientSqliteError2(error))
|
|
489
668
|
throw error;
|
|
490
669
|
const elapsed = performance.now() - started;
|
|
491
670
|
if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
|
|
@@ -496,29 +675,53 @@ async function beginSqliteWriterAsync(db, site) {
|
|
|
496
675
|
}
|
|
497
676
|
}
|
|
498
677
|
}
|
|
499
|
-
async function
|
|
678
|
+
async function withAsyncPrivilegedWriter2(db, operation, options = {}) {
|
|
500
679
|
const started = performance.now();
|
|
680
|
+
const budgetMs = Math.max(0, Math.min(FOREGROUND_ACQUISITION_BUDGET_MS, options.budgetMs ?? Infinity));
|
|
501
681
|
let attempts = 0;
|
|
502
682
|
for (;; ) {
|
|
683
|
+
options.signal?.throwIfAborted();
|
|
684
|
+
options.assertCurrentPass?.();
|
|
503
685
|
attempts++;
|
|
686
|
+
let entered = false;
|
|
504
687
|
try {
|
|
505
688
|
const acquisition = {
|
|
506
689
|
site: "privileged_writer",
|
|
507
690
|
lane: "foreground",
|
|
508
691
|
startedAt: started,
|
|
509
692
|
attempts,
|
|
510
|
-
claimed: false
|
|
693
|
+
claimed: false,
|
|
694
|
+
remainingMs: () => Math.max(0, budgetMs - (performance.now() - started))
|
|
511
695
|
};
|
|
512
|
-
return admissionScope.run(true, () =>
|
|
696
|
+
return admissionScope.run(true, () => withSqliteTransformPass2(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter2(db, () => {
|
|
697
|
+
entered = true;
|
|
698
|
+
return operation();
|
|
699
|
+
}))));
|
|
513
700
|
} catch (error) {
|
|
514
|
-
if (!(error instanceof
|
|
701
|
+
if (entered || !(error instanceof SqliteAcquisitionBusyError2))
|
|
515
702
|
throw error;
|
|
703
|
+
options.beforeRetry?.(error);
|
|
516
704
|
const elapsed = performance.now() - started;
|
|
517
|
-
if (elapsed >=
|
|
705
|
+
if (elapsed >= budgetMs) {
|
|
518
706
|
reportSqliteDiagnostic(`sqlite writer site=privileged_writer lane=foreground acquire_ms=${Math.round(elapsed)} attempts=${attempts} outcome=busy`);
|
|
519
707
|
throw error;
|
|
520
708
|
}
|
|
521
|
-
|
|
709
|
+
const backoff = attempts === 1 ? 500 : 1000;
|
|
710
|
+
const delay = Math.min(options.jitter ? backoff * (0.8 + Math.random() * 0.4) : backoff, budgetMs - elapsed);
|
|
711
|
+
await new Promise((resolve, reject) => {
|
|
712
|
+
const abort = () => {
|
|
713
|
+
clearTimeout(timer);
|
|
714
|
+
options.signal?.removeEventListener("abort", abort);
|
|
715
|
+
reject(options.signal?.reason ?? new Error("Writer wait aborted"));
|
|
716
|
+
};
|
|
717
|
+
const timer = setTimeout(() => {
|
|
718
|
+
options.signal?.removeEventListener("abort", abort);
|
|
719
|
+
resolve();
|
|
720
|
+
}, delay);
|
|
721
|
+
options.signal?.addEventListener("abort", abort, { once: true });
|
|
722
|
+
if (options.signal?.aborted)
|
|
723
|
+
abort();
|
|
724
|
+
});
|
|
522
725
|
}
|
|
523
726
|
}
|
|
524
727
|
}
|
|
@@ -526,7 +729,7 @@ function isInTransaction(db) {
|
|
|
526
729
|
const candidate = db;
|
|
527
730
|
return candidate.inTransaction === true || candidate.isTransaction === true;
|
|
528
731
|
}
|
|
529
|
-
function
|
|
732
|
+
function withPrivilegedWriter2(db, operation) {
|
|
530
733
|
const previousDepth = privilegeDepth.get(db) ?? 0;
|
|
531
734
|
const nested = isInTransaction(db);
|
|
532
735
|
const savepoint = "mc_privilege_scope";
|
|
@@ -537,8 +740,8 @@ function withPrivilegedWriter(db, operation) {
|
|
|
537
740
|
try {
|
|
538
741
|
db.exec("BEGIN IMMEDIATE");
|
|
539
742
|
} catch (error) {
|
|
540
|
-
if (transformPassScope.getStore()?.active &&
|
|
541
|
-
throw new
|
|
743
|
+
if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
|
|
744
|
+
throw new SqliteAcquisitionBusyError2(error);
|
|
542
745
|
throw error;
|
|
543
746
|
}
|
|
544
747
|
transactionStartedAt = performance.now();
|
|
@@ -580,5 +783,59 @@ function withPrivilegedWriter(db, operation) {
|
|
|
580
783
|
throw error;
|
|
581
784
|
}
|
|
582
785
|
}
|
|
786
|
+
var indexCoordinationKey = Symbol.for("magic-context.index-foreground-coordination.v1");
|
|
787
|
+
var indexCoordinationHeap = globalThis;
|
|
788
|
+
var indexCoordinationBuffer = indexCoordinationHeap[indexCoordinationKey] ?? new SharedArrayBuffer(3 * Int32Array.BYTES_PER_ELEMENT);
|
|
789
|
+
indexCoordinationHeap[indexCoordinationKey] = indexCoordinationBuffer;
|
|
790
|
+
var indexCoordinationState = new Int32Array(indexCoordinationBuffer);
|
|
791
|
+
function indexCoordinationInput2() {
|
|
792
|
+
return {
|
|
793
|
+
indexCoordination: indexCoordinationBuffer,
|
|
794
|
+
indexOwner: Atomics.add(indexCoordinationState, 2, 1) + 1
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
var yieldIndexTurn = () => new Promise((resolve) => setTimeout(resolve, 1));
|
|
798
|
+
function reserveForegroundSqliteTurn() {
|
|
799
|
+
Atomics.add(indexCoordinationState, 0, 1);
|
|
800
|
+
const release = () => {
|
|
801
|
+
Atomics.sub(indexCoordinationState, 0, 1);
|
|
802
|
+
Atomics.notify(indexCoordinationState, 0);
|
|
803
|
+
};
|
|
804
|
+
if (Atomics.load(indexCoordinationState, 1) === 0)
|
|
805
|
+
return release;
|
|
806
|
+
return (async () => {
|
|
807
|
+
while (Atomics.load(indexCoordinationState, 1) !== 0)
|
|
808
|
+
await yieldIndexTurn();
|
|
809
|
+
return release;
|
|
810
|
+
})();
|
|
811
|
+
}
|
|
812
|
+
function releaseIndexOwner2(input) {
|
|
813
|
+
if (!input.indexCoordination || !input.indexOwner)
|
|
814
|
+
return;
|
|
815
|
+
const shared = new Int32Array(input.indexCoordination);
|
|
816
|
+
Atomics.compareExchange(shared, 1, input.indexOwner, 0);
|
|
817
|
+
Atomics.notify(shared, 1);
|
|
818
|
+
}
|
|
819
|
+
async function withIndexChunk2(input, operation) {
|
|
820
|
+
if (!input.indexCoordination || !input.indexOwner)
|
|
821
|
+
return operation();
|
|
822
|
+
const shared = new Int32Array(input.indexCoordination);
|
|
823
|
+
for (;; ) {
|
|
824
|
+
if (Atomics.load(shared, 0) === 0 && Atomics.compareExchange(shared, 1, 0, input.indexOwner) === 0) {
|
|
825
|
+
if (Atomics.load(shared, 0) === 0)
|
|
826
|
+
break;
|
|
827
|
+
releaseIndexOwner2(input);
|
|
828
|
+
}
|
|
829
|
+
await yieldIndexTurn();
|
|
830
|
+
}
|
|
831
|
+
try {
|
|
832
|
+
return await operation();
|
|
833
|
+
} finally {
|
|
834
|
+
releaseIndexOwner2(input);
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
async function yieldIndexChunk2() {
|
|
838
|
+
await yieldIndexTurn();
|
|
839
|
+
}
|
|
583
840
|
|
|
584
|
-
export {
|
|
841
|
+
export { registerSlowWriteReporter2, registerSqliteDiagnosticSink2, detectSqliteRuntime2, getTagIdentityWriteGeneration2, Database2, getSqliteDatabasePath2, getSqliteMemoryStats2, prepareCachedStatement2, withSqliteBackgroundWriter2, withSqliteTransformPass2, withoutSqliteTransformPass2, assertTransformWrite2, isTransientSqliteError2, SqliteAcquisitionBusyError2, beginSqliteWriterAsync2, withAsyncPrivilegedWriter2, withPrivilegedWriter2, indexCoordinationInput2, releaseIndexOwner2, withIndexChunk2, yieldIndexChunk2 };
|