nlm-memory 0.20.1 → 0.21.12
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/README.md +69 -12
- package/assets/replay-eval-dark.svg +26 -0
- package/assets/replay-eval-light.svg +26 -0
- package/dist/cli/digest.js +69 -4
- package/dist/cli/digest.js.map +1 -1
- package/dist/cli/nlm.d.ts +14 -0
- package/dist/cli/nlm.js +556 -71
- package/dist/cli/nlm.js.map +1 -1
- package/dist/cli/reprocess-job-adapters.d.ts +35 -0
- package/dist/cli/reprocess-job-adapters.js +80 -0
- package/dist/cli/reprocess-job-adapters.js.map +1 -0
- package/dist/cli/scope-backfill.d.ts +34 -0
- package/dist/cli/scope-backfill.js +237 -0
- package/dist/cli/scope-backfill.js.map +1 -0
- package/dist/cli/scope-coverage.d.ts +44 -0
- package/dist/cli/scope-coverage.js +208 -0
- package/dist/cli/scope-coverage.js.map +1 -0
- package/dist/cli/supersede.js +8 -7
- package/dist/cli/supersede.js.map +1 -1
- package/dist/core/actions/actions-log.d.ts +65 -8
- package/dist/core/actions/actions-log.js +134 -17
- package/dist/core/actions/actions-log.js.map +1 -1
- package/dist/core/actions/overlay.d.ts +11 -2
- package/dist/core/actions/overlay.js +18 -6
- package/dist/core/actions/overlay.js.map +1 -1
- package/dist/core/adapters/claude-code.d.ts +14 -0
- package/dist/core/adapters/claude-code.js +30 -0
- package/dist/core/adapters/claude-code.js.map +1 -1
- package/dist/core/adapters/from-source.js +11 -3
- package/dist/core/adapters/from-source.js.map +1 -1
- package/dist/core/adapters/fs-wiki-writer.d.ts +44 -0
- package/dist/core/adapters/fs-wiki-writer.js +132 -0
- package/dist/core/adapters/fs-wiki-writer.js.map +1 -0
- package/dist/core/adapters/hermes-agent.d.ts +15 -2
- package/dist/core/adapters/hermes-agent.js +57 -11
- package/dist/core/adapters/hermes-agent.js.map +1 -1
- package/dist/core/adapters/memory-wiki-writer.d.ts +8 -0
- package/dist/core/adapters/memory-wiki-writer.js +16 -0
- package/dist/core/adapters/memory-wiki-writer.js.map +1 -0
- package/dist/core/adapters/muse.d.ts +51 -0
- package/dist/core/adapters/muse.js +271 -0
- package/dist/core/adapters/muse.js.map +1 -0
- package/dist/core/adapters/opencode.d.ts +11 -4
- package/dist/core/adapters/opencode.js +41 -7
- package/dist/core/adapters/opencode.js.map +1 -1
- package/dist/core/alerts/alert-state.d.ts +17 -0
- package/dist/core/alerts/alert-state.js +45 -0
- package/dist/core/alerts/alert-state.js.map +1 -0
- package/dist/core/alerts/check-and-alert.d.ts +28 -0
- package/dist/core/alerts/check-and-alert.js +53 -0
- package/dist/core/alerts/check-and-alert.js.map +1 -0
- package/dist/core/alerts/drift-transition.d.ts +27 -0
- package/dist/core/alerts/drift-transition.js +56 -0
- package/dist/core/alerts/drift-transition.js.map +1 -0
- package/dist/core/alerts/embedder-transition.d.ts +23 -0
- package/dist/core/alerts/embedder-transition.js +40 -0
- package/dist/core/alerts/embedder-transition.js.map +1 -0
- package/dist/core/alerts/fire-alert.d.ts +24 -0
- package/dist/core/alerts/fire-alert.js +72 -0
- package/dist/core/alerts/fire-alert.js.map +1 -0
- package/dist/core/alerts/job-alert.d.ts +12 -0
- package/dist/core/alerts/job-alert.js +37 -0
- package/dist/core/alerts/job-alert.js.map +1 -0
- package/dist/core/alerts/types.d.ts +104 -0
- package/dist/core/alerts/types.js +11 -0
- package/dist/core/alerts/types.js.map +1 -0
- package/dist/core/alerts/wiki-alert.d.ts +15 -0
- package/dist/core/alerts/wiki-alert.js +31 -0
- package/dist/core/alerts/wiki-alert.js.map +1 -0
- package/dist/core/classifier/prompt.d.ts +13 -0
- package/dist/core/classifier/prompt.js +52 -2
- package/dist/core/classifier/prompt.js.map +1 -1
- package/dist/core/dataset/build-dataset.d.ts +16 -1
- package/dist/core/dataset/build-dataset.js +46 -13
- package/dist/core/dataset/build-dataset.js.map +1 -1
- package/dist/core/digest/compose.d.ts +11 -3
- package/dist/core/digest/compose.js +70 -17
- package/dist/core/digest/compose.js.map +1 -1
- package/dist/core/digest/hook-injection.d.ts +43 -0
- package/dist/core/digest/hook-injection.js +87 -0
- package/dist/core/digest/hook-injection.js.map +1 -0
- package/dist/core/digest/hook-version-parity.d.ts +31 -0
- package/dist/core/digest/hook-version-parity.js +56 -0
- package/dist/core/digest/hook-version-parity.js.map +1 -0
- package/dist/core/embedding/pg-embed-backfill.js +1 -1
- package/dist/core/embedding/pg-embed-backfill.js.map +1 -1
- package/dist/core/exemplars/capture-from-session.d.ts +2 -1
- package/dist/core/exemplars/capture-from-session.js +4 -4
- package/dist/core/exemplars/capture-from-session.js.map +1 -1
- package/dist/core/exemplars/embed-backfill.d.ts +9 -0
- package/dist/core/exemplars/embed-backfill.js +9 -1
- package/dist/core/exemplars/embed-backfill.js.map +1 -1
- package/dist/core/exemplars/extract-exemplar.d.ts +2 -0
- package/dist/core/exemplars/extract-exemplar.js +7 -1
- package/dist/core/exemplars/extract-exemplar.js.map +1 -1
- package/dist/core/exemplars/ingest-exemplar.d.ts +1 -0
- package/dist/core/exemplars/ingest-exemplar.js +1 -0
- package/dist/core/exemplars/ingest-exemplar.js.map +1 -1
- package/dist/core/exemplars/recall-code.d.ts +1 -1
- package/dist/core/exemplars/recall-code.js +2 -2
- package/dist/core/exemplars/recall-code.js.map +1 -1
- package/dist/core/facts/backfill-facts.d.ts +1 -1
- package/dist/core/facts/backfill-facts.js +4 -4
- package/dist/core/facts/backfill-facts.js.map +1 -1
- package/dist/core/facts/embed-backfill.d.ts +54 -0
- package/dist/core/facts/embed-backfill.js +109 -0
- package/dist/core/facts/embed-backfill.js.map +1 -0
- package/dist/core/facts/reconcile-facts.d.ts +42 -0
- package/dist/core/facts/reconcile-facts.js +133 -0
- package/dist/core/facts/reconcile-facts.js.map +1 -0
- package/dist/core/health/embed-failure-state.d.ts +4 -0
- package/dist/core/health/embed-failure-state.js +12 -0
- package/dist/core/health/embed-failure-state.js.map +1 -0
- package/dist/core/health/warmup-retry.d.ts +27 -0
- package/dist/core/health/warmup-retry.js +53 -0
- package/dist/core/health/warmup-retry.js.map +1 -0
- package/dist/core/health/warmup-state.d.ts +15 -0
- package/dist/core/health/warmup-state.js +15 -1
- package/dist/core/health/warmup-state.js.map +1 -1
- package/dist/core/hook/cite-memo.d.ts +11 -7
- package/dist/core/hook/cite-memo.js +25 -17
- package/dist/core/hook/cite-memo.js.map +1 -1
- package/dist/core/hook/claude-settings.d.ts +1 -1
- package/dist/core/hook/claude-settings.js +0 -1
- package/dist/core/hook/claude-settings.js.map +1 -1
- package/dist/core/hook/hook-log.d.ts +13 -2
- package/dist/core/hook/hook-log.js +16 -8
- package/dist/core/hook/hook-log.js.map +1 -1
- package/dist/core/hook/memo.d.ts +10 -6
- package/dist/core/hook/memo.js +25 -17
- package/dist/core/hook/memo.js.map +1 -1
- package/dist/core/hook/pointer-block.d.ts +8 -1
- package/dist/core/hook/pointer-block.js +17 -4
- package/dist/core/hook/pointer-block.js.map +1 -1
- package/dist/core/hook/resolve-conversation-by-query.d.ts +6 -5
- package/dist/core/hook/resolve-conversation-by-query.js +24 -12
- package/dist/core/hook/resolve-conversation-by-query.js.map +1 -1
- package/dist/core/ingest/backfill-derivables.d.ts +92 -0
- package/dist/core/ingest/backfill-derivables.js +175 -0
- package/dist/core/ingest/backfill-derivables.js.map +1 -0
- package/dist/core/ingest/ingest-session.d.ts +1 -1
- package/dist/core/ingest/ingest-session.js +23 -3
- package/dist/core/ingest/ingest-session.js.map +1 -1
- package/dist/core/ingest/reclassify-oversized.d.ts +1 -1
- package/dist/core/ingest/reclassify-oversized.js +8 -2
- package/dist/core/ingest/reclassify-oversized.js.map +1 -1
- package/dist/core/ingest/reprocess.d.ts +1 -1
- package/dist/core/ingest/reprocess.js +7 -2
- package/dist/core/ingest/reprocess.js.map +1 -1
- package/dist/core/ingest/transcript-derivables.d.ts +27 -0
- package/dist/core/ingest/transcript-derivables.js +138 -0
- package/dist/core/ingest/transcript-derivables.js.map +1 -0
- package/dist/core/jobs/job-supervisor.d.ts +168 -0
- package/dist/core/jobs/job-supervisor.js +335 -0
- package/dist/core/jobs/job-supervisor.js.map +1 -0
- package/dist/core/learner/model.d.ts +63 -0
- package/dist/core/learner/model.js +30 -0
- package/dist/core/learner/model.js.map +1 -0
- package/dist/core/learner/service.d.ts +42 -0
- package/dist/core/learner/service.js +74 -0
- package/dist/core/learner/service.js.map +1 -0
- package/dist/core/learner/summary.d.ts +28 -0
- package/dist/core/learner/summary.js +70 -0
- package/dist/core/learner/summary.js.map +1 -0
- package/dist/core/learner/validate.d.ts +18 -0
- package/dist/core/learner/validate.js +95 -0
- package/dist/core/learner/validate.js.map +1 -0
- package/dist/core/metrics/re-derivation.d.ts +31 -2
- package/dist/core/metrics/re-derivation.js +36 -4
- package/dist/core/metrics/re-derivation.js.map +1 -1
- package/dist/core/outcome/coverage.d.ts +33 -0
- package/dist/core/outcome/coverage.js +46 -0
- package/dist/core/outcome/coverage.js.map +1 -0
- package/dist/core/outcome/rollup.d.ts +33 -0
- package/dist/core/outcome/rollup.js +113 -0
- package/dist/core/outcome/rollup.js.map +1 -0
- package/dist/core/providers/provider-registry.d.ts +40 -23
- package/dist/core/providers/provider-registry.js +99 -81
- package/dist/core/providers/provider-registry.js.map +1 -1
- package/dist/core/recall/citation-log.d.ts +10 -5
- package/dist/core/recall/citation-log.js +21 -10
- package/dist/core/recall/citation-log.js.map +1 -1
- package/dist/core/recall/hook-recall-log.d.ts +7 -4
- package/dist/core/recall/hook-recall-log.js +14 -8
- package/dist/core/recall/hook-recall-log.js.map +1 -1
- package/dist/core/recall/miss-log.d.ts +7 -4
- package/dist/core/recall/miss-log.js +18 -11
- package/dist/core/recall/miss-log.js.map +1 -1
- package/dist/core/recall/query-log.d.ts +8 -5
- package/dist/core/recall/query-log.js +16 -9
- package/dist/core/recall/query-log.js.map +1 -1
- package/dist/core/recall/recall-service.d.ts +10 -1
- package/dist/core/recall/recall-service.js +31 -12
- package/dist/core/recall/recall-service.js.map +1 -1
- package/dist/core/recall/recent-log.d.ts +6 -1
- package/dist/core/recall/recent-log.js +13 -5
- package/dist/core/recall/recent-log.js.map +1 -1
- package/dist/core/recall/related-concepts.d.ts +29 -0
- package/dist/core/recall/related-concepts.js +67 -0
- package/dist/core/recall/related-concepts.js.map +1 -0
- package/dist/core/recall/related-exemplars.d.ts +1 -1
- package/dist/core/recall/related-exemplars.js +2 -2
- package/dist/core/recall/related-exemplars.js.map +1 -1
- package/dist/core/recall/related-facts.d.ts +1 -1
- package/dist/core/recall/related-facts.js +3 -3
- package/dist/core/recall/related-facts.js.map +1 -1
- package/dist/core/recall-facts/fact-query-log.d.ts +8 -4
- package/dist/core/recall-facts/fact-query-log.js +16 -8
- package/dist/core/recall-facts/fact-query-log.js.map +1 -1
- package/dist/core/recall-facts/fact-recall-service.d.ts +2 -2
- package/dist/core/recall-facts/fact-recall-service.js +13 -12
- package/dist/core/recall-facts/fact-recall-service.js.map +1 -1
- package/dist/core/scheduler/scan-once.js +15 -12
- package/dist/core/scheduler/scan-once.js.map +1 -1
- package/dist/core/scheduler/scheduler.d.ts +3 -0
- package/dist/core/scheduler/scheduler.js +45 -10
- package/dist/core/scheduler/scheduler.js.map +1 -1
- package/dist/core/scope/alias-map.d.ts +10 -0
- package/dist/core/scope/alias-map.js +41 -0
- package/dist/core/scope/alias-map.js.map +1 -0
- package/dist/core/scope/derive-scope.d.ts +8 -0
- package/dist/core/scope/derive-scope.js +54 -0
- package/dist/core/scope/derive-scope.js.map +1 -0
- package/dist/core/scope/scope-clause.d.ts +16 -0
- package/dist/core/scope/scope-clause.js +21 -0
- package/dist/core/scope/scope-clause.js.map +1 -0
- package/dist/core/scope/stamp-flag.d.ts +1 -0
- package/dist/core/scope/stamp-flag.js +4 -0
- package/dist/core/scope/stamp-flag.js.map +1 -0
- package/dist/core/signals/code-signal.d.ts +1 -0
- package/dist/core/signals/code-signal.js +1 -0
- package/dist/core/signals/code-signal.js.map +1 -1
- package/dist/core/signals/failure-mode-recall.d.ts +1 -1
- package/dist/core/signals/failure-mode-recall.js +2 -2
- package/dist/core/signals/failure-mode-recall.js.map +1 -1
- package/dist/core/signals/ingest-signal.d.ts +1 -1
- package/dist/core/signals/ingest-signal.js +3 -1
- package/dist/core/signals/ingest-signal.js.map +1 -1
- package/dist/core/signals/stamp-scope.d.ts +18 -0
- package/dist/core/signals/stamp-scope.js +28 -0
- package/dist/core/signals/stamp-scope.js.map +1 -0
- package/dist/core/sources/source-registry.d.ts +49 -28
- package/dist/core/sources/source-registry.js +113 -70
- package/dist/core/sources/source-registry.js.map +1 -1
- package/dist/core/storage/pg-code-exemplar-store.d.ts +19 -10
- package/dist/core/storage/pg-code-exemplar-store.js +62 -27
- package/dist/core/storage/pg-code-exemplar-store.js.map +1 -1
- package/dist/core/storage/pg-entity-store.d.ts +6 -1
- package/dist/core/storage/pg-entity-store.js +33 -18
- package/dist/core/storage/pg-entity-store.js.map +1 -1
- package/dist/core/storage/pg-fact-ingest.d.ts +1 -1
- package/dist/core/storage/pg-fact-ingest.js +10 -7
- package/dist/core/storage/pg-fact-ingest.js.map +1 -1
- package/dist/core/storage/pg-fact-store.d.ts +29 -17
- package/dist/core/storage/pg-fact-store.js +99 -46
- package/dist/core/storage/pg-fact-store.js.map +1 -1
- package/dist/core/storage/pg-learner-store.d.ts +27 -0
- package/dist/core/storage/pg-learner-store.js +174 -0
- package/dist/core/storage/pg-learner-store.js.map +1 -0
- package/dist/core/storage/pg-session-store.d.ts +25 -21
- package/dist/core/storage/pg-session-store.js +186 -114
- package/dist/core/storage/pg-session-store.js.map +1 -1
- package/dist/core/storage/pg-signal-store.d.ts +10 -5
- package/dist/core/storage/pg-signal-store.js +26 -13
- package/dist/core/storage/pg-signal-store.js.map +1 -1
- package/dist/core/storage/pg-storage.d.ts +4 -0
- package/dist/core/storage/pg-storage.js +6 -0
- package/dist/core/storage/pg-storage.js.map +1 -1
- package/dist/core/storage/pg-workstream-store.d.ts +17 -11
- package/dist/core/storage/pg-workstream-store.js +47 -29
- package/dist/core/storage/pg-workstream-store.js.map +1 -1
- package/dist/core/storage/sqlite-code-exemplar-store.d.ts +24 -10
- package/dist/core/storage/sqlite-code-exemplar-store.js +86 -40
- package/dist/core/storage/sqlite-code-exemplar-store.js.map +1 -1
- package/dist/core/storage/sqlite-entity-store.d.ts +8 -1
- package/dist/core/storage/sqlite-entity-store.js +46 -27
- package/dist/core/storage/sqlite-entity-store.js.map +1 -1
- package/dist/core/storage/sqlite-fact-store.d.ts +45 -19
- package/dist/core/storage/sqlite-fact-store.js +175 -64
- package/dist/core/storage/sqlite-fact-store.js.map +1 -1
- package/dist/core/storage/sqlite-learner-store.d.ts +33 -0
- package/dist/core/storage/sqlite-learner-store.js +178 -0
- package/dist/core/storage/sqlite-learner-store.js.map +1 -0
- package/dist/core/storage/sqlite-outcome-store.d.ts +104 -0
- package/dist/core/storage/sqlite-outcome-store.js +211 -0
- package/dist/core/storage/sqlite-outcome-store.js.map +1 -0
- package/dist/core/storage/sqlite-session-store.d.ts +50 -21
- package/dist/core/storage/sqlite-session-store.js +233 -149
- package/dist/core/storage/sqlite-session-store.js.map +1 -1
- package/dist/core/storage/sqlite-signal-store.d.ts +12 -5
- package/dist/core/storage/sqlite-signal-store.js +29 -15
- package/dist/core/storage/sqlite-signal-store.js.map +1 -1
- package/dist/core/storage/sqlite-storage.d.ts +4 -0
- package/dist/core/storage/sqlite-storage.js +10 -2
- package/dist/core/storage/sqlite-storage.js.map +1 -1
- package/dist/core/storage/sqlite-workstream-store.d.ts +17 -11
- package/dist/core/storage/sqlite-workstream-store.js +53 -31
- package/dist/core/storage/sqlite-workstream-store.js.map +1 -1
- package/dist/core/storage/supersedence-log.d.ts +10 -7
- package/dist/core/storage/supersedence-log.js +21 -14
- package/dist/core/storage/supersedence-log.js.map +1 -1
- package/dist/core/telemetry/probe-filter.d.ts +35 -0
- package/dist/core/telemetry/probe-filter.js +56 -0
- package/dist/core/telemetry/probe-filter.js.map +1 -0
- package/dist/core/tenancy/default-team.d.ts +6 -0
- package/dist/core/tenancy/default-team.js +7 -0
- package/dist/core/tenancy/default-team.js.map +1 -0
- package/dist/core/tenancy/hosted-mode.d.ts +9 -0
- package/dist/core/tenancy/hosted-mode.js +12 -0
- package/dist/core/tenancy/hosted-mode.js.map +1 -0
- package/dist/core/tenancy/team-auth.d.ts +16 -0
- package/dist/core/tenancy/team-auth.js +22 -0
- package/dist/core/tenancy/team-auth.js.map +1 -0
- package/dist/core/tenancy/team-token-store.d.ts +45 -0
- package/dist/core/tenancy/team-token-store.js +52 -0
- package/dist/core/tenancy/team-token-store.js.map +1 -0
- package/dist/core/tenancy/tenant-clause.d.ts +37 -0
- package/dist/core/tenancy/tenant-clause.js +11 -0
- package/dist/core/tenancy/tenant-clause.js.map +1 -0
- package/dist/core/tenancy/tenant-state-path.d.ts +28 -0
- package/dist/core/tenancy/tenant-state-path.js +49 -0
- package/dist/core/tenancy/tenant-state-path.js.map +1 -0
- package/dist/core/update-check/check.d.ts +6 -0
- package/dist/core/update-check/check.js +35 -0
- package/dist/core/update-check/check.js.map +1 -1
- package/dist/core/wiki/project.d.ts +17 -0
- package/dist/core/wiki/project.js +37 -0
- package/dist/core/wiki/project.js.map +1 -0
- package/dist/core/wiki/reconcile.d.ts +15 -0
- package/dist/core/wiki/reconcile.js +14 -0
- package/dist/core/wiki/reconcile.js.map +1 -0
- package/dist/core/wiki/render.d.ts +5 -0
- package/dist/core/wiki/render.js +84 -0
- package/dist/core/wiki/render.js.map +1 -0
- package/dist/core/wiki/rollup.d.ts +28 -0
- package/dist/core/wiki/rollup.js +91 -0
- package/dist/core/wiki/rollup.js.map +1 -0
- package/dist/core/wiki/select.d.ts +8 -0
- package/dist/core/wiki/select.js +7 -0
- package/dist/core/wiki/select.js.map +1 -0
- package/dist/core/wiki/slug.d.ts +36 -0
- package/dist/core/wiki/slug.js +71 -0
- package/dist/core/wiki/slug.js.map +1 -0
- package/dist/core/wiki/types.d.ts +37 -0
- package/dist/core/wiki/types.js +2 -0
- package/dist/core/wiki/types.js.map +1 -0
- package/dist/core/work-digest/build-work-digest.d.ts +1 -1
- package/dist/core/work-digest/build-work-digest.js +3 -3
- package/dist/core/work-digest/build-work-digest.js.map +1 -1
- package/dist/core/workstream/bind.d.ts +3 -2
- package/dist/core/workstream/bind.js +29 -10
- package/dist/core/workstream/bind.js.map +1 -1
- package/dist/core/workstream/model.d.ts +1 -0
- package/dist/core/workstream/model.js.map +1 -1
- package/dist/core/workstream/rollup.d.ts +1 -1
- package/dist/core/workstream/rollup.js +6 -6
- package/dist/core/workstream/rollup.js.map +1 -1
- package/dist/hook/hook-helpers.d.ts +14 -0
- package/dist/hook/hook-helpers.js +29 -2
- package/dist/hook/hook-helpers.js.map +1 -1
- package/dist/hook/pre-compact-hook.js +8 -5
- package/dist/hook/pre-compact-hook.js.map +1 -1
- package/dist/hook/prompt-recall-hook.d.ts +7 -3
- package/dist/hook/prompt-recall-hook.js +35 -20
- package/dist/hook/prompt-recall-hook.js.map +1 -1
- package/dist/hook/recall-over-http.d.ts +28 -3
- package/dist/hook/recall-over-http.js +58 -12
- package/dist/hook/recall-over-http.js.map +1 -1
- package/dist/hook/session-end-hook.js +7 -5
- package/dist/hook/session-end-hook.js.map +1 -1
- package/dist/hook/session-start-hook.d.ts +14 -1
- package/dist/hook/session-start-hook.js +57 -16
- package/dist/hook/session-start-hook.js.map +1 -1
- package/dist/hook/stop-hook.js +11 -8
- package/dist/hook/stop-hook.js.map +1 -1
- package/dist/http/app.d.ts +47 -3
- package/dist/http/app.js +379 -132
- package/dist/http/app.js.map +1 -1
- package/dist/install/claude-code.d.ts +17 -0
- package/dist/install/claude-code.js +44 -5
- package/dist/install/claude-code.js.map +1 -1
- package/dist/install/codex.d.ts +23 -2
- package/dist/install/codex.js +111 -14
- package/dist/install/codex.js.map +1 -1
- package/dist/install/cursor.d.ts +2 -2
- package/dist/install/cursor.js +7 -7
- package/dist/install/cursor.js.map +1 -1
- package/dist/install/hermes.d.ts +8 -0
- package/dist/install/hermes.js +28 -5
- package/dist/install/hermes.js.map +1 -1
- package/dist/install/local-source.d.ts +20 -0
- package/dist/install/local-source.js +28 -0
- package/dist/install/local-source.js.map +1 -0
- package/dist/install/mcp-block.d.ts +77 -0
- package/dist/install/mcp-block.js +99 -0
- package/dist/install/mcp-block.js.map +1 -0
- package/dist/install/pi.d.ts +26 -0
- package/dist/install/pi.js +43 -0
- package/dist/install/pi.js.map +1 -1
- package/dist/install/setup.js +6 -0
- package/dist/install/setup.js.map +1 -1
- package/dist/install/windsurf.d.ts +2 -2
- package/dist/install/windsurf.js +7 -7
- package/dist/install/windsurf.js.map +1 -1
- package/dist/llm/classifier-box.d.ts +5 -0
- package/dist/llm/classifier-box.js +5 -0
- package/dist/llm/classifier-box.js.map +1 -1
- package/dist/mcp/server.d.ts +94 -15
- package/dist/mcp/server.js +402 -79
- package/dist/mcp/server.js.map +1 -1
- package/dist/ports/clock.d.ts +12 -0
- package/dist/ports/clock.js +10 -0
- package/dist/ports/clock.js.map +1 -0
- package/dist/ports/code-exemplar-store.d.ts +13 -13
- package/dist/ports/entity-store.d.ts +5 -1
- package/dist/ports/fact-store.d.ts +0 -0
- package/dist/ports/fact-store.js +0 -0
- package/dist/ports/fact-store.js.map +1 -1
- package/dist/ports/learner-store.d.ts +80 -0
- package/dist/ports/learner-store.js +19 -0
- package/dist/ports/learner-store.js.map +1 -0
- package/dist/ports/outcome.d.ts +85 -0
- package/dist/ports/outcome.js +11 -0
- package/dist/ports/outcome.js.map +1 -0
- package/dist/ports/session-store.d.ts +20 -20
- package/dist/ports/session-store.js +5 -0
- package/dist/ports/session-store.js.map +1 -1
- package/dist/ports/signal-store.d.ts +12 -8
- package/dist/ports/spawn-child.d.ts +14 -0
- package/dist/ports/spawn-child.js +10 -0
- package/dist/ports/spawn-child.js.map +1 -0
- package/dist/ports/storage.d.ts +6 -0
- package/dist/ports/transcript-adapter.d.ts +11 -0
- package/dist/ports/wiki-writer.d.ts +19 -0
- package/dist/ports/wiki-writer.js +12 -0
- package/dist/ports/wiki-writer.js.map +1 -0
- package/dist/ports/workstream-store.d.ts +20 -12
- package/dist/shared/net.d.ts +3 -0
- package/dist/shared/net.js +4 -0
- package/dist/shared/net.js.map +1 -0
- package/dist/shared/types.d.ts +55 -0
- package/dist/shared/types.js +4 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/shared/version.d.ts +9 -0
- package/dist/shared/version.js +11 -0
- package/dist/shared/version.js.map +1 -0
- package/dist/ui/assets/index-D6F3xAis.js +11 -0
- package/dist/ui/index.html +1 -1
- package/migrations/029_project_scope.sql +21 -0
- package/migrations/032_session_derivables.sql +11 -0
- package/migrations/033_actions_kind_check.sql +58 -0
- package/migrations/034_tenancy_teams_and_stamps.sql +40 -0
- package/migrations/035_tenancy_entity_rekey.sql +75 -0
- package/migrations/036_tenant_name_uniqueness.sql +59 -0
- package/migrations/037_sessions_covering_index.sql +25 -0
- package/migrations/038_sources_muse.sql +33 -0
- package/migrations/039_learner_evidence.sql +51 -0
- package/migrations/pg/030_project_scope.sql +23 -0
- package/migrations/pg/031_widen_session_edges_kind.sql +11 -0
- package/migrations/pg/032_session_derivables.sql +17 -0
- package/migrations/pg/033_actions_kind_check.sql +17 -0
- package/migrations/pg/034_tenancy.sql +77 -0
- package/migrations/pg/035_tenant_name_uniqueness.sql +15 -0
- package/migrations/pg/036_sources_muse.sql +12 -0
- package/migrations/pg/037_learner_evidence.sql +55 -0
- package/nlm/index.js +258 -59
- package/package.json +10 -5
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/scripts/prompt-recall-hook.mjs +256 -58
- package/plugin/scripts/session-start-hook.mjs +283 -55
- package/plugin/scripts/stop-hook.mjs +199 -38
- package/dist/hook/subagent-start-hook.d.ts +0 -28
- package/dist/hook/subagent-start-hook.js +0 -81
- package/dist/hook/subagent-start-hook.js.map +0 -1
- package/dist/ui/assets/index-CMpQkbQy.js +0 -11
package/dist/cli/supersede.js
CHANGED
|
@@ -19,6 +19,7 @@ import { SqliteStorage } from "../core/storage/sqlite-storage.js";
|
|
|
19
19
|
import { RecallService } from "../core/recall/recall-service.js";
|
|
20
20
|
import { OllamaClient } from "../llm/ollama-client.js";
|
|
21
21
|
import { appendSupersedence } from "../core/storage/supersedence-log.js";
|
|
22
|
+
import { DEFAULT_TEAM_ID } from "../core/tenancy/default-team.js";
|
|
22
23
|
const CANDIDATE_LIMIT = 8;
|
|
23
24
|
export async function executeSupersede(deps, opts) {
|
|
24
25
|
const predecessor = await resolveSession(deps, opts.predecessor, "predecessor");
|
|
@@ -68,14 +69,14 @@ export async function executeSupersede(deps, opts) {
|
|
|
68
69
|
return { kind: "cancelled", reason: "user-declined-confirm" };
|
|
69
70
|
}
|
|
70
71
|
try {
|
|
71
|
-
await deps.store.markSuperseded(predecessor.session.id, successor.session.id);
|
|
72
|
+
await deps.store.markSuperseded(DEFAULT_TEAM_ID, predecessor.session.id, successor.session.id);
|
|
72
73
|
}
|
|
73
74
|
catch (e) {
|
|
74
75
|
const msg = e instanceof Error ? e.message : String(e);
|
|
75
76
|
deps.io.warn(`Failed to mark supersedence: ${msg}`);
|
|
76
77
|
return { kind: "cancelled", reason: msg };
|
|
77
78
|
}
|
|
78
|
-
void appendSupersedence({
|
|
79
|
+
void appendSupersedence(DEFAULT_TEAM_ID, {
|
|
79
80
|
predecessorId: predecessor.session.id,
|
|
80
81
|
successorId: successor.session.id,
|
|
81
82
|
source: "cli",
|
|
@@ -91,7 +92,7 @@ export async function executeSupersede(deps, opts) {
|
|
|
91
92
|
}
|
|
92
93
|
async function resolveSession(deps, argValue, role) {
|
|
93
94
|
if (argValue) {
|
|
94
|
-
const session = await deps.store.getById(argValue);
|
|
95
|
+
const session = await deps.store.getById(DEFAULT_TEAM_ID, argValue);
|
|
95
96
|
if (!session) {
|
|
96
97
|
deps.io.warn(`Session ${argValue} not found.`);
|
|
97
98
|
return { kind: "cancelled", reason: "unknown-id" };
|
|
@@ -113,7 +114,7 @@ async function resolveSession(deps, argValue, role) {
|
|
|
113
114
|
deps.io.warn(`Empty ${role} query — nothing to search.`);
|
|
114
115
|
return { kind: "cancelled", reason: "empty-query" };
|
|
115
116
|
}
|
|
116
|
-
const result = await deps.recall.search({
|
|
117
|
+
const result = await deps.recall.search(DEFAULT_TEAM_ID, {
|
|
117
118
|
query,
|
|
118
119
|
mode: "hybrid",
|
|
119
120
|
limit: CANDIDATE_LIMIT,
|
|
@@ -122,7 +123,7 @@ async function resolveSession(deps, argValue, role) {
|
|
|
122
123
|
deps.io.warn(`No sessions matched "${query}".`);
|
|
123
124
|
return { kind: "cancelled", reason: "no-matches" };
|
|
124
125
|
}
|
|
125
|
-
const enriched = await deps.store.getByIds(result.results.map((r) => r.id));
|
|
126
|
+
const enriched = await deps.store.getByIds(DEFAULT_TEAM_ID, result.results.map((r) => r.id));
|
|
126
127
|
const runtimeById = new Map(enriched.map((s) => [s.id, s.runtime]));
|
|
127
128
|
const candidates = result.results.map((r) => ({
|
|
128
129
|
id: r.id,
|
|
@@ -141,11 +142,11 @@ async function resolveSession(deps, argValue, role) {
|
|
|
141
142
|
return { kind: "resolved", session: match };
|
|
142
143
|
}
|
|
143
144
|
async function readExistingSupersededBy(store, predecessorId) {
|
|
144
|
-
const session = await store.getById(predecessorId);
|
|
145
|
+
const session = await store.getById(DEFAULT_TEAM_ID, predecessorId);
|
|
145
146
|
return session?.supersededBy ?? null;
|
|
146
147
|
}
|
|
147
148
|
async function resolveCandidateById(store, id) {
|
|
148
|
-
const session = await store.getById(id);
|
|
149
|
+
const session = await store.getById(DEFAULT_TEAM_ID, id);
|
|
149
150
|
if (!session) {
|
|
150
151
|
return { id, label: "(unknown)", startedAt: null, runtime: "" };
|
|
151
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supersede.js","sourceRoot":"","sources":["../../src/cli/supersede.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"supersede.js","sourceRoot":"","sources":["../../src/cli/supersede.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,33 @@
|
|
|
5
5
|
* all rows here, never destructive mutations elsewhere. Dataset projection
|
|
6
6
|
* (build-dataset.ts) reads this table to overlay user-driven state on top
|
|
7
7
|
* of the persisted store. Ports server.py's _write_action + undo flow.
|
|
8
|
+
*
|
|
9
|
+
* Tenancy (program spec §4.6 hardening 1, M2 plan Wave B6): `actions` is
|
|
10
|
+
* DERIVE per the M1 census ("via target session/entity rows") with NO
|
|
11
|
+
* `tenant_id` column. In practice `subject_type` is a free-text polymorphic
|
|
12
|
+
* tag — confirmed real values are `session`, `entity`, `decision`,
|
|
13
|
+
* `open_question` (ids shaped `${sessionId}::<hash>`, see
|
|
14
|
+
* `@core/actions/overlay.ts`'s `openQuestionId`/`decisionId`), and `alert`
|
|
15
|
+
* (ephemeral ids computed fresh per request in build-dataset.ts, e.g.
|
|
16
|
+
* `stale_<mangled-canonical>`, with NO stored row to join against) plus
|
|
17
|
+
* `action` (self-referential undo-of-undo chains). Only the first four
|
|
18
|
+
* resolve to a stamped table; `alert`/`action` never do, by construction —
|
|
19
|
+
* no schema exists that would let them. Chosen mechanism, `tenantId`
|
|
20
|
+
* threaded through every function: `listActions`/`undoAction` require, for
|
|
21
|
+
* a row whose `subject_type` IS resolvable, that the subject exist in the
|
|
22
|
+
* caller's tenant (EXISTS join to `sessions`/`entities`, session-prefix
|
|
23
|
+
* match for decision/open_question); rows with an unresolvable
|
|
24
|
+
* `subject_type` pass through unfiltered rather than being faked closed —
|
|
25
|
+
* excluding them would silently break the real, tested alert
|
|
26
|
+
* dismiss/snooze/undo flow with no isolation benefit (an unresolvable id
|
|
27
|
+
* can't be attributed to ANY tenant, so filtering it out for tenant A
|
|
28
|
+
* would filter it out for every tenant identically). `writeAction`/
|
|
29
|
+
* `writeActionsBatch` take `tenantId` for signature uniformity but do not
|
|
30
|
+
* validate subject ownership (no column to stamp, and validating against
|
|
31
|
+
* the same resolvability rule would reject every legitimate alert write);
|
|
32
|
+
* write-time subject authorization is the caller's job, exactly as
|
|
33
|
+
* Source/Provider registry writes are authorized by the composition root
|
|
34
|
+
* before reaching the store (M2 is plumbing, not auth — program spec §4.6).
|
|
8
35
|
*/
|
|
9
36
|
import type Database from "better-sqlite3";
|
|
10
37
|
import type { Pool } from "pg";
|
|
@@ -27,22 +54,52 @@ export interface ActionRow {
|
|
|
27
54
|
readonly runtime: string | null;
|
|
28
55
|
readonly reverted_by: string | null;
|
|
29
56
|
}
|
|
30
|
-
|
|
31
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Collapses identical rows (same kind + subjectType + subjectId + payload)
|
|
59
|
+
* within a single batch, keeping the first occurrence. A batch is typically
|
|
60
|
+
* one UI gesture replayed by a flaky client retry, not intentionally repeated
|
|
61
|
+
* writes, so silently dropping the duplicates is the correct behavior rather
|
|
62
|
+
* than inserting redundant log rows.
|
|
63
|
+
*/
|
|
64
|
+
export declare function dedupeActionInputs(inputs: ReadonlyArray<ActionInput>): ActionInput[];
|
|
65
|
+
/** tenantId is accepted for signature uniformity (see the module doc
|
|
66
|
+
* comment) but not used to filter or stamp — `actions` has no tenant_id
|
|
67
|
+
* column, and write-time subject authorization is the caller's job. */
|
|
68
|
+
export declare function writeAction(db: Database.Database, _tenantId: string, input: ActionInput): string;
|
|
69
|
+
export declare function writeActionsBatch(db: Database.Database, tenantId: string, inputs: ReadonlyArray<ActionInput>): string[];
|
|
32
70
|
export interface UndoResult {
|
|
33
71
|
readonly undoId: string;
|
|
34
72
|
readonly originalKind: string;
|
|
35
73
|
}
|
|
36
|
-
|
|
37
|
-
|
|
74
|
+
/** Builds the subject-resolvability predicate shared by undoAction/listActions
|
|
75
|
+
* (see the module doc comment): resolvable subject_types must belong to the
|
|
76
|
+
* caller's tenant; unresolvable ones pass through. `alias` is the actions
|
|
77
|
+
* table's name/alias in the enclosing query. Returns the SQL fragment plus
|
|
78
|
+
* its bound params, in the order they appear in the fragment. */
|
|
79
|
+
export declare function subjectTenantPredicate(tenantId: string, alias?: string): {
|
|
80
|
+
sql: string;
|
|
81
|
+
params: string[];
|
|
82
|
+
};
|
|
83
|
+
export declare function undoAction(db: Database.Database, tenantId: string, actionId: string): UndoResult | null;
|
|
84
|
+
export declare function listActions(db: Database.Database, tenantId: string, opts?: {
|
|
38
85
|
limit?: number;
|
|
39
86
|
subjectId?: string;
|
|
40
87
|
kind?: string;
|
|
41
88
|
}): ActionRow[];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export declare function
|
|
45
|
-
|
|
89
|
+
/** Pg counterpart of subjectTenantPredicate — see the module doc comment.
|
|
90
|
+
* `startIdx` is the next free `$n` slot; returns the following free index too. */
|
|
91
|
+
export declare function subjectTenantPredicatePg(tenantId: string, startIdx: number, alias?: string): {
|
|
92
|
+
sql: string;
|
|
93
|
+
params: string[];
|
|
94
|
+
nextIdx: number;
|
|
95
|
+
};
|
|
96
|
+
/** tenantId is accepted for signature uniformity (see the module doc
|
|
97
|
+
* comment) but not used to filter or stamp — `actions` has no tenant_id
|
|
98
|
+
* column, and write-time subject authorization is the caller's job. */
|
|
99
|
+
export declare function writeActionPg(pool: Pool, _tenantId: string, input: ActionInput): Promise<string>;
|
|
100
|
+
export declare function writeActionsBatchPg(pool: Pool, _tenantId: string, inputs: ReadonlyArray<ActionInput>): Promise<string[]>;
|
|
101
|
+
export declare function undoActionPg(pool: Pool, tenantId: string, actionId: string): Promise<UndoResult | null>;
|
|
102
|
+
export declare function listActionsPg(pool: Pool, tenantId: string, opts?: {
|
|
46
103
|
limit?: number;
|
|
47
104
|
subjectId?: string;
|
|
48
105
|
kind?: string;
|
|
@@ -5,13 +5,67 @@
|
|
|
5
5
|
* all rows here, never destructive mutations elsewhere. Dataset projection
|
|
6
6
|
* (build-dataset.ts) reads this table to overlay user-driven state on top
|
|
7
7
|
* of the persisted store. Ports server.py's _write_action + undo flow.
|
|
8
|
+
*
|
|
9
|
+
* Tenancy (program spec §4.6 hardening 1, M2 plan Wave B6): `actions` is
|
|
10
|
+
* DERIVE per the M1 census ("via target session/entity rows") with NO
|
|
11
|
+
* `tenant_id` column. In practice `subject_type` is a free-text polymorphic
|
|
12
|
+
* tag — confirmed real values are `session`, `entity`, `decision`,
|
|
13
|
+
* `open_question` (ids shaped `${sessionId}::<hash>`, see
|
|
14
|
+
* `@core/actions/overlay.ts`'s `openQuestionId`/`decisionId`), and `alert`
|
|
15
|
+
* (ephemeral ids computed fresh per request in build-dataset.ts, e.g.
|
|
16
|
+
* `stale_<mangled-canonical>`, with NO stored row to join against) plus
|
|
17
|
+
* `action` (self-referential undo-of-undo chains). Only the first four
|
|
18
|
+
* resolve to a stamped table; `alert`/`action` never do, by construction —
|
|
19
|
+
* no schema exists that would let them. Chosen mechanism, `tenantId`
|
|
20
|
+
* threaded through every function: `listActions`/`undoAction` require, for
|
|
21
|
+
* a row whose `subject_type` IS resolvable, that the subject exist in the
|
|
22
|
+
* caller's tenant (EXISTS join to `sessions`/`entities`, session-prefix
|
|
23
|
+
* match for decision/open_question); rows with an unresolvable
|
|
24
|
+
* `subject_type` pass through unfiltered rather than being faked closed —
|
|
25
|
+
* excluding them would silently break the real, tested alert
|
|
26
|
+
* dismiss/snooze/undo flow with no isolation benefit (an unresolvable id
|
|
27
|
+
* can't be attributed to ANY tenant, so filtering it out for tenant A
|
|
28
|
+
* would filter it out for every tenant identically). `writeAction`/
|
|
29
|
+
* `writeActionsBatch` take `tenantId` for signature uniformity but do not
|
|
30
|
+
* validate subject ownership (no column to stamp, and validating against
|
|
31
|
+
* the same resolvability rule would reject every legitimate alert write);
|
|
32
|
+
* write-time subject authorization is the caller's job, exactly as
|
|
33
|
+
* Source/Provider registry writes are authorized by the composition root
|
|
34
|
+
* before reaching the store (M2 is plumbing, not auth — program spec §4.6).
|
|
8
35
|
*/
|
|
36
|
+
import { tenantClause, tenantClausePg } from "../tenancy/tenant-clause.js";
|
|
37
|
+
const RESOLVABLE_SUBJECT_TYPES = "('session', 'entity', 'decision', 'open_question')";
|
|
9
38
|
function makeActionId() {
|
|
10
39
|
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
11
40
|
const rand = Math.random().toString(16).slice(2, 10);
|
|
12
41
|
return `act_${ts}_${rand}`;
|
|
13
42
|
}
|
|
14
|
-
|
|
43
|
+
function actionDedupeKey(input) {
|
|
44
|
+
return JSON.stringify([input.kind, input.subjectType, input.subjectId, input.payload ?? null]);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Collapses identical rows (same kind + subjectType + subjectId + payload)
|
|
48
|
+
* within a single batch, keeping the first occurrence. A batch is typically
|
|
49
|
+
* one UI gesture replayed by a flaky client retry, not intentionally repeated
|
|
50
|
+
* writes, so silently dropping the duplicates is the correct behavior rather
|
|
51
|
+
* than inserting redundant log rows.
|
|
52
|
+
*/
|
|
53
|
+
export function dedupeActionInputs(inputs) {
|
|
54
|
+
const seen = new Set();
|
|
55
|
+
const out = [];
|
|
56
|
+
for (const input of inputs) {
|
|
57
|
+
const key = actionDedupeKey(input);
|
|
58
|
+
if (seen.has(key))
|
|
59
|
+
continue;
|
|
60
|
+
seen.add(key);
|
|
61
|
+
out.push(input);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
/** tenantId is accepted for signature uniformity (see the module doc
|
|
66
|
+
* comment) but not used to filter or stamp — `actions` has no tenant_id
|
|
67
|
+
* column, and write-time subject authorization is the caller's job. */
|
|
68
|
+
export function writeAction(db, _tenantId, input) {
|
|
15
69
|
const id = makeActionId();
|
|
16
70
|
const payload = input.payload ? JSON.stringify(input.payload) : null;
|
|
17
71
|
db.prepare(`
|
|
@@ -20,15 +74,50 @@ export function writeAction(db, input) {
|
|
|
20
74
|
`).run(id, new Date().toISOString(), input.kind, input.subjectType, input.subjectId, payload, input.actor ?? "user", input.runtime ?? "api");
|
|
21
75
|
return id;
|
|
22
76
|
}
|
|
23
|
-
export function writeActionsBatch(db, inputs) {
|
|
24
|
-
const
|
|
25
|
-
|
|
77
|
+
export function writeActionsBatch(db, tenantId, inputs) {
|
|
78
|
+
const deduped = dedupeActionInputs(inputs);
|
|
79
|
+
const txn = db.transaction((rows) => rows.map((r) => writeAction(db, tenantId, r)));
|
|
80
|
+
return txn(deduped);
|
|
26
81
|
}
|
|
27
|
-
|
|
82
|
+
/** Builds the subject-resolvability predicate shared by undoAction/listActions
|
|
83
|
+
* (see the module doc comment): resolvable subject_types must belong to the
|
|
84
|
+
* caller's tenant; unresolvable ones pass through. `alias` is the actions
|
|
85
|
+
* table's name/alias in the enclosing query. Returns the SQL fragment plus
|
|
86
|
+
* its bound params, in the order they appear in the fragment. */
|
|
87
|
+
export function subjectTenantPredicate(tenantId, alias = "actions") {
|
|
88
|
+
const sessionTc = tenantClause(tenantId, "s.tenant_id");
|
|
89
|
+
const entityTc = tenantClause(tenantId, "e.tenant_id");
|
|
90
|
+
const prefixTc = tenantClause(tenantId, "sp.tenant_id");
|
|
91
|
+
// The prefix arm splits subject_id on '::' and looks the parent up by equality
|
|
92
|
+
// rather than `subject_id LIKE sp.id || '::%'`. The LIKE form builds its
|
|
93
|
+
// pattern from a column, so sqlite cannot use the sessions primary key and
|
|
94
|
+
// full-scans every session once per action row. On a 15k-session store that
|
|
95
|
+
// read the 378MB sessions table 16 times and took 9.6s inside a synchronous
|
|
96
|
+
// better-sqlite3 .all(), which blocks the event loop and made the whole daemon
|
|
97
|
+
// unreachable (NLM #457). Equality seeks the PK instead.
|
|
98
|
+
//
|
|
99
|
+
// Equivalent because no session id contains '::' (they are `<runtime>_<uuid>`),
|
|
100
|
+
// so the first separator always ends the parent id. When subject_id has no
|
|
101
|
+
// '::' at all, instr returns 0 and substr(x, 1, -1) is '', which matches no
|
|
102
|
+
// session - the same miss the LIKE produced.
|
|
103
|
+
const sql = `(
|
|
104
|
+
EXISTS (SELECT 1 FROM sessions s WHERE s.id = ${alias}.subject_id AND ${sessionTc.sql})
|
|
105
|
+
OR EXISTS (SELECT 1 FROM entities e WHERE e.canonical = ${alias}.subject_id AND ${entityTc.sql})
|
|
106
|
+
OR EXISTS (SELECT 1 FROM sessions sp WHERE sp.id = substr(${alias}.subject_id, 1, instr(${alias}.subject_id, '::') - 1) AND ${prefixTc.sql})
|
|
107
|
+
OR ${alias}.subject_type NOT IN ${RESOLVABLE_SUBJECT_TYPES}
|
|
108
|
+
)`;
|
|
109
|
+
return { sql, params: [sessionTc.param, entityTc.param, prefixTc.param] };
|
|
110
|
+
}
|
|
111
|
+
export function undoAction(db, tenantId, actionId) {
|
|
112
|
+
const pred = subjectTenantPredicate(tenantId);
|
|
28
113
|
const target = db
|
|
29
|
-
.prepare(
|
|
30
|
-
.get(actionId);
|
|
31
|
-
|
|
114
|
+
.prepare(`SELECT id, kind, subject_type, subject_id FROM actions WHERE id = ? AND reverted_by IS NULL AND ${pred.sql}`)
|
|
115
|
+
.get(actionId, ...pred.params);
|
|
116
|
+
// An 'undo' row is itself unrevertable: reverting it wouldn't restore the
|
|
117
|
+
// original action (reverted_by on the original stays pointed at it), so it
|
|
118
|
+
// would just be a dead row. Reject cleanly with the same "not found or
|
|
119
|
+
// already undone" contract the caller already handles.
|
|
120
|
+
if (!target || target.kind === "undo")
|
|
32
121
|
return null;
|
|
33
122
|
const undoId = makeActionId();
|
|
34
123
|
const undoPayload = JSON.stringify({
|
|
@@ -45,7 +134,7 @@ export function undoAction(db, actionId) {
|
|
|
45
134
|
txn();
|
|
46
135
|
return { undoId, originalKind: target.kind };
|
|
47
136
|
}
|
|
48
|
-
export function listActions(db, opts = {}) {
|
|
137
|
+
export function listActions(db, tenantId, opts = {}) {
|
|
49
138
|
const limit = opts.limit ?? 100;
|
|
50
139
|
const where = [];
|
|
51
140
|
const params = [];
|
|
@@ -57,6 +146,9 @@ export function listActions(db, opts = {}) {
|
|
|
57
146
|
where.push("kind = ?");
|
|
58
147
|
params.push(opts.kind);
|
|
59
148
|
}
|
|
149
|
+
const pred = subjectTenantPredicate(tenantId);
|
|
150
|
+
where.push(pred.sql);
|
|
151
|
+
params.push(...pred.params);
|
|
60
152
|
const whereSql = where.length > 0 ? `WHERE ${where.join(" AND ")}` : "";
|
|
61
153
|
const sql = `
|
|
62
154
|
SELECT id, timestamp, kind, subject_type, subject_id, payload, actor, runtime, reverted_by
|
|
@@ -72,7 +164,24 @@ export function listActions(db, opts = {}) {
|
|
|
72
164
|
// ---------------------------------------------------------------------------
|
|
73
165
|
// PG-native counterparts
|
|
74
166
|
// ---------------------------------------------------------------------------
|
|
75
|
-
|
|
167
|
+
/** Pg counterpart of subjectTenantPredicate — see the module doc comment.
|
|
168
|
+
* `startIdx` is the next free `$n` slot; returns the following free index too. */
|
|
169
|
+
export function subjectTenantPredicatePg(tenantId, startIdx, alias = "actions") {
|
|
170
|
+
const sessionTc = tenantClausePg(tenantId, startIdx, "s.tenant_id");
|
|
171
|
+
const entityTc = tenantClausePg(tenantId, startIdx + 1, "e.tenant_id");
|
|
172
|
+
const prefixTc = tenantClausePg(tenantId, startIdx + 2, "sp.tenant_id");
|
|
173
|
+
const sql = `(
|
|
174
|
+
EXISTS (SELECT 1 FROM sessions s WHERE s.id = ${alias}.subject_id AND ${sessionTc.sql})
|
|
175
|
+
OR EXISTS (SELECT 1 FROM entities e WHERE e.canonical = ${alias}.subject_id AND ${entityTc.sql})
|
|
176
|
+
OR EXISTS (SELECT 1 FROM sessions sp WHERE ${alias}.subject_id LIKE sp.id || '::%' AND ${prefixTc.sql})
|
|
177
|
+
OR ${alias}.subject_type NOT IN ${RESOLVABLE_SUBJECT_TYPES}
|
|
178
|
+
)`;
|
|
179
|
+
return { sql, params: [sessionTc.param, entityTc.param, prefixTc.param], nextIdx: startIdx + 3 };
|
|
180
|
+
}
|
|
181
|
+
/** tenantId is accepted for signature uniformity (see the module doc
|
|
182
|
+
* comment) but not used to filter or stamp — `actions` has no tenant_id
|
|
183
|
+
* column, and write-time subject authorization is the caller's job. */
|
|
184
|
+
export async function writeActionPg(pool, _tenantId, input) {
|
|
76
185
|
const id = makeActionId();
|
|
77
186
|
const payload = input.payload ? JSON.stringify(input.payload) : null;
|
|
78
187
|
await pool.query(`INSERT INTO actions (id, timestamp, kind, subject_type, subject_id, payload, actor, runtime)
|
|
@@ -80,14 +189,15 @@ export async function writeActionPg(pool, input) {
|
|
|
80
189
|
payload, input.actor ?? "user", input.runtime ?? "api"]);
|
|
81
190
|
return id;
|
|
82
191
|
}
|
|
83
|
-
export async function writeActionsBatchPg(pool, inputs) {
|
|
84
|
-
|
|
192
|
+
export async function writeActionsBatchPg(pool, _tenantId, inputs) {
|
|
193
|
+
const deduped = dedupeActionInputs(inputs);
|
|
194
|
+
if (deduped.length === 0)
|
|
85
195
|
return [];
|
|
86
196
|
const client = await pool.connect();
|
|
87
197
|
try {
|
|
88
198
|
await client.query("BEGIN");
|
|
89
199
|
const ids = [];
|
|
90
|
-
for (const input of
|
|
200
|
+
for (const input of deduped) {
|
|
91
201
|
const id = makeActionId();
|
|
92
202
|
const payload = input.payload ? JSON.stringify(input.payload) : null;
|
|
93
203
|
await client.query(`INSERT INTO actions (id, timestamp, kind, subject_type, subject_id, payload, actor, runtime)
|
|
@@ -106,12 +216,15 @@ export async function writeActionsBatchPg(pool, inputs) {
|
|
|
106
216
|
client.release();
|
|
107
217
|
}
|
|
108
218
|
}
|
|
109
|
-
export async function undoActionPg(pool, actionId) {
|
|
219
|
+
export async function undoActionPg(pool, tenantId, actionId) {
|
|
110
220
|
const client = await pool.connect();
|
|
111
221
|
try {
|
|
112
222
|
await client.query("BEGIN");
|
|
113
|
-
const
|
|
114
|
-
|
|
223
|
+
const pred = subjectTenantPredicatePg(tenantId, 2);
|
|
224
|
+
const target = await client.query(`SELECT id, kind, subject_type, subject_id FROM actions WHERE id = $1 AND reverted_by IS NULL AND ${pred.sql} FOR UPDATE`, [actionId, ...pred.params]);
|
|
225
|
+
// See undoAction's sqlite counterpart: an 'undo' row can't itself be
|
|
226
|
+
// undone without leaving a dead row that doesn't restore anything.
|
|
227
|
+
if (!target.rows[0] || target.rows[0].kind === "undo") {
|
|
115
228
|
await client.query("ROLLBACK");
|
|
116
229
|
return null;
|
|
117
230
|
}
|
|
@@ -132,7 +245,7 @@ export async function undoActionPg(pool, actionId) {
|
|
|
132
245
|
client.release();
|
|
133
246
|
}
|
|
134
247
|
}
|
|
135
|
-
export async function listActionsPg(pool, opts = {}) {
|
|
248
|
+
export async function listActionsPg(pool, tenantId, opts = {}) {
|
|
136
249
|
const limit = opts.limit ?? 100;
|
|
137
250
|
const where = [];
|
|
138
251
|
const params = [];
|
|
@@ -145,6 +258,10 @@ export async function listActionsPg(pool, opts = {}) {
|
|
|
145
258
|
where.push(`kind = $${idx++}`);
|
|
146
259
|
params.push(opts.kind);
|
|
147
260
|
}
|
|
261
|
+
const pred = subjectTenantPredicatePg(tenantId, idx);
|
|
262
|
+
where.push(pred.sql);
|
|
263
|
+
params.push(...pred.params);
|
|
264
|
+
idx = pred.nextIdx;
|
|
148
265
|
const whereSql = where.length > 0 ? `WHERE ${where.join(" AND ")}` : "";
|
|
149
266
|
params.push(limit);
|
|
150
267
|
const result = await pool.query(`SELECT id, timestamp, kind, subject_type, subject_id, payload, actor, runtime, reverted_by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions-log.js","sourceRoot":"","sources":["../../../src/core/actions/actions-log.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"actions-log.js","sourceRoot":"","sources":["../../../src/core/actions/actions-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
* Shared by buildDataset (UI projection) and SqliteSessionStore (recall
|
|
8
8
|
* path), so the same overlay drives both surfaces. Append-only; every
|
|
9
9
|
* mutation lives as a row in `actions`.
|
|
10
|
+
*
|
|
11
|
+
* Tenancy (program spec §4.6 hardening 1, M2 plan Wave B6): `actions` has no
|
|
12
|
+
* tenant_id column (see `@core/actions/actions-log.ts`'s module doc comment
|
|
13
|
+
* for the full mechanism/rationale). `loadActionOverlay`/`loadActionOverlayPg`
|
|
14
|
+
* reuse the same subject-resolvability predicate so an overlay entry keyed
|
|
15
|
+
* by an entity canonical or session-derived id that collides across tenants
|
|
16
|
+
* (the fixture's adversarial shared-entity case) never applies to the wrong
|
|
17
|
+
* tenant's projection — e.g. team B retiring their own "shared-entity" must
|
|
18
|
+
* never mark team A's distinct "shared-entity" row retired too.
|
|
10
19
|
*/
|
|
11
20
|
import type Database from "better-sqlite3";
|
|
12
21
|
import type { Pool } from "pg";
|
|
@@ -49,8 +58,8 @@ export declare const EMPTY_OVERLAY: ActionOverlay;
|
|
|
49
58
|
* loaders so the projection logic is shared and not duplicated per backend.
|
|
50
59
|
*/
|
|
51
60
|
export declare function reduceActionRows(rows: ReadonlyArray<ActionRow>): ActionOverlay;
|
|
52
|
-
export declare function loadActionOverlay(db: Database.Database): ActionOverlay;
|
|
53
|
-
export declare function loadActionOverlayPg(pool: Pool): Promise<ActionOverlay>;
|
|
61
|
+
export declare function loadActionOverlay(db: Database.Database, tenantId: string): ActionOverlay;
|
|
62
|
+
export declare function loadActionOverlayPg(pool: Pool, tenantId: string): Promise<ActionOverlay>;
|
|
54
63
|
/**
|
|
55
64
|
* Stable id for an open question: `${sessionId}::${hash12(text)}`. Both
|
|
56
65
|
* sides (overlay creators and consumers) compute it the same way so action
|
|
@@ -7,7 +7,17 @@
|
|
|
7
7
|
* Shared by buildDataset (UI projection) and SqliteSessionStore (recall
|
|
8
8
|
* path), so the same overlay drives both surfaces. Append-only; every
|
|
9
9
|
* mutation lives as a row in `actions`.
|
|
10
|
+
*
|
|
11
|
+
* Tenancy (program spec §4.6 hardening 1, M2 plan Wave B6): `actions` has no
|
|
12
|
+
* tenant_id column (see `@core/actions/actions-log.ts`'s module doc comment
|
|
13
|
+
* for the full mechanism/rationale). `loadActionOverlay`/`loadActionOverlayPg`
|
|
14
|
+
* reuse the same subject-resolvability predicate so an overlay entry keyed
|
|
15
|
+
* by an entity canonical or session-derived id that collides across tenants
|
|
16
|
+
* (the fixture's adversarial shared-entity case) never applies to the wrong
|
|
17
|
+
* tenant's projection — e.g. team B retiring their own "shared-entity" must
|
|
18
|
+
* never mark team A's distinct "shared-entity" row retired too.
|
|
10
19
|
*/
|
|
20
|
+
import { subjectTenantPredicate, subjectTenantPredicatePg } from "./actions-log.js";
|
|
11
21
|
export const EMPTY_OVERLAY = {
|
|
12
22
|
dismissedAlerts: new Set(),
|
|
13
23
|
snoozedAlerts: new Map(),
|
|
@@ -110,29 +120,31 @@ export function reduceActionRows(rows) {
|
|
|
110
120
|
}
|
|
111
121
|
return overlay;
|
|
112
122
|
}
|
|
113
|
-
export function loadActionOverlay(db) {
|
|
123
|
+
export function loadActionOverlay(db, tenantId) {
|
|
114
124
|
const hasActions = db
|
|
115
125
|
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='actions'")
|
|
116
126
|
.get();
|
|
117
127
|
if (!hasActions)
|
|
118
128
|
return EMPTY_OVERLAY;
|
|
129
|
+
const pred = subjectTenantPredicate(tenantId);
|
|
119
130
|
// ORDER BY id keeps reducer deterministic: later writes overwrite earlier
|
|
120
131
|
// ones, so the latest non-reverted rename per subject wins.
|
|
121
132
|
const rows = db
|
|
122
133
|
.prepare(`
|
|
123
134
|
SELECT kind, subject_type, subject_id, payload
|
|
124
135
|
FROM actions
|
|
125
|
-
WHERE reverted_by IS NULL
|
|
136
|
+
WHERE reverted_by IS NULL AND ${pred.sql}
|
|
126
137
|
ORDER BY id
|
|
127
138
|
`)
|
|
128
|
-
.all();
|
|
139
|
+
.all(...pred.params);
|
|
129
140
|
return reduceActionRows(rows);
|
|
130
141
|
}
|
|
131
|
-
export async function loadActionOverlayPg(pool) {
|
|
142
|
+
export async function loadActionOverlayPg(pool, tenantId) {
|
|
143
|
+
const pred = subjectTenantPredicatePg(tenantId, 1);
|
|
132
144
|
const result = await pool.query(`SELECT kind, subject_type, subject_id, payload
|
|
133
145
|
FROM actions
|
|
134
|
-
WHERE reverted_by IS NULL
|
|
135
|
-
ORDER BY id
|
|
146
|
+
WHERE reverted_by IS NULL AND ${pred.sql}
|
|
147
|
+
ORDER BY id`, pred.params);
|
|
136
148
|
return reduceActionRows(result.rows);
|
|
137
149
|
}
|
|
138
150
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/core/actions/overlay.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/core/actions/overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,3 +30,17 @@ export declare class ClaudeCodeAdapter implements TranscriptAdapter {
|
|
|
30
30
|
private isSubagentPath;
|
|
31
31
|
private maybeAdd;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Re-derives subagent persona + parent link from a claude-code chunk's
|
|
35
|
+
* already-computed `runtimeSessionId` and `label` — the same two fields the
|
|
36
|
+
* ingest stamp site has on hand, without re-reading the raw transcript.
|
|
37
|
+
* Reverse of the encoding parseSession performs above: id has no slash ->
|
|
38
|
+
* top-level session ("orchestrator", no parent); id matches
|
|
39
|
+
* `<parent>/agent-<id>` -> parent + persona parsed from the label's
|
|
40
|
+
* `[subagent <slug>]` prefix. Any other shape is treated as malformed and
|
|
41
|
+
* returns nulls rather than throwing.
|
|
42
|
+
*/
|
|
43
|
+
export declare function deriveSubagentMeta(runtimeSessionId: string, label: string): {
|
|
44
|
+
persona: string | null;
|
|
45
|
+
parentSessionId: string | null;
|
|
46
|
+
};
|