hippo-memory 2.0.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/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 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- 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 +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- 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} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- 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} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- 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 -8
- 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 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- 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 +32 -19
- package/dist/api/prompt-hook.js +65 -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} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- 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 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- 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} +51 -43
- 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 +28 -7
- 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 +33 -14
- 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 +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- 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 +45 -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 +23 -23
- package/dist/cli/auth.js +19 -27
- 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 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- 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 +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- 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 +4 -4
- package/dist/cli/object-verbs.js +10 -13
- 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 +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- 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 +14 -6
- 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 +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- 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 -5
- 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 -6
- 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 -6
- 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 +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- 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 -6
- 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 -5
- 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 -6
- 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 +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- 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 +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- 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 +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- 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 +24 -14
- 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 +21 -16
- 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 +84 -27
- package/dist/core/memory.js +73 -29
- 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 +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- 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.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- 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 -3
- package/dist/db/connect.js +8 -3
- 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 +26 -13
- 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/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- 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 -4
- package/dist/db/physics-state.js +13 -20
- 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 +19 -5
- package/dist/db/request-stores.js +14 -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 +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- 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 +19 -6
- package/dist/entry/store-kit.js +6 -4
- 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 +16 -6
- 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 +69 -34
- 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 +8 -7
- 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 +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- 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 +16 -9
- 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 -7
- package/dist/learn/invalidation.js +56 -27
- 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 +18 -14
- 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 +57 -74
- 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 +52 -21
- 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 +9 -6
- 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 +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- 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 +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- 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 +547 -93
- 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 -19
- 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 +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- 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 +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -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 +75 -36
- 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 +93 -60
- 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 +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- 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 +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- 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 +8 -10
- 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 +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- 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 +3 -1
- package/dist/store/index.js +1 -0
- 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 +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- 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 +215 -229
- 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 +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- 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 +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- 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 +9 -4
- 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 +6 -3
- 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 +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- 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.js +2 -1
- 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 +84 -33
- 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 -11
- package/dist/store/sqlite/store.js +84 -11
- 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 +19 -12
- package/dist/store/summaries.js +36 -21
- 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 +6 -3
- 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 +24 -10
- 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 +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- 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 +16 -4
- package/dist/util/env.js +78 -25
- 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 +11 -3
- package/dist/util/request-scope.js +13 -4
- 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 +3 -1
- package/dist/util/spawn-argv.js +13 -4
- 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/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 +2 -1
- package/scripts/postinstall.cjs +3 -1
- 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 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- 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 -11
- 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 -4
- package/dist/store/sqlite/local.js +0 -8
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,7 +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
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* An error the server answered with, not one the transport raised, so the transport classifier can skip it by class.
|
|
10
|
+
*/
|
|
5
11
|
export declare class HttpResponseError extends Error {
|
|
6
12
|
readonly status: number;
|
|
7
13
|
constructor(message: string, status: number);
|
|
@@ -25,7 +31,9 @@ export declare function archiveRaw(serverUrl: string, apiKey: string | undefined
|
|
|
25
31
|
ok: true;
|
|
26
32
|
archivedAt: string;
|
|
27
33
|
}>;
|
|
28
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* 'never-sent': connection never opened, safe to replay locally. 'delivery-unknown': the request was on the wire and
|
|
36
|
+
* may have
|
|
29
37
|
* committed, so never replay a write. 'none': not a transport failure. */
|
|
30
38
|
export type TransportFailure = 'none' | 'never-sent' | 'delivery-unknown';
|
|
31
39
|
export declare function classifyTransportFailure(err: Error): TransportFailure;
|
package/dist/cli/client.js
CHANGED
|
@@ -1,23 +1,42 @@
|
|
|
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 { fetchWithRetry } from '../util/http-retry.js';
|
|
4
8
|
import { readCappedJson } from '../util/capped-json.js';
|
|
5
9
|
import { isJsonObject, isJsonString } from '../util/json.js';
|
|
10
|
+
import { errorFields, errorMessage, log } from '../util/log.js';
|
|
6
11
|
import { isObjectLike } from '../core/capture-contract.js';
|
|
7
12
|
/** A write the local server has not answered in this long is stuck; the caller treats it as delivery-unknown. */
|
|
8
13
|
const SERVER_TIMEOUT_MS = 30_000;
|
|
9
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Five tries at the server's 1 s Retry-After keeps the roughly 5 s wait the CLI had before the server answered busy
|
|
16
|
+
* with 503.
|
|
17
|
+
*/
|
|
10
18
|
const STORE_BUSY_ATTEMPTS = 5;
|
|
11
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Every routed write answers with a few short fields; the pidfile's port may now be another process, so cap what it
|
|
21
|
+
* sends.
|
|
22
|
+
*/
|
|
12
23
|
const MAX_REPLY_BYTES = 1024 * 1024;
|
|
13
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The server sets Retry-After on a 503 only for a held write lock (server.ts replyFor); the auth-provider 503 has none.
|
|
26
|
+
*/
|
|
14
27
|
function isStoreBusy(res) {
|
|
15
28
|
return res.status === 503 && res.headers.has('retry-after');
|
|
16
29
|
}
|
|
17
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Replaying is safe because each routed write commits in one transaction and anything after it is best-effort, so a
|
|
32
|
+
* busy 503 means
|
|
18
33
|
* nothing landed; a sleep is safe too, as a re-run finishes a partial one. */
|
|
19
34
|
function sendWrite(url, init) {
|
|
20
|
-
return fetchWithRetry(url, init, {
|
|
35
|
+
return fetchWithRetry(url, init, {
|
|
36
|
+
timeoutMs: SERVER_TIMEOUT_MS,
|
|
37
|
+
attempts: STORE_BUSY_ATTEMPTS,
|
|
38
|
+
retryOn: isStoreBusy,
|
|
39
|
+
});
|
|
21
40
|
}
|
|
22
41
|
function buildHeaders(apiKey, withBody) {
|
|
23
42
|
const headers = {};
|
|
@@ -27,7 +46,9 @@ function buildHeaders(apiKey, withBody) {
|
|
|
27
46
|
headers['authorization'] = `Bearer ${apiKey}`;
|
|
28
47
|
return headers;
|
|
29
48
|
}
|
|
30
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* An error the server answered with, not one the transport raised, so the transport classifier can skip it by class.
|
|
51
|
+
*/
|
|
31
52
|
export class HttpResponseError extends Error {
|
|
32
53
|
status;
|
|
33
54
|
constructor(message, status) {
|
|
@@ -46,8 +67,9 @@ async function throwForStatus(res) {
|
|
|
46
67
|
message = body.error;
|
|
47
68
|
}
|
|
48
69
|
}
|
|
49
|
-
catch {
|
|
70
|
+
catch (err) {
|
|
50
71
|
// body wasn't JSON or ran past the cap; fall back to status line.
|
|
72
|
+
log.debug(`server error body unreadable (${errorMessage(err)}); using the status line`, errorFields(err));
|
|
51
73
|
}
|
|
52
74
|
throw new HttpResponseError(message, res.status);
|
|
53
75
|
}
|
|
@@ -60,11 +82,15 @@ export class MalformedReplyError extends Error {
|
|
|
60
82
|
this.name = 'MalformedReplyError';
|
|
61
83
|
}
|
|
62
84
|
}
|
|
63
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* A 2xx reply's body, read under the cap; it must be a JSON object, and `guard` narrows it further where the shape is
|
|
87
|
+
* known.
|
|
88
|
+
*/
|
|
64
89
|
async function readReply(res, route, guard) {
|
|
65
90
|
const body = await readCappedJson(res, MAX_REPLY_BYTES);
|
|
66
|
-
if (!isJsonObject(body))
|
|
91
|
+
if (!isJsonObject(body)) {
|
|
67
92
|
throw new MalformedReplyError(route, body === null ? 'null' : Array.isArray(body) ? 'array' : 'a scalar');
|
|
93
|
+
}
|
|
68
94
|
if (guard && !guard(body))
|
|
69
95
|
throw new MalformedReplyError(route, 'unexpected fields');
|
|
70
96
|
const reply = body;
|
|
@@ -109,7 +135,10 @@ export async function archiveRaw(serverUrl, apiKey, id, reason) {
|
|
|
109
135
|
await throwForStatus(res);
|
|
110
136
|
return readReply(res, 'POST /v1/memories/:id/archive', (b) => isJsonString(b.archivedAt));
|
|
111
137
|
}
|
|
112
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* The syscall code Node puts on a system error itself (`http` errors) or on the `cause` of a fetch `TypeError`; '' when
|
|
140
|
+
* there is none.
|
|
141
|
+
*/
|
|
113
142
|
function transportCode(err) {
|
|
114
143
|
if ('code' in err)
|
|
115
144
|
return String(err.code);
|
|
@@ -130,7 +159,8 @@ export function classifyTransportFailure(err) {
|
|
|
130
159
|
if (code === 'ECONNRESET' || code === 'ECONNABORTED' || code === 'EPIPE' || code === 'UND_ERR_SOCKET') {
|
|
131
160
|
return 'delivery-unknown';
|
|
132
161
|
}
|
|
133
|
-
// Fetch rejects every network failure as a TypeError, with a cause only when the syscall is known, so no code means
|
|
162
|
+
// Fetch rejects every network failure as a TypeError, with a cause only when the syscall is known, so no code means
|
|
163
|
+
// the conservative answer.
|
|
134
164
|
if (err instanceof TypeError)
|
|
135
165
|
return 'delivery-unknown';
|
|
136
166
|
// The request was sent and the server went quiet, so it may have committed.
|
|
@@ -3,6 +3,9 @@ export interface CompactResumePayload {
|
|
|
3
3
|
payloadSessionId: string | null;
|
|
4
4
|
boundary: boolean;
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may
|
|
8
|
+
* print.
|
|
9
|
+
*/
|
|
7
10
|
export declare function readCompactResumePayload(stdinText: string | undefined, stdinTimedOut: boolean): CompactResumePayload;
|
|
8
11
|
//# sourceMappingURL=compact-resume-payload.d.ts.map
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
// The payload gate for `hippo compact-resume`.
|
|
2
2
|
import { isSubagentPayload } from '../util/hook-payload.js';
|
|
3
3
|
import { isJsonObject, isJsonString } from '../util/json.js';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may
|
|
6
|
+
* print.
|
|
7
|
+
*/
|
|
5
8
|
export function readCompactResumePayload(stdinText, stdinTimedOut) {
|
|
6
|
-
// An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with
|
|
9
|
+
// An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with
|
|
10
|
+
// any other source stays silent.
|
|
7
11
|
const nonEmptyStdin = !!stdinText && stdinText.trim() !== '';
|
|
8
|
-
// Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the
|
|
12
|
+
// Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the
|
|
13
|
+
// print path.
|
|
9
14
|
let suppressOutput = stdinTimedOut && !nonEmptyStdin;
|
|
10
15
|
let payloadSessionId = null;
|
|
11
16
|
// A boundary is a manual run or a payload that says it follows a compaction; anything else is not one.
|
|
@@ -24,8 +29,10 @@ export function readCompactResumePayload(stdinText, stdinTimedOut) {
|
|
|
24
29
|
suppressOutput = true;
|
|
25
30
|
}
|
|
26
31
|
else {
|
|
27
|
-
// Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart
|
|
28
|
-
//
|
|
32
|
+
// Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart
|
|
33
|
+
// payload always carries source.
|
|
34
|
+
// A sub-agent's payload carries its parent's session id, so the mismatch guard would pass and restore the
|
|
35
|
+
// parent's snapshot into it.
|
|
29
36
|
boundary = payload.source === 'compact';
|
|
30
37
|
if (payload.source !== 'compact' || isSubagentPayload(stdinText)) {
|
|
31
38
|
suppressOutput = true;
|