@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,111 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createLogger } from "@snoai/utils/logger";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
5
|
+
//#region src/engine/telemetry/observe-ledger.ts
|
|
6
|
+
const log = createLogger("sno-station-mem:observe-ledger");
|
|
7
|
+
const rowSchema = z.object({
|
|
8
|
+
ts_ms: z.number().int().nonnegative(),
|
|
9
|
+
event_type: z.string(),
|
|
10
|
+
lane: z.string(),
|
|
11
|
+
project_id: z.string().min(1).optional(),
|
|
12
|
+
payload: z.record(z.string(), z.json())
|
|
13
|
+
});
|
|
14
|
+
function observeLedgerPath(profileDir) {
|
|
15
|
+
return join(profileDir, "observe", "ledger.jsonl");
|
|
16
|
+
}
|
|
17
|
+
function observeLedgerSyncedPath(profileDir) {
|
|
18
|
+
return join(profileDir, "observe", "ledger.synced");
|
|
19
|
+
}
|
|
20
|
+
function appendObserveLedgerRows(profileDir, rows) {
|
|
21
|
+
if (rows.length === 0) return;
|
|
22
|
+
const path = observeLedgerPath(profileDir);
|
|
23
|
+
mkdirSync(dirname(path), {
|
|
24
|
+
recursive: true,
|
|
25
|
+
mode: 448
|
|
26
|
+
});
|
|
27
|
+
appendFileSync(path, rows.map((row) => `${JSON.stringify(row)}\n`).join(""), { mode: 384 });
|
|
28
|
+
}
|
|
29
|
+
function warn(observe, message) {
|
|
30
|
+
if (observe.logger) observe.logger.warn(message);
|
|
31
|
+
else log.warn(message, void 0, {
|
|
32
|
+
event_name: "observe.ledger.failed",
|
|
33
|
+
file: "packages/memory/src/engine/telemetry/observe-ledger.ts",
|
|
34
|
+
function: "forwardObserveLedger",
|
|
35
|
+
site_id: "observe.ledger.failed"
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function reportRowFailure(observe, kind, row, error) {
|
|
39
|
+
const message = `observe.ledger:${kind} bytes ${row.start}-${row.end}: ${String(error)}`;
|
|
40
|
+
warn(observe, message);
|
|
41
|
+
try {
|
|
42
|
+
await observe.emitError?.(`observe.ledger:${kind}`, new Error(message));
|
|
43
|
+
} catch (reportError) {
|
|
44
|
+
warn(observe, `observe.ledger:error bytes ${row.start}-${row.end}: ${String(reportError)}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function consumeRows(profileDir, observe, batchSize) {
|
|
48
|
+
const syncedPath = observeLedgerSyncedPath(profileDir);
|
|
49
|
+
let offset = existsSync(syncedPath) ? Number(readFileSync(syncedPath, "utf8").trim()) : 0;
|
|
50
|
+
const path = observeLedgerPath(profileDir);
|
|
51
|
+
const rows = [];
|
|
52
|
+
if (!existsSync(path)) return {
|
|
53
|
+
rows,
|
|
54
|
+
offset
|
|
55
|
+
};
|
|
56
|
+
const ledger = readFileSync(path);
|
|
57
|
+
if (offset > ledger.length) {
|
|
58
|
+
warn(observe, `offset beyond ledger: ${offset} > ${ledger.length}`);
|
|
59
|
+
return {
|
|
60
|
+
rows,
|
|
61
|
+
offset
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
while (rows.length < batchSize) {
|
|
65
|
+
const newline = ledger.indexOf(10, offset);
|
|
66
|
+
if (newline === -1) break;
|
|
67
|
+
rows.push({
|
|
68
|
+
start: offset,
|
|
69
|
+
end: newline + 1,
|
|
70
|
+
text: ledger.toString("utf8", offset, newline)
|
|
71
|
+
});
|
|
72
|
+
offset = newline + 1;
|
|
73
|
+
}
|
|
74
|
+
if (rows.length) writeFileSync(syncedPath, String(offset), { mode: 384 });
|
|
75
|
+
return {
|
|
76
|
+
rows,
|
|
77
|
+
offset
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async function forwardObserveLedger(options) {
|
|
81
|
+
const { profileDir, observe } = options;
|
|
82
|
+
const { rows, offset } = consumeRows(profileDir, observe, Math.min(50, Math.max(1, Math.trunc(options.batchSize ?? 50))));
|
|
83
|
+
let forwarded = 0;
|
|
84
|
+
for (const line of rows) {
|
|
85
|
+
let row;
|
|
86
|
+
try {
|
|
87
|
+
row = rowSchema.parse(JSON.parse(line.text));
|
|
88
|
+
} catch (error) {
|
|
89
|
+
await reportRowFailure(observe, "parse", line, error);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
if (await observe.tryEmit({
|
|
94
|
+
eventType: row.event_type,
|
|
95
|
+
payload: row.payload,
|
|
96
|
+
tsEdgeMs: row.ts_ms,
|
|
97
|
+
...row.project_id ? { scope: { project_id: row.project_id } } : {}
|
|
98
|
+
})) forwarded++;
|
|
99
|
+
else await reportRowFailure(observe, "rejected", line, "tryEmit returned false");
|
|
100
|
+
} catch (error) {
|
|
101
|
+
await reportRowFailure(observe, "throw", line, error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
status: rows.length === 0 ? "idle" : forwarded ? "forwarded" : "failed",
|
|
106
|
+
forwarded,
|
|
107
|
+
offset
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { appendObserveLedgerRows, forwardObserveLedger, observeLedgerPath, observeLedgerSyncedPath };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as LlmPreset, c as ResolvedLlmConfig, i as LlmClientConfig, o as LlmProvider, r as LlmClient, s as MemoryLlmRequest } from "../../plugin-config-schema-C0UUbOmG.js";
|
|
2
|
+
import { a as isTerminalLlmFailure, i as createLlmClient, n as LlmClientTerminalError, o as extractJsonFromResponse, r as ModelCallRefusedError, s as repairCommonJson, t as JSON_SYSTEM_CONTENT } from "../../llm-client-DOTSGzhe.js";
|
|
3
|
+
export { JSON_SYSTEM_CONTENT, type LlmClient, type LlmClientConfig, LlmClientTerminalError, type LlmPreset, type LlmProvider, type MemoryLlmRequest, ModelCallRefusedError, type ResolvedLlmConfig, createLlmClient, extractJsonFromResponse, isTerminalLlmFailure, repairCommonJson };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as isTerminalLlmFailure, i as createLlmClient, n as LlmClientTerminalError, r as ModelCallRefusedError, t as JSON_SYSTEM_CONTENT } from "../../llm-client-BSYUAcUb.js";
|
|
2
|
+
import { a as repairCommonJson, r as extractJsonFromResponse } from "../../model-reply-text-CKopStP2.js";
|
|
3
|
+
export { JSON_SYSTEM_CONTENT, LlmClientTerminalError, ModelCallRefusedError, createLlmClient, extractJsonFromResponse, isTerminalLlmFailure, repairCommonJson };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/model/llm-failure.d.ts
|
|
2
|
+
/** @file llm-failure.ts
|
|
3
|
+
* @purpose The one place that decides what a failed LLM / host-model call means.
|
|
4
|
+
* @boundary Every caller that sees an HTTP status or error message from a model endpoint
|
|
5
|
+
* classifies it here; no other module compares status codes or error text itself.
|
|
6
|
+
*/
|
|
7
|
+
export type LlmFailureCategory = "auth" | "credential-expired" | "credential-revoked" | "exhausted" | "throttle" | "transport" | "unknown";
|
|
8
|
+
export interface LlmFailure {
|
|
9
|
+
category: LlmFailureCategory;
|
|
10
|
+
/** Retrying the same endpoint with the same credential cannot succeed. */
|
|
11
|
+
terminal: boolean;
|
|
12
|
+
/** The endpoint itself is gone or refuses the caller; a fallback tier may not substitute. */
|
|
13
|
+
endpointRefused: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function readErrorStatus(error: unknown): number | undefined;
|
|
16
|
+
export declare function readErrorMessage(error: unknown): string;
|
|
17
|
+
/** Classifies one failed model call from whatever the transport surfaced: a status, a message, or both. */
|
|
18
|
+
export declare function classifyLlmFailure(input: {
|
|
19
|
+
status?: number;
|
|
20
|
+
message?: string;
|
|
21
|
+
}): LlmFailure;
|
|
22
|
+
export declare function isCredentialFailure(category: LlmFailureCategory): boolean;
|
|
23
|
+
export declare function isTerminalLlmFailure(category: LlmFailureCategory): boolean;
|
|
24
|
+
/** A status worth one more attempt against the same endpoint. */
|
|
25
|
+
export declare function isTransientLlmStatus(status: number): boolean;
|
|
26
|
+
//#endregion
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
//#region src/model/llm-failure.ts
|
|
2
|
+
const CREDENTIAL_CATEGORIES = /* @__PURE__ */ new Set([
|
|
3
|
+
"auth",
|
|
4
|
+
"credential-expired",
|
|
5
|
+
"credential-revoked"
|
|
6
|
+
]);
|
|
7
|
+
const TERMINAL_CATEGORIES = /* @__PURE__ */ new Set([...CREDENTIAL_CATEGORIES, "exhausted"]);
|
|
8
|
+
function readErrorStatus(error) {
|
|
9
|
+
if (typeof error !== "object" || error === null) return void 0;
|
|
10
|
+
if ("status" in error && typeof error.status === "number") return error.status;
|
|
11
|
+
if ("statusCode" in error && typeof error.statusCode === "number") return error.statusCode;
|
|
12
|
+
}
|
|
13
|
+
function readErrorMessage(error) {
|
|
14
|
+
if (error instanceof Error) return error.message;
|
|
15
|
+
if (typeof error === "object" && error !== null && "message" in error && typeof error.message === "string") return error.message;
|
|
16
|
+
return String(error);
|
|
17
|
+
}
|
|
18
|
+
function isCredentialRevokedMessage(message) {
|
|
19
|
+
return /oauth token refresh failed for openai:.*\binvalid_grant\b.*\btoken revoked\b/i.test(message);
|
|
20
|
+
}
|
|
21
|
+
function isCredentialExpiredMessage(message) {
|
|
22
|
+
return /\bexpired access token\b/i.test(message);
|
|
23
|
+
}
|
|
24
|
+
function isAuthMessage(message) {
|
|
25
|
+
return /\b(?:401|403)\b/.test(message) || /unauthori[sz]ed/i.test(message) || /no api key found/i.test(message) || /(?:invalid|incorrect) api[- ]?key/i.test(message) || /(?:invalid|expired) (?:access |oauth )?token/i.test(message) || /(?:api[- ]?key|token).*(?:invalid|expired|rejected)/i.test(message) || /credential (?:is )?(?:invalid|expired|rejected)/i.test(message) || /no (?:valid )?credential (?:found|available|configured)/i.test(message) || /re-?authenticate/i.test(message) || /no authentication configured/i.test(message);
|
|
26
|
+
}
|
|
27
|
+
function isExhaustedMessage(message) {
|
|
28
|
+
return /you(?:'|’)ve reached your codex subscription usage limit/i.test(message);
|
|
29
|
+
}
|
|
30
|
+
function isThrottleMessage(message) {
|
|
31
|
+
return /\b429\b/.test(message) || /rate.?limit/i.test(message) || /quota/i.test(message);
|
|
32
|
+
}
|
|
33
|
+
function categoryOf(status, message) {
|
|
34
|
+
if (isCredentialRevokedMessage(message)) return "credential-revoked";
|
|
35
|
+
if (isCredentialExpiredMessage(message)) return "credential-expired";
|
|
36
|
+
if (status === 401 || status === 403 || isAuthMessage(message)) return "auth";
|
|
37
|
+
if (isExhaustedMessage(message)) return "exhausted";
|
|
38
|
+
if (status === 429 || isThrottleMessage(message)) return "throttle";
|
|
39
|
+
if (status !== void 0 && (status === 404 || status === 408 || status >= 500)) return "transport";
|
|
40
|
+
return "unknown";
|
|
41
|
+
}
|
|
42
|
+
/** Classifies one failed model call from whatever the transport surfaced: a status, a message, or both. */
|
|
43
|
+
function classifyLlmFailure(input) {
|
|
44
|
+
const category = categoryOf(input.status, input.message ?? "");
|
|
45
|
+
const terminal = TERMINAL_CATEGORIES.has(category);
|
|
46
|
+
return {
|
|
47
|
+
category,
|
|
48
|
+
terminal,
|
|
49
|
+
endpointRefused: terminal || input.status === 404 || input.status === 503
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function isCredentialFailure(category) {
|
|
53
|
+
return CREDENTIAL_CATEGORIES.has(category);
|
|
54
|
+
}
|
|
55
|
+
function isTerminalLlmFailure(category) {
|
|
56
|
+
return TERMINAL_CATEGORIES.has(category);
|
|
57
|
+
}
|
|
58
|
+
/** A status worth one more attempt against the same endpoint. */
|
|
59
|
+
function isTransientLlmStatus(status) {
|
|
60
|
+
return status === 408 || status === 429 || status >= 500;
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
export { classifyLlmFailure, isCredentialFailure, isTerminalLlmFailure, isTransientLlmStatus, readErrorMessage, readErrorStatus };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { l as ModelCallId, m as LlmRoutingConfigInput, p as LlmRoutingConfig } from "../../plugin-config-schema-C0UUbOmG.js";
|
|
2
|
+
//#region src/model/llm-mode-routing.d.ts
|
|
3
|
+
export type LlmTransport = "chat-completions" | "raw-completions" | "agent-host-seam";
|
|
4
|
+
export type LlmParser = "json" | "json-or-single-token-verdict" | "single-token-verdict" | "text";
|
|
5
|
+
export type LlmRouteTarget = {
|
|
6
|
+
tier: "agent" | "snoRemMem";
|
|
7
|
+
destination: "host" | "sno-gpu";
|
|
8
|
+
transport: LlmTransport;
|
|
9
|
+
parser: LlmParser;
|
|
10
|
+
};
|
|
11
|
+
export type LlmRouteOff = {
|
|
12
|
+
off: true;
|
|
13
|
+
reason: "configured-off";
|
|
14
|
+
};
|
|
15
|
+
export type LlmRouteDecision = LlmRouteTarget | LlmRouteOff;
|
|
16
|
+
export declare function pickLlmRoutingConfig(config: LlmRoutingConfigInput): LlmRoutingConfig;
|
|
17
|
+
export declare function resolveLlmRoute(input: {
|
|
18
|
+
callId: ModelCallId;
|
|
19
|
+
config: LlmRoutingConfigInput;
|
|
20
|
+
}): LlmRouteDecision;
|
|
21
|
+
//#endregion
|
|
22
|
+
export type { LlmRoutingConfig };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { llmRoutingConfigSchema } from "../config/product-mode.js";
|
|
2
|
+
import { n as modelCallDestination, t as MODEL_CALLS } from "../../model-call-table-CspopkBg.js";
|
|
3
|
+
//#region src/model/llm-mode-routing.ts
|
|
4
|
+
/** @file llm-mode-routing.ts
|
|
5
|
+
* @purpose Resolve one model call id to its configured destination and transport.
|
|
6
|
+
*/
|
|
7
|
+
function pickLlmRoutingConfig(config) {
|
|
8
|
+
return llmRoutingConfigSchema.parse({
|
|
9
|
+
mode: config.mode,
|
|
10
|
+
language: config.language,
|
|
11
|
+
modelCalls: config.modelCalls
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function resolveLlmRoute(input) {
|
|
15
|
+
const routing = pickLlmRoutingConfig(input.config);
|
|
16
|
+
const call = MODEL_CALLS[input.callId];
|
|
17
|
+
if (!routing.modelCalls) throw new Error("modelCalls unavailable");
|
|
18
|
+
const destination = modelCallDestination(input.callId, routing.mode, routing.modelCalls);
|
|
19
|
+
if (destination === "off") return {
|
|
20
|
+
off: true,
|
|
21
|
+
reason: "configured-off"
|
|
22
|
+
};
|
|
23
|
+
if (destination === "host") return {
|
|
24
|
+
tier: "agent",
|
|
25
|
+
destination,
|
|
26
|
+
transport: call.transport.host,
|
|
27
|
+
parser: call.replyParser.host
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
tier: "snoRemMem",
|
|
31
|
+
destination,
|
|
32
|
+
transport: call.transport.snoGpu,
|
|
33
|
+
parser: call.replyParser.snoGpu
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { pickLlmRoutingConfig, resolveLlmRoute };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { r as SqliteDatabaseLike } from "../../sqlite-runtime-L_ywirTm.js";
|
|
2
|
+
//#region src/store/atomic-memory-cutover-sql.d.ts
|
|
3
|
+
export declare const ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER = "nodix_memories_text_immutable";
|
|
4
|
+
export declare const ATOMIC_MEMORY_VALID_INTERVAL_CHECK_SQL = "valid_until IS NULL OR (valid_from IS NOT NULL AND valid_until > valid_from)";
|
|
5
|
+
export declare const CREATE_ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER_SQL: string;
|
|
6
|
+
export declare const ATOMIC_MEMORY_ROW_CONSTRAINTS: ReadonlyArray<{
|
|
7
|
+
name: string;
|
|
8
|
+
predicate: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const CREATE_ATOMIC_MEMORY_CUTOVER_TABLE_SQL: string;
|
|
11
|
+
export declare function installAtomicMemoryTextImmutabilityTrigger(database: SqliteDatabaseLike): void;
|
|
12
|
+
export declare function applyAtomicMemoryCutoverMigration(database: SqliteDatabaseLike): void;
|
|
13
|
+
//#endregion
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { MEMORY_CATEGORIES } from "../engine/shared/types.js";
|
|
2
|
+
import { StorageError } from "../engine/shared/errors.js";
|
|
3
|
+
import "../../memory-store-shared-DqpWJXZZ.js";
|
|
4
|
+
//#region src/store/atomic-memory-cutover-sql.ts
|
|
5
|
+
/** @file atomic-memory-cutover-sql.ts
|
|
6
|
+
* @purpose Holds the text-immutability trigger until the ordered Phase F cutover activates it.
|
|
7
|
+
* @boundary Exported SQL only; importing this module never changes a store.
|
|
8
|
+
*/
|
|
9
|
+
const ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER = "nodix_memories_text_immutable";
|
|
10
|
+
const ATOMIC_MEMORY_VALID_INTERVAL_CHECK_SQL = "valid_until IS NULL OR (valid_from IS NOT NULL AND valid_until > valid_from)";
|
|
11
|
+
const CREATE_ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER_SQL = `
|
|
12
|
+
CREATE TRIGGER ${ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER}
|
|
13
|
+
BEFORE UPDATE OF text ON nodix_memories
|
|
14
|
+
WHEN NEW.text IS NOT OLD.text
|
|
15
|
+
BEGIN
|
|
16
|
+
SELECT RAISE(ABORT, 'nodix_memories.text is immutable; create a new card');
|
|
17
|
+
END;
|
|
18
|
+
`;
|
|
19
|
+
const ATOMIC_MEMORY_ROW_CONSTRAINTS = [
|
|
20
|
+
{
|
|
21
|
+
name: "text",
|
|
22
|
+
predicate: "text IS NOT NULL"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "category_not_null",
|
|
26
|
+
predicate: "category IS NOT NULL"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "category",
|
|
30
|
+
predicate: `category IN (${[...MEMORY_CATEGORIES, "foresight"].map((category) => `'${category}'`).join(", ")})`
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "project_id",
|
|
34
|
+
predicate: "project_id IS NOT NULL"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "importance",
|
|
38
|
+
predicate: "importance IS NOT NULL AND importance >= 0.0 AND importance <= 1.0"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "timestamp",
|
|
42
|
+
predicate: "timestamp IS NOT NULL"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "content_hash",
|
|
46
|
+
predicate: "content_hash IS NOT NULL"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "lane",
|
|
50
|
+
predicate: "lane IS NOT NULL AND lane IN ('active', 'parked', 'quarantined')"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "timezone",
|
|
54
|
+
predicate: "timezone IS NOT NULL"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "maturity",
|
|
58
|
+
predicate: "maturity IS NOT NULL AND maturity IN ('extracted', 'distilled', 'compiled')"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "source",
|
|
62
|
+
predicate: "source IS NOT NULL AND source IN ('edge', 'cloud', 'manual')"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "extractor_version",
|
|
66
|
+
predicate: "extractor_version IS NOT NULL"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "valid_interval",
|
|
70
|
+
predicate: ATOMIC_MEMORY_VALID_INTERVAL_CHECK_SQL
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "maturity_derived_from",
|
|
74
|
+
predicate: "maturity = 'extracted' OR (derived_from IS NOT NULL AND length(trim(derived_from)) > 0)"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "compiled_category",
|
|
78
|
+
predicate: "maturity != 'compiled' OR category = 'lesson'"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "foresight_source",
|
|
82
|
+
predicate: "category != 'foresight' OR source = 'cloud'"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "persona_subject",
|
|
86
|
+
predicate: "category != 'persona' OR (subject IS NOT NULL AND subject = 'agent')"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "lesson_subject",
|
|
90
|
+
predicate: "category != 'lesson' OR subject IS NULL OR subject = 'agent'"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "state_subject_metadata",
|
|
94
|
+
predicate: `category != 'state'
|
|
95
|
+
OR (
|
|
96
|
+
subject IS NOT NULL
|
|
97
|
+
AND subject GLOB 'entity:*'
|
|
98
|
+
AND length(subject) > length('entity:')
|
|
99
|
+
AND json_valid(metadata)
|
|
100
|
+
AND json_type(metadata, '$.event_at') IS NULL
|
|
101
|
+
)`
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "foresight_subject",
|
|
105
|
+
predicate: `category != 'foresight'
|
|
106
|
+
OR (
|
|
107
|
+
subject IS NOT NULL
|
|
108
|
+
AND (
|
|
109
|
+
subject = 'user'
|
|
110
|
+
OR (subject GLOB 'entity:*' AND length(subject) > length('entity:'))
|
|
111
|
+
)
|
|
112
|
+
)`
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "foresight_interval",
|
|
116
|
+
predicate: `category != 'foresight'
|
|
117
|
+
OR (
|
|
118
|
+
valid_from IS NOT NULL
|
|
119
|
+
AND valid_until IS NOT NULL
|
|
120
|
+
AND valid_from > timestamp
|
|
121
|
+
AND valid_until > valid_from
|
|
122
|
+
)`
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
const CREATE_ATOMIC_MEMORY_CUTOVER_TABLE_SQL = `
|
|
126
|
+
CREATE TABLE nodix_memories_cutover (
|
|
127
|
+
id TEXT PRIMARY KEY,
|
|
128
|
+
text TEXT,
|
|
129
|
+
category TEXT,
|
|
130
|
+
project_id TEXT,
|
|
131
|
+
importance REAL DEFAULT 0.7,
|
|
132
|
+
timestamp INTEGER,
|
|
133
|
+
metadata TEXT DEFAULT '{}',
|
|
134
|
+
content_hash TEXT,
|
|
135
|
+
fact_id TEXT,
|
|
136
|
+
derived_from TEXT,
|
|
137
|
+
consolidation_epoch_id TEXT,
|
|
138
|
+
confidence_source TEXT,
|
|
139
|
+
lane TEXT DEFAULT 'active',
|
|
140
|
+
raw_candidate_json TEXT,
|
|
141
|
+
disposition_reason TEXT,
|
|
142
|
+
dispositioned_at_ms INTEGER,
|
|
143
|
+
timezone TEXT DEFAULT '__missing_timezone__',
|
|
144
|
+
subject TEXT,
|
|
145
|
+
attribute TEXT,
|
|
146
|
+
valid_from INTEGER,
|
|
147
|
+
valid_until INTEGER,
|
|
148
|
+
maturity TEXT,
|
|
149
|
+
source TEXT,
|
|
150
|
+
extractor_version TEXT,
|
|
151
|
+
${ATOMIC_MEMORY_ROW_CONSTRAINTS.map(({ predicate }) => `CHECK (${predicate})`).join(",\n ")}
|
|
152
|
+
);
|
|
153
|
+
`;
|
|
154
|
+
const ATOMIC_MEMORY_CUTOVER_SCHEMA_SQL = `
|
|
155
|
+
${CREATE_ATOMIC_MEMORY_CUTOVER_TABLE_SQL}
|
|
156
|
+
|
|
157
|
+
DROP TABLE nodix_memories;
|
|
158
|
+
ALTER TABLE nodix_memories_cutover RENAME TO nodix_memories;
|
|
159
|
+
|
|
160
|
+
CREATE INDEX nodix_idx_memories_content_hash ON nodix_memories(content_hash);
|
|
161
|
+
CREATE UNIQUE INDEX nodix_idx_memories_project_content_hash
|
|
162
|
+
ON nodix_memories(project_id, content_hash, category);
|
|
163
|
+
CREATE INDEX nodix_idx_memories_category ON nodix_memories(category);
|
|
164
|
+
CREATE INDEX nodix_idx_memories_project_timestamp ON nodix_memories(project_id, timestamp DESC);
|
|
165
|
+
CREATE INDEX nodix_idx_memories_fact_id ON nodix_memories(fact_id);
|
|
166
|
+
CREATE INDEX nodix_idx_memories_reflection_items ON nodix_memories(timestamp DESC)
|
|
167
|
+
WHERE json_valid(metadata) AND json_extract(metadata, '$.type') = 'memory-reflection-item';
|
|
168
|
+
CREATE INDEX nodix_idx_memories_idempotency_key
|
|
169
|
+
ON nodix_memories(project_id, json_extract(metadata, '$.idempotency_key'))
|
|
170
|
+
WHERE json_valid(metadata) AND json_extract(metadata, '$.idempotency_key') IS NOT NULL;
|
|
171
|
+
CREATE INDEX nodix_idx_memories_lane_project ON nodix_memories(lane, project_id);
|
|
172
|
+
CREATE INDEX nodix_idx_memories_project_subject_attribute
|
|
173
|
+
ON nodix_memories(project_id, subject, attribute);
|
|
174
|
+
CREATE INDEX nodix_idx_memories_project_valid_time
|
|
175
|
+
ON nodix_memories(project_id, valid_from, valid_until);
|
|
176
|
+
CREATE INDEX nodix_idx_memories_project_maturity ON nodix_memories(project_id, maturity);
|
|
177
|
+
CREATE INDEX nodix_idx_memories_project_source ON nodix_memories(project_id, source);
|
|
178
|
+
CREATE INDEX nodix_idx_memories_project_extractor_version
|
|
179
|
+
ON nodix_memories(project_id, extractor_version);
|
|
180
|
+
CREATE INDEX nodix_idx_memories_project_derived_from ON nodix_memories(project_id, derived_from);
|
|
181
|
+
CREATE INDEX nodix_idx_memories_project_importance ON nodix_memories(project_id, importance);
|
|
182
|
+
|
|
183
|
+
CREATE TRIGGER nodix_memories_fact_id_insert_guard
|
|
184
|
+
BEFORE INSERT ON nodix_memories
|
|
185
|
+
WHEN NEW.fact_id IS NULL
|
|
186
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memories.fact_id is required'); END;
|
|
187
|
+
|
|
188
|
+
CREATE TRIGGER nodix_memories_fact_id_update_guard
|
|
189
|
+
BEFORE UPDATE ON nodix_memories
|
|
190
|
+
WHEN NEW.fact_id IS NULL
|
|
191
|
+
BEGIN SELECT RAISE(ABORT, 'nodix_memories.fact_id is required'); END;
|
|
192
|
+
|
|
193
|
+
CREATE TRIGGER nodix_memories_timezone_required_before_insert
|
|
194
|
+
BEFORE INSERT ON nodix_memories
|
|
195
|
+
WHEN NEW.timezone = '__missing_timezone__' OR trim(NEW.timezone) = ''
|
|
196
|
+
BEGIN SELECT RAISE(ABORT, 'timezone is required'); END;
|
|
197
|
+
|
|
198
|
+
CREATE TRIGGER nodix_memories_timezone_required_before_update
|
|
199
|
+
BEFORE UPDATE OF timezone ON nodix_memories
|
|
200
|
+
WHEN NEW.timezone = '__missing_timezone__' OR trim(NEW.timezone) = ''
|
|
201
|
+
BEGIN SELECT RAISE(ABORT, 'timezone is required'); END;
|
|
202
|
+
|
|
203
|
+
CREATE TRIGGER rem_memory_facets_after_insert
|
|
204
|
+
AFTER INSERT ON nodix_memories
|
|
205
|
+
BEGIN
|
|
206
|
+
INSERT INTO nodix_rem_memory_facets (memory_id, facet, text, updated_at_ms)
|
|
207
|
+
VALUES (NEW.id, 'current', NEW.text, NEW.timestamp);
|
|
208
|
+
END;
|
|
209
|
+
|
|
210
|
+
CREATE TRIGGER rem_memory_facets_after_text_update
|
|
211
|
+
AFTER UPDATE OF text ON nodix_memories
|
|
212
|
+
BEGIN
|
|
213
|
+
INSERT INTO nodix_rem_memory_facets (memory_id, facet, text, updated_at_ms)
|
|
214
|
+
VALUES (NEW.id, 'current', NEW.text, NEW.timestamp)
|
|
215
|
+
ON CONFLICT(memory_id, facet) DO UPDATE SET
|
|
216
|
+
text = excluded.text, updated_at_ms = excluded.updated_at_ms;
|
|
217
|
+
END;
|
|
218
|
+
|
|
219
|
+
${CREATE_ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER_SQL}
|
|
220
|
+
`;
|
|
221
|
+
function installAtomicMemoryTextImmutabilityTrigger(database) {
|
|
222
|
+
database.exec(CREATE_ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER_SQL);
|
|
223
|
+
}
|
|
224
|
+
function applyAtomicMemoryCutoverMigration(database) {
|
|
225
|
+
database.exec("PRAGMA foreign_keys = OFF");
|
|
226
|
+
try {
|
|
227
|
+
database.transaction(() => {
|
|
228
|
+
const row = database.prepare("SELECT COUNT(*) AS count FROM nodix_memories").get();
|
|
229
|
+
if (row?.count !== 0) throw new StorageError(`Atomic memory cutover requires zero stored memories; found ${String(row?.count ?? "unknown")}`);
|
|
230
|
+
database.exec(ATOMIC_MEMORY_CUTOVER_SCHEMA_SQL);
|
|
231
|
+
}).immediate();
|
|
232
|
+
} finally {
|
|
233
|
+
database.exec("PRAGMA foreign_keys = ON");
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//#endregion
|
|
237
|
+
export { ATOMIC_MEMORY_ROW_CONSTRAINTS, ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER, ATOMIC_MEMORY_VALID_INTERVAL_CHECK_SQL, CREATE_ATOMIC_MEMORY_CUTOVER_TABLE_SQL, CREATE_ATOMIC_MEMORY_TEXT_IMMUTABILITY_TRIGGER_SQL, applyAtomicMemoryCutoverMigration, installAtomicMemoryTextImmutabilityTrigger };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as initDb, c as readChunkVecTableDimension, d as validateStoragePath, i as closeDb, l as readChunkVecTableState, n as VecTableState, o as loadStorageExtensions, r as assertNoLegacyBoundarySchema, s as parseVecTableDimension, t as DrizzleDB, u as vecTableDdlHasPartitionKey } from "../../connection-3IVXpuPE.js";
|
|
2
|
+
export { DrizzleDB, VecTableState, assertNoLegacyBoundarySchema, closeDb, initDb, loadStorageExtensions, parseVecTableDimension, readChunkVecTableDimension, readChunkVecTableState, validateStoragePath, vecTableDdlHasPartitionKey };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as parseVecTableDimension, c as vecTableDdlHasPartitionKey, i as loadStorageExtensions, l as validateStoragePath, n as closeDb, o as readChunkVecTableDimension, r as initDb, s as readChunkVecTableState, t as assertNoLegacyBoundarySchema } from "../../connection-C9YD5sgm.js";
|
|
2
|
+
export { assertNoLegacyBoundarySchema, closeDb, initDb, loadStorageExtensions, parseVecTableDimension, readChunkVecTableDimension, readChunkVecTableState, validateStoragePath, vecTableDdlHasPartitionKey };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as getCostLogPath, c as getSnoStationMemDataDir, i as getBackupsDir, n as assertLocalFilesystem, o as getInstallManifestPath, r as getAuditLogPath, s as getKillswitchPath, t as NonLocalFilesystemError } from "../../data-paths-C7sNdqvP.js";
|
|
2
|
+
export { NonLocalFilesystemError, assertLocalFilesystem, getAuditLogPath, getBackupsDir, getCostLogPath, getInstallManifestPath, getKillswitchPath, getSnoStationMemDataDir };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { getSnoStationMemStateDir } from "../contract/profile.js";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { statfsSync } from "node:fs";
|
|
4
|
+
//#region src/store/data-paths.ts
|
|
5
|
+
/** @file data-paths.ts
|
|
6
|
+
* @purpose Resolve the safe-uninstall data directory layout for
|
|
7
|
+
* `@snoai/memory`: persistent user data under
|
|
8
|
+
* `<profile root>/sno-station-mem/data/`, separate from service state. POSIX only.
|
|
9
|
+
* @boundary Path resolution + filesystem-class assertion. No I/O beyond
|
|
10
|
+
* a single `statfs` probe in `assertLocalFilesystem`.
|
|
11
|
+
*/
|
|
12
|
+
/** File-system kinds that DO NOT guarantee atomic POSIX rename. */
|
|
13
|
+
const NON_LOCAL_FS_TYPES = /* @__PURE__ */ new Set([
|
|
14
|
+
26985,
|
|
15
|
+
4283649346,
|
|
16
|
+
4266872130,
|
|
17
|
+
20859,
|
|
18
|
+
1702057286
|
|
19
|
+
]);
|
|
20
|
+
/** Typed boundary error for refuse-to-operate when data dir is on NFS/SMB/FUSE. */
|
|
21
|
+
var NonLocalFilesystemError = class extends Error {
|
|
22
|
+
dir;
|
|
23
|
+
fsType;
|
|
24
|
+
kind = "NonLocalFilesystemError";
|
|
25
|
+
constructor(dir, fsType) {
|
|
26
|
+
super(`Refusing to operate on non-local filesystem (type=0x${fsType.toString(16)}) at ${dir}. Atomic rename is not guaranteed at ${dir}.`);
|
|
27
|
+
this.dir = dir;
|
|
28
|
+
this.fsType = fsType;
|
|
29
|
+
this.name = "NonLocalFilesystemError";
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
function getSnoStationMemDataDir() {
|
|
33
|
+
return join(getSnoStationMemStateDir(), "data");
|
|
34
|
+
}
|
|
35
|
+
function getInstallManifestPath() {
|
|
36
|
+
return join(getSnoStationMemDataDir(), "install.json");
|
|
37
|
+
}
|
|
38
|
+
function getAuditLogPath() {
|
|
39
|
+
return join(getSnoStationMemDataDir(), "audit.jsonl");
|
|
40
|
+
}
|
|
41
|
+
function getCostLogPath() {
|
|
42
|
+
return join(getSnoStationMemDataDir(), "cost.jsonl");
|
|
43
|
+
}
|
|
44
|
+
function getKillswitchPath() {
|
|
45
|
+
return join(getSnoStationMemDataDir(), "killswitch");
|
|
46
|
+
}
|
|
47
|
+
function getBackupsDir() {
|
|
48
|
+
return join(getSnoStationMemDataDir(), "backups");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* `statfs(2)`-based check: throws `NonLocalFilesystemError` when `dir` sits on
|
|
52
|
+
* NFS / SMB / FUSE (which includes iCloud-Drive-watched directories). POSIX
|
|
53
|
+
* only — Windows is out of v1 projectId.
|
|
54
|
+
*/
|
|
55
|
+
function assertLocalFilesystem(dir) {
|
|
56
|
+
let info;
|
|
57
|
+
try {
|
|
58
|
+
info = statfsSync(dir);
|
|
59
|
+
} catch {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (NON_LOCAL_FS_TYPES.has(info.type)) throw new NonLocalFilesystemError(dir, info.type);
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { NonLocalFilesystemError, assertLocalFilesystem, getAuditLogPath, getBackupsDir, getCostLogPath, getInstallManifestPath, getKillswitchPath, getSnoStationMemDataDir };
|