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/cli/auth.js
CHANGED
|
@@ -5,7 +5,7 @@ import { printError } from './output.js';
|
|
|
5
5
|
import { boolFlag, stringFlag } from './flag-values.js';
|
|
6
6
|
import { resolveAuthRoot } from './shared.js';
|
|
7
7
|
import { errorMessage } from '../util/log.js';
|
|
8
|
-
import {
|
|
8
|
+
import { fail } from './exit.js';
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// Auth subcommands
|
|
11
11
|
// ---------------------------------------------------------------------------
|
|
@@ -13,8 +13,7 @@ import { CliExit } from './exit.js';
|
|
|
13
13
|
function roleFlagOrExit(flags) {
|
|
14
14
|
const roleFlag = stringFlag(flags, 'role');
|
|
15
15
|
if (roleFlag !== undefined && roleFlag !== 'admin' && roleFlag !== 'member') {
|
|
16
|
-
|
|
17
|
-
throw new CliExit(1);
|
|
16
|
+
fail(`Invalid --role value: '${roleFlag}'. Use 'admin' or 'member'.`);
|
|
18
17
|
}
|
|
19
18
|
return roleFlag;
|
|
20
19
|
}
|
|
@@ -28,7 +27,7 @@ function noteMintDefaults(roleGiven, expiryGiven) {
|
|
|
28
27
|
if (notes.length > 0)
|
|
29
28
|
printError(`hippo auth create: ${notes.join('; ')}.`);
|
|
30
29
|
}
|
|
31
|
-
function cmdAuthCreate(hippoRoot, defaultTenantId, flags) {
|
|
30
|
+
async function cmdAuthCreate(hippoRoot, defaultTenantId, flags) {
|
|
32
31
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
33
32
|
const tenantFlag = stringFlag(flags, 'tenant');
|
|
34
33
|
const labelFlag = stringFlag(flags, 'label');
|
|
@@ -37,21 +36,20 @@ function cmdAuthCreate(hippoRoot, defaultTenantId, flags) {
|
|
|
37
36
|
const ttlFlag = stringFlag(flags, 'ttl-days');
|
|
38
37
|
const ttlDays = ttlFlag === undefined ? undefined : Number(ttlFlag);
|
|
39
38
|
const noExpiry = boolFlag(flags, 'no-expiry');
|
|
40
|
-
// The CLI's --tenant flag is the only legitimate cross-tenant
|
|
41
|
-
// (admin minting a key for another tenant from the
|
|
42
|
-
// flows through ctx.tenantId, NOT through
|
|
43
|
-
// longer accepts a tenantId field,
|
|
44
|
-
// body.tenantId across.
|
|
39
|
+
// The CLI's --tenant flag is the only legitimate cross-tenant
|
|
40
|
+
// override (admin minting a key for another tenant from the
|
|
41
|
+
// local machine). It flows through ctx.tenantId, NOT through
|
|
42
|
+
// opts — authCreate's opts no longer accepts a tenantId field,
|
|
43
|
+
// so the HTTP layer cannot smuggle a body.tenantId across.
|
|
45
44
|
const ctx = cliApiContext(root, tenantFlag ?? defaultTenantId);
|
|
46
45
|
let result;
|
|
47
46
|
try {
|
|
48
|
-
result = api.authCreate(ctx, { label: labelFlag, role, ttlDays, noExpiry: noExpiry || undefined });
|
|
47
|
+
result = await api.authCreate(ctx, { label: labelFlag, role, ttlDays, noExpiry: noExpiry || undefined });
|
|
49
48
|
}
|
|
50
49
|
catch (err) {
|
|
51
50
|
if (!(err instanceof api.BadRequestError))
|
|
52
51
|
throw err;
|
|
53
|
-
|
|
54
|
-
throw new CliExit(1);
|
|
52
|
+
fail(`hippo auth create: ${err.message} (--ttl-days, --no-expiry).`);
|
|
55
53
|
}
|
|
56
54
|
noteMintDefaults(role !== undefined, ttlFlag !== undefined || noExpiry);
|
|
57
55
|
if (asJson) {
|
|
@@ -103,8 +101,7 @@ async function keyContext(root, tenantId, keyId) {
|
|
|
103
101
|
const hostCtx = cliApiContext(root, tenantId);
|
|
104
102
|
const keyTenant = await api.authKeyTenant(hostCtx, keyId);
|
|
105
103
|
if (keyTenant === undefined) {
|
|
106
|
-
|
|
107
|
-
throw new CliExit(1);
|
|
104
|
+
fail(`Unknown key_id: ${keyId}`);
|
|
108
105
|
}
|
|
109
106
|
return { ...hostCtx, tenantId: keyTenant };
|
|
110
107
|
}
|
|
@@ -112,11 +109,10 @@ async function cmdAuthRevoke(hippoRoot, tenantId, keyId, flags) {
|
|
|
112
109
|
const ctx = await keyContext(resolveAuthRoot(hippoRoot, flags), tenantId, keyId);
|
|
113
110
|
let revokedAt;
|
|
114
111
|
try {
|
|
115
|
-
revokedAt = api.authRevoke(ctx, keyId).revokedAt;
|
|
112
|
+
revokedAt = (await api.authRevoke(ctx, keyId)).revokedAt;
|
|
116
113
|
}
|
|
117
114
|
catch (err) {
|
|
118
|
-
|
|
119
|
-
throw new CliExit(1);
|
|
115
|
+
fail(`Error: ${errorMessage(err)}`);
|
|
120
116
|
}
|
|
121
117
|
if (flags['json']) {
|
|
122
118
|
console.log(JSON.stringify({ keyId, revokedAt }));
|
|
@@ -124,18 +120,18 @@ async function cmdAuthRevoke(hippoRoot, tenantId, keyId, flags) {
|
|
|
124
120
|
}
|
|
125
121
|
console.log(`Revoked ${keyId} at ${revokedAt}`);
|
|
126
122
|
}
|
|
127
|
-
/** `hippo auth grant|ungrant <key_id> <scope>`, routed through api so the tenant, restricted-scope and audit checks
|
|
123
|
+
/** `hippo auth grant|ungrant <key_id> <scope>`, routed through api so the tenant, restricted-scope and audit checks
|
|
124
|
+
* live in one place. */
|
|
128
125
|
async function cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, grant, flags) {
|
|
129
126
|
const ctx = await keyContext(resolveAuthRoot(hippoRoot, flags), tenantId, keyId);
|
|
130
127
|
try {
|
|
131
128
|
if (grant)
|
|
132
|
-
api.authGrant(ctx, keyId, scope);
|
|
129
|
+
await api.authGrant(ctx, keyId, scope);
|
|
133
130
|
else
|
|
134
|
-
api.authUngrant(ctx, keyId, scope);
|
|
131
|
+
await api.authUngrant(ctx, keyId, scope);
|
|
135
132
|
}
|
|
136
133
|
catch (err) {
|
|
137
|
-
|
|
138
|
-
throw new CliExit(1);
|
|
134
|
+
fail(`Error: ${errorMessage(err)}`);
|
|
139
135
|
}
|
|
140
136
|
if (flags['json']) {
|
|
141
137
|
console.log(JSON.stringify({ keyId, scope, granted: grant }));
|
|
@@ -146,13 +142,12 @@ async function cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, grant, flags
|
|
|
146
142
|
export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
|
|
147
143
|
const sub = args[0];
|
|
148
144
|
if (!sub) {
|
|
149
|
-
|
|
150
|
-
throw new CliExit(1);
|
|
145
|
+
fail('Usage: hippo auth <create|list|revoke|grant|ungrant> [options]');
|
|
151
146
|
}
|
|
152
147
|
const subArgs = args.slice(1);
|
|
153
148
|
switch (sub) {
|
|
154
149
|
case 'create':
|
|
155
|
-
cmdAuthCreate(hippoRoot, tenantId, flags);
|
|
150
|
+
await cmdAuthCreate(hippoRoot, tenantId, flags);
|
|
156
151
|
return;
|
|
157
152
|
case 'list':
|
|
158
153
|
cmdAuthList(hippoRoot, tenantId, flags);
|
|
@@ -160,8 +155,7 @@ export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
|
|
|
160
155
|
case 'revoke': {
|
|
161
156
|
const keyId = subArgs[0];
|
|
162
157
|
if (!keyId) {
|
|
163
|
-
|
|
164
|
-
throw new CliExit(1);
|
|
158
|
+
fail('Usage: hippo auth revoke <key_id>');
|
|
165
159
|
}
|
|
166
160
|
await cmdAuthRevoke(hippoRoot, tenantId, keyId, flags);
|
|
167
161
|
return;
|
|
@@ -170,15 +164,13 @@ export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
|
|
|
170
164
|
case 'ungrant': {
|
|
171
165
|
const [keyId, scope] = subArgs;
|
|
172
166
|
if (!keyId || !scope) {
|
|
173
|
-
|
|
174
|
-
throw new CliExit(1);
|
|
167
|
+
fail(`Usage: hippo auth ${sub} <key_id> <scope>`);
|
|
175
168
|
}
|
|
176
169
|
await cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, sub === 'grant', flags);
|
|
177
170
|
return;
|
|
178
171
|
}
|
|
179
172
|
default:
|
|
180
|
-
|
|
181
|
-
throw new CliExit(1);
|
|
173
|
+
fail(`Unknown auth subcommand: ${sub}. Expected: create | list | revoke | grant | ungrant.`);
|
|
182
174
|
}
|
|
183
175
|
}
|
|
184
176
|
//# sourceMappingURL=auth.js.map
|
package/dist/cli/briefs.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const handleProjectBrief: (ctx: import("./flag-values.js").CommandContext) => void
|
|
1
|
+
export declare const handleProjectBrief: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
|
|
2
2
|
//# sourceMappingURL=briefs.d.ts.map
|
package/dist/cli/briefs.js
CHANGED
|
@@ -3,28 +3,27 @@ import * as briefsModule from '../objects/project-briefs.js';
|
|
|
3
3
|
import { errorMessage } from '../util/log.js';
|
|
4
4
|
import { printError } from './output.js';
|
|
5
5
|
import { boolFlag, stringFlag } from './flag-values.js';
|
|
6
|
-
import {
|
|
6
|
+
import { fail } from './exit.js';
|
|
7
7
|
import { requiredText, versionedVerbs } from './versioned-verbs.js';
|
|
8
8
|
function printBriefRow(b) {
|
|
9
9
|
console.log(`#${b.id} [${b.status}] v${b.version} repo="${b.repo}" memory=${b.memoryId ?? '-'}`);
|
|
10
10
|
if (b.changeSummary)
|
|
11
11
|
console.log(` change: ${b.changeSummary}`);
|
|
12
12
|
}
|
|
13
|
-
function briefRefresh(hippoRoot, tenantId, args, flags) {
|
|
13
|
+
async function briefRefresh(objects, hippoRoot, tenantId, args, flags) {
|
|
14
14
|
const repoRaw = args[1];
|
|
15
15
|
if (!repoRaw) {
|
|
16
|
-
|
|
17
|
-
throw new CliExit(1);
|
|
16
|
+
fail('Usage: hippo brief refresh "<repo>" [--dry-run]');
|
|
18
17
|
}
|
|
19
18
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
20
19
|
try {
|
|
21
20
|
if (dryRun) {
|
|
22
|
-
const { markdown, receiptCount } = briefsModule.
|
|
21
|
+
const { markdown, receiptCount } = await briefsModule.briefFromReceipts(objects, tenantId, repoRaw);
|
|
23
22
|
printError(`(dry-run: assembled from ${receiptCount} receipt(s); brief NOT written)`);
|
|
24
23
|
console.log(markdown);
|
|
25
24
|
return;
|
|
26
25
|
}
|
|
27
|
-
const created = briefsModule.
|
|
26
|
+
const created = await briefsModule.refreshedBrief(objects, { hippoRoot, tenantId, actor: 'cli' }, repoRaw);
|
|
28
27
|
console.log(`Project brief #${created.id} recorded (v${created.version}) for repo "${created.repo}".`);
|
|
29
28
|
if (created.changeSummary)
|
|
30
29
|
console.log(` change: ${created.changeSummary}`);
|
|
@@ -32,11 +31,10 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
|
|
|
32
31
|
console.log(` memory: ${created.memoryId}`);
|
|
33
32
|
}
|
|
34
33
|
catch (e) {
|
|
35
|
-
|
|
36
|
-
throw new CliExit(1);
|
|
34
|
+
fail(errorMessage(e));
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
|
-
const briefKind = (hippoRoot, tenantId) => ({
|
|
37
|
+
const briefKind = (objects, hippoRoot, tenantId) => ({
|
|
40
38
|
names: { cmd: 'brief', noun: 'Project brief', idLabel: 'brief' },
|
|
41
39
|
plural: 'project briefs',
|
|
42
40
|
states: briefsModule.VALID_BRIEF_STATES,
|
|
@@ -52,13 +50,20 @@ const briefKind = (hippoRoot, tenantId) => ({
|
|
|
52
50
|
bodyRequired: '--summary "<text>"',
|
|
53
51
|
body: (flags) => requiredText(flags, 'summary'),
|
|
54
52
|
keyOf: (b) => b.repo,
|
|
55
|
-
save: (repo, summary, extraTags, from) => briefsModule.saveProjectBrief(hippoRoot, tenantId, {
|
|
56
|
-
repo,
|
|
53
|
+
save: (repo, summary, extraTags, from) => briefsModule.saveProjectBrief(objects, hippoRoot, tenantId, {
|
|
54
|
+
repo,
|
|
55
|
+
summary,
|
|
56
|
+
extraTags,
|
|
57
|
+
changeSummary: from?.changeSummary,
|
|
58
|
+
supersedesBriefId: from?.id,
|
|
57
59
|
}),
|
|
58
60
|
recorded: (b) => `Project brief recorded: #${b.id} (v${b.version}) for repo "${b.repo}"`,
|
|
59
|
-
list: (opts, flags) => briefsModule.loadProjectBriefs(
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
list: (opts, flags) => briefsModule.loadProjectBriefs(objects, tenantId, {
|
|
62
|
+
...opts,
|
|
63
|
+
repo: stringFlag(flags, 'repo')?.trim() || undefined,
|
|
64
|
+
}),
|
|
65
|
+
loadById: (id) => briefsModule.loadProjectBriefById(objects, tenantId, id),
|
|
66
|
+
close: (id) => briefsModule.closeProjectBrief(objects, tenantId, id),
|
|
62
67
|
printRow: printBriefRow,
|
|
63
68
|
printDetail: (b) => {
|
|
64
69
|
console.log(` repo: ${b.repo}`);
|
|
@@ -66,7 +71,7 @@ const briefKind = (hippoRoot, tenantId) => ({
|
|
|
66
71
|
console.log(` version: ${b.version}`);
|
|
67
72
|
console.log(` summary: ${b.summary}`);
|
|
68
73
|
},
|
|
69
|
-
extra: { sub: 'refresh', run: (args, flags) => briefRefresh(hippoRoot, tenantId, args, flags) },
|
|
74
|
+
extra: { sub: 'refresh', run: (args, flags) => briefRefresh(objects, hippoRoot, tenantId, args, flags) },
|
|
70
75
|
});
|
|
71
76
|
export const handleProjectBrief = versionedVerbs(briefKind);
|
|
72
77
|
//# sourceMappingURL=briefs.js.map
|
package/dist/cli/card.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
2
|
/** Runs `hippo card <subcommand>`: rejects flags the subcommand never reads, then hands off to its handler. */
|
|
3
|
-
export declare function handleCard({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
3
|
+
export declare function handleCard({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=card.d.ts.map
|
package/dist/cli/card.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// The `hippo card` verb (the agent work board); main() loads it lazily from the command table.
|
|
2
|
-
import * as cardsApi from '../api/cards.js';
|
|
2
|
+
import * as cardsApi from '../api/objects/cards.js';
|
|
3
3
|
import { cliApiContext } from './api-context.js';
|
|
4
4
|
import { isHandoffOutcome } from '../core/handoff.js';
|
|
5
5
|
import { isCardStatus } from '../core/card.js';
|
|
@@ -7,7 +7,7 @@ import { printError } from './output.js';
|
|
|
7
7
|
import { stringFlagOrExit } from './flag-values.js';
|
|
8
8
|
import { requireInit } from './shared.js';
|
|
9
9
|
import { errorMessage } from '../util/log.js';
|
|
10
|
-
import { CliExit } from './exit.js';
|
|
10
|
+
import { CliExit, fail } from './exit.js';
|
|
11
11
|
// Each subcommand's usage line, written once so the repeated checks cannot drift.
|
|
12
12
|
const CARD_USAGE = {
|
|
13
13
|
create: 'hippo card create --title "..." [--repo <name>] [--contract <text>] [--budget <n>] [--depends-on <id>...]',
|
|
@@ -50,7 +50,8 @@ function printCard(detail) {
|
|
|
50
50
|
if (runs.length > 0) {
|
|
51
51
|
console.log('\n### Runs');
|
|
52
52
|
for (const run of runs) {
|
|
53
|
-
|
|
53
|
+
const ended = run.ended ? ` ended ${run.ended} (${run.outcome})` : ' (open)';
|
|
54
|
+
console.log(`- run ${run.id}: ${run.runtime} started ${run.started}${ended}`);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
if (comments.length > 0) {
|
|
@@ -73,16 +74,15 @@ function cardRunFlag(flags) {
|
|
|
73
74
|
return undefined;
|
|
74
75
|
const n = Number(raw);
|
|
75
76
|
if (!/^\d+$/.test(raw) || !Number.isSafeInteger(n) || n <= 0) {
|
|
76
|
-
|
|
77
|
-
throw new CliExit(1);
|
|
77
|
+
fail(`Invalid --run: "${raw}" (expected a positive integer).`);
|
|
78
78
|
}
|
|
79
79
|
return n;
|
|
80
80
|
}
|
|
81
81
|
// Reads after the store already refused, so this only explains the refusal, never changes it.
|
|
82
|
-
function cardRefusal(hippoRoot, tenantId, id) {
|
|
82
|
+
async function cardRefusal(hippoRoot, tenantId, id) {
|
|
83
83
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
84
|
-
const card = cardsApi.cardLoad(ctx, id);
|
|
85
|
-
const liveRun = cardsApi.cardRuns(ctx, id).find((r) => !r.ended);
|
|
84
|
+
const card = await cardsApi.cardLoad(ctx, id);
|
|
85
|
+
const liveRun = (await cardsApi.cardRuns(ctx, id)).find((r) => !r.ended);
|
|
86
86
|
return `status ${card?.status ?? 'unknown'}, live run ${liveRun?.id ?? 'none'}`;
|
|
87
87
|
}
|
|
88
88
|
const CARD_SUBCOMMAND_FLAGS = {
|
|
@@ -102,8 +102,7 @@ export function handleCard({ hippoRoot, tenantId, args, flags }) {
|
|
|
102
102
|
requireInit(hippoRoot);
|
|
103
103
|
const subcommand = args[0] ?? '';
|
|
104
104
|
if (!Object.hasOwn(CARD_SUBCOMMAND_FLAGS, subcommand)) {
|
|
105
|
-
|
|
106
|
-
throw new CliExit(1);
|
|
105
|
+
fail('Usage: hippo card <create|show|list|claim|heartbeat|block|review|complete|reclaim|comment>');
|
|
107
106
|
}
|
|
108
107
|
// SAFETY: hasOwn, unlike `in`, skips inherited keys such as constructor, so subcommand is a real key.
|
|
109
108
|
const known = subcommand;
|
|
@@ -111,13 +110,12 @@ export function handleCard({ hippoRoot, tenantId, args, flags }) {
|
|
|
111
110
|
for (const key of Object.keys(flags)) {
|
|
112
111
|
if (!allowedFlags.includes(key)) {
|
|
113
112
|
const valid = allowedFlags.length > 0 ? allowedFlags.map((f) => `--${f}`).join(', ') : '(none)';
|
|
114
|
-
|
|
115
|
-
throw new CliExit(1);
|
|
113
|
+
fail(`Unknown flag --${key} for hippo card ${subcommand}. Valid flags: ${valid}`);
|
|
116
114
|
}
|
|
117
115
|
}
|
|
118
|
-
CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
|
|
116
|
+
return CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
|
|
119
117
|
}
|
|
120
|
-
function cardCreate(hippoRoot, tenantId, _args, flags) {
|
|
118
|
+
async function cardCreate(hippoRoot, tenantId, _args, flags) {
|
|
121
119
|
const title = stringFlagOrExit(flags, 'title') ?? '';
|
|
122
120
|
if (!title) {
|
|
123
121
|
throw usageError('create');
|
|
@@ -128,36 +126,32 @@ function cardCreate(hippoRoot, tenantId, _args, flags) {
|
|
|
128
126
|
let budget;
|
|
129
127
|
if (budgetRaw !== undefined) {
|
|
130
128
|
if (!/^\d+$/.test(budgetRaw)) {
|
|
131
|
-
|
|
132
|
-
throw new CliExit(1);
|
|
129
|
+
fail(`Invalid budget: "${budgetRaw}" (expected a positive integer)`);
|
|
133
130
|
}
|
|
134
131
|
budget = Number(budgetRaw);
|
|
135
132
|
}
|
|
136
133
|
const dependsOnFlag = flags['depends-on'];
|
|
137
134
|
if (dependsOnFlag === true) {
|
|
138
|
-
|
|
139
|
-
throw new CliExit(1);
|
|
135
|
+
fail('--depends-on requires a value');
|
|
140
136
|
}
|
|
141
137
|
const dependsOn = Array.isArray(dependsOnFlag) ? dependsOnFlag : [];
|
|
142
138
|
let card;
|
|
143
139
|
try {
|
|
144
|
-
card = cardsApi.cardCreate(cliApiContext(hippoRoot, tenantId), { title, repo, contract, budget, dependsOn });
|
|
140
|
+
card = await cardsApi.cardCreate(cliApiContext(hippoRoot, tenantId), { title, repo, contract, budget, dependsOn });
|
|
145
141
|
}
|
|
146
142
|
catch (error) {
|
|
147
|
-
|
|
148
|
-
throw new CliExit(1);
|
|
143
|
+
fail(errorMessage(error));
|
|
149
144
|
}
|
|
150
145
|
console.log(`Created card ${card.id} (status: ${card.status})`);
|
|
151
146
|
}
|
|
152
|
-
function cardShow(hippoRoot, tenantId, args, flags) {
|
|
147
|
+
async function cardShow(hippoRoot, tenantId, args, flags) {
|
|
153
148
|
const id = args[1];
|
|
154
149
|
if (!id) {
|
|
155
150
|
throw usageError('show');
|
|
156
151
|
}
|
|
157
|
-
const detail = cardsApi.cardDetail(cliApiContext(hippoRoot, tenantId), id);
|
|
152
|
+
const detail = await cardsApi.cardDetail(cliApiContext(hippoRoot, tenantId), id);
|
|
158
153
|
if (!detail) {
|
|
159
|
-
|
|
160
|
-
throw new CliExit(1);
|
|
154
|
+
fail(`No card found with id ${id}.`);
|
|
161
155
|
}
|
|
162
156
|
if (flags['json']) {
|
|
163
157
|
console.log(JSON.stringify(detail, null, 2));
|
|
@@ -165,13 +159,12 @@ function cardShow(hippoRoot, tenantId, args, flags) {
|
|
|
165
159
|
}
|
|
166
160
|
printCard(detail);
|
|
167
161
|
}
|
|
168
|
-
function cardList(hippoRoot, tenantId, _args, flags) {
|
|
162
|
+
async function cardList(hippoRoot, tenantId, _args, flags) {
|
|
169
163
|
const status = stringFlagOrExit(flags, 'status');
|
|
170
164
|
if (status !== undefined && !isCardStatus(status)) {
|
|
171
|
-
|
|
172
|
-
throw new CliExit(1);
|
|
165
|
+
fail(`Invalid status: "${status}".`);
|
|
173
166
|
}
|
|
174
|
-
const cards = cardsApi.cardList(cliApiContext(hippoRoot, tenantId), { status });
|
|
167
|
+
const cards = await cardsApi.cardList(cliApiContext(hippoRoot, tenantId), { status });
|
|
175
168
|
if (flags['json']) {
|
|
176
169
|
console.log(JSON.stringify({ cards }, null, 2));
|
|
177
170
|
return;
|
|
@@ -181,10 +174,11 @@ function cardList(hippoRoot, tenantId, _args, flags) {
|
|
|
181
174
|
return;
|
|
182
175
|
}
|
|
183
176
|
for (const card of cards) {
|
|
184
|
-
|
|
177
|
+
const assignee = card.assigneeRuntime ? `\t(${card.assigneeRuntime})` : '';
|
|
178
|
+
console.log(`${card.id}\t${card.status}\t${card.title}${assignee}`);
|
|
185
179
|
}
|
|
186
180
|
}
|
|
187
|
-
function cardClaim(hippoRoot, tenantId, args, flags) {
|
|
181
|
+
async function cardClaim(hippoRoot, tenantId, args, flags) {
|
|
188
182
|
const id = args[1];
|
|
189
183
|
const runtime = stringFlagOrExit(flags, 'runtime') ?? '';
|
|
190
184
|
if (!id || !runtime) {
|
|
@@ -193,19 +187,17 @@ function cardClaim(hippoRoot, tenantId, args, flags) {
|
|
|
193
187
|
const sessionId = stringFlagOrExit(flags, 'session') || undefined;
|
|
194
188
|
let card;
|
|
195
189
|
try {
|
|
196
|
-
card = cardsApi.cardClaim(cliApiContext(hippoRoot, tenantId), id, runtime, sessionId);
|
|
190
|
+
card = await cardsApi.cardClaim(cliApiContext(hippoRoot, tenantId), id, runtime, sessionId);
|
|
197
191
|
}
|
|
198
192
|
catch (error) {
|
|
199
|
-
|
|
200
|
-
throw new CliExit(1);
|
|
193
|
+
fail(errorMessage(error));
|
|
201
194
|
}
|
|
202
195
|
if (!card) {
|
|
203
|
-
|
|
204
|
-
throw new CliExit(1);
|
|
196
|
+
fail(`Could not claim card ${id} (not ready/blocked, or already claimed).`);
|
|
205
197
|
}
|
|
206
198
|
console.log(`Claimed card ${card.id} for ${runtime} (run ${card.runId}, lease until ${card.leaseUntil})`);
|
|
207
199
|
}
|
|
208
|
-
function cardHeartbeat(hippoRoot, tenantId, args, flags) {
|
|
200
|
+
async function cardHeartbeat(hippoRoot, tenantId, args, flags) {
|
|
209
201
|
const id = args[1];
|
|
210
202
|
const runId = cardRunFlag(flags);
|
|
211
203
|
if (!id || runId === undefined) {
|
|
@@ -213,42 +205,37 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
|
|
|
213
205
|
}
|
|
214
206
|
let card;
|
|
215
207
|
try {
|
|
216
|
-
card = cardsApi.cardHeartbeat(cliApiContext(hippoRoot, tenantId), id, runId);
|
|
208
|
+
card = await cardsApi.cardHeartbeat(cliApiContext(hippoRoot, tenantId), id, runId);
|
|
217
209
|
}
|
|
218
210
|
catch (error) {
|
|
219
|
-
|
|
220
|
-
throw new CliExit(1);
|
|
211
|
+
fail(errorMessage(error));
|
|
221
212
|
}
|
|
222
213
|
if (!card) {
|
|
223
|
-
|
|
224
|
-
throw new CliExit(1);
|
|
214
|
+
fail(`Could not heartbeat card ${id} (${await cardRefusal(hippoRoot, tenantId, id)}).`);
|
|
225
215
|
}
|
|
226
216
|
console.log(`Heartbeat card ${card.id}: lease until ${card.leaseUntil}`);
|
|
227
217
|
}
|
|
228
|
-
function cardBlock(hippoRoot, tenantId, args, flags) {
|
|
218
|
+
async function cardBlock(hippoRoot, tenantId, args, flags) {
|
|
229
219
|
const id = args[1];
|
|
230
220
|
const reason = stringFlagOrExit(flags, 'reason') ?? '';
|
|
231
221
|
if (!id || !reason) {
|
|
232
|
-
|
|
233
|
-
throw new CliExit(1);
|
|
222
|
+
fail(CARD_BLOCK_REASON_REQUIRED);
|
|
234
223
|
}
|
|
235
224
|
const runId = cardRunFlag(flags);
|
|
236
225
|
let card;
|
|
237
226
|
try {
|
|
238
|
-
card = cardsApi.cardBlock(cliApiContext(hippoRoot, tenantId), id, reason, runId);
|
|
227
|
+
card = await cardsApi.cardBlock(cliApiContext(hippoRoot, tenantId), id, reason, runId);
|
|
239
228
|
}
|
|
240
229
|
catch (error) {
|
|
241
|
-
|
|
242
|
-
throw new CliExit(1);
|
|
230
|
+
fail(errorMessage(error));
|
|
243
231
|
}
|
|
244
232
|
if (!card) {
|
|
245
|
-
const why = runId === undefined ? 'not running' : cardRefusal(hippoRoot, tenantId, id);
|
|
246
|
-
|
|
247
|
-
throw new CliExit(1);
|
|
233
|
+
const why = runId === undefined ? 'not running' : await cardRefusal(hippoRoot, tenantId, id);
|
|
234
|
+
fail(`Could not block card ${id} (${why}).`);
|
|
248
235
|
}
|
|
249
236
|
console.log(`Blocked card ${card.id}`);
|
|
250
237
|
}
|
|
251
|
-
function cardReview(hippoRoot, tenantId, args, flags) {
|
|
238
|
+
async function cardReview(hippoRoot, tenantId, args, flags) {
|
|
252
239
|
const id = args[1];
|
|
253
240
|
if (!id) {
|
|
254
241
|
throw usageError('review');
|
|
@@ -256,20 +243,18 @@ function cardReview(hippoRoot, tenantId, args, flags) {
|
|
|
256
243
|
const runId = cardRunFlag(flags);
|
|
257
244
|
let card;
|
|
258
245
|
try {
|
|
259
|
-
card = cardsApi.cardReview(cliApiContext(hippoRoot, tenantId), id, runId);
|
|
246
|
+
card = await cardsApi.cardReview(cliApiContext(hippoRoot, tenantId), id, runId);
|
|
260
247
|
}
|
|
261
248
|
catch (error) {
|
|
262
|
-
|
|
263
|
-
throw new CliExit(1);
|
|
249
|
+
fail(errorMessage(error));
|
|
264
250
|
}
|
|
265
251
|
if (!card) {
|
|
266
|
-
const why = runId === undefined ? 'not running' : cardRefusal(hippoRoot, tenantId, id);
|
|
267
|
-
|
|
268
|
-
throw new CliExit(1);
|
|
252
|
+
const why = runId === undefined ? 'not running' : await cardRefusal(hippoRoot, tenantId, id);
|
|
253
|
+
fail(`Could not move card ${id} to review (${why}).`);
|
|
269
254
|
}
|
|
270
255
|
console.log(`Card ${card.id} moved to review`);
|
|
271
256
|
}
|
|
272
|
-
function cardComplete(hippoRoot, tenantId, args, flags) {
|
|
257
|
+
async function cardComplete(hippoRoot, tenantId, args, flags) {
|
|
273
258
|
const id = args[1];
|
|
274
259
|
const outcomeRaw = flags['outcome'];
|
|
275
260
|
if (!id || !isHandoffOutcome(outcomeRaw)) {
|
|
@@ -278,27 +263,25 @@ function cardComplete(hippoRoot, tenantId, args, flags) {
|
|
|
278
263
|
const runId = cardRunFlag(flags);
|
|
279
264
|
let result;
|
|
280
265
|
try {
|
|
281
|
-
result = cardsApi.cardComplete(cliApiContext(hippoRoot, tenantId), id, outcomeRaw, runId);
|
|
266
|
+
result = await cardsApi.cardComplete(cliApiContext(hippoRoot, tenantId), id, outcomeRaw, runId);
|
|
282
267
|
}
|
|
283
268
|
catch (error) {
|
|
284
|
-
|
|
285
|
-
throw new CliExit(1);
|
|
269
|
+
fail(errorMessage(error));
|
|
286
270
|
}
|
|
287
271
|
if (!result) {
|
|
288
|
-
const why = runId === undefined ? 'not in review' : cardRefusal(hippoRoot, tenantId, id);
|
|
289
|
-
|
|
290
|
-
throw new CliExit(1);
|
|
272
|
+
const why = runId === undefined ? 'not in review' : await cardRefusal(hippoRoot, tenantId, id);
|
|
273
|
+
fail(`Could not complete card ${id} (${why}).`);
|
|
291
274
|
}
|
|
292
275
|
console.log(`Completed card ${result.card.id} (status: ${result.card.status})`);
|
|
293
276
|
if (result.promotedChildren.length > 0) {
|
|
294
277
|
console.log(`Promoted to ready: ${result.promotedChildren.join(', ')}`);
|
|
295
278
|
}
|
|
296
279
|
}
|
|
297
|
-
function cardReclaim(hippoRoot, tenantId, args) {
|
|
280
|
+
async function cardReclaim(hippoRoot, tenantId, args) {
|
|
298
281
|
if (args.length > 1) {
|
|
299
282
|
throw usageError('reclaim');
|
|
300
283
|
}
|
|
301
|
-
const ids = cardsApi.cardReclaimExpired(cliApiContext(hippoRoot, tenantId));
|
|
284
|
+
const ids = await cardsApi.cardReclaimExpired(cliApiContext(hippoRoot, tenantId));
|
|
302
285
|
if (ids.length === 0) {
|
|
303
286
|
console.log('No expired leases.');
|
|
304
287
|
return;
|
|
@@ -307,24 +290,24 @@ function cardReclaim(hippoRoot, tenantId, args) {
|
|
|
307
290
|
console.log(`Reclaimed card ${id} (now ready)`);
|
|
308
291
|
}
|
|
309
292
|
}
|
|
310
|
-
function cardComment(hippoRoot, tenantId, args, flags) {
|
|
293
|
+
async function cardComment(hippoRoot, tenantId, args, flags) {
|
|
311
294
|
const id = args[1];
|
|
312
295
|
if (!id) {
|
|
313
296
|
throw usageError('comment');
|
|
314
297
|
}
|
|
315
|
-
// Only show and comment look the card up directly; claim/heartbeat/block/review/complete throw from the store
|
|
298
|
+
// Only show and comment look the card up directly; claim/heartbeat/block/review/complete throw from the store
|
|
299
|
+
// instead.
|
|
316
300
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
317
|
-
const card = cardsApi.cardLoad(ctx, id);
|
|
301
|
+
const card = await cardsApi.cardLoad(ctx, id);
|
|
318
302
|
if (!card) {
|
|
319
|
-
|
|
320
|
-
throw new CliExit(1);
|
|
303
|
+
fail(`No card found with id ${id}.`);
|
|
321
304
|
}
|
|
322
305
|
const body = stringFlagOrExit(flags, 'body') ?? '';
|
|
323
306
|
if (!body) {
|
|
324
307
|
throw usageError('comment');
|
|
325
308
|
}
|
|
326
309
|
const author = stringFlagOrExit(flags, 'author') || 'cli';
|
|
327
|
-
const comment = cardsApi.cardComment(ctx, id, author, body);
|
|
310
|
+
const comment = await cardsApi.cardComment(ctx, id, author, body);
|
|
328
311
|
console.log(`Added comment ${comment.id} to card ${id}`);
|
|
329
312
|
}
|
|
330
313
|
const CARD_HANDLERS = {
|
package/dist/cli/client.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client wrapper for `hippo serve`: only the routed writes (remember, forget, archive, promote); every other
|
|
3
|
+
* command opens the store directly.
|
|
4
|
+
* Server errors rethrow with the message verbatim so CLI substring matches still work; network errors propagate as the
|
|
5
|
+
* native fetch failure.
|
|
6
|
+
*/
|
|
3
7
|
import type { RememberOpts, RememberResult } from '../api/index.js';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
8
|
+
/**
|
|
9
|
+
* An error the server answered with, not one the transport raised, so the transport classifier can skip it by class.
|
|
10
|
+
*/
|
|
6
11
|
export declare class HttpResponseError extends Error {
|
|
7
12
|
readonly status: number;
|
|
8
13
|
constructor(message: string, status: number);
|
|
@@ -26,7 +31,9 @@ export declare function archiveRaw(serverUrl: string, apiKey: string | undefined
|
|
|
26
31
|
ok: true;
|
|
27
32
|
archivedAt: string;
|
|
28
33
|
}>;
|
|
29
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* 'never-sent': connection never opened, safe to replay locally. 'delivery-unknown': the request was on the wire and
|
|
36
|
+
* may have
|
|
30
37
|
* committed, so never replay a write. 'none': not a transport failure. */
|
|
31
38
|
export type TransportFailure = 'none' | 'never-sent' | 'delivery-unknown';
|
|
32
39
|
export declare function classifyTransportFailure(err: Error): TransportFailure;
|