@cortexkit/opencode-magic-context 0.47.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/magic-context-prompt.d.ts +1 -1
- package/dist/agents/magic-context-prompt.d.ts.map +1 -1
- package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
- package/dist/auto-search-worker.js +27 -30
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/mural-model-deprecation.d.ts +15 -0
- package/dist/config/mural-model-deprecation.d.ts.map +1 -0
- package/dist/config/project-security.d.ts +0 -3
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +10 -6
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-z44ynfz7.js → conflict-warning-hook-kzx4dmk1.js} +12 -10
- package/dist/{context-wq4ffwyb.js → context-nj5f293n.js} +2765 -1925
- package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-qz5rrr08.js} +4 -3
- package/dist/embedding-activity-g1dhes6g.js +10 -0
- package/dist/embedding-backfill-aetxv1vt.js +21 -0
- package/dist/embedding-cache-mgyr73ef.js +16 -0
- package/dist/embedding-worker.js +11 -9
- package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
- package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
- package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +16 -3
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
- package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
- package/dist/features/magic-context/message-index.d.ts +7 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
- package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
- package/dist/features/magic-context/search-rerank.d.ts +35 -0
- package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
- package/dist/features/magic-context/search.d.ts +40 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/session-activity.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
- package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +7 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta.d.ts +1 -1
- package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +50 -0
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
- package/dist/features/magic-context/storage-tags.d.ts +153 -4
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -1
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
- package/dist/features/magic-context/tagger.d.ts +2 -0
- package/dist/features/magic-context/tagger.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +4 -1
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/harness-e4avh192.js +10 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
- package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +34 -3
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +3 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +3 -2
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
- package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
- package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
- package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts +19 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +118 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
- package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/sentinel.d.ts +41 -1
- package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
- package/dist/hooks/magic-context/strip-content.d.ts +14 -2
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
- package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
- package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
- package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
- package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +9 -2
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
- package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
- package/dist/{index-5gq3b2ya.js → index-1bt88epp.js} +227 -205
- package/dist/{index-cwf6s3ay.js → index-1g30axtz.js} +3279 -2907
- package/dist/{index-5a2r0p9f.js → index-1r0k9js3.js} +20 -13
- package/dist/index-2bvekkfy.js +11 -0
- package/dist/{index-6d9e1m08.js → index-2jcbj7r1.js} +13301 -13225
- package/dist/index-2jgwttpt.js +3269 -0
- package/dist/index-4dhv7mqz.js +131 -0
- package/dist/{index-sj29b3z2.js → index-4mjhqadz.js} +3 -3
- package/dist/{index-0c82743p.js → index-57mrqed8.js} +17 -15
- package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
- package/dist/index-7jzrrxap.js +931 -0
- package/dist/index-8ajstryz.js +18 -0
- package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
- package/dist/{index-6wkcswft.js → index-9qjqq45k.js} +29 -19
- package/dist/{index-adwfkpex.js → index-9rt53q79.js} +23 -23
- package/dist/index-b7mv1jx3.js +1060 -0
- package/dist/index-d9vfe7xq.js +16 -0
- package/dist/{index-gg8j07zz.js → index-ezmszwbd.js} +8 -6
- package/dist/index-fb3zxn06.js +13 -0
- package/dist/index-fr0wbhdn.js +43 -0
- package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
- package/dist/index-gzcmtmar.js +171 -0
- package/dist/{index-w2t4ah5j.js → index-h2py7207.js} +6762 -7400
- package/dist/index-h2wc01qk.js +120 -0
- package/dist/index-h5zfkjyk.js +1277 -0
- package/dist/{index-92bp57hg.js → index-ha87j7a8.js} +1343 -149
- package/dist/index-hj2q50k0.js +856 -0
- package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
- package/dist/index-kmpvemph.js +1314 -0
- package/dist/index-kp5qe690.js +3030 -0
- package/dist/{index-m5fe6jch.js → index-kq57tdf0.js} +152 -2453
- package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
- package/dist/{v2/server-njt3np1k.js → index-nm6a8xpd.js} +220 -961
- package/dist/{index-hybnrwq0.js → index-nsjyysj0.js} +137 -130
- package/dist/index-nydv6g8r.js +3569 -0
- package/dist/index-pavzsdc6.js +17 -0
- package/dist/index-peshmj6h.js +152 -0
- package/dist/index-pxwp2hjk.js +571 -0
- package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
- package/dist/{v2/server-51dv1pr5.js → index-qx53vezw.js} +301 -27
- package/dist/{index-rrrsepyw.js → index-s4j7t92z.js} +90 -85
- package/dist/{index-9pk9exrb.js → index-stbr4ce6.js} +18 -18
- package/dist/{index-fzbvakh0.js → index-tqf7yg27.js} +3 -3
- package/dist/index-vkbqdnkj.js +2307 -0
- package/dist/{index-8da2zjhz.js → index-z1tjp257.js} +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +608 -349
- package/dist/logger-ewak5q1s.js +20 -0
- package/dist/message-index-bounded-h0mrd4pr.js +124 -0
- package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-8x06r9kx.js} +8 -6
- package/dist/migration-worker.js +25 -18
- package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/plugin/dream-timer.d.ts +1 -1
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +3 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
- package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
- package/dist/plugin/host-stall-profiler.d.ts +2 -95
- package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
- package/dist/plugin/messages-transform.d.ts +0 -13
- package/dist/plugin/messages-transform.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/project-embedding-registry-rtt0djyb.js +88 -0
- package/dist/raw-ordinal-warmup-worker.js +60 -0
- package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-ty89v75e.js} +17 -9
- package/dist/read-session-raw-8sjbc9h0.js +60 -0
- package/dist/recomp-orchestrator-4f1yyd1q.js +57 -0
- package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-q0cyrx3x.js} +4 -2
- package/dist/search-pz4f4wge.js +45 -0
- package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-38cd5dqt.js} +10 -7
- package/dist/shared/auto-search-lifecycle.d.ts +14 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
- package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-common.d.ts +58 -0
- package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-node.d.ts +36 -0
- package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler-report.d.ts +68 -0
- package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
- package/dist/shared/host-stall-profiler.d.ts +5 -0
- package/dist/shared/host-stall-profiler.d.ts.map +1 -0
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/model-resolution.d.ts +2 -3
- package/dist/shared/model-resolution.d.ts.map +1 -1
- package/dist/shared/models-dev-temperature.d.ts +18 -0
- package/dist/shared/models-dev-temperature.d.ts.map +1 -0
- package/dist/shared/project-directory-key.d.ts +16 -0
- package/dist/shared/project-directory-key.d.ts.map +1 -1
- package/dist/shared/sqlite.d.ts +30 -0
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/stable-json.d.ts.map +1 -1
- package/dist/shared/subagent-temperature.d.ts +46 -0
- package/dist/shared/subagent-temperature.d.ts.map +1 -0
- package/dist/shared/user-facing-codes.d.ts +0 -5
- package/dist/shared/user-facing-codes.d.ts.map +1 -1
- package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/sqlite-mhjkerzq.js +46 -0
- package/dist/storage-memory-07fx57k6.js +71 -0
- package/dist/storage-tags-k0pda32s.js +133 -0
- package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/constants.d.ts +4 -0
- package/dist/tools/ctx-note/constants.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts +1 -0
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -0
- package/dist/tools/ctx-search/types.d.ts.map +1 -1
- package/dist/tools/parameter-descriptions.d.ts +2 -2
- package/dist/tools/parameter-descriptions.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-tck4g20s.js} +35 -20
- package/dist/transformers-node-wasm.js +18415 -18415
- package/dist/v2/auto-search-worker.js +27 -30
- package/dist/v2/{context-14v1hr8b.js → context-crbt6p1y.js} +4708 -4218
- package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-fgej9j46.js} +4 -3
- package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
- package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
- package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
- package/dist/v2/embedding-worker.js +12 -9
- package/dist/v2/fold/host-media.d.ts +4 -0
- package/dist/v2/fold/host-media.d.ts.map +1 -1
- package/dist/v2/fold/memory-cache.d.ts +70 -0
- package/dist/v2/fold/memory-cache.d.ts.map +1 -0
- package/dist/v2/fold/native-codec.d.ts +10 -0
- package/dist/v2/fold/native-codec.d.ts.map +1 -0
- package/dist/v2/fold/native-replay.d.ts +58 -0
- package/dist/v2/fold/native-replay.d.ts.map +1 -0
- package/dist/v2/fold/policy.d.ts +24 -0
- package/dist/v2/fold/policy.d.ts.map +1 -0
- package/dist/v2/harness-e4avh192.js +10 -0
- package/dist/v2/hidden-child-native.d.ts.map +1 -1
- package/dist/v2/hidden-completion.d.ts +7 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts +2 -2
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-manual.d.ts +1 -1
- package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
- package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +5 -3
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/generate.d.ts +9 -2
- package/dist/v2/hooks/generate.d.ts.map +1 -1
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/tools.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +6 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/logger-pj02s7sr.js +19 -0
- package/dist/v2/message-index-bounded-xwqdywxg.js +123 -0
- package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-cje68egj.js} +7 -7
- package/dist/v2/migration-worker.js +24 -17
- package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
- package/dist/v2/project-embedding-registry-d6m7tyxr.js +86 -0
- package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
- package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-8p5mdryx.js} +16 -8
- package/dist/v2/read-session-raw-j8dvp7f4.js +59 -0
- package/dist/v2/recomp-orchestrator-ckfgt6wq.js +57 -0
- package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-y3p1hce9.js} +3 -3
- package/dist/v2/search-ym8rehhz.js +45 -0
- package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-5m0yapqx.js} +9 -8
- package/dist/v2/{server-rz514f14.js → server-19zjmn02.js} +2044 -2060
- package/dist/v2/server-1tk82krw.js +796 -0
- package/dist/v2/server-2bvekkfy.js +11 -0
- package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
- package/dist/v2/server-2s6ayq3t.js +1048 -0
- package/dist/v2/{server-fcdehk1s.js → server-2s9qz6n7.js} +4 -4
- package/dist/v2/server-3j4d00kf.js +171 -0
- package/dist/v2/{server-14vq4kpm.js → server-3t0q2cqx.js} +3 -3
- package/dist/v2/server-4dhv7mqz.js +131 -0
- package/dist/v2/server-4ez8mntn.js +3213 -0
- package/dist/v2/{server-6r257mf5.js → server-676xw7at.js} +3 -3
- package/dist/v2/{server-vs5gpnd4.js → server-6byqfbqf.js} +165 -145
- package/dist/v2/server-7ekna9zs.js +120 -0
- package/dist/v2/server-7h861yms.js +1272 -0
- package/dist/v2/server-7jzrrxap.js +931 -0
- package/dist/v2/server-8ajstryz.js +18 -0
- package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
- package/dist/v2/{server-cpepxy2q.js → server-8k2agx29.js} +14 -12
- package/dist/v2/server-c5rrgrcd.js +3545 -0
- package/dist/v2/server-d9vfe7xq.js +16 -0
- package/dist/v2/server-fb3zxn06.js +13 -0
- package/dist/v2/server-fr0wbhdn.js +43 -0
- package/dist/v2/{server-y10vbq6y.js → server-hb6xhh9q.js} +11 -1053
- package/dist/v2/server-jvxzm1jy.js +3023 -0
- package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
- package/dist/{index-5eqk6z3s.js → v2/server-kzns2hbz.js} +301 -27
- package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
- package/dist/v2/server-pavzsdc6.js +17 -0
- package/dist/v2/{server-vd4e7174.js → server-pj4pjv02.js} +21 -17
- package/dist/v2/{server-e0c1b7a7.js → server-q4ph9bwn.js} +1340 -148
- package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
- package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
- package/dist/v2/{server-d0sraw7m.js → server-sa8jvrfc.js} +291 -286
- package/dist/v2/server-ss95ky04.js +1048 -0
- package/dist/v2/{server-1qbnzc80.js → server-t4k4qexw.js} +142 -150
- package/dist/{index-x3kwrmqk.js → v2/server-v4mewb78.js} +35 -792
- package/dist/v2/server-w32kmdez.js +154 -0
- package/dist/v2/{server-nf82q6pt.js → server-x4hscabv.js} +5547 -5449
- package/dist/v2/server-xwz4dqh9.js +569 -0
- package/dist/v2/{server-efhwzx05.js → server-ycw9qqcy.js} +23 -23
- package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
- package/dist/v2/server-zp53y8js.js +1311 -0
- package/dist/v2/server.js +16 -14
- package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
- package/dist/v2/sqlite-mhjkerzq.js +46 -0
- package/dist/v2/storage-memory-07fx57k6.js +71 -0
- package/dist/v2/storage-tags-8vw924zn.js +132 -0
- package/dist/v2/store-reader.d.ts +24 -2
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
- package/dist/v2/transformers-node-wasm.js +18415 -18415
- package/dist/v2/tui/index.d.ts.map +1 -1
- package/dist/v2/tui/types.d.ts +1 -10
- package/dist/v2/tui/types.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-a7efxaax.js} +51 -30
- package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
- package/package.json +4 -3
- package/src/agents/magic-context-prompt.ts +27 -2
- package/src/agents/smart-notes-enabled.test.ts +294 -0
- package/src/agents/smart-notes-on.golden.json +70 -0
- package/src/config/index.test.ts +67 -1
- package/src/config/index.ts +2 -0
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/config/mural-model-deprecation.ts +24 -0
- package/src/config/project-security.hostile-matrix.test.ts +4 -44
- package/src/config/project-security.test.ts +9 -14
- package/src/config/project-security.ts +13 -55
- package/src/config/schema/magic-context.test.ts +2 -2
- package/src/config/schema/magic-context.ts +16 -10
- package/src/features/magic-context/dreamer/task-registry.ts +6 -0
- package/src/shared/auto-search-lifecycle.ts +43 -0
- package/src/shared/conflict-detector.test.ts +56 -0
- package/src/shared/conflict-detector.ts +16 -5
- package/src/shared/host-stall-profiler-bun.ts +358 -0
- package/src/shared/host-stall-profiler-common.ts +159 -0
- package/src/shared/host-stall-profiler-node.test.ts +234 -0
- package/src/shared/host-stall-profiler-node.ts +274 -0
- package/src/shared/host-stall-profiler-report.ts +248 -0
- package/src/shared/host-stall-profiler.ts +57 -0
- package/src/shared/logger.test.ts +38 -0
- package/src/shared/logger.ts +10 -2
- package/src/shared/model-resolution.test.ts +54 -17
- package/src/shared/model-resolution.ts +6 -17
- package/src/shared/models-dev-temperature.ts +107 -0
- package/src/shared/project-directory-key.test.ts +59 -0
- package/src/shared/project-directory-key.ts +20 -0
- package/src/shared/sqlite.test.ts +52 -0
- package/src/shared/sqlite.ts +339 -23
- package/src/shared/stable-json-linear.test.ts +109 -0
- package/src/shared/stable-json.ts +37 -7
- package/src/shared/subagent-temperature.test.ts +270 -0
- package/src/shared/subagent-temperature.ts +110 -0
- package/src/shared/user-facing-codes.ts +2 -6
- package/src/shared/write-transaction-attribution.test.ts +2 -2
- package/src/v2/tui/host-contract.test.ts +41 -67
- package/src/v2/tui/index.ts +6 -214
- package/src/v2/tui/types.ts +5 -17
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
- package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
- package/dist/features/magic-context/checkout-claim.d.ts +0 -155
- package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
- package/dist/index-bb36vgr3.js +0 -6608
- package/dist/index-fnn5pjtt.js +0 -6554
- package/dist/recomp-orchestrator-rervg6q4.js +0 -42
- package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
- package/dist/v2/server-3trjk1hx.js +0 -6360
- package/dist/v2/server-nm9n3aqq.js +0 -6461
- package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
- /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
- /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./server-
|
|
2
|
+
log2
|
|
3
|
+
} from "./server-t4k4qexw.js";
|
|
4
4
|
|
|
5
5
|
// src/shared/safe-notification-target.ts
|
|
6
6
|
var DEFAULT_TITLE_RE = /^(New session - |Child session - )\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
@@ -33,7 +33,7 @@ async function waitForSafeNotificationTarget2(client, sessionId, options) {
|
|
|
33
33
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
log2(`[magic-context] notification skipped: session ${sessionId} still has its default title (would suppress title generation); will retry on a later startup`);
|
|
37
37
|
return "skip";
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -1,148 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./server-
|
|
4
|
-
import {
|
|
5
|
-
sessionLog
|
|
6
|
-
} from "./server-1qbnzc80.js";
|
|
2
|
+
sessionLog2
|
|
3
|
+
} from "./server-t4k4qexw.js";
|
|
7
4
|
import {
|
|
8
5
|
isKnownAutocommit
|
|
9
|
-
} from "./server-
|
|
10
|
-
|
|
11
|
-
// src/features/magic-context/tool-definition-tokens.ts
|
|
12
|
-
import { createHash } from "node:crypto";
|
|
13
|
-
|
|
14
|
-
// src/shared/stable-json.ts
|
|
15
|
-
function stableStringify(value, seen = new WeakSet) {
|
|
16
|
-
if (value === undefined)
|
|
17
|
-
return "undefined";
|
|
18
|
-
if (value === null || typeof value !== "object")
|
|
19
|
-
return JSON.stringify(value) ?? String(value);
|
|
20
|
-
if (seen.has(value))
|
|
21
|
-
return '"[Circular]"';
|
|
22
|
-
seen.add(value);
|
|
23
|
-
if (Array.isArray(value)) {
|
|
24
|
-
return `[${value.map((item) => stableStringify(item, seen)).join(",")}]`;
|
|
25
|
-
}
|
|
26
|
-
const entries = Object.entries(value).sort(([a], [b]) => {
|
|
27
|
-
if (a < b)
|
|
28
|
-
return -1;
|
|
29
|
-
if (a > b)
|
|
30
|
-
return 1;
|
|
31
|
-
return 0;
|
|
32
|
-
});
|
|
33
|
-
return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child, seen)}`).join(",")}}`;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// src/features/magic-context/tool-definition-tokens.ts
|
|
37
|
-
var measurements = new Map;
|
|
38
|
-
var fingerprints = new Map;
|
|
39
|
-
var persistenceDb = null;
|
|
40
|
-
var cachedInsertStmt = null;
|
|
41
|
-
function keyFor(providerID, modelID, agentName) {
|
|
42
|
-
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
43
|
-
return `${providerID}/${modelID}/${agent}`;
|
|
44
|
-
}
|
|
45
|
-
function fingerprintFor(description, parameters) {
|
|
46
|
-
return createHash("sha256").update(description).update("\x00").update(stableStringify(parameters)).digest("hex");
|
|
47
|
-
}
|
|
48
|
-
function getCurrentToolSetHash(providerID, modelID, agentName) {
|
|
49
|
-
if (!providerID || !modelID)
|
|
50
|
-
return "";
|
|
51
|
-
const toolIds = measurements.get(keyFor(providerID, modelID, agentName));
|
|
52
|
-
if (!toolIds || toolIds.size === 0)
|
|
53
|
-
return "";
|
|
54
|
-
return createHash("sha256").update(Array.from(toolIds.keys()).sort().join("\x00")).digest("hex");
|
|
55
|
-
}
|
|
56
|
-
function getToolDefinitionMeasurementSignature(providerID, modelID, agentName) {
|
|
57
|
-
const key = keyFor(providerID, modelID, agentName);
|
|
58
|
-
const measured = measurements.get(key);
|
|
59
|
-
const observed = fingerprints.get(key);
|
|
60
|
-
if (!measured || !observed || [...measured.keys()].some((id) => !observed.has(id)))
|
|
61
|
-
return;
|
|
62
|
-
return createHash("sha256").update(JSON.stringify([...measured.keys()].sort().map((id) => [id, observed.get(id)]))).digest("hex");
|
|
63
|
-
}
|
|
64
|
-
function setDatabase(db) {
|
|
65
|
-
persistenceDb = db;
|
|
66
|
-
cachedInsertStmt = null;
|
|
67
|
-
}
|
|
68
|
-
function loadToolDefinitionMeasurements(db) {
|
|
69
|
-
let rows = [];
|
|
70
|
-
try {
|
|
71
|
-
rows = db.prepare("SELECT provider_id, model_id, agent_name, tool_id, token_count FROM tool_definition_measurements").all();
|
|
72
|
-
} catch {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
for (const row of rows) {
|
|
76
|
-
const key = keyFor(row.provider_id, row.model_id, row.agent_name);
|
|
77
|
-
let inner = measurements.get(key);
|
|
78
|
-
if (!inner) {
|
|
79
|
-
inner = new Map;
|
|
80
|
-
measurements.set(key, inner);
|
|
81
|
-
}
|
|
82
|
-
inner.set(row.tool_id, row.token_count);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
function recordToolDefinition(providerID, modelID, agentName, toolID, description, parameters) {
|
|
86
|
-
if (!providerID || !modelID || !toolID)
|
|
87
|
-
return;
|
|
88
|
-
const key = keyFor(providerID, modelID, agentName);
|
|
89
|
-
const fp = fingerprintFor(description ?? "", parameters);
|
|
90
|
-
let innerFp = fingerprints.get(key);
|
|
91
|
-
if (innerFp && innerFp.get(toolID) === fp)
|
|
92
|
-
return;
|
|
93
|
-
let paramsText = "";
|
|
94
|
-
try {
|
|
95
|
-
paramsText = parameters === undefined ? "" : JSON.stringify(parameters);
|
|
96
|
-
} catch {
|
|
97
|
-
paramsText = "";
|
|
98
|
-
}
|
|
99
|
-
const tokens = estimateTokens(description ?? "") + estimateTokens(paramsText);
|
|
100
|
-
let inner = measurements.get(key);
|
|
101
|
-
if (!inner) {
|
|
102
|
-
inner = new Map;
|
|
103
|
-
measurements.set(key, inner);
|
|
104
|
-
}
|
|
105
|
-
inner.set(toolID, tokens);
|
|
106
|
-
if (!innerFp) {
|
|
107
|
-
innerFp = new Map;
|
|
108
|
-
fingerprints.set(key, innerFp);
|
|
109
|
-
}
|
|
110
|
-
innerFp.set(toolID, fp);
|
|
111
|
-
if (persistenceDb) {
|
|
112
|
-
try {
|
|
113
|
-
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
114
|
-
if (!cachedInsertStmt) {
|
|
115
|
-
cachedInsertStmt = persistenceDb.prepare(`INSERT OR REPLACE INTO tool_definition_measurements
|
|
116
|
-
(provider_id, model_id, agent_name, tool_id, token_count, recorded_at)
|
|
117
|
-
VALUES (?, ?, ?, ?, ?, ?)`);
|
|
118
|
-
}
|
|
119
|
-
cachedInsertStmt.run(providerID, modelID, agent, toolID, tokens, Date.now());
|
|
120
|
-
} catch {
|
|
121
|
-
cachedInsertStmt = null;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function getLargestMeasuredToolDefinitionTokens() {
|
|
126
|
-
let largest = 0;
|
|
127
|
-
for (const tools of measurements.values()) {
|
|
128
|
-
let total = 0;
|
|
129
|
-
for (const tokens of tools.values())
|
|
130
|
-
total += tokens;
|
|
131
|
-
largest = Math.max(largest, total);
|
|
132
|
-
}
|
|
133
|
-
return largest > 0 ? largest : undefined;
|
|
134
|
-
}
|
|
135
|
-
function getMeasuredToolDefinitionTokens(providerID, modelID, agentName) {
|
|
136
|
-
if (!providerID || !modelID)
|
|
137
|
-
return;
|
|
138
|
-
const inner = measurements.get(keyFor(providerID, modelID, agentName));
|
|
139
|
-
if (!inner || inner.size === 0)
|
|
140
|
-
return;
|
|
141
|
-
let total = 0;
|
|
142
|
-
for (const tokens of inner.values())
|
|
143
|
-
total += tokens;
|
|
144
|
-
return total;
|
|
145
|
-
}
|
|
6
|
+
} from "./server-8ajstryz.js";
|
|
146
7
|
|
|
147
8
|
// src/features/magic-context/storage-schema-helpers.ts
|
|
148
9
|
var columnCaches = new WeakMap;
|
|
@@ -416,11 +277,11 @@ function installV95PerfSchema(db, verifyExistingMap = false, allowCreateMap = tr
|
|
|
416
277
|
try {
|
|
417
278
|
entries = JSON.parse(row.entries);
|
|
418
279
|
} catch {
|
|
419
|
-
|
|
280
|
+
sessionLog2(row.session_id, "v95 temporal metadata: malformed JSON skipped; original blob retained");
|
|
420
281
|
continue;
|
|
421
282
|
}
|
|
422
283
|
if (!Array.isArray(entries)) {
|
|
423
|
-
|
|
284
|
+
sessionLog2(row.session_id, "v95 temporal metadata: non-array JSON skipped; original blob retained");
|
|
424
285
|
continue;
|
|
425
286
|
}
|
|
426
287
|
const kept = [];
|
|
@@ -490,4 +351,163 @@ function tagOrderConstraintIndex(db) {
|
|
|
490
351
|
throw new Error("tags lacks its UNIQUE(session_id, tag_number) ordering constraint");
|
|
491
352
|
}
|
|
492
353
|
|
|
493
|
-
|
|
354
|
+
// src/features/magic-context/storage-tag-identity-revision.ts
|
|
355
|
+
var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:";
|
|
356
|
+
var TAG_REVISION_PREFIX = "tag_revision:";
|
|
357
|
+
var TAG_TOMBSTONE_OWNER_PREFIX = "tag_revision_owner:";
|
|
358
|
+
var TAG_REVISION_INCARNATION_KEY = "tag_revision_incarnation";
|
|
359
|
+
var tagRevisionIncarnationSql = (value) => `CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, 1, INSTR(${value}, ':') - 1) ELSE '0' END`;
|
|
360
|
+
var tagRevisionCountSql = (value) => `CAST(CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, INSTR(${value}, ':') + 1) ELSE ${value} END AS INTEGER)`;
|
|
361
|
+
var ADVANCE = (delta = "1") => `CASE
|
|
362
|
+
WHEN ${tagRevisionCountSql("value")} <= 9223372036854775807 - ${delta}
|
|
363
|
+
THEN (${tagRevisionIncarnationSql("value")}) || ':' || CAST(${tagRevisionCountSql("value")} + ${delta} AS TEXT)
|
|
364
|
+
ELSE NULL END`;
|
|
365
|
+
function tagTombstoneOwnerRange(sessionId) {
|
|
366
|
+
const stem = `${TAG_TOMBSTONE_OWNER_PREFIX}${JSON.stringify(sessionId)}`;
|
|
367
|
+
return [`${stem}:`, `${stem};`];
|
|
368
|
+
}
|
|
369
|
+
function tagTombstoneOwnerKey(sessionId, harness) {
|
|
370
|
+
return `${tagTombstoneOwnerRange(sessionId)[0]}${harness}`;
|
|
371
|
+
}
|
|
372
|
+
function tagRevisionKey(sessionId) {
|
|
373
|
+
return `${TAG_REVISION_PREFIX}${sessionId}`;
|
|
374
|
+
}
|
|
375
|
+
function tagIdentityRevisionKey(sessionId) {
|
|
376
|
+
return `${TAG_IDENTITY_REVISION_PREFIX}${sessionId}`;
|
|
377
|
+
}
|
|
378
|
+
var BUMP = (session, prefix = TAG_IDENTITY_REVISION_PREFIX) => `INSERT INTO schema_migrations_meta (key, value)
|
|
379
|
+
VALUES ('${prefix}' || ${session}, '1')
|
|
380
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`;
|
|
381
|
+
var TAG_INSERT_CONFLICT_ROWS = `SELECT id, session_id, tag_number FROM tags WHERE id = NEW.id
|
|
382
|
+
UNION SELECT id, session_id, tag_number FROM tags WHERE session_id = NEW.session_id AND tag_number = NEW.tag_number
|
|
383
|
+
UNION SELECT id, session_id, tag_number FROM tags
|
|
384
|
+
WHERE NEW.type = 'tool' AND NEW.tool_owner_message_id IS NOT NULL
|
|
385
|
+
AND type = 'tool' AND tool_owner_message_id IS NOT NULL
|
|
386
|
+
AND session_id = NEW.session_id AND message_id = NEW.message_id
|
|
387
|
+
AND tool_owner_message_id = NEW.tool_owner_message_id`;
|
|
388
|
+
var BUMP_INSERT_CONFLICTS = (prefix) => `INSERT INTO schema_migrations_meta (key, value)
|
|
389
|
+
SELECT '${prefix}' || session_id, CAST(COUNT(*) AS TEXT)
|
|
390
|
+
FROM (${TAG_INSERT_CONFLICT_ROWS}) GROUP BY session_id
|
|
391
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE("CAST(excluded.value AS INTEGER)")}`;
|
|
392
|
+
var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
393
|
+
AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
|
|
394
|
+
ON main.tags
|
|
395
|
+
BEGIN
|
|
396
|
+
${BUMP("OLD.session_id")};
|
|
397
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
398
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
399
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
400
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
401
|
+
END`;
|
|
402
|
+
function installTagIdentityRevisionTrigger(db) {
|
|
403
|
+
db.exec(`DROP TRIGGER IF EXISTS temp.mc_tag_identity_revision_au;
|
|
404
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_bi;
|
|
405
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ai;
|
|
406
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_au;
|
|
407
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ad;
|
|
408
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_seed_ai;`);
|
|
409
|
+
db.exec(`CREATE TEMP TRIGGER mc_tag_revision_seed_ai AFTER INSERT ON main.schema_migrations_meta
|
|
410
|
+
WHEN INSTR(NEW.value, ':') = 0 AND (
|
|
411
|
+
SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
412
|
+
OR SUBSTR(NEW.key, 1, ${TAG_IDENTITY_REVISION_PREFIX.length}) = '${TAG_IDENTITY_REVISION_PREFIX}')
|
|
413
|
+
BEGIN
|
|
414
|
+
INSERT INTO schema_migrations_meta (key, value) VALUES ('${TAG_REVISION_INCARNATION_KEY}', '1')
|
|
415
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
416
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
417
|
+
ELSE NULL END AS TEXT);
|
|
418
|
+
UPDATE schema_migrations_meta SET value =
|
|
419
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}')
|
|
420
|
+
|| ':' || CAST(NEW.value AS TEXT) WHERE key = NEW.key;
|
|
421
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
422
|
+
SELECT '${TAG_REVISION_INCARNATION_KEY}', '1'
|
|
423
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
424
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
425
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}))
|
|
426
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
427
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
428
|
+
ELSE NULL END AS TEXT);
|
|
429
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
430
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}),
|
|
431
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}') || ':0'
|
|
432
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
433
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
434
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}));
|
|
435
|
+
END;`);
|
|
436
|
+
db.exec(TRIGGER_SQL);
|
|
437
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_bi BEFORE INSERT ON main.tags BEGIN
|
|
438
|
+
${BUMP_INSERT_CONFLICTS(TAG_REVISION_PREFIX)};
|
|
439
|
+
${BUMP_INSERT_CONFLICTS(TAG_IDENTITY_REVISION_PREFIX)};
|
|
440
|
+
UPDATE session_meta SET tags_version = tags_version + 1
|
|
441
|
+
WHERE session_id IN (SELECT session_id FROM (${TAG_INSERT_CONFLICT_ROWS}));
|
|
442
|
+
END;`);
|
|
443
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ai AFTER INSERT ON main.tags BEGIN
|
|
444
|
+
${BUMP("NEW.session_id", TAG_REVISION_PREFIX)};
|
|
445
|
+
END;
|
|
446
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_au AFTER UPDATE ON main.tags BEGIN
|
|
447
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
448
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
449
|
+
SELECT '${TAG_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
450
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
451
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
452
|
+
END;
|
|
453
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ad AFTER DELETE ON main.tags BEGIN
|
|
454
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
455
|
+
END;`);
|
|
456
|
+
}
|
|
457
|
+
function deleteTagIdentityRevisions(db, sessionIds) {
|
|
458
|
+
const statement = db.prepare(`INSERT INTO schema_migrations_meta (key, value) VALUES (?, '1')
|
|
459
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`);
|
|
460
|
+
for (const sessionId of sessionIds) {
|
|
461
|
+
statement.run(tagIdentityRevisionKey(sessionId));
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// src/shared/stable-json.ts
|
|
466
|
+
function stableStringify(value, seen = new WeakSet) {
|
|
467
|
+
const pieces = [];
|
|
468
|
+
writeStable(value, seen, pieces);
|
|
469
|
+
return pieces.join("");
|
|
470
|
+
}
|
|
471
|
+
function writeStable(value, seen, pieces) {
|
|
472
|
+
if (value === undefined) {
|
|
473
|
+
pieces.push("undefined");
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
if (value === null || typeof value !== "object") {
|
|
477
|
+
pieces.push(JSON.stringify(value) ?? String(value));
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
if (seen.has(value)) {
|
|
481
|
+
pieces.push('"[Circular]"');
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
seen.add(value);
|
|
485
|
+
if (Array.isArray(value)) {
|
|
486
|
+
pieces.push("[");
|
|
487
|
+
for (let index = 0;index < value.length; index += 1) {
|
|
488
|
+
if (index > 0)
|
|
489
|
+
pieces.push(",");
|
|
490
|
+
if (index in value)
|
|
491
|
+
writeStable(value[index], seen, pieces);
|
|
492
|
+
}
|
|
493
|
+
pieces.push("]");
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
const entries = Object.entries(value).sort(([a], [b]) => {
|
|
497
|
+
if (a < b)
|
|
498
|
+
return -1;
|
|
499
|
+
if (a > b)
|
|
500
|
+
return 1;
|
|
501
|
+
return 0;
|
|
502
|
+
});
|
|
503
|
+
pieces.push("{");
|
|
504
|
+
entries.forEach(([key, child], index) => {
|
|
505
|
+
if (index > 0)
|
|
506
|
+
pieces.push(",");
|
|
507
|
+
pieces.push(JSON.stringify(key), ":");
|
|
508
|
+
writeStable(child, seen, pieces);
|
|
509
|
+
});
|
|
510
|
+
pieces.push("}");
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, TAG_TOMBSTONE_OWNER_PREFIX, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import {
|
|
2
|
+
estimateTokens
|
|
3
|
+
} from "./server-kzns2hbz.js";
|
|
4
|
+
import {
|
|
5
|
+
stableStringify
|
|
6
|
+
} from "./server-6byqfbqf.js";
|
|
7
|
+
|
|
8
|
+
// src/features/magic-context/tool-definition-tokens.ts
|
|
9
|
+
import { createHash } from "node:crypto";
|
|
10
|
+
var measurements = new Map;
|
|
11
|
+
var fingerprints = new Map;
|
|
12
|
+
var persistenceDb = null;
|
|
13
|
+
var cachedInsertStmt = null;
|
|
14
|
+
function keyFor(providerID, modelID, agentName) {
|
|
15
|
+
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
16
|
+
return `${providerID}/${modelID}/${agent}`;
|
|
17
|
+
}
|
|
18
|
+
function fingerprintFor(description, parameters) {
|
|
19
|
+
return createHash("sha256").update(description).update("\x00").update(stableStringify(parameters)).digest("hex");
|
|
20
|
+
}
|
|
21
|
+
function getCurrentToolSetHash(providerID, modelID, agentName) {
|
|
22
|
+
if (!providerID || !modelID)
|
|
23
|
+
return "";
|
|
24
|
+
const toolIds = measurements.get(keyFor(providerID, modelID, agentName));
|
|
25
|
+
if (!toolIds || toolIds.size === 0)
|
|
26
|
+
return "";
|
|
27
|
+
return createHash("sha256").update(Array.from(toolIds.keys()).sort().join("\x00")).digest("hex");
|
|
28
|
+
}
|
|
29
|
+
function getToolDefinitionMeasurementSignature(providerID, modelID, agentName) {
|
|
30
|
+
const key = keyFor(providerID, modelID, agentName);
|
|
31
|
+
const measured = measurements.get(key);
|
|
32
|
+
const observed = fingerprints.get(key);
|
|
33
|
+
if (!measured || !observed || [...measured.keys()].some((id) => !observed.has(id)))
|
|
34
|
+
return;
|
|
35
|
+
return createHash("sha256").update(JSON.stringify([...measured.keys()].sort().map((id) => [id, observed.get(id)]))).digest("hex");
|
|
36
|
+
}
|
|
37
|
+
function setDatabase(db) {
|
|
38
|
+
persistenceDb = db;
|
|
39
|
+
cachedInsertStmt = null;
|
|
40
|
+
}
|
|
41
|
+
function loadToolDefinitionMeasurements(db) {
|
|
42
|
+
let rows = [];
|
|
43
|
+
try {
|
|
44
|
+
rows = db.prepare("SELECT provider_id, model_id, agent_name, tool_id, token_count FROM tool_definition_measurements").all();
|
|
45
|
+
} catch {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const row of rows) {
|
|
49
|
+
const key = keyFor(row.provider_id, row.model_id, row.agent_name);
|
|
50
|
+
let inner = measurements.get(key);
|
|
51
|
+
if (!inner) {
|
|
52
|
+
inner = new Map;
|
|
53
|
+
measurements.set(key, inner);
|
|
54
|
+
}
|
|
55
|
+
inner.set(row.tool_id, row.token_count);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function recordToolDefinition(providerID, modelID, agentName, toolID, description, parameters) {
|
|
59
|
+
if (!providerID || !modelID || !toolID)
|
|
60
|
+
return;
|
|
61
|
+
const key = keyFor(providerID, modelID, agentName);
|
|
62
|
+
const fp = fingerprintFor(description ?? "", parameters);
|
|
63
|
+
let innerFp = fingerprints.get(key);
|
|
64
|
+
if (innerFp && innerFp.get(toolID) === fp)
|
|
65
|
+
return;
|
|
66
|
+
let paramsText = "";
|
|
67
|
+
try {
|
|
68
|
+
paramsText = parameters === undefined ? "" : JSON.stringify(parameters);
|
|
69
|
+
} catch {
|
|
70
|
+
paramsText = "";
|
|
71
|
+
}
|
|
72
|
+
const tokens = estimateTokens(description ?? "") + estimateTokens(paramsText);
|
|
73
|
+
let inner = measurements.get(key);
|
|
74
|
+
if (!inner) {
|
|
75
|
+
inner = new Map;
|
|
76
|
+
measurements.set(key, inner);
|
|
77
|
+
}
|
|
78
|
+
inner.set(toolID, tokens);
|
|
79
|
+
if (!innerFp) {
|
|
80
|
+
innerFp = new Map;
|
|
81
|
+
fingerprints.set(key, innerFp);
|
|
82
|
+
}
|
|
83
|
+
innerFp.set(toolID, fp);
|
|
84
|
+
if (persistenceDb) {
|
|
85
|
+
try {
|
|
86
|
+
const agent = agentName && agentName.length > 0 ? agentName : "default";
|
|
87
|
+
if (!cachedInsertStmt) {
|
|
88
|
+
cachedInsertStmt = persistenceDb.prepare(`INSERT OR REPLACE INTO tool_definition_measurements
|
|
89
|
+
(provider_id, model_id, agent_name, tool_id, token_count, recorded_at)
|
|
90
|
+
VALUES (?, ?, ?, ?, ?, ?)`);
|
|
91
|
+
}
|
|
92
|
+
cachedInsertStmt.run(providerID, modelID, agent, toolID, tokens, Date.now());
|
|
93
|
+
} catch {
|
|
94
|
+
cachedInsertStmt = null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function getLargestMeasuredToolDefinitionTokens() {
|
|
99
|
+
let largest = 0;
|
|
100
|
+
for (const tools of measurements.values()) {
|
|
101
|
+
let total = 0;
|
|
102
|
+
for (const tokens of tools.values())
|
|
103
|
+
total += tokens;
|
|
104
|
+
largest = Math.max(largest, total);
|
|
105
|
+
}
|
|
106
|
+
return largest > 0 ? largest : undefined;
|
|
107
|
+
}
|
|
108
|
+
function getMeasuredToolDefinitionTokens(providerID, modelID, agentName) {
|
|
109
|
+
if (!providerID || !modelID)
|
|
110
|
+
return;
|
|
111
|
+
const inner = measurements.get(keyFor(providerID, modelID, agentName));
|
|
112
|
+
if (!inner || inner.size === 0)
|
|
113
|
+
return;
|
|
114
|
+
let total = 0;
|
|
115
|
+
for (const tokens of inner.values())
|
|
116
|
+
total += tokens;
|
|
117
|
+
return total;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export { getCurrentToolSetHash, getToolDefinitionMeasurementSignature, setDatabase, loadToolDefinitionMeasurements, recordToolDefinition, getLargestMeasuredToolDefinitionTokens, getMeasuredToolDefinitionTokens };
|