@astragenie/astramemory-local 0.7.2
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/CHANGELOG.md +341 -0
- package/README.md +419 -0
- package/dist/backup/retention.d.ts +15 -0
- package/dist/backup/retention.js +62 -0
- package/dist/backup/retention.js.map +1 -0
- package/dist/backup/snapshot.d.ts +21 -0
- package/dist/backup/snapshot.js +55 -0
- package/dist/backup/snapshot.js.map +1 -0
- package/dist/backup/verify.d.ts +23 -0
- package/dist/backup/verify.js +77 -0
- package/dist/backup/verify.js.map +1 -0
- package/dist/budget/tracker.d.ts +58 -0
- package/dist/budget/tracker.js +102 -0
- package/dist/budget/tracker.js.map +1 -0
- package/dist/capture/codex.d.ts +63 -0
- package/dist/capture/codex.js +0 -0
- package/dist/capture/codex.js.map +1 -0
- package/dist/cli/backup.d.ts +1 -0
- package/dist/cli/backup.js +112 -0
- package/dist/cli/backup.js.map +1 -0
- package/dist/cli/budget.d.ts +7 -0
- package/dist/cli/budget.js +44 -0
- package/dist/cli/budget.js.map +1 -0
- package/dist/cli/capture.d.ts +10 -0
- package/dist/cli/capture.js +113 -0
- package/dist/cli/capture.js.map +1 -0
- package/dist/cli/consolidate.d.ts +16 -0
- package/dist/cli/consolidate.js +146 -0
- package/dist/cli/consolidate.js.map +1 -0
- package/dist/cli/doctor.d.ts +1 -0
- package/dist/cli/doctor.js +54 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/entity-backfill.d.ts +10 -0
- package/dist/cli/entity-backfill.js +46 -0
- package/dist/cli/entity-backfill.js.map +1 -0
- package/dist/cli/hook-install.d.ts +45 -0
- package/dist/cli/hook-install.js +77 -0
- package/dist/cli/hook-install.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +312 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +16 -0
- package/dist/cli/init.js +431 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-stdio.d.ts +18 -0
- package/dist/cli/mcp-stdio.js +67 -0
- package/dist/cli/mcp-stdio.js.map +1 -0
- package/dist/cli/memory.d.ts +15 -0
- package/dist/cli/memory.js +52 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/open-runtime-db.d.ts +15 -0
- package/dist/cli/open-runtime-db.js +37 -0
- package/dist/cli/open-runtime-db.js.map +1 -0
- package/dist/cli/pair.d.ts +29 -0
- package/dist/cli/pair.js +64 -0
- package/dist/cli/pair.js.map +1 -0
- package/dist/cli/providers.d.ts +10 -0
- package/dist/cli/providers.js +97 -0
- package/dist/cli/providers.js.map +1 -0
- package/dist/cli/queue-purge.d.ts +5 -0
- package/dist/cli/queue-purge.js +92 -0
- package/dist/cli/queue-purge.js.map +1 -0
- package/dist/cli/queue.d.ts +29 -0
- package/dist/cli/queue.js +73 -0
- package/dist/cli/queue.js.map +1 -0
- package/dist/cli/rebuild.d.ts +15 -0
- package/dist/cli/rebuild.js +70 -0
- package/dist/cli/rebuild.js.map +1 -0
- package/dist/cli/reembed-dim.d.ts +21 -0
- package/dist/cli/reembed-dim.js +199 -0
- package/dist/cli/reembed-dim.js.map +1 -0
- package/dist/cli/reinstall.d.ts +1 -0
- package/dist/cli/reinstall.js +205 -0
- package/dist/cli/reinstall.js.map +1 -0
- package/dist/cli/restore.d.ts +1 -0
- package/dist/cli/restore.js +167 -0
- package/dist/cli/restore.js.map +1 -0
- package/dist/cli/retag.d.ts +14 -0
- package/dist/cli/retag.js +62 -0
- package/dist/cli/retag.js.map +1 -0
- package/dist/cli/search.d.ts +66 -0
- package/dist/cli/search.js +174 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/serve.d.ts +9 -0
- package/dist/cli/serve.js +364 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/service.d.ts +1 -0
- package/dist/cli/service.js +121 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/cli/sync.d.ts +15 -0
- package/dist/cli/sync.js +61 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/token.d.ts +24 -0
- package/dist/cli/token.js +77 -0
- package/dist/cli/token.js.map +1 -0
- package/dist/cli/wait-health.d.ts +4 -0
- package/dist/cli/wait-health.js +23 -0
- package/dist/cli/wait-health.js.map +1 -0
- package/dist/config/config.d.ts +127 -0
- package/dist/config/config.js +38 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/datadir.d.ts +30 -0
- package/dist/config/datadir.js +65 -0
- package/dist/config/datadir.js.map +1 -0
- package/dist/config/loader.d.ts +23 -0
- package/dist/config/loader.js +102 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/migrate-dirs.d.ts +36 -0
- package/dist/config/migrate-dirs.js +132 -0
- package/dist/config/migrate-dirs.js.map +1 -0
- package/dist/config/persist-envs.d.ts +23 -0
- package/dist/config/persist-envs.js +119 -0
- package/dist/config/persist-envs.js.map +1 -0
- package/dist/config/resolve-runtime.d.ts +19 -0
- package/dist/config/resolve-runtime.js +53 -0
- package/dist/config/resolve-runtime.js.map +1 -0
- package/dist/config/secrets.d.ts +28 -0
- package/dist/config/secrets.js +38 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/config/sync-settings.d.ts +16 -0
- package/dist/config/sync-settings.js +34 -0
- package/dist/config/sync-settings.js.map +1 -0
- package/dist/config/writer.d.ts +19 -0
- package/dist/config/writer.js +121 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/consolidate/consolidate.d.ts +80 -0
- package/dist/consolidate/consolidate.js +0 -0
- package/dist/consolidate/consolidate.js.map +1 -0
- package/dist/consolidate/proposals.d.ts +35 -0
- package/dist/consolidate/proposals.js +66 -0
- package/dist/consolidate/proposals.js.map +1 -0
- package/dist/contracts/atom-wire.d.ts +48 -0
- package/dist/contracts/atom-wire.js +55 -0
- package/dist/contracts/atom-wire.js.map +1 -0
- package/dist/contracts/embed.d.ts +41 -0
- package/dist/contracts/embed.js +20 -0
- package/dist/contracts/embed.js.map +1 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.js +6 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/job.d.ts +113 -0
- package/dist/contracts/job.js +32 -0
- package/dist/contracts/job.js.map +1 -0
- package/dist/contracts/llm.d.ts +30 -0
- package/dist/contracts/llm.js +2 -0
- package/dist/contracts/llm.js.map +1 -0
- package/dist/contracts/memory.d.ts +47 -0
- package/dist/contracts/memory.js +5 -0
- package/dist/contracts/memory.js.map +1 -0
- package/dist/contracts/vector.d.ts +29 -0
- package/dist/contracts/vector.js +2 -0
- package/dist/contracts/vector.js.map +1 -0
- package/dist/distill/flatten-turns.d.ts +1 -0
- package/dist/distill/flatten-turns.js +50 -0
- package/dist/distill/flatten-turns.js.map +1 -0
- package/dist/distill/pipeline.d.ts +45 -0
- package/dist/distill/pipeline.js +113 -0
- package/dist/distill/pipeline.js.map +1 -0
- package/dist/distill/prompts/extract.d.ts +122 -0
- package/dist/distill/prompts/extract.js +67 -0
- package/dist/distill/prompts/extract.js.map +1 -0
- package/dist/distill/stages/01-cleanup.d.ts +9 -0
- package/dist/distill/stages/01-cleanup.js +67 -0
- package/dist/distill/stages/01-cleanup.js.map +1 -0
- package/dist/distill/stages/02-normalize.d.ts +9 -0
- package/dist/distill/stages/02-normalize.js +76 -0
- package/dist/distill/stages/02-normalize.js.map +1 -0
- package/dist/distill/stages/03-chunk.d.ts +22 -0
- package/dist/distill/stages/03-chunk.js +138 -0
- package/dist/distill/stages/03-chunk.js.map +1 -0
- package/dist/distill/stages/04-compact.d.ts +28 -0
- package/dist/distill/stages/04-compact.js +69 -0
- package/dist/distill/stages/04-compact.js.map +1 -0
- package/dist/distill/stages/05-extract.d.ts +35 -0
- package/dist/distill/stages/05-extract.js +101 -0
- package/dist/distill/stages/05-extract.js.map +1 -0
- package/dist/distill/stages/06-reduce.d.ts +16 -0
- package/dist/distill/stages/06-reduce.js +30 -0
- package/dist/distill/stages/06-reduce.js.map +1 -0
- package/dist/distill/stages/07-memory-normalize.d.ts +27 -0
- package/dist/distill/stages/07-memory-normalize.js +65 -0
- package/dist/distill/stages/07-memory-normalize.js.map +1 -0
- package/dist/distill/stages/08-embed-index.d.ts +31 -0
- package/dist/distill/stages/08-embed-index.js +82 -0
- package/dist/distill/stages/08-embed-index.js.map +1 -0
- package/dist/doctor/checks.d.ts +77 -0
- package/dist/doctor/checks.js +626 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/hardening-checks.d.ts +9 -0
- package/dist/doctor/hardening-checks.js +182 -0
- package/dist/doctor/hardening-checks.js.map +1 -0
- package/dist/doctor/probes/embed-probe.d.ts +19 -0
- package/dist/doctor/probes/embed-probe.js +47 -0
- package/dist/doctor/probes/embed-probe.js.map +1 -0
- package/dist/doctor/probes/llm-chat-probe.d.ts +11 -0
- package/dist/doctor/probes/llm-chat-probe.js +41 -0
- package/dist/doctor/probes/llm-chat-probe.js.map +1 -0
- package/dist/doctor/probes/plugin-coexistence.d.ts +14 -0
- package/dist/doctor/probes/plugin-coexistence.js +60 -0
- package/dist/doctor/probes/plugin-coexistence.js.map +1 -0
- package/dist/doctor/runner.d.ts +17 -0
- package/dist/doctor/runner.js +53 -0
- package/dist/doctor/runner.js.map +1 -0
- package/dist/doctor/types.d.ts +12 -0
- package/dist/doctor/types.js +2 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/entity/backfill.d.ts +30 -0
- package/dist/entity/backfill.js +55 -0
- package/dist/entity/backfill.js.map +1 -0
- package/dist/entity/extract-entities.d.ts +27 -0
- package/dist/entity/extract-entities.js +86 -0
- package/dist/entity/extract-entities.js.map +1 -0
- package/dist/entity/normalize.d.ts +17 -0
- package/dist/entity/normalize.js +20 -0
- package/dist/entity/normalize.js.map +1 -0
- package/dist/eval/harness.d.ts +96 -0
- package/dist/eval/harness.js +119 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/metrics.d.ts +23 -0
- package/dist/eval/metrics.js +44 -0
- package/dist/eval/metrics.js.map +1 -0
- package/dist/log/correlation.d.ts +24 -0
- package/dist/log/correlation.js +33 -0
- package/dist/log/correlation.js.map +1 -0
- package/dist/log/logger.d.ts +38 -0
- package/dist/log/logger.js +129 -0
- package/dist/log/logger.js.map +1 -0
- package/dist/log/scrub.d.ts +33 -0
- package/dist/log/scrub.js +91 -0
- package/dist/log/scrub.js.map +1 -0
- package/dist/mcp/server.d.ts +36 -0
- package/dist/mcp/server.js +553 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/memory-tool/adapter.d.ts +73 -0
- package/dist/memory-tool/adapter.js +269 -0
- package/dist/memory-tool/adapter.js.map +1 -0
- package/dist/pipeline/errors.d.ts +21 -0
- package/dist/pipeline/errors.js +34 -0
- package/dist/pipeline/errors.js.map +1 -0
- package/dist/pipeline/failure-classifier.d.ts +13 -0
- package/dist/pipeline/failure-classifier.js +72 -0
- package/dist/pipeline/failure-classifier.js.map +1 -0
- package/dist/pipeline/handler-ctx-ext.d.ts +23 -0
- package/dist/pipeline/handler-ctx-ext.js +19 -0
- package/dist/pipeline/handler-ctx-ext.js.map +1 -0
- package/dist/pipeline/handler.d.ts +20 -0
- package/dist/pipeline/handler.js +2 -0
- package/dist/pipeline/handler.js.map +1 -0
- package/dist/pipeline/handlers/cleanup.d.ts +14 -0
- package/dist/pipeline/handlers/cleanup.js +47 -0
- package/dist/pipeline/handlers/cleanup.js.map +1 -0
- package/dist/pipeline/handlers/consolidate.d.ts +8 -0
- package/dist/pipeline/handlers/consolidate.js +23 -0
- package/dist/pipeline/handlers/consolidate.js.map +1 -0
- package/dist/pipeline/handlers/distill-events.d.ts +15 -0
- package/dist/pipeline/handlers/distill-events.js +134 -0
- package/dist/pipeline/handlers/distill-events.js.map +1 -0
- package/dist/pipeline/handlers/distill.d.ts +17 -0
- package/dist/pipeline/handlers/distill.js +110 -0
- package/dist/pipeline/handlers/distill.js.map +1 -0
- package/dist/pipeline/handlers/reembed.d.ts +10 -0
- package/dist/pipeline/handlers/reembed.js +34 -0
- package/dist/pipeline/handlers/reembed.js.map +1 -0
- package/dist/pipeline/job-repo.d.ts +86 -0
- package/dist/pipeline/job-repo.js +168 -0
- package/dist/pipeline/job-repo.js.map +1 -0
- package/dist/pipeline/mock-providers.d.ts +49 -0
- package/dist/pipeline/mock-providers.js +175 -0
- package/dist/pipeline/mock-providers.js.map +1 -0
- package/dist/pipeline/registry.d.ts +15 -0
- package/dist/pipeline/registry.js +20 -0
- package/dist/pipeline/registry.js.map +1 -0
- package/dist/pipeline/worker.d.ts +41 -0
- package/dist/pipeline/worker.js +167 -0
- package/dist/pipeline/worker.js.map +1 -0
- package/dist/providers/embed/azure-openai.d.ts +25 -0
- package/dist/providers/embed/azure-openai.js +138 -0
- package/dist/providers/embed/azure-openai.js.map +1 -0
- package/dist/providers/embed/ollama.d.ts +17 -0
- package/dist/providers/embed/ollama.js +106 -0
- package/dist/providers/embed/ollama.js.map +1 -0
- package/dist/providers/index.d.ts +19 -0
- package/dist/providers/index.js +72 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llm/azure-openai.d.ts +20 -0
- package/dist/providers/llm/azure-openai.js +135 -0
- package/dist/providers/llm/azure-openai.js.map +1 -0
- package/dist/providers/llm/ollama.d.ts +13 -0
- package/dist/providers/llm/ollama.js +113 -0
- package/dist/providers/llm/ollama.js.map +1 -0
- package/dist/providers/llm/pricing.d.ts +21 -0
- package/dist/providers/llm/pricing.js +22 -0
- package/dist/providers/llm/pricing.js.map +1 -0
- package/dist/recall/pack.d.ts +32 -0
- package/dist/recall/pack.js +90 -0
- package/dist/recall/pack.js.map +1 -0
- package/dist/recall/policy.d.ts +39 -0
- package/dist/recall/policy.js +96 -0
- package/dist/recall/policy.js.map +1 -0
- package/dist/redact/detectors.d.ts +20 -0
- package/dist/redact/detectors.js +85 -0
- package/dist/redact/detectors.js.map +1 -0
- package/dist/redact/entropy.d.ts +24 -0
- package/dist/redact/entropy.js +77 -0
- package/dist/redact/entropy.js.map +1 -0
- package/dist/redact/index.d.ts +47 -0
- package/dist/redact/index.js +165 -0
- package/dist/redact/index.js.map +1 -0
- package/dist/search/fuse.d.ts +108 -0
- package/dist/search/fuse.js +135 -0
- package/dist/search/fuse.js.map +1 -0
- package/dist/search/query.d.ts +28 -0
- package/dist/search/query.js +70 -0
- package/dist/search/query.js.map +1 -0
- package/dist/search/search.d.ts +164 -0
- package/dist/search/search.js +310 -0
- package/dist/search/search.js.map +1 -0
- package/dist/server/app.d.ts +17 -0
- package/dist/server/app.js +133 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/health-state.d.ts +29 -0
- package/dist/server/health-state.js +28 -0
- package/dist/server/health-state.js.map +1 -0
- package/dist/server/lib/network.d.ts +12 -0
- package/dist/server/lib/network.js +16 -0
- package/dist/server/lib/network.js.map +1 -0
- package/dist/server/lib/score-contract.d.ts +36 -0
- package/dist/server/lib/score-contract.js +54 -0
- package/dist/server/lib/score-contract.js.map +1 -0
- package/dist/server/lib/stable-stringify.d.ts +10 -0
- package/dist/server/lib/stable-stringify.js +27 -0
- package/dist/server/lib/stable-stringify.js.map +1 -0
- package/dist/server/lib/wire-meta.d.ts +7 -0
- package/dist/server/lib/wire-meta.js +29 -0
- package/dist/server/lib/wire-meta.js.map +1 -0
- package/dist/server/queries/dashboard.d.ts +142 -0
- package/dist/server/queries/dashboard.js +166 -0
- package/dist/server/queries/dashboard.js.map +1 -0
- package/dist/server/routes/consolidation.d.ts +14 -0
- package/dist/server/routes/consolidation.js +67 -0
- package/dist/server/routes/consolidation.js.map +1 -0
- package/dist/server/routes/dashboard-api-html.d.ts +15 -0
- package/dist/server/routes/dashboard-api-html.js +144 -0
- package/dist/server/routes/dashboard-api-html.js.map +1 -0
- package/dist/server/routes/dashboard-consolidation-html.d.ts +26 -0
- package/dist/server/routes/dashboard-consolidation-html.js +202 -0
- package/dist/server/routes/dashboard-consolidation-html.js.map +1 -0
- package/dist/server/routes/dashboard-html.d.ts +15 -0
- package/dist/server/routes/dashboard-html.js +365 -0
- package/dist/server/routes/dashboard-html.js.map +1 -0
- package/dist/server/routes/dashboard-jobs-html.d.ts +18 -0
- package/dist/server/routes/dashboard-jobs-html.js +186 -0
- package/dist/server/routes/dashboard-jobs-html.js.map +1 -0
- package/dist/server/routes/dashboard-search-html.d.ts +18 -0
- package/dist/server/routes/dashboard-search-html.js +189 -0
- package/dist/server/routes/dashboard-search-html.js.map +1 -0
- package/dist/server/routes/dashboard.d.ts +19 -0
- package/dist/server/routes/dashboard.js +68 -0
- package/dist/server/routes/dashboard.js.map +1 -0
- package/dist/server/routes/digest.d.ts +9 -0
- package/dist/server/routes/digest.js +37 -0
- package/dist/server/routes/digest.js.map +1 -0
- package/dist/server/routes/entities.d.ts +12 -0
- package/dist/server/routes/entities.js +46 -0
- package/dist/server/routes/entities.js.map +1 -0
- package/dist/server/routes/health.d.ts +14 -0
- package/dist/server/routes/health.js +100 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/ingest.d.ts +209 -0
- package/dist/server/routes/ingest.js +454 -0
- package/dist/server/routes/ingest.js.map +1 -0
- package/dist/server/routes/lifecycle.d.ts +21 -0
- package/dist/server/routes/lifecycle.js +132 -0
- package/dist/server/routes/lifecycle.js.map +1 -0
- package/dist/server/routes/mcp.d.ts +15 -0
- package/dist/server/routes/mcp.js +36 -0
- package/dist/server/routes/mcp.js.map +1 -0
- package/dist/server/routes/memory-tool.d.ts +14 -0
- package/dist/server/routes/memory-tool.js +28 -0
- package/dist/server/routes/memory-tool.js.map +1 -0
- package/dist/server/routes/memory.d.ts +7 -0
- package/dist/server/routes/memory.js +19 -0
- package/dist/server/routes/memory.js.map +1 -0
- package/dist/server/routes/recall.d.ts +15 -0
- package/dist/server/routes/recall.js +74 -0
- package/dist/server/routes/recall.js.map +1 -0
- package/dist/server/routes/search.d.ts +12 -0
- package/dist/server/routes/search.js +203 -0
- package/dist/server/routes/search.js.map +1 -0
- package/dist/server/routes/version.d.ts +2 -0
- package/dist/server/routes/version.js +11 -0
- package/dist/server/routes/version.js.map +1 -0
- package/dist/server/routes/why.d.ts +9 -0
- package/dist/server/routes/why.js +38 -0
- package/dist/server/routes/why.js.map +1 -0
- package/dist/service/index.d.ts +10 -0
- package/dist/service/index.js +25 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/install-flow.d.ts +18 -0
- package/dist/service/install-flow.js +47 -0
- package/dist/service/install-flow.js.map +1 -0
- package/dist/service/instance-lock.d.ts +26 -0
- package/dist/service/instance-lock.js +150 -0
- package/dist/service/instance-lock.js.map +1 -0
- package/dist/service/launchd.d.ts +11 -0
- package/dist/service/launchd.js +196 -0
- package/dist/service/launchd.js.map +1 -0
- package/dist/service/schtasks.d.ts +31 -0
- package/dist/service/schtasks.js +274 -0
- package/dist/service/schtasks.js.map +1 -0
- package/dist/service/shim.d.ts +21 -0
- package/dist/service/shim.js +80 -0
- package/dist/service/shim.js.map +1 -0
- package/dist/service/systemd.d.ts +11 -0
- package/dist/service/systemd.js +150 -0
- package/dist/service/systemd.js.map +1 -0
- package/dist/service/task-xml.d.ts +36 -0
- package/dist/service/task-xml.js +91 -0
- package/dist/service/task-xml.js.map +1 -0
- package/dist/service/types.d.ts +47 -0
- package/dist/service/types.js +2 -0
- package/dist/service/types.js.map +1 -0
- package/dist/storage/archival.d.ts +29 -0
- package/dist/storage/archival.js +47 -0
- package/dist/storage/archival.js.map +1 -0
- package/dist/storage/bearer-keystore.d.ts +34 -0
- package/dist/storage/bearer-keystore.js +75 -0
- package/dist/storage/bearer-keystore.js.map +1 -0
- package/dist/storage/db.d.ts +37 -0
- package/dist/storage/db.js +92 -0
- package/dist/storage/db.js.map +1 -0
- package/dist/storage/entities.d.ts +71 -0
- package/dist/storage/entities.js +141 -0
- package/dist/storage/entities.js.map +1 -0
- package/dist/storage/ingest-idempotency.d.ts +26 -0
- package/dist/storage/ingest-idempotency.js +29 -0
- package/dist/storage/ingest-idempotency.js.map +1 -0
- package/dist/storage/keystore.d.ts +64 -0
- package/dist/storage/keystore.js +194 -0
- package/dist/storage/keystore.js.map +1 -0
- package/dist/storage/memories.d.ts +51 -0
- package/dist/storage/memories.js +67 -0
- package/dist/storage/memories.js.map +1 -0
- package/dist/storage/memory-events.d.ts +145 -0
- package/dist/storage/memory-events.js +287 -0
- package/dist/storage/memory-events.js.map +1 -0
- package/dist/storage/migrate-encrypt.d.ts +16 -0
- package/dist/storage/migrate-encrypt.js +121 -0
- package/dist/storage/migrate-encrypt.js.map +1 -0
- package/dist/storage/migrate.d.ts +27 -0
- package/dist/storage/migrate.js +105 -0
- package/dist/storage/migrate.js.map +1 -0
- package/dist/storage/redaction-log.d.ts +18 -0
- package/dist/storage/redaction-log.js +27 -0
- package/dist/storage/redaction-log.js.map +1 -0
- package/dist/storage/usefulness.d.ts +115 -0
- package/dist/storage/usefulness.js +203 -0
- package/dist/storage/usefulness.js.map +1 -0
- package/dist/sync/conflict-resolve.d.ts +26 -0
- package/dist/sync/conflict-resolve.js +139 -0
- package/dist/sync/conflict-resolve.js.map +1 -0
- package/dist/sync/puller.d.ts +115 -0
- package/dist/sync/puller.js +173 -0
- package/dist/sync/puller.js.map +1 -0
- package/dist/sync/shipper.d.ts +112 -0
- package/dist/sync/shipper.js +189 -0
- package/dist/sync/shipper.js.map +1 -0
- package/dist/tag-hygiene/backfill.d.ts +50 -0
- package/dist/tag-hygiene/backfill.js +117 -0
- package/dist/tag-hygiene/backfill.js.map +1 -0
- package/dist/tag-hygiene/derive-repo.d.ts +9 -0
- package/dist/tag-hygiene/derive-repo.js +19 -0
- package/dist/tag-hygiene/derive-repo.js.map +1 -0
- package/dist/tag-hygiene/tier2-infer.d.ts +28 -0
- package/dist/tag-hygiene/tier2-infer.js +72 -0
- package/dist/tag-hygiene/tier2-infer.js.map +1 -0
- package/dist/vector/sqlite-vec.d.ts +16 -0
- package/dist/vector/sqlite-vec.js +49 -0
- package/dist/vector/sqlite-vec.js.map +1 -0
- package/migrations/001-init.sql +117 -0
- package/migrations/002-wire-v1.sql +16 -0
- package/migrations/003-expand-memory-types.sql +81 -0
- package/migrations/004-provenance.sql +4 -0
- package/migrations/005-security.sql +12 -0
- package/migrations/006-atom-v3.sql +28 -0
- package/migrations/007-memory-events.sql +30 -0
- package/migrations/008-consolidation.sql +31 -0
- package/migrations/009-tag-hygiene.sql +13 -0
- package/migrations/010-sync-pull.sql +53 -0
- package/migrations/011-embed-dim-migration.sql +28 -0
- package/migrations/012-entities.sql +36 -0
- package/migrations/013-archival.sql +50 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/config/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidation — formation pipeline stage 9 (ADR-004, Wave 4b).
|
|
3
|
+
*
|
|
4
|
+
* Periodic offline pass over accumulated atoms, per (repo, type) group:
|
|
5
|
+
*
|
|
6
|
+
* - similarity >= mergeThreshold → auto merge-as-supersede. Non-destructive
|
|
7
|
+
* by construction (architecture-review W4): the loser is superseded by the
|
|
8
|
+
* winner via the event log, and the winner's derived_from gains the
|
|
9
|
+
* loser's id — bitemporal history keeps the original readable forever.
|
|
10
|
+
* - proposeThreshold <= similarity < mergeThreshold → propose-only row in
|
|
11
|
+
* consolidation_proposals; the user confirms via REST. Nothing changes
|
|
12
|
+
* until they do (strategy Pass 6 A4).
|
|
13
|
+
*
|
|
14
|
+
* v1 is deterministic: similarity is cosine over the stored embeddings, no
|
|
15
|
+
* LLM call. The second-order abstraction + contradiction detection passes
|
|
16
|
+
* (ADR-004 stage 9 b/c) are v1.x — they will reuse the same proposal queue.
|
|
17
|
+
*
|
|
18
|
+
* Winner selection: higher usefulness score wins (ADR-010), then higher
|
|
19
|
+
* importance, then the newer atom.
|
|
20
|
+
*/
|
|
21
|
+
import type { DB } from '../storage/db.js';
|
|
22
|
+
export interface ConsolidateOpts {
|
|
23
|
+
/** Cosine similarity at/above which a pair auto-merges. */
|
|
24
|
+
mergeThreshold?: number;
|
|
25
|
+
/** Cosine similarity at/above which a pair becomes a proposal. */
|
|
26
|
+
proposeThreshold?: number;
|
|
27
|
+
/** Groups larger than this are skipped (O(n²) guard) and reported. */
|
|
28
|
+
maxGroupSize?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Auto-merge pairs whose normalized text is equal or a strict subset of
|
|
31
|
+
* the other's, instead of queueing a manual proposal ("Port 7777 is the
|
|
32
|
+
* default" vs "port 7777 is the default."). The containing (superset)
|
|
33
|
+
* text always wins so no active information is lost — the shorter
|
|
34
|
+
* variant survives in bitemporal history like any supersede. Also
|
|
35
|
+
* auto-accepts EXISTING pending proposals whose loser text is contained
|
|
36
|
+
* in the winner's. Default true.
|
|
37
|
+
*/
|
|
38
|
+
autoMergeContained?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface ConsolidateSummary {
|
|
41
|
+
groupsScanned: number;
|
|
42
|
+
groupsSkipped: Array<{
|
|
43
|
+
repo: string | null;
|
|
44
|
+
type: string;
|
|
45
|
+
size: number;
|
|
46
|
+
}>;
|
|
47
|
+
merged: Array<{
|
|
48
|
+
winner: string;
|
|
49
|
+
loser: string;
|
|
50
|
+
similarity: number;
|
|
51
|
+
reason?: 'similarity' | 'contained';
|
|
52
|
+
}>;
|
|
53
|
+
proposed: Array<{
|
|
54
|
+
winner: string;
|
|
55
|
+
loser: string;
|
|
56
|
+
similarity: number;
|
|
57
|
+
}>;
|
|
58
|
+
/** Pending proposal ids auto-accepted by the containment sweep. */
|
|
59
|
+
autoAcceptedProposals: string[];
|
|
60
|
+
/** Pending proposal ids auto-rejected as stale (an atom no longer valid). */
|
|
61
|
+
staleRejectedProposals: string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Normalization for the containment rule: lowercase, strip backticks/quotes
|
|
65
|
+
* and punctuation, collapse whitespace. Deliberately aggressive — it only
|
|
66
|
+
* gates WHICH near-duplicates skip the manual queue, never what merging does.
|
|
67
|
+
*/
|
|
68
|
+
export declare function normalizeForContainment(text: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* 'a-contains-b' | 'b-contains-a' | 'equal' | null. Guards trivially short
|
|
71
|
+
* texts (a 3-char normalized string is contained in almost anything).
|
|
72
|
+
*/
|
|
73
|
+
export declare function containment(aText: string, bText: string): 'a-contains-b' | 'b-contains-a' | 'equal' | null;
|
|
74
|
+
/**
|
|
75
|
+
* Merge-as-supersede: loser superseded by winner (event log + valid_to +
|
|
76
|
+
* memory_corrected usefulness signal, all via MemoryEventRepo.supersede),
|
|
77
|
+
* plus lineage — winner.derived_from gains the loser id. One transaction.
|
|
78
|
+
*/
|
|
79
|
+
export declare function mergeAsSupersede(db: DB, winnerId: string, loserId: string): void;
|
|
80
|
+
export declare function runConsolidation(db: DB, opts?: ConsolidateOpts): ConsolidateSummary;
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../src/consolidate/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA2C9C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,KAAa;IACtD,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,cAAc,CAAC;IACzC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,cAAc,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,CAAe,EAAE,CAAe;IAC9C,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,CAAC;QAC7C,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAM,EAAE,QAAgB,EAAE,OAAe;IACxE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC;aACrE,GAAG,CAAC,QAAQ,CAAoC,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC;aAC5E,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,EAAE,CAAC;AACP,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,EAAM;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;GAQvB,CAAC,CAAC,GAAG,EAIJ,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,oGAAoG,CACrG,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC,CAAC,mBAAmB,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC1C,kEAAkE;gBAClE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAM,EAAE,OAAwB,EAAE;IACjE,oEAAoE;IACpE,iEAAiE;IACjE,kEAAkE;IAClE,8DAA8D;IAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;IAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAE3D,MAAM,OAAO,GAAuB;QAClC,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;QAC7D,qBAAqB,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE;KACtD,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/C,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAAC;IACvD,CAAC;IAED,wEAAwE;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMxB,CAAC,CAAC,GAAG,EAAe,CAAC;IAEtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAY,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvF,SAAS;QACX,CAAC;QACD,OAAO,CAAC,aAAa,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAsC,CAAC;YACnF,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,YAAY,CAC7B,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAC7E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAY,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAY,CAAC;gBACvD,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC3E,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;oBAAE,SAAS;gBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,GAAG,GAAG,gBAAgB;oBAAE,SAAS;gBAErC,qDAAqD;gBACrD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC;gBACzE,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;oBACrD,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,MAAM,GAAG,CAAC,CAAC;oBAAC,KAAK,GAAG,CAAC,CAAC;gBACxB,CAAC;gBAED,gEAAgE;gBAChE,mEAAmE;gBACnE,8DAA8D;gBAC9D,wDAAwD;gBACxD,IAAI,kBAAkB,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;4BAAC,MAAM,GAAG,CAAC,CAAC;4BAAC,KAAK,GAAG,CAAC,CAAC;wBAAC,CAAC;6BAC/C,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;4BAAC,MAAM,GAAG,CAAC,CAAC;4BAAC,KAAK,GAAG,CAAC,CAAC;wBAAC,CAAC;wBACzD,2CAA2C;wBAC3C,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC1C,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;wBAClG,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;oBAC1B,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC1C,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;WAS3B,CAAC,CAAC,GAAG,CACJ,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAClD,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CACzC,CAAC;oBACF,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;wBACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidation proposal queue (ADR-004 stage 9, propose-only flow).
|
|
3
|
+
* The consolidation job writes pending rows; the user resolves them here.
|
|
4
|
+
* Accepting a merge proposal executes the same non-destructive
|
|
5
|
+
* merge-as-supersede path the auto-merges use.
|
|
6
|
+
*/
|
|
7
|
+
import type { DB } from '../storage/db.js';
|
|
8
|
+
export interface ConsolidationProposal {
|
|
9
|
+
id: string;
|
|
10
|
+
kind: 'merge' | 'contradiction';
|
|
11
|
+
winner_id: string;
|
|
12
|
+
loser_id: string;
|
|
13
|
+
similarity: number;
|
|
14
|
+
status: 'pending' | 'accepted' | 'rejected';
|
|
15
|
+
created_at: number;
|
|
16
|
+
resolved_at: number | null;
|
|
17
|
+
}
|
|
18
|
+
export declare class ProposalNotFoundError extends Error {
|
|
19
|
+
constructor(id: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class ProposalAlreadyResolvedError extends Error {
|
|
22
|
+
constructor(id: string, status: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class ProposalRepo {
|
|
25
|
+
private db;
|
|
26
|
+
constructor(db: DB);
|
|
27
|
+
list(status?: ConsolidationProposal['status']): ConsolidationProposal[];
|
|
28
|
+
get(id: string): ConsolidationProposal | null;
|
|
29
|
+
/** Accept: execute the merge, mark accepted — one transaction. */
|
|
30
|
+
accept(id: string): ConsolidationProposal;
|
|
31
|
+
/** Reject: mark rejected, nothing else changes. */
|
|
32
|
+
reject(id: string): ConsolidationProposal;
|
|
33
|
+
private mustBePending;
|
|
34
|
+
private resolve;
|
|
35
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidation proposal queue (ADR-004 stage 9, propose-only flow).
|
|
3
|
+
* The consolidation job writes pending rows; the user resolves them here.
|
|
4
|
+
* Accepting a merge proposal executes the same non-destructive
|
|
5
|
+
* merge-as-supersede path the auto-merges use.
|
|
6
|
+
*/
|
|
7
|
+
import { mergeAsSupersede } from './consolidate.js';
|
|
8
|
+
export class ProposalNotFoundError extends Error {
|
|
9
|
+
constructor(id) {
|
|
10
|
+
super(`consolidation proposal not found: ${id}`);
|
|
11
|
+
this.name = 'ProposalNotFoundError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class ProposalAlreadyResolvedError extends Error {
|
|
15
|
+
constructor(id, status) {
|
|
16
|
+
super(`consolidation proposal ${id} is already ${status}`);
|
|
17
|
+
this.name = 'ProposalAlreadyResolvedError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class ProposalRepo {
|
|
21
|
+
db;
|
|
22
|
+
constructor(db) {
|
|
23
|
+
this.db = db;
|
|
24
|
+
}
|
|
25
|
+
list(status) {
|
|
26
|
+
if (status) {
|
|
27
|
+
return this.db.prepare('SELECT * FROM consolidation_proposals WHERE status = ? ORDER BY created_at ASC').all(status);
|
|
28
|
+
}
|
|
29
|
+
return this.db.prepare('SELECT * FROM consolidation_proposals ORDER BY created_at ASC').all();
|
|
30
|
+
}
|
|
31
|
+
get(id) {
|
|
32
|
+
const row = this.db.prepare('SELECT * FROM consolidation_proposals WHERE id = ?')
|
|
33
|
+
.get(id);
|
|
34
|
+
return row ?? null;
|
|
35
|
+
}
|
|
36
|
+
/** Accept: execute the merge, mark accepted — one transaction. */
|
|
37
|
+
accept(id) {
|
|
38
|
+
const tx = this.db.transaction(() => {
|
|
39
|
+
const p = this.mustBePending(id);
|
|
40
|
+
mergeAsSupersede(this.db, p.winner_id, p.loser_id);
|
|
41
|
+
return this.resolve(p.id, 'accepted');
|
|
42
|
+
});
|
|
43
|
+
return tx();
|
|
44
|
+
}
|
|
45
|
+
/** Reject: mark rejected, nothing else changes. */
|
|
46
|
+
reject(id) {
|
|
47
|
+
const tx = this.db.transaction(() => {
|
|
48
|
+
const p = this.mustBePending(id);
|
|
49
|
+
return this.resolve(p.id, 'rejected');
|
|
50
|
+
});
|
|
51
|
+
return tx();
|
|
52
|
+
}
|
|
53
|
+
mustBePending(id) {
|
|
54
|
+
const p = this.get(id);
|
|
55
|
+
if (!p)
|
|
56
|
+
throw new ProposalNotFoundError(id);
|
|
57
|
+
if (p.status !== 'pending')
|
|
58
|
+
throw new ProposalAlreadyResolvedError(id, p.status);
|
|
59
|
+
return p;
|
|
60
|
+
}
|
|
61
|
+
resolve(id, status) {
|
|
62
|
+
this.db.prepare('UPDATE consolidation_proposals SET status = ?, resolved_at = ? WHERE id = ?').run(status, Date.now(), id);
|
|
63
|
+
return this.get(id);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=proposals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/consolidate/proposals.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAapD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,EAAU;QACpB,KAAK,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YAAY,EAAU,EAAE,MAAc;QACpC,KAAK,CAAC,0BAA0B,EAAE,eAAe,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,EAAM;QAAN,OAAE,GAAF,EAAE,CAAI;IAAG,CAAC;IAE9B,IAAI,CAAC,MAAwC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,gFAAgF,CACjF,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,+DAA+D,CAChE,CAAC,GAAG,EAA6B,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC;aAC9E,GAAG,CAAC,EAAE,CAAsC,CAAC;QAChD,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,EAAU;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAA0B,EAAE;YACzD,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,EAAU;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAA0B,EAAE;YACzD,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,EAAU;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,4BAA4B,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACjF,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,OAAO,CAAC,EAAU,EAAE,MAA+B;QACzD,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,6EAA6E,CAC9E,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAA0B,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory row -> astramem/atom@1 wire shape (ADR-001, contracts/schemas/atom.v1.schema.json).
|
|
3
|
+
*
|
|
4
|
+
* astramem-local's storage columns are the pragmatic v1 form: flat
|
|
5
|
+
* provenance fields (repo/project/agent/session_id), epoch-ms timestamps,
|
|
6
|
+
* and a single evidence excerpt string. The wire contract nests provenance
|
|
7
|
+
* and uses ISO 8601 timestamps to match the capture envelope precedent
|
|
8
|
+
* (docs/capture-protocol.md) and to stay storage-engine-agnostic for the
|
|
9
|
+
* cloud (.NET/Postgres) consumer. This mapper is the one place that
|
|
10
|
+
* reconciles the two shapes — see contracts/README.md "Evidence
|
|
11
|
+
* reconciliation" for why evidence is left as-is (string) rather than
|
|
12
|
+
* upgraded to the array-of-refs form here.
|
|
13
|
+
*/
|
|
14
|
+
import type { Memory } from './memory.js';
|
|
15
|
+
export interface AtomWireV1 {
|
|
16
|
+
schema: 'astramem/atom@1';
|
|
17
|
+
id: string;
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
evidence: string | Array<{
|
|
21
|
+
transcript_id: string;
|
|
22
|
+
span?: [number, number];
|
|
23
|
+
}>;
|
|
24
|
+
confidence: number;
|
|
25
|
+
importance: number;
|
|
26
|
+
provenance: {
|
|
27
|
+
tool: string | null;
|
|
28
|
+
session_id: string | null;
|
|
29
|
+
repo: string | null;
|
|
30
|
+
project: string | null;
|
|
31
|
+
extractor: string | null;
|
|
32
|
+
};
|
|
33
|
+
valid_from: string;
|
|
34
|
+
valid_to: string | null;
|
|
35
|
+
superseded_by: string | null;
|
|
36
|
+
derived_from: string[] | null;
|
|
37
|
+
scope: string;
|
|
38
|
+
content_hash: string;
|
|
39
|
+
entities: string[];
|
|
40
|
+
created_at: string;
|
|
41
|
+
updated_at: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Serialize a local `memories` row into the astramem/atom@1 wire shape.
|
|
45
|
+
* Pure function — no I/O, no DB access — so it is trivially unit-testable
|
|
46
|
+
* and reusable from the (future) sync shipper (Wave 3d).
|
|
47
|
+
*/
|
|
48
|
+
export declare function toAtomWireV1(memory: Memory): AtomWireV1;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory row -> astramem/atom@1 wire shape (ADR-001, contracts/schemas/atom.v1.schema.json).
|
|
3
|
+
*
|
|
4
|
+
* astramem-local's storage columns are the pragmatic v1 form: flat
|
|
5
|
+
* provenance fields (repo/project/agent/session_id), epoch-ms timestamps,
|
|
6
|
+
* and a single evidence excerpt string. The wire contract nests provenance
|
|
7
|
+
* and uses ISO 8601 timestamps to match the capture envelope precedent
|
|
8
|
+
* (docs/capture-protocol.md) and to stay storage-engine-agnostic for the
|
|
9
|
+
* cloud (.NET/Postgres) consumer. This mapper is the one place that
|
|
10
|
+
* reconciles the two shapes — see contracts/README.md "Evidence
|
|
11
|
+
* reconciliation" for why evidence is left as-is (string) rather than
|
|
12
|
+
* upgraded to the array-of-refs form here.
|
|
13
|
+
*/
|
|
14
|
+
import { PKG_VERSION } from '../server/lib/wire-meta.js';
|
|
15
|
+
/** epoch ms -> ISO 8601 string. */
|
|
16
|
+
function toIso(ms) {
|
|
17
|
+
return new Date(ms).toISOString();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Serialize a local `memories` row into the astramem/atom@1 wire shape.
|
|
21
|
+
* Pure function — no I/O, no DB access — so it is trivially unit-testable
|
|
22
|
+
* and reusable from the (future) sync shipper (Wave 3d).
|
|
23
|
+
*/
|
|
24
|
+
export function toAtomWireV1(memory) {
|
|
25
|
+
return {
|
|
26
|
+
schema: 'astramem/atom@1',
|
|
27
|
+
id: memory.id,
|
|
28
|
+
type: memory.type,
|
|
29
|
+
text: memory.text,
|
|
30
|
+
// Local v1 form: evidence is stored as a plain excerpt string (or absent).
|
|
31
|
+
// Empty-string fallback keeps the field non-optional per the schema's
|
|
32
|
+
// `evidence` requirement ("receipts — never optional", ADR-001) even for
|
|
33
|
+
// pre-AM-1 rows that predate the evidence column.
|
|
34
|
+
evidence: memory.evidence ?? '',
|
|
35
|
+
confidence: memory.confidence,
|
|
36
|
+
importance: memory.importance,
|
|
37
|
+
provenance: {
|
|
38
|
+
tool: memory.agent,
|
|
39
|
+
session_id: memory.session_id,
|
|
40
|
+
repo: memory.repo,
|
|
41
|
+
project: memory.project,
|
|
42
|
+
extractor: `astramem-local@${PKG_VERSION}`,
|
|
43
|
+
},
|
|
44
|
+
valid_from: toIso(memory.valid_from),
|
|
45
|
+
valid_to: memory.valid_to !== null ? toIso(memory.valid_to) : null,
|
|
46
|
+
superseded_by: memory.superseded_by,
|
|
47
|
+
derived_from: memory.derived_from,
|
|
48
|
+
scope: memory.scope,
|
|
49
|
+
content_hash: memory.hash,
|
|
50
|
+
entities: [],
|
|
51
|
+
created_at: toIso(memory.created_at),
|
|
52
|
+
updated_at: toIso(memory.updated_at),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=atom-wire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atom-wire.js","sourceRoot":"","sources":["../../src/contracts/atom-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA4BzD,mCAAmC;AACnC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,kDAAkD;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,kBAAkB,WAAW,EAAE;SAC3C;QACD,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QAClE,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACpC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface EmbedHealth {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
model: string;
|
|
4
|
+
dim: number;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Default/legacy embedding dimension (FEAT-409). This is the ONE source of
|
|
9
|
+
* truth every coordinated surface derives from: config default
|
|
10
|
+
* (config.ts), embed providers (ollama.ts / azure-openai.ts `dim` ctor
|
|
11
|
+
* arg), the vec schema (migrations/001-init.sql's `__EMBED_DIM__`
|
|
12
|
+
* placeholder, substituted by storage/migrate.ts), the boot-time dim
|
|
13
|
+
* preflight (doctor/probes/embed-probe.ts), and the eval/mock providers.
|
|
14
|
+
*
|
|
15
|
+
* Matches both `mxbai-embed-large` (Ollama default, native 1024) and
|
|
16
|
+
* `text-embedding-3-*` (Azure, configured via `dimensions: 1024`).
|
|
17
|
+
*
|
|
18
|
+
* Changing `config.embedding.dim` for a FRESH database is a plain config
|
|
19
|
+
* edit — migrate() bakes the configured dim into `memories_vec` at
|
|
20
|
+
* creation. Changing it for an EXISTING database with live data requires
|
|
21
|
+
* the resumable re-embed procedure (`astramem-local reembed-dim`, migration
|
|
22
|
+
* 011 / docs/embed-dim-migration.md) because sqlite-vec's vec0 virtual
|
|
23
|
+
* table fixes its dim at CREATE TABLE time — there is no ALTER for it.
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_EMBED_DIM = 1024;
|
|
26
|
+
/**
|
|
27
|
+
* Embedding provider. `dim` is provider-instance-scoped (constructor arg,
|
|
28
|
+
* defaulting to DEFAULT_EMBED_DIM) rather than a fixed literal — FEAT-409
|
|
29
|
+
* parameterized what was a v1 system-wide invariant. All memories embedded
|
|
30
|
+
* by one provider instance must share its `dim`; switching providers/models
|
|
31
|
+
* (even at the same dim) still requires a re-embed pass since different
|
|
32
|
+
* models are different geometric spaces. Doctor enforces the
|
|
33
|
+
* configured-vs-actual dim match at startup (embed-probe.ts).
|
|
34
|
+
*/
|
|
35
|
+
export interface EmbedProvider {
|
|
36
|
+
readonly name: 'ollama' | 'azure-openai';
|
|
37
|
+
readonly model: string;
|
|
38
|
+
readonly dim: number;
|
|
39
|
+
embed(texts: string[]): Promise<Float32Array[]>;
|
|
40
|
+
health(): Promise<EmbedHealth>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default/legacy embedding dimension (FEAT-409). This is the ONE source of
|
|
3
|
+
* truth every coordinated surface derives from: config default
|
|
4
|
+
* (config.ts), embed providers (ollama.ts / azure-openai.ts `dim` ctor
|
|
5
|
+
* arg), the vec schema (migrations/001-init.sql's `__EMBED_DIM__`
|
|
6
|
+
* placeholder, substituted by storage/migrate.ts), the boot-time dim
|
|
7
|
+
* preflight (doctor/probes/embed-probe.ts), and the eval/mock providers.
|
|
8
|
+
*
|
|
9
|
+
* Matches both `mxbai-embed-large` (Ollama default, native 1024) and
|
|
10
|
+
* `text-embedding-3-*` (Azure, configured via `dimensions: 1024`).
|
|
11
|
+
*
|
|
12
|
+
* Changing `config.embedding.dim` for a FRESH database is a plain config
|
|
13
|
+
* edit — migrate() bakes the configured dim into `memories_vec` at
|
|
14
|
+
* creation. Changing it for an EXISTING database with live data requires
|
|
15
|
+
* the resumable re-embed procedure (`astramem-local reembed-dim`, migration
|
|
16
|
+
* 011 / docs/embed-dim-migration.md) because sqlite-vec's vec0 virtual
|
|
17
|
+
* table fixes its dim at CREATE TABLE time — there is no ALTER for it.
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_EMBED_DIM = 1024;
|
|
20
|
+
//# sourceMappingURL=embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/contracts/embed.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export type JobState = 'pending' | 'running' | 'completed' | 'failed' | 'poison' | 'paused';
|
|
3
|
+
export type JobKind = 'distill' | 'reembed' | 'cleanup' | 'distill-events' | 'consolidate';
|
|
4
|
+
export declare const DistillPayloadSchema: z.ZodObject<{
|
|
5
|
+
kind: z.ZodLiteral<"distill">;
|
|
6
|
+
transcript_id: z.ZodString;
|
|
7
|
+
session_id: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
kind: "distill";
|
|
10
|
+
transcript_id: string;
|
|
11
|
+
session_id: string;
|
|
12
|
+
}, {
|
|
13
|
+
kind: "distill";
|
|
14
|
+
transcript_id: string;
|
|
15
|
+
session_id: string;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* ADR-008 events capture kind — pre-typed atom candidates (runner-plugin
|
|
19
|
+
* grades/lessons/review verdicts) that skip pipeline stages 1-5 and enter
|
|
20
|
+
* at reduce (stage 6). Same payload shape as DistillPayloadSchema; the
|
|
21
|
+
* `kind` discriminator routes the job to distillEventsHandler instead.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DistillEventsPayloadSchema: z.ZodObject<{
|
|
24
|
+
kind: z.ZodLiteral<"distill-events">;
|
|
25
|
+
transcript_id: z.ZodString;
|
|
26
|
+
session_id: z.ZodString;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
kind: "distill-events";
|
|
29
|
+
transcript_id: string;
|
|
30
|
+
session_id: string;
|
|
31
|
+
}, {
|
|
32
|
+
kind: "distill-events";
|
|
33
|
+
transcript_id: string;
|
|
34
|
+
session_id: string;
|
|
35
|
+
}>;
|
|
36
|
+
export declare const ReembedPayloadSchema: z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"reembed">;
|
|
38
|
+
memory_id: z.ZodString;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
kind: "reembed";
|
|
41
|
+
memory_id: string;
|
|
42
|
+
}, {
|
|
43
|
+
kind: "reembed";
|
|
44
|
+
memory_id: string;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const CleanupPayloadSchema: z.ZodObject<{
|
|
47
|
+
kind: z.ZodLiteral<"cleanup">;
|
|
48
|
+
older_than_days: z.ZodDefault<z.ZodNumber>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
kind: "cleanup";
|
|
51
|
+
older_than_days: number;
|
|
52
|
+
}, {
|
|
53
|
+
kind: "cleanup";
|
|
54
|
+
older_than_days?: number | undefined;
|
|
55
|
+
}>;
|
|
56
|
+
export declare const JobPayloadSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
57
|
+
kind: z.ZodLiteral<"distill">;
|
|
58
|
+
transcript_id: z.ZodString;
|
|
59
|
+
session_id: z.ZodString;
|
|
60
|
+
}, "strip", z.ZodTypeAny, {
|
|
61
|
+
kind: "distill";
|
|
62
|
+
transcript_id: string;
|
|
63
|
+
session_id: string;
|
|
64
|
+
}, {
|
|
65
|
+
kind: "distill";
|
|
66
|
+
transcript_id: string;
|
|
67
|
+
session_id: string;
|
|
68
|
+
}>, z.ZodObject<{
|
|
69
|
+
kind: z.ZodLiteral<"reembed">;
|
|
70
|
+
memory_id: z.ZodString;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
kind: "reembed";
|
|
73
|
+
memory_id: string;
|
|
74
|
+
}, {
|
|
75
|
+
kind: "reembed";
|
|
76
|
+
memory_id: string;
|
|
77
|
+
}>, z.ZodObject<{
|
|
78
|
+
kind: z.ZodLiteral<"cleanup">;
|
|
79
|
+
older_than_days: z.ZodDefault<z.ZodNumber>;
|
|
80
|
+
}, "strip", z.ZodTypeAny, {
|
|
81
|
+
kind: "cleanup";
|
|
82
|
+
older_than_days: number;
|
|
83
|
+
}, {
|
|
84
|
+
kind: "cleanup";
|
|
85
|
+
older_than_days?: number | undefined;
|
|
86
|
+
}>, z.ZodObject<{
|
|
87
|
+
kind: z.ZodLiteral<"distill-events">;
|
|
88
|
+
transcript_id: z.ZodString;
|
|
89
|
+
session_id: z.ZodString;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
kind: "distill-events";
|
|
92
|
+
transcript_id: string;
|
|
93
|
+
session_id: string;
|
|
94
|
+
}, {
|
|
95
|
+
kind: "distill-events";
|
|
96
|
+
transcript_id: string;
|
|
97
|
+
session_id: string;
|
|
98
|
+
}>]>;
|
|
99
|
+
export type DistillPayload = z.infer<typeof DistillPayloadSchema>;
|
|
100
|
+
export type ReembedPayload = z.infer<typeof ReembedPayloadSchema>;
|
|
101
|
+
export type CleanupPayload = z.infer<typeof CleanupPayloadSchema>;
|
|
102
|
+
export type DistillEventsPayload = z.infer<typeof DistillEventsPayloadSchema>;
|
|
103
|
+
export type JobPayload = z.infer<typeof JobPayloadSchema>;
|
|
104
|
+
export interface Job {
|
|
105
|
+
id: string;
|
|
106
|
+
kind: JobKind;
|
|
107
|
+
payload_json: string;
|
|
108
|
+
state: JobState;
|
|
109
|
+
attempts: number;
|
|
110
|
+
last_error: string | null;
|
|
111
|
+
created_at: number;
|
|
112
|
+
updated_at: number;
|
|
113
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const DistillPayloadSchema = z.object({
|
|
3
|
+
kind: z.literal('distill'),
|
|
4
|
+
transcript_id: z.string().min(1),
|
|
5
|
+
session_id: z.string().min(1)
|
|
6
|
+
});
|
|
7
|
+
/**
|
|
8
|
+
* ADR-008 events capture kind — pre-typed atom candidates (runner-plugin
|
|
9
|
+
* grades/lessons/review verdicts) that skip pipeline stages 1-5 and enter
|
|
10
|
+
* at reduce (stage 6). Same payload shape as DistillPayloadSchema; the
|
|
11
|
+
* `kind` discriminator routes the job to distillEventsHandler instead.
|
|
12
|
+
*/
|
|
13
|
+
export const DistillEventsPayloadSchema = z.object({
|
|
14
|
+
kind: z.literal('distill-events'),
|
|
15
|
+
transcript_id: z.string().min(1),
|
|
16
|
+
session_id: z.string().min(1)
|
|
17
|
+
});
|
|
18
|
+
export const ReembedPayloadSchema = z.object({
|
|
19
|
+
kind: z.literal('reembed'),
|
|
20
|
+
memory_id: z.string().min(1)
|
|
21
|
+
});
|
|
22
|
+
export const CleanupPayloadSchema = z.object({
|
|
23
|
+
kind: z.literal('cleanup'),
|
|
24
|
+
older_than_days: z.number().int().min(1).default(30)
|
|
25
|
+
});
|
|
26
|
+
export const JobPayloadSchema = z.discriminatedUnion('kind', [
|
|
27
|
+
DistillPayloadSchema,
|
|
28
|
+
ReembedPayloadSchema,
|
|
29
|
+
CleanupPayloadSchema,
|
|
30
|
+
DistillEventsPayloadSchema
|
|
31
|
+
]);
|
|
32
|
+
//# sourceMappingURL=job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/contracts/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACrD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC3D,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,0BAA0B;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface ChatMsg {
|
|
2
|
+
role: 'system' | 'user' | 'assistant';
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ChatOpts {
|
|
6
|
+
temperature?: number;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
maxTokens?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ChatUsage {
|
|
11
|
+
in: number;
|
|
12
|
+
out: number;
|
|
13
|
+
usd: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ChatResult {
|
|
16
|
+
text: string;
|
|
17
|
+
usage: ChatUsage;
|
|
18
|
+
}
|
|
19
|
+
export interface LLMHealth {
|
|
20
|
+
ok: boolean;
|
|
21
|
+
model: string;
|
|
22
|
+
latency_ms: number;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface LLMProvider {
|
|
26
|
+
readonly name: 'ollama' | 'azure-openai';
|
|
27
|
+
readonly model: string;
|
|
28
|
+
chat(messages: ChatMsg[], opts?: ChatOpts): Promise<ChatResult>;
|
|
29
|
+
health(): Promise<LLMHealth>;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/contracts/llm.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Single runtime source of truth for memory types — CLI validation and any
|
|
2
|
+
* future enum checks must use this array, not a hand-copied list (the CLI
|
|
3
|
+
* once drifted to a stale 5-type copy and silently rejected note/event). */
|
|
4
|
+
export declare const MEMORY_TYPES: readonly ["decision", "fact", "lesson", "command", "todo", "note", "event"];
|
|
5
|
+
export type MemoryType = (typeof MEMORY_TYPES)[number];
|
|
6
|
+
/** ADR-009 memory scope — personal is the default for all local-agent writes. */
|
|
7
|
+
export type MemoryScope = 'personal' | 'team' | 'org';
|
|
8
|
+
export interface Memory {
|
|
9
|
+
id: string;
|
|
10
|
+
type: MemoryType;
|
|
11
|
+
text: string;
|
|
12
|
+
normalized_text: string;
|
|
13
|
+
repo: string | null;
|
|
14
|
+
project: string | null;
|
|
15
|
+
branch: string | null;
|
|
16
|
+
agent: string | null;
|
|
17
|
+
session_id: string | null;
|
|
18
|
+
importance: number;
|
|
19
|
+
confidence: number;
|
|
20
|
+
hash: string;
|
|
21
|
+
embedding_provider: string | null;
|
|
22
|
+
embedding_model: string | null;
|
|
23
|
+
embedding_dim: number | null;
|
|
24
|
+
created_at: number;
|
|
25
|
+
updated_at: number;
|
|
26
|
+
source_hash: string | null;
|
|
27
|
+
evidence: string | null;
|
|
28
|
+
/** Bitemporal valid-time start (ADR-001). Set to created_at at insert time;
|
|
29
|
+
* advanced to the supersession instant when this atom becomes a successor
|
|
30
|
+
* (supersede() co-issues new.valid_from = old.valid_to — FEAT-401). */
|
|
31
|
+
valid_from: number;
|
|
32
|
+
/** Bitemporal valid-time end. NULL = currently valid. */
|
|
33
|
+
valid_to: number | null;
|
|
34
|
+
/** Id of the memory that superseded this one (lifecycle ops, Wave 2b). */
|
|
35
|
+
superseded_by: string | null;
|
|
36
|
+
/** Consolidation lineage — memory ids this atom was derived from. */
|
|
37
|
+
derived_from: string[] | null;
|
|
38
|
+
/** ADR-009 scope. Defaults to 'personal'. */
|
|
39
|
+
scope: MemoryScope;
|
|
40
|
+
/** TTL/archival tiers (FEAT-404). true once the archival policy (or a
|
|
41
|
+
* direct MemoryEventRepo.archive() call) has archived this atom — set in
|
|
42
|
+
* the same transaction as valid_to, non-destructively (row survives,
|
|
43
|
+
* restorable via MemoryEventRepo.restore()). */
|
|
44
|
+
archived: boolean;
|
|
45
|
+
/** Epoch ms the archive transition happened; null while archived=false. */
|
|
46
|
+
archived_at: number | null;
|
|
47
|
+
}
|