@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 };
|
|
@@ -77,7 +77,7 @@ class Parser {
|
|
|
77
77
|
} else
|
|
78
78
|
break;
|
|
79
79
|
}
|
|
80
|
-
const expression = { steps
|
|
80
|
+
const expression = { steps };
|
|
81
81
|
if (this.take(".each(")) {
|
|
82
82
|
if (relative)
|
|
83
83
|
return this.error();
|
|
@@ -144,9 +144,23 @@ function compiled(source) {
|
|
|
144
144
|
function oneLine(value) {
|
|
145
145
|
return value.replace(/[\r\n\u2028\u2029]+/g, " ");
|
|
146
146
|
}
|
|
147
|
-
function truncate(value, cap) {
|
|
147
|
+
function truncate(value, cap, legacyPreview = false) {
|
|
148
148
|
const chars = Array.from(oneLine(value));
|
|
149
|
-
|
|
149
|
+
if (cap === undefined || chars.length <= cap)
|
|
150
|
+
return chars.join("");
|
|
151
|
+
if (legacyPreview)
|
|
152
|
+
return `${chars.slice(0, cap).join("")}…`;
|
|
153
|
+
let end = 0;
|
|
154
|
+
for (let i = 0;i < Math.min(cap, chars.length); i++) {
|
|
155
|
+
if (!".!?。!?".includes(chars[i]))
|
|
156
|
+
continue;
|
|
157
|
+
let next = i + 1;
|
|
158
|
+
while (next < chars.length && `"'”’)]`.includes(chars[next]))
|
|
159
|
+
next++;
|
|
160
|
+
if (next <= cap && ("。!?".includes(chars[i]) || next === chars.length || /[ \t]/.test(chars[next])))
|
|
161
|
+
end = next;
|
|
162
|
+
}
|
|
163
|
+
return `${end ? `${chars.slice(0, end).join("")} ` : ""}[… ${chars.length - end} more characters]`;
|
|
150
164
|
}
|
|
151
165
|
function scalar(value) {
|
|
152
166
|
if (value === undefined)
|
|
@@ -163,10 +177,11 @@ function compactJson(value) {
|
|
|
163
177
|
function field(value, key) {
|
|
164
178
|
return value !== null && typeof value === "object" && !Array.isArray(value) && Object.hasOwn(value, key) ? value[key] : undefined;
|
|
165
179
|
}
|
|
166
|
-
function render(nodes, root) {
|
|
180
|
+
function render(nodes, root, legacyPreview) {
|
|
167
181
|
return nodes.map((node) => {
|
|
168
182
|
if (typeof node === "string")
|
|
169
183
|
return node;
|
|
184
|
+
const cap = node.cap ?? (legacyPreview ? 300 : undefined);
|
|
170
185
|
let value = root;
|
|
171
186
|
let list = false;
|
|
172
187
|
for (const step of node.steps) {
|
|
@@ -180,19 +195,19 @@ function render(nodes, root) {
|
|
|
180
195
|
}
|
|
181
196
|
}
|
|
182
197
|
if (node.count)
|
|
183
|
-
return truncate(Array.isArray(value) ? String(value.length) : "",
|
|
198
|
+
return truncate(Array.isArray(value) ? String(value.length) : "", cap, legacyPreview);
|
|
184
199
|
if (node.each || list || node.join !== undefined) {
|
|
185
200
|
if (!Array.isArray(value))
|
|
186
201
|
return "";
|
|
187
|
-
const elements = value.slice(0, 10).map((item) => truncate(node.each ? render(node.each, item) : scalar(item), 300));
|
|
188
|
-
if (value.length > 10)
|
|
202
|
+
const elements = value.slice(0, legacyPreview ? 10 : undefined).map((item) => truncate(node.each ? render(node.each, item, legacyPreview) : scalar(item), legacyPreview ? 300 : undefined, legacyPreview));
|
|
203
|
+
if (legacyPreview && value.length > 10)
|
|
189
204
|
elements.push(`… +${value.length - 10} more`);
|
|
190
|
-
return truncate(elements.join(node.join ?? (node.each ? "; " : ", ")),
|
|
205
|
+
return truncate(elements.join(node.join ?? (node.each ? "; " : ", ")), cap, legacyPreview);
|
|
191
206
|
}
|
|
192
|
-
return truncate(scalar(value),
|
|
207
|
+
return truncate(scalar(value), cap, legacyPreview);
|
|
193
208
|
}).join("");
|
|
194
209
|
}
|
|
195
|
-
function renderToolTemplate(source, input, output) {
|
|
210
|
+
function renderToolTemplate(source, input, output, legacyPreview = false) {
|
|
196
211
|
const nodes = compiled(source);
|
|
197
212
|
if (!nodes)
|
|
198
213
|
return null;
|
|
@@ -207,23 +222,8 @@ function renderToolTemplate(source, input, output) {
|
|
|
207
222
|
}
|
|
208
223
|
}
|
|
209
224
|
const root = { input, output: structured };
|
|
210
|
-
const bareOutputNodes = nodes.map((node) => typeof node !== "string" && node.steps.length === 1 && ("field" in node.steps[0]) && node.steps[0].field === "output" && !node.each && !node.count && node.join === undefined ? truncate(text ?? "", node.cap) : node);
|
|
211
|
-
return truncate(render(bareOutputNodes, root), 1000);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// src/shared/protected-tools-policy.ts
|
|
215
|
-
var DEFAULT_PROTECTED_TOOLS = {
|
|
216
|
-
todowrite: 1,
|
|
217
|
-
ctx_reduce: 3
|
|
218
|
-
};
|
|
219
|
-
function normalizeProtectedToolName(name) {
|
|
220
|
-
return (name ?? "").toLowerCase().replace(/^mcp_/, "");
|
|
221
|
-
}
|
|
222
|
-
function mergeProtectedTools(...maps) {
|
|
223
|
-
return Object.fromEntries([DEFAULT_PROTECTED_TOOLS, ...maps].flatMap((map) => Object.entries(map ?? {}).map(([name, count]) => [
|
|
224
|
-
normalizeProtectedToolName(name),
|
|
225
|
-
count
|
|
226
|
-
])));
|
|
225
|
+
const bareOutputNodes = nodes.map((node) => typeof node !== "string" && node.steps.length === 1 && ("field" in node.steps[0]) && node.steps[0].field === "output" && !node.each && !node.count && node.join === undefined ? truncate(text ?? "", node.cap ?? (legacyPreview ? 300 : undefined), legacyPreview) : node);
|
|
226
|
+
return truncate(render(bareOutputNodes, root, legacyPreview), legacyPreview ? 1000 : undefined, legacyPreview);
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
export { toolTemplateError, renderToolTemplate
|
|
229
|
+
export { toolTemplateError, renderToolTemplate };
|