hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Decision object: the `decisions` table is the source of truth, so an
|
|
3
|
+
* in-force decision stays `active` despite memory decay. The memory
|
|
4
|
+
* mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall only;
|
|
5
|
+
* saveDecision commits both in one `objects` transaction.
|
|
6
|
+
*/
|
|
3
7
|
import { BadRequestError } from '../core/api-errors.js';
|
|
4
8
|
import { writeEntry } from '../store/entry-writes.js';
|
|
5
9
|
import { assertTenantId } from '../store/tenant.js';
|
|
6
|
-
import {
|
|
7
|
-
import { objectIdByMemory } from '../store/sqlite/objects-group.js';
|
|
10
|
+
import { closeObject, listObjects, objectById, saveObject } from './lifecycle.js';
|
|
8
11
|
const SUPERSEDED_TAG = 'superseded';
|
|
9
12
|
export const VALID_DECISION_STATES = new Set([
|
|
10
13
|
'active',
|
|
@@ -32,32 +35,35 @@ export const DECISION = {
|
|
|
32
35
|
};
|
|
33
36
|
/** Create a decision; the memory mirror and the row commit in one transaction.
|
|
34
37
|
* Superseding CASes the old row (WHERE status='active'), so a duplicate supersede aborts the whole write. */
|
|
35
|
-
export function saveDecision(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
36
|
-
return
|
|
38
|
+
export function saveDecision(objects, hippoRoot, tenantId, opts, actor = 'cli') {
|
|
39
|
+
return saveObject(objects, DECISION, { hippoRoot, tenantId, actor }, opts);
|
|
37
40
|
}
|
|
38
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Weaken the memory a new decision replaces, once the save has committed: half-life halved to a day at least, marked
|
|
43
|
+
* stale, tagged `superseded`.
|
|
44
|
+
*/
|
|
39
45
|
export function weakenSupersededMemory(hippoRoot, entry, actor = 'cli') {
|
|
40
46
|
const tags = entry.tags.includes(SUPERSEDED_TAG) ? entry.tags : [...entry.tags, SUPERSEDED_TAG];
|
|
41
47
|
const halved = Math.max(1, Math.floor(entry.half_life_days / 2));
|
|
42
48
|
writeEntry(hippoRoot, { ...entry, half_life_days: halved, confidence: 'stale', tags }, { actor });
|
|
43
49
|
}
|
|
44
50
|
/** Close (retire) an active decision with no successor; the memory mirror is not mutated. */
|
|
45
|
-
export function closeDecision(
|
|
46
|
-
return
|
|
51
|
+
export function closeDecision(objects, tenantId, id, actor = 'cli') {
|
|
52
|
+
return closeObject(objects, DECISION, tenantId, id, actor);
|
|
47
53
|
}
|
|
48
|
-
export function loadDecisionById(
|
|
49
|
-
return
|
|
54
|
+
export function loadDecisionById(objects, tenantId, id) {
|
|
55
|
+
return objectById(objects, DECISION, tenantId, id);
|
|
50
56
|
}
|
|
51
|
-
export function loadDecisions(
|
|
52
|
-
return
|
|
57
|
+
export function loadDecisions(objects, tenantId, opts = {}) {
|
|
58
|
+
return listObjects(objects, DECISION, tenantId, opts);
|
|
53
59
|
}
|
|
54
|
-
export function loadActiveDecisions(
|
|
55
|
-
return loadDecisions(
|
|
60
|
+
export function loadActiveDecisions(objects, tenantId, opts = {}) {
|
|
61
|
+
return loadDecisions(objects, tenantId, { status: 'active', limit: opts.limit });
|
|
56
62
|
}
|
|
57
63
|
/** Resolve a `--supersedes <memory-id>` to the table id of the ACTIVE decision backed by that memory, or null.
|
|
58
64
|
* Exported so the CLI's backward-compat path is testable at the store layer. */
|
|
59
|
-
export function resolveActiveDecisionIdByMemory(
|
|
65
|
+
export async function resolveActiveDecisionIdByMemory(objects, tenantId, memoryId) {
|
|
60
66
|
assertTenantId('resolveActiveDecisionIdByMemory', tenantId);
|
|
61
|
-
return objectIdByMemory(
|
|
67
|
+
return objects.objectIdByMemory(tenantId, 'decision', 'active', memoryId);
|
|
62
68
|
}
|
|
63
69
|
//# sourceMappingURL=decisions.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// The words and rules that differ between the typed objects (decision, project brief and the rest), held as data so one
|
|
1
|
+
// The words and rules that differ between the typed objects (decision, project brief and the rest), held as data so one
|
|
2
|
+
// lifecycle serves every kind.
|
|
2
3
|
// A kind's table, columns and audit keys sit behind the `objects` store group.
|
|
3
4
|
export {};
|
|
4
5
|
//# sourceMappingURL=descriptor.js.map
|
package/dist/objects/fields.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ export interface LineMessages {
|
|
|
3
3
|
readonly singleLine: string;
|
|
4
4
|
readonly tooLong: string;
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* A one-line name such as a repo or a customer: trimmed first, because the trimmed value is what gets stored and
|
|
8
|
+
* matched.
|
|
9
|
+
*/
|
|
7
10
|
export declare function requireLine(value: string, max: number, m: LineMessages): string;
|
|
8
11
|
export interface TextMessages {
|
|
9
12
|
/** Leave out for an optional field. */
|
package/dist/objects/fields.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
// Field checks the typed objects share. The module passes each error text in full, because the wording differs per
|
|
1
|
+
// Field checks the typed objects share. The module passes each error text in full, because the wording differs per
|
|
2
|
+
// type.
|
|
2
3
|
import { BadRequestError } from '../core/api-errors.js';
|
|
3
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* A one-line name such as a repo or a customer: trimmed first, because the trimmed value is what gets stored and
|
|
6
|
+
* matched.
|
|
7
|
+
*/
|
|
4
8
|
export function requireLine(value, max, m) {
|
|
5
9
|
const line = (value ?? '').trim();
|
|
6
10
|
if (line.length === 0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** Incident object: a postmortem capsule with lifecycle open -> resolved -> closed (no supersede chain) and optional
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/** Incident object: a postmortem capsule with lifecycle open -> resolved -> closed (no supersede chain) and optional
|
|
2
|
+
* linked receipts. The `incidents` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET
|
|
3
|
+
* NULL) is for recall. linked_memory_ids must all exist in the SAME tenant or save throws before the insert. */
|
|
4
4
|
import type { KeysetPosition } from '../util/keyset.js';
|
|
5
5
|
import type { ObjectDescriptor } from './descriptor.js';
|
|
6
6
|
import type { Incident, IncidentStatus } from '../core/object-types.js';
|
|
@@ -24,22 +24,20 @@ export interface ListIncidentsOpts {
|
|
|
24
24
|
after?: KeysetPosition;
|
|
25
25
|
}
|
|
26
26
|
export declare const INCIDENT: ObjectDescriptor<'incident'>;
|
|
27
|
-
/** Opens an incident with its mirror memory (content "<text
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/** `saveIncident` over a served store's group. */
|
|
27
|
+
/** Opens an incident with its mirror memory (content "<text>
|
|
28
|
+
|
|
29
|
+
Context: <context>" when context is given) in one write; a linked memory outside the tenant refuses the whole write. */
|
|
31
30
|
export declare function openIncident(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveIncidentOpts, actor: string): Promise<Incident>;
|
|
32
|
-
/** Moves an open incident to resolved and keeps it on record;
|
|
33
|
-
|
|
34
|
-
/** `resolveIncident` over a served store's group. */
|
|
31
|
+
/** Moves an open incident to resolved and keeps it on record;
|
|
32
|
+
* a missing incident and one that is not open are told apart. */
|
|
35
33
|
export declare function resolveOpenIncident(objects: Objects, tenantId: string, id: number, resolutionText: string, actor: string): Promise<Incident>;
|
|
36
34
|
/** Close (retire) an incident from open or resolved; sets closed_at only, the memory mirror is not mutated. */
|
|
37
|
-
export declare function closeIncident(
|
|
38
|
-
export declare function loadIncidentById(
|
|
39
|
-
export declare function loadIncidents(
|
|
40
|
-
export declare function loadOpenIncidents(
|
|
35
|
+
export declare function closeIncident(objects: Objects, tenantId: string, id: number, actor?: string): Promise<Incident>;
|
|
36
|
+
export declare function loadIncidentById(objects: Objects, tenantId: string, id: number): Promise<Incident | null>;
|
|
37
|
+
export declare function loadIncidents(objects: Objects, tenantId: string, opts?: ListIncidentsOpts): Promise<Incident[]>;
|
|
38
|
+
export declare function loadOpenIncidents(objects: Objects, tenantId: string, opts?: {
|
|
41
39
|
limit?: number;
|
|
42
|
-
}): Incident[]
|
|
40
|
+
}): Promise<Incident[]>;
|
|
43
41
|
/** Resolve a memory id to the table id of the OPEN incident backed by it, or null; exported for store-layer tests. */
|
|
44
|
-
export declare function resolveActiveIncidentIdByMemory(
|
|
42
|
+
export declare function resolveActiveIncidentIdByMemory(objects: Objects, tenantId: string, memoryId: string): Promise<number | null>;
|
|
45
43
|
//# sourceMappingURL=incidents.d.ts.map
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/** Incident object: a postmortem capsule with lifecycle open -> resolved -> closed (no supersede chain) and optional
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/** Incident object: a postmortem capsule with lifecycle open -> resolved -> closed (no supersede chain) and optional
|
|
2
|
+
* linked receipts. The `incidents` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET
|
|
3
|
+
* NULL) is for recall. linked_memory_ids must all exist in the SAME tenant or save throws before the insert. */
|
|
4
4
|
import { BadRequestError, ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
5
5
|
import { assertTenantId } from '../store/tenant.js';
|
|
6
|
-
import {
|
|
7
|
-
import { isObjectRefusal } from '../store/port.js';
|
|
8
|
-
import { objectIdByMemory, sqliteObjects } from '../store/sqlite/objects-group.js';
|
|
6
|
+
import { closeObject, listObjects, objectById, objectMirror } from './lifecycle.js';
|
|
7
|
+
import { isObjectRefusal, } from '../store/port.js';
|
|
9
8
|
export const VALID_INCIDENT_STATES = new Set([
|
|
10
9
|
'open',
|
|
11
10
|
'resolved',
|
|
@@ -31,23 +30,25 @@ function incidentOpen(hippoRoot, tenantId, opts, actor) {
|
|
|
31
30
|
? `${opts.incidentText}\n\nContext: ${opts.context}`
|
|
32
31
|
: opts.incidentText;
|
|
33
32
|
const mirror = objectMirror(hippoRoot, tenantId, 'incident', { content, tags: opts.extraTags ?? [] });
|
|
34
|
-
const fields = {
|
|
33
|
+
const fields = {
|
|
34
|
+
incidentText: opts.incidentText,
|
|
35
|
+
context: opts.context ?? undefined,
|
|
36
|
+
linkedMemoryIds: opts.linkedMemoryIds ?? [],
|
|
37
|
+
};
|
|
35
38
|
return { mirror, fields, actor, at };
|
|
36
39
|
}
|
|
37
40
|
function opened(tenantId, written) {
|
|
38
41
|
if (!('refused' in written))
|
|
39
42
|
return written;
|
|
40
43
|
// A linked id of another tenant reads as missing, so an unverifiable receipt is never recorded.
|
|
41
|
-
if (written.refused === 'unlinked')
|
|
44
|
+
if (written.refused === 'unlinked') {
|
|
42
45
|
throw new NotFoundError(`saveIncident: linked memory ${written.memoryId} not found for tenant ${tenantId}`);
|
|
46
|
+
}
|
|
43
47
|
throw new Error('saveIncident: failed to reload saved incident row');
|
|
44
48
|
}
|
|
45
|
-
/** Opens an incident with its mirror memory (content "<text
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return opened(tenantId, sqliteObjects(hippoRoot).openIncident(tenantId, incidentOpen(hippoRoot, tenantId, opts, actor)));
|
|
49
|
-
}
|
|
50
|
-
/** `saveIncident` over a served store's group. */
|
|
49
|
+
/** Opens an incident with its mirror memory (content "<text>
|
|
50
|
+
|
|
51
|
+
Context: <context>" when context is given) in one write; a linked memory outside the tenant refuses the whole write. */
|
|
51
52
|
export async function openIncident(objects, hippoRoot, tenantId, opts, actor) {
|
|
52
53
|
return opened(tenantId, await objects.openIncident(tenantId, incidentOpen(hippoRoot, tenantId, opts, actor)));
|
|
53
54
|
}
|
|
@@ -61,36 +62,34 @@ function resolving(tenantId, resolutionText, actor) {
|
|
|
61
62
|
function resolved(tenantId, id, written) {
|
|
62
63
|
if (!isObjectRefusal(written))
|
|
63
64
|
return written;
|
|
64
|
-
if (written.refused === 'missing')
|
|
65
|
+
if (written.refused === 'missing') {
|
|
65
66
|
throw new NotFoundError(`resolveIncident: incident ${id} not found for tenant ${tenantId}`);
|
|
67
|
+
}
|
|
66
68
|
if (written.refused !== 'status')
|
|
67
69
|
throw new NotFoundError(`resolveIncident: incident ${id} not found after UPDATE`);
|
|
68
70
|
throw new ConflictError(`resolveIncident: incident ${id} is not open (status='${written.status}'); only open incidents can be resolved.`);
|
|
69
71
|
}
|
|
70
|
-
/** Moves an open incident to resolved and keeps it on record;
|
|
71
|
-
|
|
72
|
-
return resolved(tenantId, id, sqliteObjects(hippoRoot).resolveIncident(tenantId, id, resolving(tenantId, resolutionText, actor)));
|
|
73
|
-
}
|
|
74
|
-
/** `resolveIncident` over a served store's group. */
|
|
72
|
+
/** Moves an open incident to resolved and keeps it on record;
|
|
73
|
+
* a missing incident and one that is not open are told apart. */
|
|
75
74
|
export async function resolveOpenIncident(objects, tenantId, id, resolutionText, actor) {
|
|
76
75
|
return resolved(tenantId, id, await objects.resolveIncident(tenantId, id, resolving(tenantId, resolutionText, actor)));
|
|
77
76
|
}
|
|
78
77
|
/** Close (retire) an incident from open or resolved; sets closed_at only, the memory mirror is not mutated. */
|
|
79
|
-
export function closeIncident(
|
|
80
|
-
return
|
|
78
|
+
export function closeIncident(objects, tenantId, id, actor = 'cli') {
|
|
79
|
+
return closeObject(objects, INCIDENT, tenantId, id, actor);
|
|
81
80
|
}
|
|
82
|
-
export function loadIncidentById(
|
|
83
|
-
return
|
|
81
|
+
export function loadIncidentById(objects, tenantId, id) {
|
|
82
|
+
return objectById(objects, INCIDENT, tenantId, id);
|
|
84
83
|
}
|
|
85
|
-
export function loadIncidents(
|
|
86
|
-
return
|
|
84
|
+
export function loadIncidents(objects, tenantId, opts = {}) {
|
|
85
|
+
return listObjects(objects, INCIDENT, tenantId, opts);
|
|
87
86
|
}
|
|
88
|
-
export function loadOpenIncidents(
|
|
89
|
-
return loadIncidents(
|
|
87
|
+
export function loadOpenIncidents(objects, tenantId, opts = {}) {
|
|
88
|
+
return loadIncidents(objects, tenantId, { status: 'open', limit: opts.limit });
|
|
90
89
|
}
|
|
91
90
|
/** Resolve a memory id to the table id of the OPEN incident backed by it, or null; exported for store-layer tests. */
|
|
92
|
-
export function resolveActiveIncidentIdByMemory(
|
|
91
|
+
export async function resolveActiveIncidentIdByMemory(objects, tenantId, memoryId) {
|
|
93
92
|
assertTenantId('resolveActiveIncidentIdByMemory', tenantId);
|
|
94
|
-
return objectIdByMemory(
|
|
93
|
+
return objects.objectIdByMemory(tenantId, 'incident', 'open', memoryId);
|
|
95
94
|
}
|
|
96
95
|
//# sourceMappingURL=incidents.js.map
|
|
@@ -3,12 +3,9 @@ import type { ObjectByKind, ObjectKind, SavableKind } from '../core/object-types
|
|
|
3
3
|
import { type Objects } from '../store/port.js';
|
|
4
4
|
import type { ObjectDescriptor, ObjectListOpts, SavableDescriptor } from './descriptor.js';
|
|
5
5
|
/** Newest first. */
|
|
6
|
-
export declare function listObjectsAt<K extends ObjectKind>(hippoRoot: string, d: ObjectDescriptor<K>, tenantId: string, opts: ObjectListOpts<K>): ObjectByKind[K][];
|
|
7
6
|
export declare function listObjects<K extends ObjectKind>(objects: Objects, d: ObjectDescriptor<K>, tenantId: string, opts: ObjectListOpts<K>): Promise<ObjectByKind[K][]>;
|
|
8
|
-
export declare function objectByIdAt<K extends ObjectKind>(hippoRoot: string, d: ObjectDescriptor<K>, tenantId: string, id: number): ObjectByKind[K] | null;
|
|
9
7
|
export declare function objectById<K extends ObjectKind>(objects: Objects, d: ObjectDescriptor<K>, tenantId: string, id: number): Promise<ObjectByKind[K] | null>;
|
|
10
8
|
/** Retires one object; its mirror memory stays as saved. */
|
|
11
|
-
export declare function closeObjectAt<K extends ObjectKind>(hippoRoot: string, d: ObjectDescriptor<K>, tenantId: string, id: number, actor: string): ObjectByKind[K];
|
|
12
9
|
export declare function closeObject<K extends ObjectKind>(objects: Objects, d: ObjectDescriptor<K>, tenantId: string, id: number, actor: string): Promise<ObjectByKind[K]>;
|
|
13
10
|
/** The memory a typed object writes beside its row, so recall finds the object. */
|
|
14
11
|
export declare function objectMirror(hippoRoot: string, tenantId: string, source: ObjectKind, text: {
|
|
@@ -22,6 +19,5 @@ export interface ObjectSaveSite {
|
|
|
22
19
|
readonly actor: string;
|
|
23
20
|
}
|
|
24
21
|
/** Creates an object, or the version that replaces the one its options name, with its mirror memory in one write. */
|
|
25
|
-
export declare function saveObjectAt<K extends SavableKind, W>(d: SavableDescriptor<K, W>, site: ObjectSaveSite, opts: W): ObjectByKind[K];
|
|
26
22
|
export declare function saveObject<K extends SavableKind, W>(objects: Objects, d: SavableDescriptor<K, W>, site: ObjectSaveSite, opts: W): Promise<ObjectByKind[K]>;
|
|
27
23
|
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// Save, close, load-by-id and list for every typed object: the checks, the mirror memory and the error text, over the
|
|
2
|
-
// Each flow
|
|
3
|
-
// The tenant, the fields and the list status are checked first, so a bad request fails before
|
|
1
|
+
// Save, close, load-by-id and list for every typed object: the checks, the mirror memory and the error text, over the
|
|
2
|
+
// `objects` store group. Each flow runs once, over the `objects` group of whatever store the caller holds: the CLI's, a
|
|
3
|
+
// served one, or a test's. The tenant, the fields and the list status are checked first, so a bad request fails before
|
|
4
|
+
// a store is asked.
|
|
4
5
|
import { DEFAULT_LIST_LIMIT } from '../util/limits.js';
|
|
5
6
|
import { BadRequestError, ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
6
7
|
import { loadConfig } from '../core/config.js';
|
|
7
8
|
import { createMemory, Layer } from '../core/memory.js';
|
|
8
|
-
import { isObjectRefusal } from '../store/port.js';
|
|
9
|
-
import { sqliteObjects } from '../store/sqlite/objects-group.js';
|
|
9
|
+
import { isObjectRefusal, } from '../store/port.js';
|
|
10
10
|
import { assertTenantId } from '../store/tenant.js';
|
|
11
11
|
/** An empty status or filter lists every row, as an absent one does. */
|
|
12
12
|
function listQuery(d, tenantId, opts) {
|
|
@@ -14,19 +14,17 @@ function listQuery(d, tenantId, opts) {
|
|
|
14
14
|
if (opts.status && !d.states.has(opts.status)) {
|
|
15
15
|
throw new BadRequestError(`${d.fn.list}: status must be one of ${Array.from(d.states).join('|')}; got ${opts.status}`);
|
|
16
16
|
}
|
|
17
|
-
return {
|
|
17
|
+
return {
|
|
18
|
+
status: opts.status || undefined,
|
|
19
|
+
filter: opts.filter || undefined,
|
|
20
|
+
limit: opts.limit ?? DEFAULT_LIST_LIMIT,
|
|
21
|
+
after: opts.after,
|
|
22
|
+
};
|
|
18
23
|
}
|
|
19
24
|
/** Newest first. */
|
|
20
|
-
export function listObjectsAt(hippoRoot, d, tenantId, opts) {
|
|
21
|
-
return sqliteObjects(hippoRoot).listObjects(tenantId, d.kind, listQuery(d, tenantId, opts));
|
|
22
|
-
}
|
|
23
25
|
export async function listObjects(objects, d, tenantId, opts) {
|
|
24
26
|
return objects.listObjects(tenantId, d.kind, listQuery(d, tenantId, opts));
|
|
25
27
|
}
|
|
26
|
-
export function objectByIdAt(hippoRoot, d, tenantId, id) {
|
|
27
|
-
assertTenantId(d.fn.get, tenantId);
|
|
28
|
-
return sqliteObjects(hippoRoot).objectById(tenantId, d.kind, id);
|
|
29
|
-
}
|
|
30
28
|
export async function objectById(objects, d, tenantId, id) {
|
|
31
29
|
assertTenantId(d.fn.get, tenantId);
|
|
32
30
|
return objects.objectById(tenantId, d.kind, id);
|
|
@@ -38,18 +36,15 @@ function closing(d, tenantId, actor) {
|
|
|
38
36
|
function closed(d, tenantId, id, written) {
|
|
39
37
|
if (!isObjectRefusal(written))
|
|
40
38
|
return written;
|
|
41
|
-
if (written.refused === 'missing')
|
|
39
|
+
if (written.refused === 'missing') {
|
|
42
40
|
throw new NotFoundError(`${d.fn.close}: ${d.label} ${id} not found for tenant ${tenantId}`);
|
|
41
|
+
}
|
|
43
42
|
if (written.refused !== 'status')
|
|
44
43
|
throw new NotFoundError(`${d.fn.close}: ${d.label} ${id} not found after UPDATE`);
|
|
45
44
|
const closable = d.closableFrom.join(' or ');
|
|
46
45
|
throw new ConflictError(`${d.fn.close}: ${d.label} ${id} is ${d.closeRefusal ?? `not ${closable}`} (status='${written.status}'); only ${closable} ${d.plural} can be closed.`);
|
|
47
46
|
}
|
|
48
47
|
/** Retires one object; its mirror memory stays as saved. */
|
|
49
|
-
export function closeObjectAt(hippoRoot, d, tenantId, id, actor) {
|
|
50
|
-
const close = closing(d, tenantId, actor);
|
|
51
|
-
return closed(d, tenantId, id, sqliteObjects(hippoRoot).closeObject(tenantId, d.kind, id, close));
|
|
52
|
-
}
|
|
53
48
|
export async function closeObject(objects, d, tenantId, id, actor) {
|
|
54
49
|
const close = closing(d, tenantId, actor);
|
|
55
50
|
return closed(d, tenantId, id, await objects.closeObject(tenantId, d.kind, id, close));
|
|
@@ -67,7 +62,14 @@ export function objectMirror(hippoRoot, tenantId, source, text) {
|
|
|
67
62
|
}
|
|
68
63
|
function objectSave(site, kind, draft) {
|
|
69
64
|
const mirror = objectMirror(site.hippoRoot, site.tenantId, kind, draft);
|
|
70
|
-
return {
|
|
65
|
+
return {
|
|
66
|
+
mirror,
|
|
67
|
+
fields: draft.fields,
|
|
68
|
+
supersedesId: draft.supersedesId,
|
|
69
|
+
changeSummary: draft.changeSummary,
|
|
70
|
+
actor: site.actor,
|
|
71
|
+
at: draft.at,
|
|
72
|
+
};
|
|
71
73
|
}
|
|
72
74
|
function saved(d, tenantId, replaced, written) {
|
|
73
75
|
if (!isObjectRefusal(written))
|
|
@@ -84,11 +86,6 @@ function saved(d, tenantId, replaced, written) {
|
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
/** Creates an object, or the version that replaces the one its options name, with its mirror memory in one write. */
|
|
87
|
-
export function saveObjectAt(d, site, opts) {
|
|
88
|
-
assertTenantId(d.fn.save, site.tenantId);
|
|
89
|
-
const draft = d.draft(opts);
|
|
90
|
-
return saved(d, site.tenantId, draft.supersedesId, sqliteObjects(site.hippoRoot).saveObject(site.tenantId, d.kind, objectSave(site, d.kind, draft)));
|
|
91
|
-
}
|
|
92
89
|
export async function saveObject(objects, d, site, opts) {
|
|
93
90
|
assertTenantId(d.fn.save, site.tenantId);
|
|
94
91
|
const draft = d.draft(opts);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** Policy object: a rule in force over a valid-time range [valid_from, valid_to), evolving via supersession;
|
|
2
|
-
* Transaction-time travel
|
|
3
|
-
*
|
|
1
|
+
/** Policy object: a rule in force over a valid-time range [valid_from, valid_to), evolving via supersession;
|
|
2
|
+
* `policiesAsOf` queries it. Transaction-time travel is deferred; superseding keeps the predecessor's range.
|
|
3
|
+
* Dates are normalised to ISO-8601 (`toISOString`) at the store boundary, so lexical half-open comparison is sound. */
|
|
4
4
|
import type { KeysetPosition } from '../util/keyset.js';
|
|
5
5
|
import type { SavableDescriptor } from './descriptor.js';
|
|
6
6
|
import type { Policy, PolicyStatus } from '../core/object-types.js';
|
|
@@ -38,21 +38,17 @@ export declare function validatePolicyDates(validFromRaw: string | undefined, va
|
|
|
38
38
|
export declare const POLICY: SavableDescriptor<'policy', SavePolicyOpts>;
|
|
39
39
|
/** Create a policy, or a new version superseding an existing one, in the `objects` store group's one transaction.
|
|
40
40
|
* valid_from defaults to now; valid_to must be > valid_from (validatePolicyDates). */
|
|
41
|
-
export declare function savePolicy(hippoRoot: string, tenantId: string, opts: SavePolicyOpts, actor?: string): Policy
|
|
41
|
+
export declare function savePolicy(objects: Objects, hippoRoot: string, tenantId: string, opts: SavePolicyOpts, actor?: string): Promise<Policy>;
|
|
42
42
|
/** Close (retire) an active policy with no successor; CAS on status='active', a superseded row is terminal. */
|
|
43
|
-
export declare function closePolicy(
|
|
44
|
-
export declare function loadPolicyById(
|
|
45
|
-
export declare function loadPolicies(
|
|
46
|
-
export declare function loadActivePolicies(
|
|
43
|
+
export declare function closePolicy(objects: Objects, tenantId: string, id: number, actor?: string): Promise<Policy>;
|
|
44
|
+
export declare function loadPolicyById(objects: Objects, tenantId: string, id: number): Promise<Policy | null>;
|
|
45
|
+
export declare function loadPolicies(objects: Objects, tenantId: string, opts?: ListPoliciesOpts): Promise<Policy[]>;
|
|
46
|
+
export declare function loadActivePolicies(objects: Objects, tenantId: string, opts?: {
|
|
47
47
|
limit?: number;
|
|
48
|
-
}): Policy[]
|
|
49
|
-
/** The policies in force at `asOfDate` (valid-time, half-open [valid_from, valid_to)); superseded rows still answer
|
|
50
|
-
* `closed` rows are excluded; a date-only asOfDate means the END of that
|
|
51
|
-
|
|
52
|
-
name?: string;
|
|
53
|
-
limit?: number;
|
|
54
|
-
}): Policy[];
|
|
55
|
-
/** `loadPoliciesAsOf` over a served store's group. */
|
|
48
|
+
}): Promise<Policy[]>;
|
|
49
|
+
/** The policies in force at `asOfDate` (valid-time, half-open [valid_from, valid_to)); superseded rows still answer
|
|
50
|
+
* while the successor is not yet effective. `closed` rows are excluded; a date-only asOfDate means the END of that
|
|
51
|
+
* UTC day (23:59:59.999Z), so a policy created today shows up in "as of today". */
|
|
56
52
|
export declare function policiesAsOf(objects: Objects, tenantId: string, asOfDate: string, opts?: {
|
|
57
53
|
name?: string;
|
|
58
54
|
limit?: number;
|
package/dist/objects/policies.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/** Policy object: a rule in force over a valid-time range [valid_from, valid_to), evolving via supersession;
|
|
2
|
-
* Transaction-time travel
|
|
3
|
-
*
|
|
1
|
+
/** Policy object: a rule in force over a valid-time range [valid_from, valid_to), evolving via supersession;
|
|
2
|
+
* `policiesAsOf` queries it. Transaction-time travel is deferred; superseding keeps the predecessor's range.
|
|
3
|
+
* Dates are normalised to ISO-8601 (`toISOString`) at the store boundary, so lexical half-open comparison is sound. */
|
|
4
4
|
import { DEFAULT_LIST_LIMIT } from '../util/limits.js';
|
|
5
5
|
import { BadRequestError } from '../core/api-errors.js';
|
|
6
6
|
import { assertTenantId } from '../store/tenant.js';
|
|
7
|
-
import {
|
|
8
|
-
import { sqliteObjects } from '../store/sqlite/objects-group.js';
|
|
7
|
+
import { closeObject, listObjects, objectById, saveObject } from './lifecycle.js';
|
|
9
8
|
export const VALID_POLICY_STATES = new Set([
|
|
10
9
|
'active',
|
|
11
10
|
'superseded',
|
|
@@ -66,28 +65,25 @@ export const POLICY = {
|
|
|
66
65
|
};
|
|
67
66
|
/** Create a policy, or a new version superseding an existing one, in the `objects` store group's one transaction.
|
|
68
67
|
* valid_from defaults to now; valid_to must be > valid_from (validatePolicyDates). */
|
|
69
|
-
export function savePolicy(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
70
|
-
return
|
|
68
|
+
export function savePolicy(objects, hippoRoot, tenantId, opts, actor = 'cli') {
|
|
69
|
+
return saveObject(objects, POLICY, { hippoRoot, tenantId, actor }, opts);
|
|
71
70
|
}
|
|
72
71
|
/** Close (retire) an active policy with no successor; CAS on status='active', a superseded row is terminal. */
|
|
73
|
-
export function closePolicy(
|
|
74
|
-
return
|
|
72
|
+
export function closePolicy(objects, tenantId, id, actor = 'cli') {
|
|
73
|
+
return closeObject(objects, POLICY, tenantId, id, actor);
|
|
75
74
|
}
|
|
76
|
-
export function loadPolicyById(
|
|
77
|
-
return
|
|
75
|
+
export function loadPolicyById(objects, tenantId, id) {
|
|
76
|
+
return objectById(objects, POLICY, tenantId, id);
|
|
78
77
|
}
|
|
79
|
-
export function loadPolicies(
|
|
80
|
-
return
|
|
78
|
+
export function loadPolicies(objects, tenantId, opts = {}) {
|
|
79
|
+
return listObjects(objects, POLICY, tenantId, opts);
|
|
81
80
|
}
|
|
82
|
-
export function loadActivePolicies(
|
|
83
|
-
return loadPolicies(
|
|
81
|
+
export function loadActivePolicies(objects, tenantId, opts = {}) {
|
|
82
|
+
return loadPolicies(objects, tenantId, { status: 'active', limit: opts.limit });
|
|
84
83
|
}
|
|
85
|
-
/** The policies in force at `asOfDate` (valid-time, half-open [valid_from, valid_to)); superseded rows still answer
|
|
86
|
-
* `closed` rows are excluded; a date-only asOfDate means the END of that
|
|
87
|
-
|
|
88
|
-
return sqliteObjects(hippoRoot).policiesInForce(tenantId, inForceQuery(tenantId, asOfDate, opts));
|
|
89
|
-
}
|
|
90
|
-
/** `loadPoliciesAsOf` over a served store's group. */
|
|
84
|
+
/** The policies in force at `asOfDate` (valid-time, half-open [valid_from, valid_to)); superseded rows still answer
|
|
85
|
+
* while the successor is not yet effective. `closed` rows are excluded; a date-only asOfDate means the END of that
|
|
86
|
+
* UTC day (23:59:59.999Z), so a policy created today shows up in "as of today". */
|
|
91
87
|
export async function policiesAsOf(objects, tenantId, asOfDate, opts = {}) {
|
|
92
88
|
return objects.policiesInForce(tenantId, inForceQuery(tenantId, asOfDate, opts));
|
|
93
89
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Process object: a named, ordered list of `steps` that evolves by supersession, each version recording
|
|
3
|
+
* `change_summary` and a server-derived `version`.
|
|
4
|
+
* The `processes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for
|
|
5
|
+
* recall.
|
|
3
6
|
* Structural step-diffing is a deferred read-side feature; the version chain is the changelog. */
|
|
4
7
|
import type { KeysetPosition } from '../util/keyset.js';
|
|
8
|
+
import type { Objects } from '../store/port.js';
|
|
5
9
|
import { type JsonValue } from '../util/json.js';
|
|
6
10
|
import type { SavableDescriptor } from './descriptor.js';
|
|
7
11
|
import type { Process, ProcessStatus } from '../core/object-types.js';
|
|
@@ -30,14 +34,16 @@ export interface ListProcessesOpts {
|
|
|
30
34
|
/** Validate and trim the steps body; throws on a non-array, a non-string or empty element, or a cap breach. */
|
|
31
35
|
export declare function validateProcessSteps(steps: JsonValue): string[];
|
|
32
36
|
export declare const PROCESS: SavableDescriptor<'process', SaveProcessOpts>;
|
|
33
|
-
/** Create a process, or a new version superseding an existing one, in the `objects`
|
|
34
|
-
*
|
|
35
|
-
|
|
37
|
+
/** Create a process, or a new version superseding an existing one, in the `objects`
|
|
38
|
+
* store group's one transaction. The supersede CAS (WHERE status='active' AND id
|
|
39
|
+
* != <new id>) throws on changes===0 so a duplicate supersede aborts the write.
|
|
40
|
+
*/
|
|
41
|
+
export declare function saveProcess(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveProcessOpts, actor?: string): Promise<Process>;
|
|
36
42
|
/** Close (retire) an active process with no successor; a superseded row cannot be closed. */
|
|
37
|
-
export declare function closeProcess(
|
|
38
|
-
export declare function loadProcessById(
|
|
39
|
-
export declare function loadProcesses(
|
|
40
|
-
export declare function loadActiveProcesses(
|
|
43
|
+
export declare function closeProcess(objects: Objects, tenantId: string, id: number, actor?: string): Promise<Process>;
|
|
44
|
+
export declare function loadProcessById(objects: Objects, tenantId: string, id: number): Promise<Process | null>;
|
|
45
|
+
export declare function loadProcesses(objects: Objects, tenantId: string, opts?: ListProcessesOpts): Promise<Process[]>;
|
|
46
|
+
export declare function loadActiveProcesses(objects: Objects, tenantId: string, opts?: {
|
|
41
47
|
limit?: number;
|
|
42
|
-
}): Process[]
|
|
48
|
+
}): Promise<Process[]>;
|
|
43
49
|
//# sourceMappingURL=processes.d.ts.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Process object: a named, ordered list of `steps` that evolves by supersession, each version recording
|
|
3
|
+
* `change_summary` and a server-derived `version`.
|
|
4
|
+
* The `processes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for
|
|
5
|
+
* recall.
|
|
3
6
|
* Structural step-diffing is a deferred read-side feature; the version chain is the changelog. */
|
|
4
7
|
import { BadRequestError } from '../core/api-errors.js';
|
|
5
8
|
import { isJsonString } from '../util/json.js';
|
|
6
|
-
import {
|
|
9
|
+
import { closeObject, listObjects, objectById, saveObject } from './lifecycle.js';
|
|
7
10
|
export const VALID_PROCESS_STATES = new Set([
|
|
8
11
|
'active',
|
|
9
12
|
'superseded',
|
|
@@ -71,22 +74,24 @@ export const PROCESS = {
|
|
|
71
74
|
};
|
|
72
75
|
},
|
|
73
76
|
};
|
|
74
|
-
/** Create a process, or a new version superseding an existing one, in the `objects`
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
/** Create a process, or a new version superseding an existing one, in the `objects`
|
|
78
|
+
* store group's one transaction. The supersede CAS (WHERE status='active' AND id
|
|
79
|
+
* != <new id>) throws on changes===0 so a duplicate supersede aborts the write.
|
|
80
|
+
*/
|
|
81
|
+
export function saveProcess(objects, hippoRoot, tenantId, opts, actor = 'cli') {
|
|
82
|
+
return saveObject(objects, PROCESS, { hippoRoot, tenantId, actor }, opts);
|
|
78
83
|
}
|
|
79
84
|
/** Close (retire) an active process with no successor; a superseded row cannot be closed. */
|
|
80
|
-
export function closeProcess(
|
|
81
|
-
return
|
|
85
|
+
export function closeProcess(objects, tenantId, id, actor = 'cli') {
|
|
86
|
+
return closeObject(objects, PROCESS, tenantId, id, actor);
|
|
82
87
|
}
|
|
83
|
-
export function loadProcessById(
|
|
84
|
-
return
|
|
88
|
+
export function loadProcessById(objects, tenantId, id) {
|
|
89
|
+
return objectById(objects, PROCESS, tenantId, id);
|
|
85
90
|
}
|
|
86
|
-
export function loadProcesses(
|
|
87
|
-
return
|
|
91
|
+
export function loadProcesses(objects, tenantId, opts = {}) {
|
|
92
|
+
return listObjects(objects, PROCESS, tenantId, opts);
|
|
88
93
|
}
|
|
89
|
-
export function loadActiveProcesses(
|
|
90
|
-
return loadProcesses(
|
|
94
|
+
export function loadActiveProcesses(objects, tenantId, opts = {}) {
|
|
95
|
+
return loadProcesses(objects, tenantId, { status: 'active', limit: opts.limit });
|
|
91
96
|
}
|
|
92
97
|
//# sourceMappingURL=processes.js.map
|