@snoai/memory 0.0.0-stage → 1.0.1
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/LICENSE +176 -0
- package/README.md +33 -2
- package/config/b-profile-section-registry.json +118 -0
- package/config/llm/compiled/2026-05-19T230932Z/manifest.json +25 -0
- package/config/llm/compiled/2026-05-19T230932Z/registry-root.json +67 -0
- package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
- package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/openrouter_auto.json +5 -0
- package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/sno_ai_extract.json +5 -0
- package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
- package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/openrouter_auto.mda +24 -0
- package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/sno_ai_extract.mda +24 -0
- package/config/llm/compiled/2026-07-21T001311Z/manifest.json +43 -0
- package/config/llm/compiled/2026-07-21T001311Z/registry-root.json +97 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/openrouter_auto.json +5 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_ai_extract.json +5 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_extract_chat.json +10 -0
- package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_extract_profile.json +10 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/openrouter_auto.mda +24 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_ai_extract.mda +24 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_extract_chat.mda +27 -0
- package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_extract_profile.mda +27 -0
- package/config/llm/compiled/2026-08-29T060335Z/manifest.json +43 -0
- package/config/llm/compiled/2026-08-29T060335Z/registry-root.json +97 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/openrouter_auto.json +5 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_ai_extract.json +5 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_extract_chat.json +10 -0
- package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_extract_profile.json +10 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/openrouter_auto.mda +24 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_ai_extract.mda +24 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_extract_chat.mda +27 -0
- package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_extract_profile.mda +27 -0
- package/config/llm/compiled/2026-09-04T004828Z/manifest.json +43 -0
- package/config/llm/compiled/2026-09-04T004828Z/registry-root.json +97 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/openrouter_auto.json +5 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_ai_extract.json +5 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_extract_chat.json +10 -0
- package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_extract_profile.json +10 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/openrouter_auto.mda +24 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_ai_extract.mda +24 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_extract_chat.mda +27 -0
- package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_extract_profile.mda +27 -0
- package/config/llm/current.json +4 -0
- package/config/llm/source/mem_claw/openai_gpt_5_nano.mda +24 -0
- package/config/llm/source/mem_claw/openrouter_auto.mda +24 -0
- package/config/llm/source/mem_claw/sno_ai_extract.mda +24 -0
- package/config/llm/source/mem_claw/sno_conflict_verdict.mda +27 -0
- package/config/llm/source/mem_claw/sno_extract_chat.mda +27 -0
- package/config/llm/source/mem_claw/sno_extract_profile.mda +27 -0
- package/config/llm.trust.json +37 -0
- package/dist/_types-CUKHSRkS.d.ts +103 -0
- package/dist/access-tracker-BbEvEocb.d.ts +110 -0
- package/dist/adapter-B7Jox9-6.d.ts +69 -0
- package/dist/adapter-XaRHZWZ2.js +333 -0
- package/dist/agent-llm-port-5oXgBpzJ.d.ts +53 -0
- package/dist/all-resources-BQK2ugjB.js +6379 -0
- package/dist/all-resources-Dij6l5h0.d.ts +18 -0
- package/dist/ambient-learning-text-normalizer-CxjATmMp.js +170 -0
- package/dist/ambient-learning-text-normalizer-_fH3LeuK.d.ts +10 -0
- package/dist/atomic-extraction-reply-BJ9XV_9s.js +863 -0
- package/dist/atomic-extraction-skill-CcXmuCqL.js +56 -0
- package/dist/atomic-memory-extraction-C5rmogoY.js +3605 -0
- package/dist/atomic-memory-extraction-d9EG-4ti.d.ts +327 -0
- package/dist/b-profile-section-dictionary-provider-BHkoNqgk.js +1812 -0
- package/dist/b-profile-section-dictionary-provider-BxbksLj3.d.ts +62 -0
- package/dist/best-effort-BPZSzKk0.d.ts +9 -0
- package/dist/calendar-instruction-CzqZbAPG.js +194 -0
- package/dist/capture-policy-detector-CxbHPkMX.d.ts +53 -0
- package/dist/capture-policy-detector-DaMfy9CZ.js +357 -0
- package/dist/classifier-DnbbtwTS.d.ts +272 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.js +306 -0
- package/dist/coding-skin.d.ts +51 -0
- package/dist/coding-skin.js +55 -0
- package/dist/config-CL90qYva.js +2576 -0
- package/dist/connection-3IVXpuPE.d.ts +391 -0
- package/dist/connection-C9YD5sgm.js +297 -0
- package/dist/daily-log-generator-CH_KuWHs.js +469 -0
- package/dist/daily-log-generator-CsQPHl4A.d.ts +73 -0
- package/dist/daily-spend-estimator-DiwzBlo1.d.ts +8 -0
- package/dist/data-bootstrap-Bl3lthzE.d.ts +30 -0
- package/dist/data-bootstrap-P8sie9WA.js +172 -0
- package/dist/data-paths-C7sNdqvP.d.ts +22 -0
- package/dist/derived-suppression-cache-CI0durYx.d.ts +36 -0
- package/dist/diagnostic-encoder.d.ts +6 -0
- package/dist/diagnostic-encoder.js +29 -0
- package/dist/embedding-provider-client-Q_hJonK9.js +294 -0
- package/dist/embedding-provider-client-vynZMuit.d.ts +94 -0
- package/dist/entry-metadata-parser-BIVSMCIk.js +20 -0
- package/dist/error-D-wb-rZw.js +23 -0
- package/dist/error-signals-D8_3vYu4.d.ts +28 -0
- package/dist/error-signals-lMH2uAdV.js +134 -0
- package/dist/errors-CeVRxf9V.d.ts +49 -0
- package/dist/extraction-text-sanitizer-B_AhIecT.d.ts +32 -0
- package/dist/i18n-text-DbD6Qify.d.ts +13 -0
- package/dist/index-0aqS8pVF.d.ts +351 -0
- package/dist/index-BO4RU_mc.d.ts +650 -0
- package/dist/index-DL8AVj0Z.d.ts +571 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.js +1201 -0
- package/dist/intent-analyzer-B5XVrWwe.d.ts +28 -0
- package/dist/internal/config/index.d.ts +2 -0
- package/dist/internal/config/index.js +581 -0
- package/dist/internal/config/plugin-config-schema.d.ts +2 -0
- package/dist/internal/config/plugin-config-schema.js +2 -0
- package/dist/internal/config/product-mode.d.ts +2 -0
- package/dist/internal/config/product-mode.js +36 -0
- package/dist/internal/config/settings.d.ts +2 -0
- package/dist/internal/config/settings.js +265 -0
- package/dist/internal/config/skill-categories.d.ts +4 -0
- package/dist/internal/config/skill-categories.js +68 -0
- package/dist/internal/config/skin-defaults.d.ts +6 -0
- package/dist/internal/config/skin-defaults.js +6 -0
- package/dist/internal/contract/discovery.d.ts +10 -0
- package/dist/internal/contract/discovery.js +53 -0
- package/dist/internal/contract/profile.d.ts +2 -0
- package/dist/internal/contract/profile.js +44 -0
- package/dist/internal/contract/routes.d.ts +2 -0
- package/dist/internal/contract/routes.js +62 -0
- package/dist/internal/engine/bindings/memory-cli-shared.d.ts +47 -0
- package/dist/internal/engine/bindings/memory-cli-shared.js +84 -0
- package/dist/internal/engine/bindings/memory-forget-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-forget-tool.js +66 -0
- package/dist/internal/engine/bindings/memory-list-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-list-tool.js +57 -0
- package/dist/internal/engine/bindings/memory-recall-tool.d.ts +10 -0
- package/dist/internal/engine/bindings/memory-recall-tool.js +283 -0
- package/dist/internal/engine/bindings/memory-reflection-resolve-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-reflection-resolve-tool.js +150 -0
- package/dist/internal/engine/bindings/memory-stats-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-stats-tool.js +43 -0
- package/dist/internal/engine/bindings/memory-store-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-store-tool.js +165 -0
- package/dist/internal/engine/bindings/memory-tool-access.d.ts +16 -0
- package/dist/internal/engine/bindings/memory-tool-access.js +46 -0
- package/dist/internal/engine/bindings/memory-tool-formatting.d.ts +62 -0
- package/dist/internal/engine/bindings/memory-tool-formatting.js +106 -0
- package/dist/internal/engine/bindings/memory-tool-results.d.ts +8 -0
- package/dist/internal/engine/bindings/memory-tool-results.js +41 -0
- package/dist/internal/engine/bindings/memory-tool-schemas.d.ts +109 -0
- package/dist/internal/engine/bindings/memory-tool-schemas.js +75 -0
- package/dist/internal/engine/bindings/memory-update-tool.d.ts +5 -0
- package/dist/internal/engine/bindings/memory-update-tool.js +127 -0
- package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.d.ts +14 -0
- package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +248 -0
- package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.d.ts +12 -0
- package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +324 -0
- package/dist/internal/engine/bindings/sno-station-mem-hook-types.d.ts +56 -0
- package/dist/internal/engine/bindings/sno-station-mem-hook-types.js +1 -0
- package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.d.ts +14 -0
- package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +119 -0
- package/dist/internal/engine/bindings/sno-station-mem-message-transcript.d.ts +52 -0
- package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +145 -0
- package/dist/internal/engine/bindings/sno-station-mem-reset-hook.d.ts +10 -0
- package/dist/internal/engine/bindings/sno-station-mem-reset-hook.js +9 -0
- package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.d.ts +36 -0
- package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.js +104 -0
- package/dist/internal/engine/bindings/sno-station-mem-session-state.d.ts +10 -0
- package/dist/internal/engine/bindings/sno-station-mem-session-state.js +27 -0
- package/dist/internal/engine/eval/trace.d.ts +2 -0
- package/dist/internal/engine/eval/trace.js +151 -0
- package/dist/internal/engine/extraction/ambient-learning-text-normalizer.d.ts +2 -0
- package/dist/internal/engine/extraction/ambient-learning-text-normalizer.js +2 -0
- package/dist/internal/engine/extraction/atomic-memory-extraction.d.ts +2 -0
- package/dist/internal/engine/extraction/atomic-memory-extraction.js +2 -0
- package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.d.ts +2 -0
- package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.js +2 -0
- package/dist/internal/engine/extraction/b-profile-section-rekey.d.ts +49 -0
- package/dist/internal/engine/extraction/b-profile-section-rekey.js +730 -0
- package/dist/internal/engine/extraction/capture-policy-detector.d.ts +2 -0
- package/dist/internal/engine/extraction/capture-policy-detector.js +2 -0
- package/dist/internal/engine/extraction/embedding-provider-client.d.ts +2 -0
- package/dist/internal/engine/extraction/embedding-provider-client.js +2 -0
- package/dist/internal/engine/extraction/extraction-text-sanitizer.d.ts +2 -0
- package/dist/internal/engine/extraction/extraction-text-sanitizer.js +114 -0
- package/dist/internal/engine/extraction/memory-metadata-codec.d.ts +3 -0
- package/dist/internal/engine/extraction/memory-metadata-codec.js +2 -0
- package/dist/internal/engine/extraction/memory-temporality-classifier.d.ts +2 -0
- package/dist/internal/engine/extraction/memory-temporality-classifier.js +2 -0
- package/dist/internal/engine/i18n/all-resources.d.ts +2 -0
- package/dist/internal/engine/i18n/all-resources.js +2 -0
- package/dist/internal/engine/i18n/locales.d.ts +2 -0
- package/dist/internal/engine/i18n/locales.js +19 -0
- package/dist/internal/engine/i18n/res/_types.d.ts +2 -0
- package/dist/internal/engine/i18n/res/_types.js +11 -0
- package/dist/internal/engine/observability/adapter.d.ts +2 -0
- package/dist/internal/engine/observability/adapter.js +2 -0
- package/dist/internal/engine/observability/best-effort.d.ts +2 -0
- package/dist/internal/engine/observability/best-effort.js +41 -0
- package/dist/internal/engine/observability/early-diagnostics.js +2 -0
- package/dist/internal/engine/observability/memory-snapshot.d.ts +2 -0
- package/dist/internal/engine/observability/memory-snapshot.js +44 -0
- package/dist/internal/engine/observability/observable-embedder.d.ts +2 -0
- package/dist/internal/engine/observability/observable-embedder.js +43 -0
- package/dist/internal/engine/observability/observable-llm-client.d.ts +2 -0
- package/dist/internal/engine/observability/observable-llm-client.js +98 -0
- package/dist/internal/engine/observability/observable-memory-store.d.ts +2 -0
- package/dist/internal/engine/observability/observable-memory-store.js +701 -0
- package/dist/internal/engine/observability/observable-retriever.d.ts +2 -0
- package/dist/internal/engine/observability/observable-retriever.js +95 -0
- package/dist/internal/engine/observability/runtime-diagnostics.d.ts +13 -0
- package/dist/internal/engine/observability/runtime-diagnostics.js +96 -0
- package/dist/internal/engine/observability/session-registry.d.ts +2 -0
- package/dist/internal/engine/observability/session-registry.js +58 -0
- package/dist/internal/engine/observability/version-metadata.d.ts +7 -0
- package/dist/internal/engine/observability/version-metadata.js +59 -0
- package/dist/internal/engine/operations/daily-spend-estimator.d.ts +2 -0
- package/dist/internal/engine/operations/daily-spend-estimator.js +97 -0
- package/dist/internal/engine/operations/learning-file-maintenance.d.ts +2 -0
- package/dist/internal/engine/operations/learning-file-maintenance.js +255 -0
- package/dist/internal/engine/operations/memory-tier-promoter.d.ts +2 -0
- package/dist/internal/engine/operations/memory-tier-promoter.js +95 -0
- package/dist/internal/engine/operations/runtime-audit-log.d.ts +3 -0
- package/dist/internal/engine/operations/runtime-audit-log.js +3 -0
- package/dist/internal/engine/provider/canonical-memory-corpus.d.ts +38 -0
- package/dist/internal/engine/provider/canonical-memory-corpus.js +253 -0
- package/dist/internal/engine/provider/provider-registration.d.ts +39 -0
- package/dist/internal/engine/provider/provider-registration.js +2 -0
- package/dist/internal/engine/provider/provider-row-renderer.d.ts +7 -0
- package/dist/internal/engine/provider/provider-row-renderer.js +53 -0
- package/dist/internal/engine/provider/provider-types.d.ts +2 -0
- package/dist/internal/engine/provider/provider-types.js +1 -0
- package/dist/internal/engine/reflection/daily-log-generator.d.ts +2 -0
- package/dist/internal/engine/reflection/daily-log-generator.js +2 -0
- package/dist/internal/engine/reflection/reflection-command-hooks.d.ts +2 -0
- package/dist/internal/engine/reflection/reflection-command-hooks.js +2 -0
- package/dist/internal/engine/reflection/reflection-deps.d.ts +2 -0
- package/dist/internal/engine/reflection/reflection-deps.js +1 -0
- package/dist/internal/engine/reflection/reflection-embedded-generator.d.ts +2 -0
- package/dist/internal/engine/reflection/reflection-embedded-generator.js +2 -0
- package/dist/internal/engine/reflection/reflection-injection-hooks.d.ts +2 -0
- package/dist/internal/engine/reflection/reflection-injection-hooks.js +219 -0
- package/dist/internal/engine/reflection/reflection-lifecycle-hooks.d.ts +2 -0
- package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +63 -0
- package/dist/internal/engine/reflection/strategy-hook-runner.d.ts +4 -0
- package/dist/internal/engine/reflection/strategy-hook-runner.js +3 -0
- package/dist/internal/engine/rem/classifier.d.ts +2 -0
- package/dist/internal/engine/rem/classifier.js +180 -0
- package/dist/internal/engine/rem/index.d.ts +4 -0
- package/dist/internal/engine/rem/index.js +2551 -0
- package/dist/internal/engine/rem/types.d.ts +2 -0
- package/dist/internal/engine/rem/types.js +40 -0
- package/dist/internal/engine/retrieval/access-tracker.d.ts +2 -0
- package/dist/internal/engine/retrieval/access-tracker.js +314 -0
- package/dist/internal/engine/retrieval/intent-analyzer.d.ts +2 -0
- package/dist/internal/engine/retrieval/intent-analyzer.js +27 -0
- package/dist/internal/engine/retrieval/retrieval-gate.d.ts +2 -0
- package/dist/internal/engine/retrieval/retrieval-gate.js +47 -0
- package/dist/internal/engine/retrieval/retriever.d.ts +2 -0
- package/dist/internal/engine/retrieval/retriever.js +2 -0
- package/dist/internal/engine/security/memory-scope-policy.d.ts +2 -0
- package/dist/internal/engine/security/memory-scope-policy.js +2 -0
- package/dist/internal/engine/security/redact.d.ts +2 -0
- package/dist/internal/engine/security/redact.js +34 -0
- package/dist/internal/engine/security/scopes.d.ts +3 -0
- package/dist/internal/engine/security/scopes.js +3 -0
- package/dist/internal/engine/shared/errors.d.ts +2 -0
- package/dist/internal/engine/shared/errors.js +66 -0
- package/dist/internal/engine/shared/i18n-text.d.ts +2 -0
- package/dist/internal/engine/shared/i18n-text.js +58 -0
- package/dist/internal/engine/shared/iso-date-time.d.ts +16 -0
- package/dist/internal/engine/shared/iso-date-time.js +40 -0
- package/dist/internal/engine/shared/lru.d.ts +2 -0
- package/dist/internal/engine/shared/lru.js +30 -0
- package/dist/internal/engine/shared/memory-kind-policy.d.ts +2 -0
- package/dist/internal/engine/shared/memory-kind-policy.js +64 -0
- package/dist/internal/engine/shared/paths.d.ts +3 -0
- package/dist/internal/engine/shared/paths.js +2 -0
- package/dist/internal/engine/shared/types.d.ts +3 -0
- package/dist/internal/engine/shared/types.js +25 -0
- package/dist/internal/engine/shared/utils.d.ts +2 -0
- package/dist/internal/engine/shared/utils.js +175 -0
- package/dist/internal/engine/telemetry/memory-telemetry-api.d.ts +134 -0
- package/dist/internal/engine/telemetry/memory-telemetry-api.js +730 -0
- package/dist/internal/engine/telemetry/memory-telemetry-observability.d.ts +24 -0
- package/dist/internal/engine/telemetry/memory-telemetry-observability.js +133 -0
- package/dist/internal/engine/telemetry/memory-telemetry-outbox.d.ts +2 -0
- package/dist/internal/engine/telemetry/memory-telemetry-outbox.js +443 -0
- package/dist/internal/engine/telemetry/memory-telemetry-types.d.ts +2 -0
- package/dist/internal/engine/telemetry/memory-telemetry-types.js +21 -0
- package/dist/internal/engine/telemetry/observe-ledger.d.ts +30 -0
- package/dist/internal/engine/telemetry/observe-ledger.js +111 -0
- package/dist/internal/model/agent-llm-port.d.ts +2 -0
- package/dist/internal/model/agent-llm-port.js +1 -0
- package/dist/internal/model/llm-client.d.ts +3 -0
- package/dist/internal/model/llm-client.js +3 -0
- package/dist/internal/model/llm-failure.d.ts +26 -0
- package/dist/internal/model/llm-failure.js +63 -0
- package/dist/internal/model/llm-mode-routing.d.ts +22 -0
- package/dist/internal/model/llm-mode-routing.js +37 -0
- package/dist/internal/store/atomic-memory-cutover-sql.d.ts +13 -0
- package/dist/internal/store/atomic-memory-cutover-sql.js +237 -0
- package/dist/internal/store/connection.d.ts +2 -0
- package/dist/internal/store/connection.js +2 -0
- package/dist/internal/store/data-bootstrap.d.ts +2 -0
- package/dist/internal/store/data-bootstrap.js +2 -0
- package/dist/internal/store/data-paths.d.ts +2 -0
- package/dist/internal/store/data-paths.js +65 -0
- package/dist/internal/store/maintenance.d.ts +75 -0
- package/dist/internal/store/maintenance.js +1401 -0
- package/dist/internal/store/memory-kinds-cutover-migrator.d.ts +28 -0
- package/dist/internal/store/memory-kinds-cutover-migrator.js +415 -0
- package/dist/internal/store/migrations.d.ts +27 -0
- package/dist/internal/store/migrations.js +201 -0
- package/dist/internal/store/sqlite-runtime.d.ts +2 -0
- package/dist/internal/store/sqlite-runtime.js +109 -0
- package/dist/internal/store/store.d.ts +3 -0
- package/dist/internal/store/store.js +2 -0
- package/dist/learning-file-maintenance-9b-Ut6Kv.d.ts +30 -0
- package/dist/llm-client-BSYUAcUb.js +1374 -0
- package/dist/llm-client-DOTSGzhe.d.ts +51 -0
- package/dist/locales-JxGmkG6t.d.ts +7 -0
- package/dist/log-site-catalog.generated-BMKWj-Nx.js +2321 -0
- package/dist/log-site-catalog.json +1 -0
- package/dist/lru-DyoaTyIs.d.ts +14 -0
- package/dist/memdump.d.ts +52 -0
- package/dist/memdump.js +163 -0
- package/dist/memory-entry-projector-DHo8jH10.js +1015 -0
- package/dist/memory-kind-policy-BiuRjSJc.d.ts +23 -0
- package/dist/memory-metadata-codec-DL1sbJiN.js +577 -0
- package/dist/memory-metadata-codec-DUvsYe_X.d.ts +68 -0
- package/dist/memory-runtime-DqUS4cWi.js +19459 -0
- package/dist/memory-scope-policy-1gg5QlWZ.d.ts +67 -0
- package/dist/memory-scope-policy-DICSCURA.js +283 -0
- package/dist/memory-snapshot-CqY1BUUA.d.ts +16 -0
- package/dist/memory-source-order-YMRoeDLd.js +134 -0
- package/dist/memory-store-base-CQ_bHlYA.d.ts +1094 -0
- package/dist/memory-store-shared-DqpWJXZZ.js +158 -0
- package/dist/memory-store-write-validation-B_hDG2zf.js +243 -0
- package/dist/memory-telemetry-incidents-BWA9kcZx.js +8 -0
- package/dist/memory-telemetry-metadata-CA7W8tK6.js +77 -0
- package/dist/memory-telemetry-outbox-ddTdImt7.d.ts +74 -0
- package/dist/memory-telemetry-receipts-MAJecvXQ.d.ts +34 -0
- package/dist/memory-telemetry-receipts-YsxbwOAf.js +91 -0
- package/dist/memory-telemetry-types-CufVmrCs.d.ts +14 -0
- package/dist/memory-temporality-classifier-BUjXG5o7.js +184 -0
- package/dist/memory-temporality-classifier-Brht5jyK.d.ts +43 -0
- package/dist/memory-tier-promoter-CqGxCkue.d.ts +43 -0
- package/dist/memory-tool-dependencies-CatGzI9R.d.ts +14 -0
- package/dist/memory-tool-dependencies-DjUoelnm.js +19 -0
- package/dist/model-call-table-CspopkBg.js +563 -0
- package/dist/model-reply-text-CKopStP2.js +334 -0
- package/dist/observable-embedder-CNNe9gkg.d.ts +17 -0
- package/dist/observable-llm-client-CRuKlefQ.d.ts +21 -0
- package/dist/observable-memory-store-CnGDpOY5.d.ts +73 -0
- package/dist/observable-retriever-Cooc62Qw.d.ts +23 -0
- package/dist/operation-cancellation-CTKWwNHk.js +81 -0
- package/dist/paths-qVF-5uBq.d.ts +1 -0
- package/dist/plugin-config-schema-C0UUbOmG.d.ts +413 -0
- package/dist/plugin-config-schema-YJLyIIcJ.js +361 -0
- package/dist/profile-TWPJ_myr.d.ts +13 -0
- package/dist/profile-section-writer-BhGKPBjw.js +2149 -0
- package/dist/provider-registration-CF1tg8Xy.js +721 -0
- package/dist/provider-runtime-types-DFhtdA6d.d.ts +134 -0
- package/dist/provider-types-CZGm6v88.d.ts +23 -0
- package/dist/redact-BTIZcHQL.d.ts +5 -0
- package/dist/reflection-command-hooks-ClUl-iv6.js +644 -0
- package/dist/reflection-command-hooks-G1-dI2Av.d.ts +32 -0
- package/dist/reflection-deps-Ccm2Jf5W.d.ts +19 -0
- package/dist/reflection-embedded-generator-BRvqV5N-.js +130 -0
- package/dist/reflection-embedded-generator-kfQfKEYV.d.ts +14 -0
- package/dist/reflection-injection-hooks-CS_uhjoD.d.ts +43 -0
- package/dist/reflection-lifecycle-hooks-CRSpUdLi.d.ts +27 -0
- package/dist/relation-dictionary-Cev1kyLe.js +4248 -0
- package/dist/release-download.d.ts +8 -0
- package/dist/release-download.js +32 -0
- package/dist/relevant-memories-context-m8nuFZcM.js +23 -0
- package/dist/rem-batch-executor-Dg2HgROM.js +2 -0
- package/dist/rem-batch-executor-DuC4nYyf.js +31640 -0
- package/dist/rem-consumer-retrieval-CR0dtcHR.js +246 -0
- package/dist/rem-trigger-Hn6od8IV.js +730 -0
- package/dist/resolver-Dy-hnjCR.js +103 -0
- package/dist/results-C3ZLroMb.js +140 -0
- package/dist/retrieval-gate-Bx2Zg7jD.d.ts +31 -0
- package/dist/retriever-Dxss5fRv.d.ts +469 -0
- package/dist/retriever-ZoLvPRHq.js +1757 -0
- package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/routes-DLHT__Ay.js +60 -0
- package/dist/runtime-audit-log-BCeujlEp.js +430 -0
- package/dist/runtime-audit-log-zpQiR9HT.d.ts +149 -0
- package/dist/scopes-CSOn6zdd.js +71 -0
- package/dist/scopes-CtrY-YQ3.d.ts +23 -0
- package/dist/server-CSvxchqg.js +1412 -0
- package/dist/session-registry-DBoE7AvZ.d.ts +14 -0
- package/dist/sidecar/main.d.ts +1 -0
- package/dist/sidecar/main.js +56 -0
- package/dist/signed-registry-constants-Bv0fgZ8Q.d.ts +12 -0
- package/dist/signed-registry-constants-yq3DlG3B.js +82 -0
- package/dist/sno-station-mem-runtime-dependencies-CoWqUMbK.js +30 -0
- package/dist/sno-station-mem-runtime-dependencies-DHESIuPn.d.ts +31 -0
- package/dist/sqlite-runtime-L_ywirTm.d.ts +58 -0
- package/dist/store-C8sUTssE.d.ts +27 -0
- package/dist/store-nPql26YM.js +5830 -0
- package/dist/strategy-hook-runner-Bxy851Xx.d.ts +16 -0
- package/dist/strategy-hook-runner-Djify5Rw.js +110 -0
- package/dist/token-counter-BD1f48Km.js +73 -0
- package/dist/trace-C1JxMfs-.d.ts +86 -0
- package/dist/types-CWdhXLxr.d.ts +477 -0
- package/dist/types-pVomjzqR.d.ts +132 -0
- package/dist/unplaced-candidate-migration-CbQHzcEM.js +940 -0
- package/dist/utils-Ctb9aevJ.d.ts +34 -0
- package/drizzle/0000_initial.sql +10 -0
- package/drizzle/0001_virtual_tables.sql +34 -0
- package/drizzle/0002_add_indexes.sql +11 -0
- package/drizzle/0003_content_hash_lookup_index.sql +2 -0
- package/drizzle/0004_chunk_swap.sql +60 -0
- package/drizzle/0005_drop_legacy_vec_fts.sql +10 -0
- package/drizzle/0006_fts_simple.sql +45 -0
- package/drizzle/0007_restore_simple_fts.sql +40 -0
- package/drizzle/0008_widen_memory_hash_unique_index.sql +4 -0
- package/drizzle/0009_memory_telemetry.sql +109 -0
- package/drizzle/0010_provider_mappings.sql +27 -0
- package/drizzle/0011_db_optimization.sql +82 -0
- package/drizzle/0012_b_profile_lanes.sql +9 -0
- package/drizzle/0013_extraction_timestamps.sql +6 -0
- package/drizzle/0014_extraction_timestamp_source.sql +3 -0
- package/drizzle/0015_task_lifecycle_state.sql +101 -0
- package/drizzle/0016_task_lifecycle_legacy_migration.sql +144 -0
- package/drizzle/0017_unplaced_candidates.sql +15 -0
- package/drizzle/0018_rem_batch_chassis.sql +71 -0
- package/drizzle/0019_profile_recovery_entries.sql +17 -0
- package/drizzle/0020_rem_scan_retry_progress.down.sql +14 -0
- package/drizzle/0020_rem_scan_retry_progress.sql +24 -0
- package/drizzle/0021_rem_two_facet_storage.down.sql +14 -0
- package/drizzle/0021_rem_two_facet_storage.sql +42 -0
- package/drizzle/0022_rem_facet_chunk_versions.down.sql +4 -0
- package/drizzle/0022_rem_facet_chunk_versions.sql +4 -0
- package/drizzle/0023_rem_defect_ledger.sql +40 -0
- package/drizzle/0024_rem_unbuilt_foundations.down.sql +13 -0
- package/drizzle/0024_rem_unbuilt_foundations.sql +65 -0
- package/drizzle/0025_rem_journal_operation_constraint.sql +28 -0
- package/drizzle/0026_rem_journal_detail.sql +1 -0
- package/drizzle/0027_legacy_nodix_namespace.sql +3 -0
- package/drizzle/0028_memory_timezone.sql +23 -0
- package/drizzle/0029_rem_write_hash_symmetry.sql +17 -0
- package/drizzle/0030_atomic_memory_additive.sql +105 -0
- package/drizzle/0031_atomic_extraction_ledger.sql +23 -0
- package/drizzle/0032_atomic_memory_entities.sql +12 -0
- package/drizzle/0033_todo_own_store.sql +99 -0
- package/drizzle/meta/0000_snapshot.json +87 -0
- package/drizzle/meta/_journal.json +244 -0
- package/generated/rem-operations.json +1 -0
- package/package.json +126 -4
- package/scripts/download-simple-tokenizer.mjs +254 -0
- package/settings.default.json +243 -0
- package/skills/extract-atomic-memory/SKILL.md +298 -0
- package/skills/extract-atomic-memory/references/account-for-turns.md +9 -0
- package/skills/extract-atomic-memory/references/calendar-meaning.md +64 -0
- package/skills/extract-atomic-memory/references/capture.md +120 -0
- package/skills/extract-atomic-memory/references/enrichment.md +92 -0
- package/skills/extract-atomic-memory/references/missing-durable-half.md +6 -0
- package/skills/extract-atomic-memory/references/progress-classification.md +21 -0
- package/skills/extract-atomic-memory/references/resolve-subject.md +19 -0
- package/skills/extract-atomic-memory/references/surrounding-context.md +10 -0
- package/skills/extract-atomic-memory/references/user-subject-guard.md +29 -0
- package/skills/judge-group-closure/SKILL.md +25 -0
- package/skills/judge-rem-memory-updates/SKILL.md +56 -0
- package/skills/judge-rem-memory-updates/agents/openai.yaml +4 -0
- package/skills/judge-retired-position/SKILL.md +25 -0
- package/skills/judge-task-lifecycle/SKILL.md +45 -0
- package/skills/key-state-attribute/SKILL.md +16 -0
- package/skills/resolve-entity-identity/SKILL.md +24 -0
- package/skills/resolve-relative-time/SKILL.md +22 -0
- package/sqlite-extensions/LICENSE-simple-tokenizer +28 -0
- package/sqlite-extensions/LICENSE-sqlite-vec +21 -0
- package/sqlite-extensions/linux-arm64/vec0.so +0 -0
- package/sqlite-extensions/linux-x64/vec0.so +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/engine/shared/utils.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Clamps integer options into the configured range before they reach storage or ranking code.
|
|
4
|
+
*/
|
|
5
|
+
declare function clampInt(value: number, min: number, max: number): number;
|
|
6
|
+
/** Clamps score-like values to the 0..1 range while honoring a caller-provided fallback. */
|
|
7
|
+
declare function clamp01(value: number, fallback?: number): number;
|
|
8
|
+
/** Redacts markup-sensitive characters before memory text is embedded in prompt context. */
|
|
9
|
+
declare function sanitizeForContext(text: string, maxChars?: number, newlineReplacement?: string): string;
|
|
10
|
+
/** Escapes SQLite FTS operators so user queries cannot break MATCH syntax. */
|
|
11
|
+
declare function sanitizeFtsQuery(rawQuery: string): string;
|
|
12
|
+
/** Builds a conjunctive FTS predicate from validated structured aggregation terms. */
|
|
13
|
+
declare function sanitizeFtsConjunctiveQuery(terms: readonly string[]): string;
|
|
14
|
+
/** Serializes Float32 vectors into little-endian bytes for SQLite vector storage. */
|
|
15
|
+
declare function f32ToBytes(f32: Float32Array): Uint8Array;
|
|
16
|
+
/** Rehydrates SQLite vector bytes into Float32 values and rejects malformed payloads. */
|
|
17
|
+
declare function bytesToF32(bytes: Uint8Array): Float32Array;
|
|
18
|
+
/** Produces the stable content hash used for deduplication and idempotent writes. */
|
|
19
|
+
declare function stableHash(text: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Return a short, secret-redacted, whitespace-collapsed preview of `text` for
|
|
22
|
+
* debug audit logs when explicitly enabled. Off-by-default
|
|
23
|
+
* and passes the text through `redactSecrets` first because previews persist
|
|
24
|
+
* in audit.jsonl on disk. Enable for bench investigations only.
|
|
25
|
+
*/
|
|
26
|
+
declare function debugContentPreview(text: string | undefined, enabled: boolean, maxChars?: number): string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Read the tail of a text file (up to `maxBytes`).
|
|
29
|
+
* Returns the file content from the tail. If the file is smaller than `maxBytes`,
|
|
30
|
+
* returns the entire file. The first partial line is dropped (it was likely truncated).
|
|
31
|
+
*/
|
|
32
|
+
declare function readFileTail(filePath: string, maxBytes?: number): Promise<string>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { f32ToBytes as a, sanitizeFtsConjunctiveQuery as c, debugContentPreview as i, sanitizeFtsQuery as l, clamp01 as n, readFileTail as o, clampInt as r, sanitizeForContext as s, bytesToF32 as t, stableHash as u };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS nodix_memories (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
text TEXT NOT NULL,
|
|
4
|
+
category TEXT NOT NULL,
|
|
5
|
+
project_id TEXT NOT NULL,
|
|
6
|
+
importance REAL NOT NULL DEFAULT 0.7,
|
|
7
|
+
timestamp INTEGER NOT NULL,
|
|
8
|
+
metadata TEXT DEFAULT '{}',
|
|
9
|
+
content_hash TEXT NOT NULL
|
|
10
|
+
);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodix_memories_fts
|
|
2
|
+
USING fts5(
|
|
3
|
+
text,
|
|
4
|
+
content='nodix_memories',
|
|
5
|
+
content_rowid='rowid',
|
|
6
|
+
tokenize='porter unicode61'
|
|
7
|
+
);
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memories_ai
|
|
10
|
+
AFTER INSERT ON nodix_memories BEGIN
|
|
11
|
+
INSERT INTO nodix_memories_fts(rowid, text)
|
|
12
|
+
VALUES (new.rowid, new.text);
|
|
13
|
+
END;
|
|
14
|
+
--> statement-breakpoint
|
|
15
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memories_ad
|
|
16
|
+
AFTER DELETE ON nodix_memories BEGIN
|
|
17
|
+
INSERT INTO nodix_memories_fts(nodix_memories_fts, rowid, text)
|
|
18
|
+
VALUES ('delete', old.rowid, old.text);
|
|
19
|
+
END;
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memories_au
|
|
22
|
+
AFTER UPDATE ON nodix_memories BEGIN
|
|
23
|
+
INSERT INTO nodix_memories_fts(nodix_memories_fts, rowid, text)
|
|
24
|
+
VALUES ('delete', old.rowid, old.text);
|
|
25
|
+
INSERT INTO nodix_memories_fts(rowid, text)
|
|
26
|
+
VALUES (new.rowid, new.text);
|
|
27
|
+
END;
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodix_memory_vectors
|
|
30
|
+
USING vec0(
|
|
31
|
+
id TEXT PRIMARY KEY,
|
|
32
|
+
-- Keep this aligned with VECTOR_DIMENSION_DEFAULT (1024).
|
|
33
|
+
embedding float[1024]
|
|
34
|
+
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
CREATE UNIQUE INDEX IF NOT EXISTS nodix_idx_memories_project_content_hash
|
|
2
|
+
ON nodix_memories (project_id, content_hash);
|
|
3
|
+
--> statement-breakpoint
|
|
4
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_project
|
|
5
|
+
ON nodix_memories (project_id);
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_category
|
|
8
|
+
ON nodix_memories (category);
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_project_timestamp
|
|
11
|
+
ON nodix_memories (project_id, timestamp DESC);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
-- Hand-rolled migration; do NOT run `npm run db:generate` against this file.
|
|
2
|
+
CREATE TABLE IF NOT EXISTS nodix_memory_chunks (
|
|
3
|
+
chunk_id TEXT PRIMARY KEY,
|
|
4
|
+
memory_id TEXT NOT NULL,
|
|
5
|
+
chunk_index INTEGER NOT NULL,
|
|
6
|
+
chunk_text TEXT NOT NULL,
|
|
7
|
+
dense_payload TEXT NOT NULL,
|
|
8
|
+
summary TEXT,
|
|
9
|
+
entities TEXT,
|
|
10
|
+
tags TEXT,
|
|
11
|
+
source TEXT,
|
|
12
|
+
start_offset INTEGER NOT NULL,
|
|
13
|
+
end_offset INTEGER NOT NULL,
|
|
14
|
+
token_count INTEGER NOT NULL,
|
|
15
|
+
content_type TEXT NOT NULL CHECK (content_type IN ('conversation', 'prose', 'code')),
|
|
16
|
+
chunking_version TEXT NOT NULL,
|
|
17
|
+
embedder_provider TEXT NOT NULL,
|
|
18
|
+
embedder_model TEXT NOT NULL,
|
|
19
|
+
embedder_dim INTEGER NOT NULL,
|
|
20
|
+
created_at INTEGER NOT NULL,
|
|
21
|
+
updated_at INTEGER NOT NULL,
|
|
22
|
+
FOREIGN KEY (memory_id) REFERENCES nodix_memories(id) ON DELETE CASCADE
|
|
23
|
+
);
|
|
24
|
+
--> statement-breakpoint
|
|
25
|
+
CREATE UNIQUE INDEX IF NOT EXISTS nodix_idx_memory_chunks_memory ON nodix_memory_chunks(memory_id, chunk_index);
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_chunks_memory_id ON nodix_memory_chunks(memory_id);
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodix_memory_chunk_vectors USING vec0(
|
|
30
|
+
id TEXT PRIMARY KEY,
|
|
31
|
+
-- Placeholder dim; runtime ensureChunkVecTable recreates at the configured dim.
|
|
32
|
+
embedding float[1024]
|
|
33
|
+
);
|
|
34
|
+
--> statement-breakpoint
|
|
35
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodix_memory_chunks_fts USING fts5(
|
|
36
|
+
dense_payload,
|
|
37
|
+
content='nodix_memory_chunks',
|
|
38
|
+
content_rowid='rowid',
|
|
39
|
+
tokenize='porter unicode61'
|
|
40
|
+
);
|
|
41
|
+
--> statement-breakpoint
|
|
42
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ai
|
|
43
|
+
AFTER INSERT ON nodix_memory_chunks BEGIN
|
|
44
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
45
|
+
VALUES (new.rowid, new.dense_payload);
|
|
46
|
+
END;
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ad
|
|
49
|
+
AFTER DELETE ON nodix_memory_chunks BEGIN
|
|
50
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
51
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
52
|
+
END;
|
|
53
|
+
--> statement-breakpoint
|
|
54
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_au
|
|
55
|
+
AFTER UPDATE ON nodix_memory_chunks BEGIN
|
|
56
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
57
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
58
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
59
|
+
VALUES (new.rowid, new.dense_payload);
|
|
60
|
+
END;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- Drop parent-level FTS/vector objects superseded by 0004_chunk_swap.
|
|
2
|
+
DROP TRIGGER IF EXISTS nodix_memories_ai;
|
|
3
|
+
--> statement-breakpoint
|
|
4
|
+
DROP TRIGGER IF EXISTS nodix_memories_ad;
|
|
5
|
+
--> statement-breakpoint
|
|
6
|
+
DROP TRIGGER IF EXISTS nodix_memories_au;
|
|
7
|
+
--> statement-breakpoint
|
|
8
|
+
DROP TABLE IF EXISTS nodix_memories_fts;
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
DROP TABLE IF EXISTS nodix_memory_vectors;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
-- Hand-rolled migration; do NOT run `npm run db:generate` against this file.
|
|
2
|
+
-- Swap nodix_memory_chunks_fts tokenizer from `porter unicode61` (char-level on CJK)
|
|
3
|
+
-- to `simple 0` (jieba word-level via wangfenjin/simple extension).
|
|
4
|
+
-- Schema, triggers, and downstream MATCH queries stay identical — only the
|
|
5
|
+
-- tokenize= clause changes.
|
|
6
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_ai;
|
|
7
|
+
--> statement-breakpoint
|
|
8
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_ad;
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_au;
|
|
11
|
+
--> statement-breakpoint
|
|
12
|
+
DROP TABLE IF EXISTS nodix_memory_chunks_fts;
|
|
13
|
+
--> statement-breakpoint
|
|
14
|
+
CREATE VIRTUAL TABLE nodix_memory_chunks_fts USING fts5(
|
|
15
|
+
dense_payload,
|
|
16
|
+
content='nodix_memory_chunks',
|
|
17
|
+
content_rowid='rowid',
|
|
18
|
+
tokenize='simple 0'
|
|
19
|
+
);
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ai
|
|
22
|
+
AFTER INSERT ON nodix_memory_chunks BEGIN
|
|
23
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
24
|
+
VALUES (new.rowid, new.dense_payload);
|
|
25
|
+
END;
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ad
|
|
28
|
+
AFTER DELETE ON nodix_memory_chunks BEGIN
|
|
29
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
30
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
31
|
+
END;
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_au
|
|
34
|
+
AFTER UPDATE ON nodix_memory_chunks BEGIN
|
|
35
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
36
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
37
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
38
|
+
VALUES (new.rowid, new.dense_payload);
|
|
39
|
+
END;
|
|
40
|
+
--> statement-breakpoint
|
|
41
|
+
-- Rebuild is synchronous; run this migration during a maintenance window for
|
|
42
|
+
-- large existing databases rather than during latency-sensitive startup.
|
|
43
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts)
|
|
44
|
+
SELECT 'rebuild'
|
|
45
|
+
WHERE EXISTS (SELECT 1 FROM nodix_memory_chunks LIMIT 1);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
-- Restore nodix_memory_chunks_fts to the wangfenjin/simple tokenizer after the
|
|
2
|
+
-- temporary 0006 rollback to porter unicode61.
|
|
3
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_ai;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_ad;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
DROP TRIGGER IF EXISTS nodix_memory_chunks_au;
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
DROP TABLE IF EXISTS nodix_memory_chunks_fts;
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE VIRTUAL TABLE nodix_memory_chunks_fts USING fts5(
|
|
12
|
+
dense_payload,
|
|
13
|
+
content='nodix_memory_chunks',
|
|
14
|
+
content_rowid='rowid',
|
|
15
|
+
tokenize='simple 0'
|
|
16
|
+
);
|
|
17
|
+
--> statement-breakpoint
|
|
18
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ai
|
|
19
|
+
AFTER INSERT ON nodix_memory_chunks BEGIN
|
|
20
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
21
|
+
VALUES (new.rowid, new.dense_payload);
|
|
22
|
+
END;
|
|
23
|
+
--> statement-breakpoint
|
|
24
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_ad
|
|
25
|
+
AFTER DELETE ON nodix_memory_chunks BEGIN
|
|
26
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
27
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
28
|
+
END;
|
|
29
|
+
--> statement-breakpoint
|
|
30
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memory_chunks_au
|
|
31
|
+
AFTER UPDATE ON nodix_memory_chunks BEGIN
|
|
32
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts, rowid, dense_payload)
|
|
33
|
+
VALUES ('delete', old.rowid, old.dense_payload);
|
|
34
|
+
INSERT INTO nodix_memory_chunks_fts(rowid, dense_payload)
|
|
35
|
+
VALUES (new.rowid, new.dense_payload);
|
|
36
|
+
END;
|
|
37
|
+
--> statement-breakpoint
|
|
38
|
+
INSERT INTO nodix_memory_chunks_fts(nodix_memory_chunks_fts)
|
|
39
|
+
SELECT 'rebuild'
|
|
40
|
+
WHERE EXISTS (SELECT 1 FROM nodix_memory_chunks LIMIT 1);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
ALTER TABLE nodix_memories ADD COLUMN fact_id TEXT;
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
UPDATE nodix_memories SET fact_id = id WHERE fact_id IS NULL;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
ALTER TABLE nodix_memories ADD COLUMN derived_from TEXT;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
ALTER TABLE nodix_memories ADD COLUMN consolidation_epoch_id TEXT;
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
ALTER TABLE nodix_memories ADD COLUMN confidence_source TEXT;
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memories_fact_id_insert_guard
|
|
12
|
+
BEFORE INSERT ON nodix_memories
|
|
13
|
+
WHEN NEW.fact_id IS NULL
|
|
14
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memories.fact_id is required'); END;
|
|
15
|
+
--> statement-breakpoint
|
|
16
|
+
CREATE TRIGGER IF NOT EXISTS nodix_memories_fact_id_update_guard
|
|
17
|
+
BEFORE UPDATE ON nodix_memories
|
|
18
|
+
WHEN NEW.fact_id IS NULL
|
|
19
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memories.fact_id is required'); END;
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TABLE IF NOT EXISTS nodix_memory_events (
|
|
22
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
23
|
+
event_type TEXT NOT NULL,
|
|
24
|
+
fact_id TEXT,
|
|
25
|
+
memory_kind TEXT,
|
|
26
|
+
timestamp_ms INTEGER NOT NULL,
|
|
27
|
+
session_uuid TEXT,
|
|
28
|
+
turn_id TEXT,
|
|
29
|
+
agent_id TEXT NOT NULL,
|
|
30
|
+
project_id TEXT,
|
|
31
|
+
tenant_id TEXT,
|
|
32
|
+
|
|
33
|
+
source_event_id INTEGER,
|
|
34
|
+
derived_from TEXT,
|
|
35
|
+
|
|
36
|
+
consolidation_epoch_id TEXT,
|
|
37
|
+
|
|
38
|
+
content_hash TEXT,
|
|
39
|
+
receipt_hmac TEXT,
|
|
40
|
+
key_version INTEGER,
|
|
41
|
+
|
|
42
|
+
retrieval_rank INTEGER,
|
|
43
|
+
retrieval_score REAL,
|
|
44
|
+
|
|
45
|
+
query_tenant_id TEXT,
|
|
46
|
+
result_tenant_id TEXT,
|
|
47
|
+
|
|
48
|
+
metadata_json TEXT,
|
|
49
|
+
|
|
50
|
+
CHECK (event_type IN (
|
|
51
|
+
'create',
|
|
52
|
+
'update',
|
|
53
|
+
'recall',
|
|
54
|
+
'supersede',
|
|
55
|
+
'delete',
|
|
56
|
+
'inject',
|
|
57
|
+
'epoch_boundary',
|
|
58
|
+
'purge'
|
|
59
|
+
)),
|
|
60
|
+
CHECK (event_type = 'epoch_boundary' OR fact_id IS NOT NULL)
|
|
61
|
+
);
|
|
62
|
+
--> statement-breakpoint
|
|
63
|
+
CREATE INDEX nodix_idx_memory_events_fact ON nodix_memory_events(fact_id);
|
|
64
|
+
--> statement-breakpoint
|
|
65
|
+
CREATE INDEX nodix_idx_memory_events_type ON nodix_memory_events(event_type);
|
|
66
|
+
--> statement-breakpoint
|
|
67
|
+
CREATE INDEX nodix_idx_memory_events_epoch ON nodix_memory_events(consolidation_epoch_id);
|
|
68
|
+
--> statement-breakpoint
|
|
69
|
+
CREATE INDEX nodix_idx_memory_events_session ON nodix_memory_events(session_uuid);
|
|
70
|
+
--> statement-breakpoint
|
|
71
|
+
CREATE INDEX nodix_idx_memory_events_tenant ON nodix_memory_events(tenant_id, timestamp_ms);
|
|
72
|
+
--> statement-breakpoint
|
|
73
|
+
CREATE INDEX nodix_idx_memory_events_kind ON nodix_memory_events(memory_kind, timestamp_ms);
|
|
74
|
+
--> statement-breakpoint
|
|
75
|
+
CREATE INDEX nodix_idx_memory_events_project ON nodix_memory_events(project_id, event_type, timestamp_ms);
|
|
76
|
+
--> statement-breakpoint
|
|
77
|
+
CREATE INDEX nodix_idx_memory_events_turn ON nodix_memory_events(turn_id);
|
|
78
|
+
--> statement-breakpoint
|
|
79
|
+
CREATE TRIGGER memory_events_no_update BEFORE UPDATE ON nodix_memory_events
|
|
80
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memory_events is append-only'); END;
|
|
81
|
+
--> statement-breakpoint
|
|
82
|
+
CREATE TRIGGER memory_events_no_delete BEFORE DELETE ON nodix_memory_events
|
|
83
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memory_events is append-only'); END;
|
|
84
|
+
--> statement-breakpoint
|
|
85
|
+
CREATE TABLE IF NOT EXISTS nodix_memory_usage_outbox (
|
|
86
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
87
|
+
event_type TEXT NOT NULL CHECK (event_type IN ('recall', 'inject')),
|
|
88
|
+
payload_json TEXT NOT NULL,
|
|
89
|
+
accepted_at_ms INTEGER NOT NULL,
|
|
90
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'failed', 'flushing', 'quarantined')),
|
|
91
|
+
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
92
|
+
last_error TEXT,
|
|
93
|
+
next_attempt_ms INTEGER
|
|
94
|
+
);
|
|
95
|
+
--> statement-breakpoint
|
|
96
|
+
CREATE TABLE IF NOT EXISTS nodix_memory_telemetry_incidents (
|
|
97
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
98
|
+
incident_type TEXT NOT NULL,
|
|
99
|
+
severity TEXT NOT NULL CHECK (severity IN ('warning', 'error')),
|
|
100
|
+
message TEXT NOT NULL,
|
|
101
|
+
payload_json TEXT,
|
|
102
|
+
created_at_ms INTEGER NOT NULL
|
|
103
|
+
);
|
|
104
|
+
--> statement-breakpoint
|
|
105
|
+
CREATE TABLE IF NOT EXISTS nodix_memory_telemetry_sync_state (
|
|
106
|
+
sink TEXT PRIMARY KEY,
|
|
107
|
+
last_event_id INTEGER NOT NULL DEFAULT 0,
|
|
108
|
+
updated_at_ms INTEGER NOT NULL
|
|
109
|
+
);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS nodix_provider_project_mappings (
|
|
2
|
+
user_id TEXT NOT NULL,
|
|
3
|
+
external_system TEXT NOT NULL,
|
|
4
|
+
external_project_key TEXT NOT NULL,
|
|
5
|
+
project_id TEXT NOT NULL,
|
|
6
|
+
created_at_ms INTEGER NOT NULL,
|
|
7
|
+
PRIMARY KEY (user_id, external_system, external_project_key),
|
|
8
|
+
UNIQUE (project_id)
|
|
9
|
+
);
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE TABLE IF NOT EXISTS nodix_provider_agent_mappings (
|
|
12
|
+
user_id TEXT NOT NULL,
|
|
13
|
+
external_system TEXT NOT NULL,
|
|
14
|
+
external_agent_key TEXT NOT NULL,
|
|
15
|
+
agent_id TEXT NOT NULL,
|
|
16
|
+
created_at_ms INTEGER NOT NULL,
|
|
17
|
+
PRIMARY KEY (user_id, external_system, external_agent_key),
|
|
18
|
+
UNIQUE (agent_id)
|
|
19
|
+
);
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TABLE IF NOT EXISTS nodix_provider_project_agents (
|
|
22
|
+
user_id TEXT NOT NULL,
|
|
23
|
+
project_id TEXT NOT NULL,
|
|
24
|
+
agent_id TEXT NOT NULL,
|
|
25
|
+
created_at_ms INTEGER NOT NULL,
|
|
26
|
+
PRIMARY KEY (user_id, project_id, agent_id)
|
|
27
|
+
);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
-- Hand-rolled migration; do NOT run `npm run db:generate` against this file.
|
|
2
|
+
-- DB-optimization pass (2026-07): missing indexes for real query shapes, removal of
|
|
3
|
+
-- redundant/unused indexes to cut write amplification, and retention enablement for
|
|
4
|
+
-- usage events. Complete DDL for the pass lives in this single migration.
|
|
5
|
+
|
|
6
|
+
-- fact_id lookups (purge cascade deleteFacts/readAffectedEpochIds/readPurgeEventAnchor,
|
|
7
|
+
-- telemetry readCurrentContentHash) currently full-scan the memories table.
|
|
8
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_fact_id ON nodix_memories(fact_id);
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
-- Outbox flush-candidate reads and pending scans filter on status (+ next_attempt_ms);
|
|
11
|
+
-- the table previously had no non-PK index at all.
|
|
12
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_usage_outbox_status_next
|
|
13
|
+
ON nodix_memory_usage_outbox(status, next_attempt_ms);
|
|
14
|
+
--> statement-breakpoint
|
|
15
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_telemetry_incidents_created
|
|
16
|
+
ON nodix_memory_telemetry_incidents(created_at_ms);
|
|
17
|
+
--> statement-breakpoint
|
|
18
|
+
-- listReflectionItems full-scans + JSON-parses every row today. The partial predicate
|
|
19
|
+
-- restricts index content to reflection rows only, so even a project-filtered query is
|
|
20
|
+
-- bounded by the total number of reflection rows; timestamp keying serves the
|
|
21
|
+
-- unfiltered ORDER BY timestamp DESC LIMIT shape in index order.
|
|
22
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_reflection_items
|
|
23
|
+
ON nodix_memories(timestamp DESC)
|
|
24
|
+
WHERE json_valid(metadata) AND json_extract(metadata, '$.type') = 'memory-reflection-item';
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
-- findByExtractionIdempotencyKey and the createEventAndSupersede duplicate probe
|
|
27
|
+
-- full-scan on json_extract today. Non-unique on purpose: uniqueness stays enforced by
|
|
28
|
+
-- the existing code guard, so pre-existing duplicate rows cannot break this migration.
|
|
29
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memories_idempotency_key
|
|
30
|
+
ON nodix_memories(project_id, json_extract(metadata, '$.idempotency_key'))
|
|
31
|
+
WHERE json_valid(metadata) AND json_extract(metadata, '$.idempotency_key') IS NOT NULL;
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
-- Redundant left-prefix indexes: (project_id) is a prefix of
|
|
34
|
+
-- nodix_idx_memories_project_timestamp and of the UNIQUE
|
|
35
|
+
-- (project_id, content_hash, category); chunks(memory_id) is a prefix of the UNIQUE
|
|
36
|
+
-- (memory_id, chunk_index). Every write pays for them; no query needs them.
|
|
37
|
+
DROP INDEX IF EXISTS nodix_idx_memories_project;
|
|
38
|
+
--> statement-breakpoint
|
|
39
|
+
DROP INDEX IF EXISTS nodix_idx_memory_chunks_memory_id;
|
|
40
|
+
--> statement-breakpoint
|
|
41
|
+
-- nodix_memory_events index trim. Every memory write inserts an event inside the same
|
|
42
|
+
-- transaction, so each secondary index is per-write amplification. Verified by
|
|
43
|
+
-- repo-wide query sweep (2026-07-12): tenant_id and memory_kind are never queried;
|
|
44
|
+
-- session_uuid is only ever queried together with turn_id; bare event_type predicates
|
|
45
|
+
-- always pair with an indexed fact_id.
|
|
46
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_type;
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
-- The hourly usage-event retention query filters
|
|
49
|
+
-- event_type IN ('recall','inject') AND timestamp_ms < cutoff — a partial index shaped
|
|
50
|
+
-- exactly for that scan, near-free for lifecycle inserts (outside the predicate).
|
|
51
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_events_usage_retention
|
|
52
|
+
ON nodix_memory_events(timestamp_ms)
|
|
53
|
+
WHERE event_type IN ('recall', 'inject');
|
|
54
|
+
--> statement-breakpoint
|
|
55
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_tenant;
|
|
56
|
+
--> statement-breakpoint
|
|
57
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_kind;
|
|
58
|
+
--> statement-breakpoint
|
|
59
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_session;
|
|
60
|
+
--> statement-breakpoint
|
|
61
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_epoch;
|
|
62
|
+
--> statement-breakpoint
|
|
63
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_events_epoch ON nodix_memory_events(consolidation_epoch_id)
|
|
64
|
+
WHERE consolidation_epoch_id IS NOT NULL;
|
|
65
|
+
--> statement-breakpoint
|
|
66
|
+
DROP INDEX IF EXISTS nodix_idx_memory_events_turn;
|
|
67
|
+
--> statement-breakpoint
|
|
68
|
+
CREATE INDEX IF NOT EXISTS nodix_idx_memory_events_turn ON nodix_memory_events(turn_id)
|
|
69
|
+
WHERE turn_id IS NOT NULL;
|
|
70
|
+
--> statement-breakpoint
|
|
71
|
+
-- Retention enablement. The blanket no-delete trigger is replaced by a GUARDED trigger:
|
|
72
|
+
-- only high-volume usage events ('recall','inject') may ever be deleted; receipt and
|
|
73
|
+
-- lineage events (create/update/supersede/delete/purge/epoch_boundary) stay
|
|
74
|
+
-- database-protected forever. Age policy (90d) lives in code; the schema enforces the
|
|
75
|
+
-- event-class boundary. Fail-safe order: the guarded trigger is created BEFORE the
|
|
76
|
+
-- blanket trigger is dropped, so an interrupted migration leaves BOTH triggers active
|
|
77
|
+
-- (deletes over-protected), never a window where lifecycle rows are deletable.
|
|
78
|
+
CREATE TRIGGER IF NOT EXISTS memory_events_lifecycle_delete_guard BEFORE DELETE ON nodix_memory_events
|
|
79
|
+
WHEN OLD.event_type NOT IN ('recall', 'inject')
|
|
80
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memory_events lifecycle rows are append-only'); END;
|
|
81
|
+
--> statement-breakpoint
|
|
82
|
+
DROP TRIGGER IF EXISTS memory_events_no_delete;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
ALTER TABLE `nodix_memories` ADD `lane` text DEFAULT 'active' NOT NULL CHECK (`lane` IN ('active', 'parked', 'quarantined'));
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
ALTER TABLE `nodix_memories` ADD `raw_candidate_json` text;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
ALTER TABLE `nodix_memories` ADD `disposition_reason` text;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
ALTER TABLE `nodix_memories` ADD `dispositioned_at_ms` integer;
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
CREATE INDEX `nodix_idx_memories_lane_project` ON `nodix_memories` (`lane`,`project_id`);
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
CREATE TABLE `nodix_task_lifecycle_commands` (
|
|
2
|
+
`project_id` text NOT NULL,
|
|
3
|
+
`command_id` text NOT NULL,
|
|
4
|
+
`canonical_tuple_json` text,
|
|
5
|
+
`identity_json` text NOT NULL,
|
|
6
|
+
`action` text NOT NULL CHECK (`action` IN ('open_or_refine', 'complete', 'remove')),
|
|
7
|
+
`source_assertion_json` text NOT NULL,
|
|
8
|
+
`effective_at_ms` integer NOT NULL,
|
|
9
|
+
`time_source` text NOT NULL CHECK (`time_source` IN ('event_at', 'session_time', 'first_resolution')),
|
|
10
|
+
`result` text NOT NULL CHECK (`result` IN (
|
|
11
|
+
'created_instance',
|
|
12
|
+
'created_unresolved_instance',
|
|
13
|
+
'refined',
|
|
14
|
+
'evidence_only',
|
|
15
|
+
'completed',
|
|
16
|
+
'removed',
|
|
17
|
+
'terminal_evidence_only',
|
|
18
|
+
'none',
|
|
19
|
+
'uncertain'
|
|
20
|
+
)),
|
|
21
|
+
`active_task_id` text,
|
|
22
|
+
`active_task_revision_id` text,
|
|
23
|
+
`diagnostics_json` text NOT NULL,
|
|
24
|
+
`created_at_ms` integer NOT NULL,
|
|
25
|
+
PRIMARY KEY (`project_id`, `command_id`)
|
|
26
|
+
) WITHOUT ROWID;
|
|
27
|
+
--> statement-breakpoint
|
|
28
|
+
CREATE TABLE `nodix_active_task_instances` (
|
|
29
|
+
`project_id` text NOT NULL,
|
|
30
|
+
`active_task_id` text NOT NULL,
|
|
31
|
+
`opening_command_id` text NOT NULL,
|
|
32
|
+
`canonical_tuple_json` text NOT NULL,
|
|
33
|
+
`identity_state` text NOT NULL CHECK (`identity_state` IN ('normal', 'unresolved')),
|
|
34
|
+
`status` text NOT NULL CHECK (`status` IN ('active', 'completed', 'removed')),
|
|
35
|
+
`created_at_ms` integer NOT NULL,
|
|
36
|
+
`terminal_at_ms` integer,
|
|
37
|
+
PRIMARY KEY (`project_id`, `active_task_id`),
|
|
38
|
+
UNIQUE (`project_id`, `opening_command_id`),
|
|
39
|
+
FOREIGN KEY (`project_id`, `opening_command_id`)
|
|
40
|
+
REFERENCES `nodix_task_lifecycle_commands` (`project_id`, `command_id`)
|
|
41
|
+
) WITHOUT ROWID;
|
|
42
|
+
--> statement-breakpoint
|
|
43
|
+
CREATE TABLE `nodix_active_task_revisions` (
|
|
44
|
+
`project_id` text NOT NULL,
|
|
45
|
+
`active_task_revision_id` text NOT NULL,
|
|
46
|
+
`active_task_id` text NOT NULL,
|
|
47
|
+
`creating_command_id` text NOT NULL,
|
|
48
|
+
`canonical_tuple_json` text NOT NULL,
|
|
49
|
+
`description` text NOT NULL,
|
|
50
|
+
`occurrence_anchors_json` text NOT NULL,
|
|
51
|
+
`revision_details_json` text NOT NULL,
|
|
52
|
+
`created_at_ms` integer NOT NULL,
|
|
53
|
+
`is_current` integer NOT NULL CHECK (`is_current` IN (0, 1)),
|
|
54
|
+
PRIMARY KEY (`project_id`, `active_task_revision_id`),
|
|
55
|
+
UNIQUE (`project_id`, `active_task_id`, `creating_command_id`),
|
|
56
|
+
FOREIGN KEY (`project_id`, `active_task_id`)
|
|
57
|
+
REFERENCES `nodix_active_task_instances` (`project_id`, `active_task_id`),
|
|
58
|
+
FOREIGN KEY (`project_id`, `creating_command_id`)
|
|
59
|
+
REFERENCES `nodix_task_lifecycle_commands` (`project_id`, `command_id`)
|
|
60
|
+
) WITHOUT ROWID;
|
|
61
|
+
--> statement-breakpoint
|
|
62
|
+
CREATE UNIQUE INDEX `nodix_idx_active_task_current_revision`
|
|
63
|
+
ON `nodix_active_task_revisions` (`project_id`, `active_task_id`)
|
|
64
|
+
WHERE `is_current` = 1;
|
|
65
|
+
--> statement-breakpoint
|
|
66
|
+
CREATE TABLE `nodix_active_task_transitions` (
|
|
67
|
+
`project_id` text NOT NULL,
|
|
68
|
+
`command_id` text NOT NULL,
|
|
69
|
+
`active_task_id` text NOT NULL,
|
|
70
|
+
`transition_kind` text NOT NULL CHECK (`transition_kind` IN ('open', 'refine', 'complete', 'remove')),
|
|
71
|
+
`from_status` text CHECK (`from_status` IS NULL OR `from_status` IN ('active', 'completed', 'removed')),
|
|
72
|
+
`to_status` text NOT NULL CHECK (`to_status` IN ('active', 'completed', 'removed')),
|
|
73
|
+
`effective_at_ms` integer NOT NULL,
|
|
74
|
+
PRIMARY KEY (`project_id`, `command_id`),
|
|
75
|
+
FOREIGN KEY (`project_id`, `command_id`)
|
|
76
|
+
REFERENCES `nodix_task_lifecycle_commands` (`project_id`, `command_id`),
|
|
77
|
+
FOREIGN KEY (`project_id`, `active_task_id`)
|
|
78
|
+
REFERENCES `nodix_active_task_instances` (`project_id`, `active_task_id`)
|
|
79
|
+
) WITHOUT ROWID;
|
|
80
|
+
--> statement-breakpoint
|
|
81
|
+
CREATE TABLE `nodix_active_task_evidence` (
|
|
82
|
+
`project_id` text NOT NULL,
|
|
83
|
+
`command_id` text NOT NULL,
|
|
84
|
+
`active_task_id` text,
|
|
85
|
+
`evidence_memory_id` text,
|
|
86
|
+
`source_assertion_json` text NOT NULL,
|
|
87
|
+
`outcome` text NOT NULL,
|
|
88
|
+
`diagnostics_json` text NOT NULL,
|
|
89
|
+
`linked_at_ms` integer NOT NULL,
|
|
90
|
+
PRIMARY KEY (`project_id`, `command_id`),
|
|
91
|
+
FOREIGN KEY (`project_id`, `command_id`)
|
|
92
|
+
REFERENCES `nodix_task_lifecycle_commands` (`project_id`, `command_id`),
|
|
93
|
+
FOREIGN KEY (`project_id`, `active_task_id`)
|
|
94
|
+
REFERENCES `nodix_active_task_instances` (`project_id`, `active_task_id`)
|
|
95
|
+
) WITHOUT ROWID;
|
|
96
|
+
--> statement-breakpoint
|
|
97
|
+
CREATE INDEX `nodix_idx_active_task_instances_projection`
|
|
98
|
+
ON `nodix_active_task_instances` (`project_id`, `status`, `created_at_ms`, `active_task_id`);
|
|
99
|
+
--> statement-breakpoint
|
|
100
|
+
CREATE INDEX `nodix_idx_active_task_evidence_instance`
|
|
101
|
+
ON `nodix_active_task_evidence` (`project_id`, `active_task_id`);
|