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
package/dist/store/cards.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
1
2
|
import { SessionHandoff, HandoffOutcome } from '../core/handoff.js';
|
|
2
3
|
import { Card, CardStatus, CardRun, CardComment } from '../core/card.js';
|
|
4
|
+
export declare function loadCardRow(db: DatabaseSyncLike, tenantId: string, id: string): Card | null;
|
|
3
5
|
export interface TransitionCardOptions {
|
|
4
6
|
readonly from: CardStatus[];
|
|
5
7
|
readonly to: CardStatus;
|
|
@@ -29,34 +31,46 @@ export declare function loadCardDeps(hippoRoot: string, tenantId: string, id: st
|
|
|
29
31
|
parents: string[];
|
|
30
32
|
children: string[];
|
|
31
33
|
};
|
|
34
|
+
export declare function loadCardDepsAt(db: DatabaseSyncLike, tenantId: string, id: string): {
|
|
35
|
+
parents: string[];
|
|
36
|
+
children: string[];
|
|
37
|
+
};
|
|
32
38
|
/** Returns this card's run history, most recent first. */
|
|
33
39
|
export declare function loadCardRuns(hippoRoot: string, tenantId: string, id: string): CardRun[];
|
|
40
|
+
export declare function loadCardRunsAt(db: DatabaseSyncLike, tenantId: string, id: string): CardRun[];
|
|
34
41
|
/** Returns this card's comments, most recent first. */
|
|
35
42
|
export declare function loadCardComments(hippoRoot: string, tenantId: string, id: string): CardComment[];
|
|
43
|
+
export declare function loadCardCommentsAt(db: DatabaseSyncLike, tenantId: string, id: string): CardComment[];
|
|
36
44
|
/** Read side of the card <-> handoff round trip: the newest handoff filed against this card. */
|
|
37
45
|
export declare function loadLatestHandoffForCard(hippoRoot: string, tenantId: string, cardId: string): SessionHandoff | null;
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
export declare function loadLatestHandoffForCardAt(db: DatabaseSyncLike, tenantId: string, cardId: string): SessionHandoff | null;
|
|
47
|
+
/** Atomic claim: WHERE status IN (ready, blocked) AND assignee_runtime IS NULL decides the race. Throws on an unknown
|
|
48
|
+
* card id; returns null for a card not ready/blocked or already claimed. Sets a CARD_LEASE_MS lease and returns the new
|
|
49
|
+
* run's id as runId. */
|
|
40
50
|
export declare function claimCard(hippoRoot: string, tenantId: string, id: string, runtime: string, sessionId?: string): (Card & {
|
|
41
51
|
runId: number;
|
|
42
52
|
}) | null;
|
|
43
|
-
/** Moves a running card's lease to CARD_LEASE_MS from now and records the heartbeat; updated_at is left alone. Throws
|
|
44
|
-
* unknown card id or a run id that is not a positive integer; returns null unless the card is running and runId
|
|
53
|
+
/** Moves a running card's lease to CARD_LEASE_MS from now and records the heartbeat; updated_at is left alone. Throws
|
|
54
|
+
* on an unknown card id or a run id that is not a positive integer; returns null unless the card is running and runId
|
|
55
|
+
* is its live run. */
|
|
45
56
|
export declare function heartbeatCard(hippoRoot: string, tenantId: string, id: string, runId: number): Card | null;
|
|
46
57
|
/** Requires the card be running; closes the live run as blocked and files reason as a comment. Throws on an unknown
|
|
47
58
|
* card id; returns null for a card not running. When runId is given, returns null unless it is the card's live run. */
|
|
48
59
|
export declare function blockCard(hippoRoot: string, tenantId: string, id: string, reason: string, runId?: number): Card | null;
|
|
49
|
-
/** Requires the card be running; moves it to review, clearing its lease and heartbeat and keeping its live run. When
|
|
50
|
-
* given, returns null unless it is the card's live run. Throws on an unknown card id; returns null for a card
|
|
60
|
+
/** Requires the card be running; moves it to review, clearing its lease and heartbeat and keeping its live run. When
|
|
61
|
+
* runId is given, returns null unless it is the card's live run. Throws on an unknown card id; returns null for a card
|
|
62
|
+
* not running. */
|
|
51
63
|
export declare function reviewCard(hippoRoot: string, tenantId: string, id: string, runId?: number): Card | null;
|
|
52
|
-
/** Closes the live run of a card in review: 'success' moves it to done and promotes children whose parents are all
|
|
53
|
-
* Throws on an unknown card id; returns null for a card not in review, or when
|
|
64
|
+
/** Closes the live run of a card in review: 'success' moves it to done and promotes children whose parents are all
|
|
65
|
+
* done; 'failure'/'partial' shelves it. Throws on an unknown card id; returns null for a card not in review, or when
|
|
66
|
+
* `runId` is given and is not the card's live run. */
|
|
54
67
|
export declare function completeCard(hippoRoot: string, tenantId: string, id: string, outcome: HandoffOutcome, runId?: number): {
|
|
55
68
|
card: Card;
|
|
56
69
|
promotedChildren: string[];
|
|
57
70
|
} | null;
|
|
58
|
-
/** Returns to ready every running card of the tenant whose lease has expired or is missing: clears its assignee, closes
|
|
59
|
-
* run as 'reclaimed' and leaves its handoffs alone, all in one write transaction. Returns the reclaimed card
|
|
71
|
+
/** Returns to ready every running card of the tenant whose lease has expired or is missing: clears its assignee, closes
|
|
72
|
+
* its live run as 'reclaimed' and leaves its handoffs alone, all in one write transaction. Returns the reclaimed card
|
|
73
|
+
* ids in id order. */
|
|
60
74
|
export declare function reclaimExpiredCards(hippoRoot: string, tenantId: string): string[];
|
|
61
75
|
/** Appends a comment to cardId in any card status; throws if cardId is not a card of this tenant. */
|
|
62
76
|
export declare function addCardComment(hippoRoot: string, tenantId: string, cardId: string, author: string, body: string): CardComment;
|
package/dist/store/cards.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { generateId } from '../core/memory.js';
|
|
2
2
|
import { withWriteScope, withWriteScopeOr } from '../db/index.js';
|
|
3
|
-
import { rowToSessionHandoff, isHandoffOutcome } from '../core/handoff.js';
|
|
3
|
+
import { rowToSessionHandoff, isHandoffOutcome, } from '../core/handoff.js';
|
|
4
4
|
import { CARD_LEASE_MS, assertCardTransition } from '../core/card.js';
|
|
5
5
|
import { assertTenantId } from './tenant.js';
|
|
6
6
|
import { onHandle, openStore } from './open.js';
|
|
7
7
|
import { chunked } from '../util/chunked.js';
|
|
8
8
|
import { HANDOFF_COLUMNS } from './handoffs.js';
|
|
9
|
-
|
|
9
|
+
import { placeholders } from '../util/sql.js';
|
|
10
|
+
const CARD_COLUMNS = 'id, title, status, assignee_runtime, repo, contract, budget, lease_until, heartbeat_at, created_at, updated_at, ' +
|
|
11
|
+
'tenant_id, scope';
|
|
10
12
|
function rowToCard(row) {
|
|
11
13
|
return {
|
|
12
14
|
id: row.id,
|
|
@@ -24,7 +26,7 @@ function rowToCard(row) {
|
|
|
24
26
|
scope: row.scope,
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
|
-
function loadCardRow(db, tenantId, id) {
|
|
29
|
+
export function loadCardRow(db, tenantId, id) {
|
|
28
30
|
// SAFETY: row's shape matches CARD_COLUMNS; status only ever holds a CardStatus value.
|
|
29
31
|
const row = db.prepare(`SELECT ${CARD_COLUMNS} FROM cards WHERE id = ? AND tenant_id = ?`).get(id, tenantId);
|
|
30
32
|
return row ? rowToCard(row) : null;
|
|
@@ -45,10 +47,12 @@ function rowToCardComment(row) {
|
|
|
45
47
|
}
|
|
46
48
|
function insertCardComment(db, tenantId, cardId, author, body) {
|
|
47
49
|
const now = new Date().toISOString();
|
|
48
|
-
const result = db
|
|
50
|
+
const result = db
|
|
51
|
+
.prepare(`
|
|
49
52
|
INSERT INTO card_comments (card_id, author, body, created_at, tenant_id)
|
|
50
53
|
SELECT ?, ?, ?, ?, ? WHERE EXISTS (SELECT 1 FROM cards WHERE id = ? AND tenant_id = ?)
|
|
51
|
-
`)
|
|
54
|
+
`)
|
|
55
|
+
.run(cardId, author, body, now, tenantId, cardId, tenantId);
|
|
52
56
|
if (Number(result.changes ?? 0) === 0) {
|
|
53
57
|
throw new Error(`unknown card id: ${cardId}`);
|
|
54
58
|
}
|
|
@@ -66,7 +70,9 @@ function assertRunId(runId) {
|
|
|
66
70
|
// A second run that has not ended means a corrupt store; throw rather than guess which run the caller means.
|
|
67
71
|
function isLiveRun(db, tenantId, cardId, runId) {
|
|
68
72
|
// SAFETY: rows' shape matches the single `id` column named in the SELECT below.
|
|
69
|
-
const rows = db
|
|
73
|
+
const rows = db
|
|
74
|
+
.prepare(`SELECT id FROM card_runs WHERE tenant_id = ? AND card = ? AND ended IS NULL`)
|
|
75
|
+
.all(tenantId, cardId);
|
|
70
76
|
if (rows.length > 1) {
|
|
71
77
|
throw new Error(`card ${cardId} has ${rows.length} runs that have not ended`);
|
|
72
78
|
}
|
|
@@ -88,10 +94,12 @@ function transitionCards(db, tenantId, cardIds, options) {
|
|
|
88
94
|
const now = new Date().toISOString();
|
|
89
95
|
// Lease columns follow status: set on the move to running, cleared on every other move (rule 15).
|
|
90
96
|
const lease = to === 'running' ? [leaseUntilFrom(now), now] : [null, null];
|
|
91
|
-
const fromPlaceholders = from.
|
|
97
|
+
const fromPlaceholders = placeholders(from.length);
|
|
92
98
|
const sql = `
|
|
93
|
-
UPDATE cards SET status = ?, updated_at = ?, lease_until = ?, heartbeat_at =
|
|
94
|
-
|
|
99
|
+
UPDATE cards SET status = ?, updated_at = ?, lease_until = ?, heartbeat_at =
|
|
100
|
+
?${extra?.setSql ? `, ${extra.setSql}` : ''}
|
|
101
|
+
WHERE id IN (${placeholders(cardIds.length)}) AND tenant_id = ? AND status IN
|
|
102
|
+
(${fromPlaceholders})${extra?.whereSql ? ` AND ${extra.whereSql}` : ''}
|
|
95
103
|
`;
|
|
96
104
|
const params = [to, now, ...lease, ...(extra?.params ?? []), ...cardIds, tenantId, ...from];
|
|
97
105
|
const result = db.prepare(sql).run(...params);
|
|
@@ -130,13 +138,14 @@ export function createCard(hippoRoot, tenantId, input) {
|
|
|
130
138
|
return loadCardRow(db, tenantId, id);
|
|
131
139
|
}, openStore);
|
|
132
140
|
}
|
|
133
|
-
/** Whether every dependsOn card is done, true for none; throws on an id that is no card of the tenant. Call inside the
|
|
141
|
+
/** Whether every dependsOn card is done, true for none; throws on an id that is no card of the tenant. Call inside the
|
|
142
|
+
* write scope. */
|
|
134
143
|
function everyParentDone(db, tenantId, dependsOn) {
|
|
135
144
|
if (dependsOn.length === 0)
|
|
136
145
|
return true;
|
|
137
|
-
const
|
|
146
|
+
const marks = placeholders(dependsOn.length);
|
|
138
147
|
// SAFETY: rows' shape matches the two columns named in the SELECT below.
|
|
139
|
-
const rows = db.prepare(`SELECT id, status FROM cards WHERE tenant_id = ? AND id IN (${
|
|
148
|
+
const rows = db.prepare(`SELECT id, status FROM cards WHERE tenant_id = ? AND id IN (${marks})`).all(tenantId, ...dependsOn);
|
|
140
149
|
const found = new Map(rows.map((r) => [r.id, r.status]));
|
|
141
150
|
// Pre-check before any write: a typo'd --depends-on can never commit a card row.
|
|
142
151
|
for (const parentId of dependsOn) {
|
|
@@ -173,52 +182,57 @@ export function listCards(hippoRoot, tenantId, opts = {}) {
|
|
|
173
182
|
/** Returns this card's parent and child ids from card_deps. */
|
|
174
183
|
export function loadCardDeps(hippoRoot, tenantId, id) {
|
|
175
184
|
assertTenantId('loadCardDeps', tenantId);
|
|
176
|
-
return onHandle(hippoRoot, (db) =>
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
185
|
+
return onHandle(hippoRoot, (db) => loadCardDepsAt(db, tenantId, id), openStore);
|
|
186
|
+
}
|
|
187
|
+
export function loadCardDepsAt(db, tenantId, id) {
|
|
188
|
+
// SAFETY: rows' shape matches the single `parent` column named in the SELECT below.
|
|
189
|
+
const parents = db.prepare(`SELECT parent FROM card_deps WHERE tenant_id = ? AND child = ?`).all(tenantId, id).map((r) => r.parent);
|
|
190
|
+
// SAFETY: rows' shape matches the single `child` column named in the SELECT below.
|
|
191
|
+
const children = db.prepare(`SELECT child FROM card_deps WHERE tenant_id = ? AND parent = ?`).all(tenantId, id).map((r) => r.child);
|
|
192
|
+
return { parents, children };
|
|
183
193
|
}
|
|
184
194
|
/** Returns this card's run history, most recent first. */
|
|
185
195
|
export function loadCardRuns(hippoRoot, tenantId, id) {
|
|
186
196
|
assertTenantId('loadCardRuns', tenantId);
|
|
187
|
-
return onHandle(hippoRoot, (db) =>
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
197
|
+
return onHandle(hippoRoot, (db) => loadCardRunsAt(db, tenantId, id), openStore);
|
|
198
|
+
}
|
|
199
|
+
export function loadCardRunsAt(db, tenantId, id) {
|
|
200
|
+
// SAFETY: rows' shape matches CardRunRow.
|
|
201
|
+
const rows = db.prepare(`
|
|
202
|
+
SELECT id, card, runtime, session_id, started, ended, outcome
|
|
203
|
+
FROM card_runs WHERE tenant_id = ? AND card = ? ORDER BY started DESC, id DESC
|
|
204
|
+
`).all(tenantId, id);
|
|
205
|
+
return rows.map(rowToCardRun);
|
|
195
206
|
}
|
|
196
207
|
/** Returns this card's comments, most recent first. */
|
|
197
208
|
export function loadCardComments(hippoRoot, tenantId, id) {
|
|
198
209
|
assertTenantId('loadCardComments', tenantId);
|
|
199
|
-
return onHandle(hippoRoot, (db) =>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
210
|
+
return onHandle(hippoRoot, (db) => loadCardCommentsAt(db, tenantId, id), openStore);
|
|
211
|
+
}
|
|
212
|
+
export function loadCardCommentsAt(db, tenantId, id) {
|
|
213
|
+
// SAFETY: rows' shape matches CardCommentRow.
|
|
214
|
+
const rows = db.prepare(`
|
|
215
|
+
SELECT id, card_id, author, body, created_at
|
|
216
|
+
FROM card_comments WHERE tenant_id = ? AND card_id = ? ORDER BY created_at DESC, id DESC
|
|
217
|
+
`).all(tenantId, id);
|
|
218
|
+
return rows.map(rowToCardComment);
|
|
207
219
|
}
|
|
208
220
|
/** Read side of the card <-> handoff round trip: the newest handoff filed against this card. */
|
|
209
221
|
export function loadLatestHandoffForCard(hippoRoot, tenantId, cardId) {
|
|
210
222
|
assertTenantId('loadLatestHandoffForCard', tenantId);
|
|
211
|
-
return onHandle(hippoRoot, (db) =>
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
223
|
+
return onHandle(hippoRoot, (db) => loadLatestHandoffForCardAt(db, tenantId, cardId), openStore);
|
|
224
|
+
}
|
|
225
|
+
export function loadLatestHandoffForCardAt(db, tenantId, cardId) {
|
|
226
|
+
// SAFETY: row's shape matches HANDOFF_COLUMNS.
|
|
227
|
+
const row = db.prepare(`
|
|
228
|
+
SELECT ${HANDOFF_COLUMNS} FROM session_handoffs
|
|
229
|
+
WHERE tenant_id = ? AND card_id = ? ORDER BY created_at DESC, id DESC LIMIT 1
|
|
230
|
+
`).get(tenantId, cardId);
|
|
231
|
+
return row ? rowToSessionHandoff(row) : null;
|
|
219
232
|
}
|
|
220
|
-
/** Atomic claim: WHERE status IN (ready, blocked) AND assignee_runtime IS NULL decides the race. Throws on an unknown
|
|
221
|
-
* returns null for a card not ready/blocked or already claimed. Sets a CARD_LEASE_MS lease and returns the new
|
|
233
|
+
/** Atomic claim: WHERE status IN (ready, blocked) AND assignee_runtime IS NULL decides the race. Throws on an unknown
|
|
234
|
+
* card id; returns null for a card not ready/blocked or already claimed. Sets a CARD_LEASE_MS lease and returns the new
|
|
235
|
+
* run's id as runId. */
|
|
222
236
|
export function claimCard(hippoRoot, tenantId, id, runtime, sessionId) {
|
|
223
237
|
assertTenantId('claimCard', tenantId);
|
|
224
238
|
if (runtime.trim() === '') {
|
|
@@ -238,17 +252,20 @@ export function claimCard(hippoRoot, tenantId, id, runtime, sessionId) {
|
|
|
238
252
|
return rollback(null);
|
|
239
253
|
}
|
|
240
254
|
const now = new Date().toISOString();
|
|
241
|
-
const insert = db
|
|
255
|
+
const insert = db
|
|
256
|
+
.prepare(`
|
|
242
257
|
INSERT INTO card_runs (card, runtime, session_id, started, created_at, updated_at, tenant_id)
|
|
243
258
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
244
|
-
`)
|
|
259
|
+
`)
|
|
260
|
+
.run(id, runtime, sessionId ?? null, now, now, now, tenantId);
|
|
245
261
|
return Number(insert.lastInsertRowid ?? 0);
|
|
246
262
|
});
|
|
247
263
|
return runId === null ? null : { ...loadCardRow(db, tenantId, id), runId };
|
|
248
264
|
}, openStore);
|
|
249
265
|
}
|
|
250
|
-
/** Moves a running card's lease to CARD_LEASE_MS from now and records the heartbeat; updated_at is left alone. Throws
|
|
251
|
-
* unknown card id or a run id that is not a positive integer; returns null unless the card is running and runId
|
|
266
|
+
/** Moves a running card's lease to CARD_LEASE_MS from now and records the heartbeat; updated_at is left alone. Throws
|
|
267
|
+
* on an unknown card id or a run id that is not a positive integer; returns null unless the card is running and runId
|
|
268
|
+
* is its live run. */
|
|
252
269
|
export function heartbeatCard(hippoRoot, tenantId, id, runId) {
|
|
253
270
|
assertTenantId('heartbeatCard', tenantId);
|
|
254
271
|
assertRunId(runId);
|
|
@@ -281,7 +298,13 @@ export function blockCard(hippoRoot, tenantId, id, reason, runId) {
|
|
|
281
298
|
return onHandle(hippoRoot, (db) => {
|
|
282
299
|
const blocked = withWriteScopeOr(db, 'block_card', (rollback) => {
|
|
283
300
|
const allowed = runId === undefined || isLiveRun(db, tenantId, id, runId);
|
|
284
|
-
const changes = allowed
|
|
301
|
+
const changes = allowed
|
|
302
|
+
? transitionCard(db, tenantId, id, {
|
|
303
|
+
from: ['running'],
|
|
304
|
+
to: 'blocked',
|
|
305
|
+
extra: { setSql: 'assignee_runtime = NULL' },
|
|
306
|
+
})
|
|
307
|
+
: 0;
|
|
285
308
|
if (changes === 0) {
|
|
286
309
|
if (!loadCardRow(db, tenantId, id)) {
|
|
287
310
|
throw new Error(`unknown card id: ${id}`);
|
|
@@ -297,8 +320,9 @@ export function blockCard(hippoRoot, tenantId, id, reason, runId) {
|
|
|
297
320
|
return blocked ? loadCardRow(db, tenantId, id) : null;
|
|
298
321
|
}, openStore);
|
|
299
322
|
}
|
|
300
|
-
/** Requires the card be running; moves it to review, clearing its lease and heartbeat and keeping its live run. When
|
|
301
|
-
* given, returns null unless it is the card's live run. Throws on an unknown card id; returns null for a card
|
|
323
|
+
/** Requires the card be running; moves it to review, clearing its lease and heartbeat and keeping its live run. When
|
|
324
|
+
* runId is given, returns null unless it is the card's live run. Throws on an unknown card id; returns null for a card
|
|
325
|
+
* not running. */
|
|
302
326
|
export function reviewCard(hippoRoot, tenantId, id, runId) {
|
|
303
327
|
assertTenantId('reviewCard', tenantId);
|
|
304
328
|
if (runId !== undefined)
|
|
@@ -318,8 +342,9 @@ export function reviewCard(hippoRoot, tenantId, id, runId) {
|
|
|
318
342
|
return moved ? loadCardRow(db, tenantId, id) : null;
|
|
319
343
|
}, openStore);
|
|
320
344
|
}
|
|
321
|
-
/** Closes the live run of a card in review: 'success' moves it to done and promotes children whose parents are all
|
|
322
|
-
* Throws on an unknown card id; returns null for a card not in review, or when
|
|
345
|
+
/** Closes the live run of a card in review: 'success' moves it to done and promotes children whose parents are all
|
|
346
|
+
* done; 'failure'/'partial' shelves it. Throws on an unknown card id; returns null for a card not in review, or when
|
|
347
|
+
* `runId` is given and is not the card's live run. */
|
|
323
348
|
export function completeCard(hippoRoot, tenantId, id, outcome, runId) {
|
|
324
349
|
assertTenantId('completeCard', tenantId);
|
|
325
350
|
if (!isHandoffOutcome(outcome)) {
|
|
@@ -347,24 +372,29 @@ export function completeCard(hippoRoot, tenantId, id, outcome, runId) {
|
|
|
347
372
|
return promoted === null ? null : { card: loadCardRow(db, tenantId, id), promotedChildren: promoted };
|
|
348
373
|
}, openStore);
|
|
349
374
|
}
|
|
350
|
-
/** Moves to ready each backlog child of `parentId` whose parents are all done, and returns their ids. Call inside the
|
|
375
|
+
/** Moves to ready each backlog child of `parentId` whose parents are all done, and returns their ids. Call inside the
|
|
376
|
+
* write scope. */
|
|
351
377
|
function promoteUnblockedChildren(db, tenantId, parentId) {
|
|
352
|
-
// The child's status and its open parents are result columns, not joins, so the rows keep the order of a plain read
|
|
353
|
-
// SAFETY: rows' shape matches the three columns named in the SELECT below.
|
|
354
|
-
const children = db
|
|
378
|
+
// The child's status and its open parents are result columns, not joins, so the rows keep the order of a plain read
|
|
379
|
+
// of the parent's children. SAFETY: rows' shape matches the three columns named in the SELECT below.
|
|
380
|
+
const children = db
|
|
381
|
+
.prepare(`
|
|
355
382
|
SELECT d.child AS child,
|
|
356
383
|
(SELECT c.status FROM cards c WHERE c.tenant_id = ? AND c.id = d.child) AS status,
|
|
357
384
|
(SELECT COUNT(*) FROM card_deps p WHERE p.tenant_id = ? AND p.child = d.child
|
|
358
|
-
AND NOT EXISTS (SELECT 1 FROM cards pc WHERE pc.tenant_id = ? AND pc.id = p.parent AND pc.status = 'done')) AS
|
|
385
|
+
AND NOT EXISTS (SELECT 1 FROM cards pc WHERE pc.tenant_id = ? AND pc.id = p.parent AND pc.status = 'done')) AS
|
|
386
|
+
open_parents
|
|
359
387
|
FROM card_deps d WHERE d.tenant_id = ? AND d.parent = ?
|
|
360
|
-
`)
|
|
388
|
+
`)
|
|
389
|
+
.all(tenantId, tenantId, tenantId, tenantId, parentId);
|
|
361
390
|
const unblocked = children.filter((r) => r.status === 'backlog' && r.open_parents === 0).map((r) => r.child);
|
|
362
391
|
for (const ids of chunked(unblocked))
|
|
363
392
|
transitionCards(db, tenantId, ids, { from: ['backlog'], to: 'ready' });
|
|
364
393
|
return unblocked;
|
|
365
394
|
}
|
|
366
|
-
/** Returns to ready every running card of the tenant whose lease has expired or is missing: clears its assignee, closes
|
|
367
|
-
* run as 'reclaimed' and leaves its handoffs alone, all in one write transaction. Returns the reclaimed card
|
|
395
|
+
/** Returns to ready every running card of the tenant whose lease has expired or is missing: clears its assignee, closes
|
|
396
|
+
* its live run as 'reclaimed' and leaves its handoffs alone, all in one write transaction. Returns the reclaimed card
|
|
397
|
+
* ids in id order. */
|
|
368
398
|
export function reclaimExpiredCards(hippoRoot, tenantId) {
|
|
369
399
|
assertTenantId('reclaimExpiredCards', tenantId);
|
|
370
400
|
return onHandle(hippoRoot, (db) => {
|
|
@@ -378,7 +408,11 @@ export function reclaimExpiredCards(hippoRoot, tenantId) {
|
|
|
378
408
|
ORDER BY id
|
|
379
409
|
`).all(tenantId, now).map((r) => r.id);
|
|
380
410
|
for (const id of ids) {
|
|
381
|
-
transitionCard(db, tenantId, id, {
|
|
411
|
+
transitionCard(db, tenantId, id, {
|
|
412
|
+
from: ['running'],
|
|
413
|
+
to: 'ready',
|
|
414
|
+
extra: { setSql: 'assignee_runtime = NULL' },
|
|
415
|
+
});
|
|
382
416
|
closeLiveRun(db, tenantId, id, 'reclaimed', now);
|
|
383
417
|
}
|
|
384
418
|
return ids;
|
|
@@ -13,6 +13,7 @@ export interface CallerItems {
|
|
|
13
13
|
readonly owner: string;
|
|
14
14
|
readonly origins: readonly string[];
|
|
15
15
|
}
|
|
16
|
-
/** A caller's items, already scrubbed, under its record: a retry of a finished request answers with the first count,
|
|
16
|
+
/** A caller's items, already scrubbed, under its record: a retry of a finished request answers with the first count,
|
|
17
|
+
* and a `summarised` one is reused. */
|
|
17
18
|
export declare function saveCallerItems(hippoRoot: string, tenantId: string, req: CallerItems, log: Log): number;
|
|
18
19
|
//# sourceMappingURL=compaction-caller.d.ts.map
|
|
@@ -9,7 +9,8 @@ export function startCompactionAt(hippoRoot, tenantId, start) {
|
|
|
9
9
|
export function markSnapshotSavedAt(hippoRoot, tenantId, recordId) {
|
|
10
10
|
onHandle(hippoRoot, (db) => markSnapshotSaved(db, tenantId, recordId));
|
|
11
11
|
}
|
|
12
|
-
/** A caller's items, already scrubbed, under its record: a retry of a finished request answers with the first count,
|
|
12
|
+
/** A caller's items, already scrubbed, under its record: a retry of a finished request answers with the first count,
|
|
13
|
+
* and a `summarised` one is reused. */
|
|
13
14
|
export function saveCallerItems(hippoRoot, tenantId, req, log) {
|
|
14
15
|
return onHandle(hippoRoot, (db) => {
|
|
15
16
|
const earlier = compactionByRequest(db, tenantId, req.requestId, req.sessionId);
|
|
@@ -28,8 +28,8 @@ export interface CompactionStart {
|
|
|
28
28
|
export declare function startCompaction(db: DatabaseSyncLike, tenantId: string, start: CompactionStart, at?: Date): string;
|
|
29
29
|
/** A session's newest record, or null. */
|
|
30
30
|
export declare function latestCompaction(db: DatabaseSyncLike, tenantId: string, sessionId: string): CompactionRecord | null;
|
|
31
|
-
/** The record a caller's request made, whatever state it reached, so a retry neither writes its items twice nor starts
|
|
32
|
-
* Another session's id is a ConflictError. */
|
|
31
|
+
/** The record a caller's request made, whatever state it reached, so a retry neither writes its items twice nor starts
|
|
32
|
+
* a second record. Another session's id is a ConflictError. */
|
|
33
33
|
export declare function compactionByRequest(db: DatabaseSyncLike, tenantId: string, requestId: string, sessionId: string): CompactionRecord | null;
|
|
34
34
|
/** Best effort, never throws: a compaction must not fail because its record could not be written. */
|
|
35
35
|
export declare function recordCompactionStart(hippoRoot: string, start: Omit<CompactionStart, 'originProject'>, log: Log): string | null;
|
|
@@ -51,7 +51,8 @@ export interface RecordSummaryOptions {
|
|
|
51
51
|
readonly at: Date;
|
|
52
52
|
readonly caller?: SummaryCaller;
|
|
53
53
|
}
|
|
54
|
-
/** Puts the summary on the session's `started` record, or inserts a `summarised` one when pre-compact wrote none. One
|
|
54
|
+
/** Puts the summary on the session's `started` record, or inserts a `summarised` one when pre-compact wrote none. One
|
|
55
|
+
* statement each. */
|
|
55
56
|
export declare function recordSummary(db: DatabaseSyncLike, hippoRoot: string, tenantId: string, options: RecordSummaryOptions): CompactionRecord;
|
|
56
57
|
export interface ItemContext {
|
|
57
58
|
tenantId: string;
|
|
@@ -62,13 +63,15 @@ export interface ItemContext {
|
|
|
62
63
|
/** Where the session ran, so rows held under the project's older folder name count too. */
|
|
63
64
|
cwd: string | null;
|
|
64
65
|
items: string[];
|
|
65
|
-
/** Set when another machine sent the items: its audit actor and its project's names, since the server's folder is
|
|
66
|
+
/** Set when another machine sent the items: its audit actor and its project's names, since the server's folder is
|
|
67
|
+
* neither. */
|
|
66
68
|
caller?: {
|
|
67
69
|
actor: string;
|
|
68
70
|
origins: readonly string[];
|
|
69
71
|
};
|
|
70
72
|
}
|
|
71
|
-
/** Items that become rows, then the record `done`, in one transaction so two sessions cannot both insert one text.
|
|
73
|
+
/** Items that become rows, then the record `done`, in one transaction so two sessions cannot both insert one text.
|
|
74
|
+
* Mirrors after commit. */
|
|
72
75
|
export declare function saveItems(db: DatabaseSyncLike, hippoRoot: string, ctx: ItemContext, log: Log): number;
|
|
73
76
|
export interface CompactionSaveResult {
|
|
74
77
|
/** Memories written; null when neither the record nor the items could be saved. */
|
|
@@ -77,12 +80,14 @@ export interface CompactionSaveResult {
|
|
|
77
80
|
deferred: boolean;
|
|
78
81
|
snapshotSaved: boolean;
|
|
79
82
|
}
|
|
80
|
-
/** What one PostCompact save did; `spoolReason` is set when the store was busy or would not open, so the caller keeps
|
|
83
|
+
/** What one PostCompact save did; `spoolReason` is set when the store was busy or would not open, so the caller keeps
|
|
84
|
+
* the summary on disk. */
|
|
81
85
|
export interface CompactionSaveOutcome {
|
|
82
86
|
result: CompactionSaveResult;
|
|
83
87
|
spoolReason: string | null;
|
|
84
88
|
}
|
|
85
|
-
/** The PostCompact store work, on a handle of its own: record the summary, then write its items. Each step is
|
|
89
|
+
/** The PostCompact store work, on a handle of its own: record the summary, then write its items. Each step is
|
|
90
|
+
* independent. Never throws. */
|
|
86
91
|
export declare function saveCompactionAt(hippoRoot: string, meta: Omit<CompactionStart, 'originProject'>, text: CompactionText, at: Date, log: Log): CompactionSaveOutcome;
|
|
87
92
|
/** One spooled summary, as plain data. */
|
|
88
93
|
export interface SpooledSummary {
|
|
@@ -91,7 +96,8 @@ export interface SpooledSummary {
|
|
|
91
96
|
text: CompactionText;
|
|
92
97
|
at: Date;
|
|
93
98
|
}
|
|
94
|
-
/** Records one spooled summary; it calls `recorded` once the store holds it, so the file is done even if a later step
|
|
99
|
+
/** Records one spooled summary; it calls `recorded` once the store holds it, so the file is done even if a later step
|
|
100
|
+
* throws. */
|
|
95
101
|
export type SpoolRecorder = (spooled: SpooledSummary, recorded: () => void) => void;
|
|
96
102
|
/** A summary read out of a transcript, scrubbed; `listed` is false when it had no memories section. */
|
|
97
103
|
export interface TranscriptText {
|