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/graph.js
CHANGED
|
@@ -5,10 +5,13 @@ import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT
|
|
|
5
5
|
import { printError } from './output.js';
|
|
6
6
|
import { stringFlag } from './flag-values.js';
|
|
7
7
|
import { requireInit } from './shared.js';
|
|
8
|
-
import {
|
|
8
|
+
import { fail } from './exit.js';
|
|
9
|
+
import { objectsOf } from '../api/objects/objects.js';
|
|
10
|
+
import { cliApiContext } from './api-context.js';
|
|
9
11
|
import { openInBrowser } from './open-browser.js';
|
|
10
|
-
function graphExtract(hippoRoot, tenantId) {
|
|
11
|
-
const
|
|
12
|
+
async function graphExtract(hippoRoot, tenantId) {
|
|
13
|
+
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
14
|
+
const result = await extractGraph(objectsOf(ctx), hippoRoot, tenantId);
|
|
12
15
|
const byType = Object.entries(result.byType)
|
|
13
16
|
.map(([t, n]) => `${t} ${n}`)
|
|
14
17
|
.join(', ');
|
|
@@ -16,7 +19,8 @@ function graphExtract(hippoRoot, tenantId) {
|
|
|
16
19
|
const relations = `${result.relations} relations (${supersedes} supersedes, ${result.references} references)`;
|
|
17
20
|
console.log(`Graph extracted: ${result.entities} entities (${byType}) + ${relations}.`);
|
|
18
21
|
if (result.truncated.length > 0) {
|
|
19
|
-
printError(`WARNING: under-extracted (hit the per-type cap): ${result.truncated.join(', ')}.
|
|
22
|
+
printError(`WARNING: under-extracted (hit the per-type cap): ${result.truncated.join(', ')}. ` +
|
|
23
|
+
'The graph is incomplete for those types.');
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
function graphShow(hippoRoot, tenantId, entity, flags) {
|
|
@@ -52,19 +56,19 @@ function graphShow(hippoRoot, tenantId, entity, flags) {
|
|
|
52
56
|
function graphView(hippoRoot, tenantId, entity, flags) {
|
|
53
57
|
const format = stringFlag(flags, 'format') ?? 'html';
|
|
54
58
|
if (format !== 'html' && format !== 'canvas') {
|
|
55
|
-
|
|
56
|
-
throw new CliExit(1);
|
|
59
|
+
fail("graph view: --format must be 'html' or 'canvas'");
|
|
57
60
|
}
|
|
58
61
|
const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
|
|
59
62
|
const content = format === 'canvas' ? renderGraphCanvas(model) : renderGraphHtml(model);
|
|
60
63
|
const defaultOut = format === 'canvas' ? 'hippo-graph.canvas' : 'hippo-graph.html';
|
|
61
64
|
const out = stringFlag(flags, 'out') ?? defaultOut;
|
|
62
65
|
fs.writeFileSync(out, content, 'utf8');
|
|
63
|
-
|
|
66
|
+
const truncated = model.truncated ? ' (truncated)' : '';
|
|
67
|
+
console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${truncated}`);
|
|
64
68
|
if (flags['open'] && format === 'html')
|
|
65
69
|
openInBrowser(out);
|
|
66
70
|
}
|
|
67
|
-
export function handleGraph({ hippoRoot, tenantId, args, flags }) {
|
|
71
|
+
export async function handleGraph({ hippoRoot, tenantId, args, flags }) {
|
|
68
72
|
requireInit(hippoRoot);
|
|
69
73
|
const subcommand = args[0] ?? '';
|
|
70
74
|
if (subcommand === 'extract')
|
|
@@ -74,10 +78,10 @@ export function handleGraph({ hippoRoot, tenantId, args, flags }) {
|
|
|
74
78
|
return graphShow(hippoRoot, tenantId, entity, flags);
|
|
75
79
|
if (subcommand === 'view')
|
|
76
80
|
return graphView(hippoRoot, tenantId, entity, flags);
|
|
77
|
-
|
|
81
|
+
fail('Usage:\n' +
|
|
78
82
|
' hippo graph extract Rebuild the entity/relation graph from consolidated objects\n' +
|
|
79
83
|
' hippo graph show [--entity NAME] [--json] Inspect entities + their edges (text or JSON)\n' +
|
|
80
|
-
' hippo graph view [--out FILE] [--open] [--format html|canvas] [--entity NAME]
|
|
81
|
-
|
|
84
|
+
' hippo graph view [--out FILE] [--open] [--format html|canvas] [--entity NAME] ' +
|
|
85
|
+
'Generate an interactive node-link diagram');
|
|
82
86
|
}
|
|
83
87
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1,29 +1,53 @@
|
|
|
1
1
|
import type { HookRuntime } from '../core/capture-contract.js';
|
|
2
2
|
import type { CliFlags } from './flag-values.js';
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does
|
|
5
|
+
* not block the other.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here.
|
|
9
|
+
*/
|
|
5
10
|
export declare function logSessionEndImport(logFile: string | null, transcriptPath: string | undefined): void;
|
|
6
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee
|
|
13
|
+
* before this runs,
|
|
7
14
|
* so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
|
|
8
15
|
export declare function appendSessionEndCloseLog(logFile: string | null, message: string, opts?: {
|
|
9
16
|
startFresh?: boolean;
|
|
10
17
|
}): void;
|
|
11
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* A session-end step that failed: one warn line, and the same text in the session log, the only place a detached
|
|
20
|
+
* worker's output survives.
|
|
21
|
+
*/
|
|
12
22
|
export declare function reportSessionEndFailure<E>(logFile: string | null, step: string, err: E): void;
|
|
13
23
|
export declare function hostSessionId(): string | undefined;
|
|
14
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and
|
|
26
|
+
* the next prompt injects again.
|
|
15
27
|
* `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
|
|
16
28
|
export declare function resetHookInjection(hippoRoot: string, tenantId: string, stdinText: string | undefined, requiredSource: string | null): void;
|
|
17
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must
|
|
31
|
+
* not create a store).
|
|
18
32
|
* Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
|
|
19
33
|
export declare function hookStoreRoot(hippoRoot: string): string;
|
|
20
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the
|
|
36
|
+
* payload.
|
|
37
|
+
*/
|
|
21
38
|
export declare function hookRuntime(flags: CliFlags): HookRuntime;
|
|
22
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder;
|
|
41
|
+
* other runtimes keep `hippoRoot`.
|
|
42
|
+
*/
|
|
23
43
|
export declare function payloadCwdRoot(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime): string;
|
|
24
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that
|
|
46
|
+
* skips the hook's
|
|
25
47
|
* work with one warning, exit 0. */
|
|
26
48
|
export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
|
|
27
49
|
/** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
|
|
28
|
-
export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined,
|
|
50
|
+
export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, opts: {
|
|
51
|
+
write: boolean;
|
|
52
|
+
}): boolean;
|
|
29
53
|
//# sourceMappingURL=hook-runtime.d.ts.map
|
package/dist/cli/hook-runtime.js
CHANGED
|
@@ -5,15 +5,21 @@ import * as fs from 'fs';
|
|
|
5
5
|
import { isSqliteBusy, noteStoreBusy, runWithRequestStores, HOOK_DB_WAIT_MS } from '../db/index.js';
|
|
6
6
|
import { bookTokenUse } from '../api/ledger-db.js';
|
|
7
7
|
import { sessionPilotArm } from '../api/pilot-arm.js';
|
|
8
|
+
import { cliLedgerReach } from './api-context.js';
|
|
8
9
|
import { hookPayloadSessionId, hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
|
|
9
10
|
import { importAtSessionEnd, currentMachine } from '../agent-memories/sync.js';
|
|
10
11
|
import { summaryLine } from '../agent-memories/report.js';
|
|
11
12
|
import { getHippoRoot, isInitialized } from '../core/project-identity.js';
|
|
12
13
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
13
14
|
import { sanitizeLogMessage } from '../capture/compact.js';
|
|
14
|
-
import { errorMessage, log } from '../util/log.js';
|
|
15
|
-
/**
|
|
16
|
-
|
|
15
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
16
|
+
/**
|
|
17
|
+
* Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does
|
|
18
|
+
* not block the other.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here.
|
|
22
|
+
*/
|
|
17
23
|
export function logSessionEndImport(logFile, transcriptPath) {
|
|
18
24
|
try {
|
|
19
25
|
const report = importAtSessionEnd(process.cwd(), transcriptPath, { machine: currentMachine() });
|
|
@@ -27,7 +33,9 @@ export function logSessionEndImport(logFile, transcriptPath) {
|
|
|
27
33
|
appendSessionEndCloseLog(logFile, `agent memory import failed: ${errorMessage(err)}`);
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee
|
|
38
|
+
* before this runs,
|
|
31
39
|
* so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
|
|
32
40
|
export function appendSessionEndCloseLog(logFile, message, opts = {}) {
|
|
33
41
|
if (!logFile)
|
|
@@ -41,10 +49,13 @@ export function appendSessionEndCloseLog(logFile, message, opts = {}) {
|
|
|
41
49
|
}
|
|
42
50
|
catch (err) {
|
|
43
51
|
// Best-effort only: a log-write failure must never fail the hook.
|
|
44
|
-
log.debug(`session-end log not written: ${errorMessage(err)}
|
|
52
|
+
log.debug(`session-end log not written: ${errorMessage(err)}`, errorFields(err));
|
|
45
53
|
}
|
|
46
54
|
}
|
|
47
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* A session-end step that failed: one warn line, and the same text in the session log, the only place a detached
|
|
57
|
+
* worker's output survives.
|
|
58
|
+
*/
|
|
48
59
|
export function reportSessionEndFailure(logFile, step, err) {
|
|
49
60
|
const line = `${step} failed: ${errorMessage(err)}`;
|
|
50
61
|
log.warn(line);
|
|
@@ -54,7 +65,9 @@ export function reportSessionEndFailure(logFile, step, err) {
|
|
|
54
65
|
export function hostSessionId() {
|
|
55
66
|
return envHippoSessionId() ?? envClaudeCodeSessionId();
|
|
56
67
|
}
|
|
57
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and
|
|
70
|
+
* the next prompt injects again.
|
|
58
71
|
* `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
|
|
59
72
|
export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSource) {
|
|
60
73
|
const sessionId = hookPayloadSessionId(stdinText, requiredSource);
|
|
@@ -63,9 +76,11 @@ export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSourc
|
|
|
63
76
|
return;
|
|
64
77
|
bookTokenUse(hippoRoot, {
|
|
65
78
|
tenantId, sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
|
|
66
|
-
});
|
|
79
|
+
}, cliLedgerReach(hippoRoot));
|
|
67
80
|
}
|
|
68
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must
|
|
83
|
+
* not create a store).
|
|
69
84
|
* Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
|
|
70
85
|
export function hookStoreRoot(hippoRoot) {
|
|
71
86
|
if (isInitialized(hippoRoot))
|
|
@@ -73,26 +88,35 @@ export function hookStoreRoot(hippoRoot) {
|
|
|
73
88
|
const globalRoot = getGlobalRoot();
|
|
74
89
|
return isInitialized(globalRoot) ? globalRoot : hippoRoot;
|
|
75
90
|
}
|
|
76
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the
|
|
93
|
+
* payload.
|
|
94
|
+
*/
|
|
77
95
|
export function hookRuntime(flags) {
|
|
78
96
|
return flags['runtime'] === 'copilot' || flags['format'] === 'copilot' ? 'copilot' : 'claude-code';
|
|
79
97
|
}
|
|
80
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder;
|
|
100
|
+
* other runtimes keep `hippoRoot`.
|
|
101
|
+
*/
|
|
81
102
|
export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
|
|
82
103
|
const cwd = runtime === 'copilot' ? hookPayloadString(stdinText, 'cwd') : null;
|
|
83
104
|
if (cwd === null || cwd.trim() === '')
|
|
84
105
|
return hippoRoot;
|
|
85
106
|
try {
|
|
86
|
-
// Moving, not just re-rooting, keeps project identity, scope, handoff evidence and the session-end worker on that
|
|
107
|
+
// Moving, not just re-rooting, keeps project identity, scope, handoff evidence and the session-end worker on that
|
|
108
|
+
// folder too.
|
|
87
109
|
process.chdir(cwd);
|
|
88
110
|
}
|
|
89
111
|
catch (err) {
|
|
90
|
-
log.warn(`hippo: payload cwd ${cwd} is not usable, so the hook stays in ${process.cwd()}: ${errorMessage(err)}
|
|
112
|
+
log.warn(`hippo: payload cwd ${cwd} is not usable, so the hook stays in ${process.cwd()}: ${errorMessage(err)}`, errorFields(err));
|
|
91
113
|
return hippoRoot;
|
|
92
114
|
}
|
|
93
115
|
return getHippoRoot(process.cwd());
|
|
94
116
|
}
|
|
95
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that
|
|
119
|
+
* skips the hook's
|
|
96
120
|
* work with one warning, exit 0. */
|
|
97
121
|
export async function runHookWithStores(fn) {
|
|
98
122
|
try {
|
|
@@ -106,7 +130,8 @@ export async function runHookWithStores(fn) {
|
|
|
106
130
|
}
|
|
107
131
|
}
|
|
108
132
|
/** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
|
|
109
|
-
export function inPilotHoldout(hippoRoot, tenantId, sessionId,
|
|
110
|
-
|
|
133
|
+
export function inPilotHoldout(hippoRoot, tenantId, sessionId, opts) {
|
|
134
|
+
const reach = cliLedgerReach(hippoRoot);
|
|
135
|
+
return sessionPilotArm(hippoRoot, tenantId, sessionId, opts.write, { reach }) === 'holdout';
|
|
111
136
|
}
|
|
112
137
|
//# sourceMappingURL=hook-runtime.js.map
|
package/dist/cli/incidents.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleIncident({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
2
|
+
export declare function handleIncident({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=incidents.d.ts.map
|
package/dist/cli/incidents.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// First-class object verbs for incidents: open one, resolve it, close it.
|
|
2
2
|
import { extractPathTags } from '../search/path-context.js';
|
|
3
3
|
import * as incidentsModule from '../objects/incidents.js';
|
|
4
|
+
import { objectsOf } from '../api/objects/objects.js';
|
|
5
|
+
import { cliApiContext } from './api-context.js';
|
|
4
6
|
import { printError } from './output.js';
|
|
5
7
|
import { nonEmptyStringFlag, isStringFlag, stringFlag } from './flag-values.js';
|
|
6
8
|
import { requireInit } from './shared.js';
|
|
7
9
|
import { closeObject, foundOrExit, idArgOrExit, listObjects } from './object-verbs.js';
|
|
8
|
-
import {
|
|
10
|
+
import { fail } from './exit.js';
|
|
9
11
|
const INCIDENT = { cmd: 'incident', noun: 'Incident', idLabel: 'incident' };
|
|
10
12
|
function printIncidentRow(inc) {
|
|
11
13
|
const linkPart = inc.linkedMemoryIds.length > 0 ? ` links=${inc.linkedMemoryIds.length}` : '';
|
|
@@ -14,17 +16,17 @@ function printIncidentRow(inc) {
|
|
|
14
16
|
if (inc.context)
|
|
15
17
|
console.log(` context: ${inc.context}`);
|
|
16
18
|
}
|
|
17
|
-
function incidentList(
|
|
18
|
-
listObjects(flags, {
|
|
19
|
+
function incidentList(objects, tenantId, flags) {
|
|
20
|
+
return listObjects(flags, {
|
|
19
21
|
plural: 'incidents',
|
|
20
22
|
states: incidentsModule.VALID_INCIDENT_STATES,
|
|
21
|
-
load: (opts) => incidentsModule.loadIncidents(
|
|
23
|
+
load: (opts) => incidentsModule.loadIncidents(objects, tenantId, opts),
|
|
22
24
|
printRow: printIncidentRow,
|
|
23
25
|
});
|
|
24
26
|
}
|
|
25
|
-
function incidentGet(
|
|
27
|
+
async function incidentGet(objects, tenantId, args) {
|
|
26
28
|
const id = idArgOrExit(args, 'Usage: hippo incident get <id>', INCIDENT.idLabel);
|
|
27
|
-
const incident = foundOrExit(incidentsModule.loadIncidentById(
|
|
29
|
+
const incident = foundOrExit(await incidentsModule.loadIncidentById(objects, tenantId, id), INCIDENT.noun, id);
|
|
28
30
|
console.log(`Incident #${incident.id}`);
|
|
29
31
|
console.log(` status: ${incident.status}`);
|
|
30
32
|
console.log(` text: ${incident.incidentText}`);
|
|
@@ -43,42 +45,41 @@ function incidentGet(hippoRoot, tenantId, args) {
|
|
|
43
45
|
console.log(` memory: ${incident.memoryId}`);
|
|
44
46
|
console.log(` created: ${incident.createdAt}`);
|
|
45
47
|
}
|
|
46
|
-
function incidentResolve(
|
|
48
|
+
async function incidentResolve(objects, tenantId, args, flags) {
|
|
47
49
|
const id = idArgOrExit(args, 'Usage: hippo incident resolve <id> --resolution "<text>"', INCIDENT.idLabel);
|
|
48
50
|
const resolutionRaw = stringFlag(flags, 'resolution');
|
|
49
51
|
if (!resolutionRaw?.trim()) {
|
|
50
|
-
|
|
51
|
-
throw new CliExit(1);
|
|
52
|
+
fail('--resolution requires a non-empty value, e.g. hippo incident resolve <id> --resolution "root cause fixed".');
|
|
52
53
|
}
|
|
53
|
-
const resolved = incidentsModule.
|
|
54
|
+
const resolved = await incidentsModule.resolveOpenIncident(objects, tenantId, id, resolutionRaw, 'cli');
|
|
54
55
|
console.log(`Incident #${resolved.id} resolved.`);
|
|
55
56
|
}
|
|
56
|
-
function incidentClose(
|
|
57
|
-
closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(
|
|
57
|
+
function incidentClose(objects, tenantId, args) {
|
|
58
|
+
return closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(objects, tenantId, id));
|
|
58
59
|
}
|
|
59
|
-
export function handleIncident({ hippoRoot, tenantId, args, flags }) {
|
|
60
|
+
export async function handleIncident({ hippoRoot, tenantId, args, flags }) {
|
|
60
61
|
requireInit(hippoRoot);
|
|
61
62
|
const subcommand = args[0] ?? '';
|
|
63
|
+
const objects = objectsOf(cliApiContext(hippoRoot, tenantId));
|
|
62
64
|
if (subcommand === 'list')
|
|
63
|
-
return incidentList(
|
|
65
|
+
return incidentList(objects, tenantId, flags);
|
|
64
66
|
if (subcommand === 'get')
|
|
65
|
-
return incidentGet(
|
|
67
|
+
return incidentGet(objects, tenantId, args);
|
|
66
68
|
if (subcommand === 'resolve')
|
|
67
|
-
return incidentResolve(
|
|
69
|
+
return incidentResolve(objects, tenantId, args, flags);
|
|
68
70
|
if (subcommand === 'close')
|
|
69
|
-
return incidentClose(
|
|
71
|
+
return incidentClose(objects, tenantId, args);
|
|
70
72
|
// Default subcommand is open (create): accept both `incident open "<text>"` and bare `incident "<text>"`;
|
|
71
73
|
// for the `open` keyword the text is args[1], otherwise args[0] is the text.
|
|
72
|
-
incidentCreate(hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
|
|
74
|
+
await incidentCreate(objects, hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
|
|
73
75
|
}
|
|
74
|
-
function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
|
|
76
|
+
async function incidentCreate(objects, hippoRoot, tenantId, incidentText, flags) {
|
|
75
77
|
if (!incidentText) {
|
|
76
78
|
printError('Usage: hippo incident "<incident>" [--context "<details>"] [--link <memory-id>]...');
|
|
77
79
|
printError(' hippo incident list [--status open|resolved|closed|all] [--limit N]');
|
|
78
80
|
printError(' hippo incident get <id>');
|
|
79
81
|
printError(' hippo incident resolve <id> --resolution "<text>"');
|
|
80
|
-
|
|
81
|
-
throw new CliExit(1);
|
|
82
|
+
fail(' hippo incident close <id>');
|
|
82
83
|
}
|
|
83
84
|
const context = nonEmptyStringFlag(flags, 'context');
|
|
84
85
|
// --link is a repeatable flag (collected into an array by parseArgs). A
|
|
@@ -92,16 +93,15 @@ function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
|
|
|
92
93
|
linkedMemoryIds = [linkRaw];
|
|
93
94
|
}
|
|
94
95
|
else if (linkRaw === true) {
|
|
95
|
-
|
|
96
|
-
throw new CliExit(1);
|
|
96
|
+
fail('--link requires a memory id, e.g. hippo incident "<text>" --link mem_abc123.');
|
|
97
97
|
}
|
|
98
98
|
const incidentPathTags = extractPathTags(process.cwd());
|
|
99
|
-
const created = incidentsModule.
|
|
99
|
+
const created = await incidentsModule.openIncident(objects, hippoRoot, tenantId, {
|
|
100
100
|
incidentText,
|
|
101
101
|
context,
|
|
102
102
|
linkedMemoryIds,
|
|
103
103
|
extraTags: incidentPathTags,
|
|
104
|
-
});
|
|
104
|
+
}, 'cli');
|
|
105
105
|
console.log(`Incident recorded: #${created.id}`);
|
|
106
106
|
if (created.memoryId)
|
|
107
107
|
console.log(` memory: ${created.memoryId}`);
|
package/dist/cli/init.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleInit({ hippoRoot, tenantId, flags }: CommandContext): void
|
|
2
|
+
export declare function handleInit({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=init.d.ts.map
|
package/dist/cli/init.js
CHANGED
|
@@ -10,7 +10,7 @@ import { isCodexWrapperInstalled } from '../hooks/codex-wrapper.js';
|
|
|
10
10
|
import { installOpencodePlugin } from '../hooks/opencode.js';
|
|
11
11
|
import { initMemoryStore } from '../api/store-init.js';
|
|
12
12
|
import { isInitialized } from '../core/project-identity.js';
|
|
13
|
-
import { listMemories } from '../api/memories.js';
|
|
13
|
+
import { listMemories } from '../api/memories/memories.js';
|
|
14
14
|
import { cliApiContext } from './api-context.js';
|
|
15
15
|
import { isGitRepo } from '../learn/autolearn.js';
|
|
16
16
|
import { currentMachine, importForStore, importProjectMemories, importUserMemories } from '../agent-memories/sync.js';
|
|
@@ -19,7 +19,7 @@ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
|
19
19
|
import { registerWorkspace } from './scheduler.js';
|
|
20
20
|
import { numberFlag, stringFlag } from './flag-values.js';
|
|
21
21
|
import { printAgentImport } from './print.js';
|
|
22
|
-
import { errorCode, errorMessage, log } from '../util/log.js';
|
|
22
|
+
import { errorCode, errorFields, errorMessage, log } from '../util/log.js';
|
|
23
23
|
import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable } from './install-steps.js';
|
|
24
24
|
import { learnFromRepo, skipLearnOnSharedStore } from './shared.js';
|
|
25
25
|
import { HOOK_MARKERS, HOOKS, hippoBlock } from '../hooks/hook-blocks.js';
|
|
@@ -47,8 +47,13 @@ function scanForGitRepos(rootDir, maxDepth = 2) {
|
|
|
47
47
|
}
|
|
48
48
|
catch (err) {
|
|
49
49
|
const code = errorCode(err);
|
|
50
|
-
if (!QUIET_SCAN_ERRORS.has(code))
|
|
51
|
-
log.warn(`repo scan skipped ${dir}`, {
|
|
50
|
+
if (!QUIET_SCAN_ERRORS.has(code)) {
|
|
51
|
+
log.warn(`repo scan skipped ${dir}`, {
|
|
52
|
+
code: code || 'unknown',
|
|
53
|
+
reason: errorMessage(err),
|
|
54
|
+
...errorFields(err),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
// Check if rootDir itself is a git repo
|
|
@@ -68,12 +73,12 @@ function initScannedRepo(repo, tenantId, globalRoot) {
|
|
|
68
73
|
return alreadyExists;
|
|
69
74
|
}
|
|
70
75
|
/** Seeds one scanned repo from git history and its agents' notes, unless --no-learn. */
|
|
71
|
-
function learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport) {
|
|
76
|
+
async function learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport) {
|
|
72
77
|
const repoHippo = path.join(repo, '.hippo');
|
|
73
78
|
let added = 0;
|
|
74
79
|
let lowInfo = 0;
|
|
75
80
|
if (learn && isGitRepo(repo)) {
|
|
76
|
-
const result = learnFromRepo(repoHippo, tenantId, repo, seedDays, path.basename(repo));
|
|
81
|
+
const result = await learnFromRepo(repoHippo, tenantId, repo, seedDays, path.basename(repo));
|
|
77
82
|
added = result.added;
|
|
78
83
|
lowInfo = result.lowInfo;
|
|
79
84
|
}
|
|
@@ -102,7 +107,7 @@ function printScanSummary(repoCount, totalLessons, totalLowInfo) {
|
|
|
102
107
|
(totalLowInfo > 0 ? `, ${totalLowInfo} low-information subject(s) dropped` : '') +
|
|
103
108
|
'.');
|
|
104
109
|
}
|
|
105
|
-
function cmdInitScan(scanDir, tenantId, flags) {
|
|
110
|
+
async function cmdInitScan(scanDir, tenantId, flags) {
|
|
106
111
|
const resolved = path.resolve(scanDir);
|
|
107
112
|
console.log(`Scanning ${resolved} for git repositories...\n`);
|
|
108
113
|
const repos = scanForGitRepos(resolved);
|
|
@@ -121,12 +126,13 @@ function cmdInitScan(scanDir, tenantId, flags) {
|
|
|
121
126
|
const learn = !flags['no-learn'];
|
|
122
127
|
for (const repo of repos) {
|
|
123
128
|
const alreadyExists = initScannedRepo(repo, tenantId, globalRoot);
|
|
124
|
-
const { added, lowInfo } = learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport);
|
|
129
|
+
const { added, lowInfo } = await learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport);
|
|
125
130
|
totalLessons += added;
|
|
126
131
|
totalLowInfo += lowInfo;
|
|
127
132
|
const status = alreadyExists ? 'existing' : 'new';
|
|
128
|
-
const entries = listMemories(cliApiContext(path.join(repo, '.hippo'), tenantId), { everyTenant: true });
|
|
129
|
-
console.log(` ${path.basename(repo).padEnd(25)} ${status.padEnd(10)} ${entries.length}
|
|
133
|
+
const entries = await listMemories(cliApiContext(path.join(repo, '.hippo'), tenantId), { everyTenant: true });
|
|
134
|
+
console.log(` ${path.basename(repo).padEnd(25)} ${status.padEnd(10)} ${entries.length} ` +
|
|
135
|
+
`memories${added > 0 ? ` (+${added} from git)` : ''}`);
|
|
130
136
|
}
|
|
131
137
|
printScanSummary(repos.length, totalLessons, totalLowInfo);
|
|
132
138
|
if (learn) {
|
|
@@ -153,12 +159,12 @@ function initGlobalOnly(flags) {
|
|
|
153
159
|
if (!flags['no-learn'])
|
|
154
160
|
printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }));
|
|
155
161
|
}
|
|
156
|
-
function seedFromGitHistory(hippoRoot, tenantId) {
|
|
162
|
+
async function seedFromGitHistory(hippoRoot, tenantId) {
|
|
157
163
|
if (!isGitRepo(process.cwd()))
|
|
158
164
|
return;
|
|
159
165
|
const seedDays = 30;
|
|
160
166
|
console.log(`\n Seeding memories from last ${seedDays} days of git history...`);
|
|
161
|
-
const { added, skipped } = learnFromRepo(hippoRoot, tenantId, process.cwd(), seedDays);
|
|
167
|
+
const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), seedDays);
|
|
162
168
|
if (added > 0) {
|
|
163
169
|
console.log(` Learned ${added} lessons from git (${skipped} duplicates skipped).`);
|
|
164
170
|
}
|
|
@@ -166,11 +172,11 @@ function seedFromGitHistory(hippoRoot, tenantId) {
|
|
|
166
172
|
console.log(` No matching commits found in git history.`);
|
|
167
173
|
}
|
|
168
174
|
}
|
|
169
|
-
export function handleInit({ hippoRoot, tenantId, flags }) {
|
|
175
|
+
export async function handleInit({ hippoRoot, tenantId, flags }) {
|
|
170
176
|
// Handle --scan mode
|
|
171
177
|
if (flags['scan']) {
|
|
172
178
|
const scanDir = stringFlag(flags, 'scan') ?? os.homedir();
|
|
173
|
-
cmdInitScan(scanDir, tenantId, flags);
|
|
179
|
+
await cmdInitScan(scanDir, tenantId, flags);
|
|
174
180
|
return;
|
|
175
181
|
}
|
|
176
182
|
if (flags['global']) {
|
|
@@ -199,12 +205,15 @@ export function handleInit({ hippoRoot, tenantId, flags }) {
|
|
|
199
205
|
const learn = !flags['no-learn'] && !skipLearnOnSharedStore(hippoRoot);
|
|
200
206
|
// Seed with git history on first init (unless --no-learn)
|
|
201
207
|
if (!alreadyExists && learn && !flags['global'])
|
|
202
|
-
seedFromGitHistory(hippoRoot, tenantId);
|
|
208
|
+
await seedFromGitHistory(hippoRoot, tenantId);
|
|
203
209
|
// Every run, not only the first: an agent's notes change between inits.
|
|
204
210
|
if (learn)
|
|
205
211
|
printAgentImport(importForStore(hippoRoot, { machine: currentMachine() }));
|
|
206
212
|
}
|
|
207
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* Every write init makes into agent config (instruction blocks, hooks, plugins) is an automatic integration, so one
|
|
215
|
+
* switch skips them all.
|
|
216
|
+
*/
|
|
208
217
|
function initInstallsIntegrations(flags) {
|
|
209
218
|
if (flags['no-hooks'])
|
|
210
219
|
return false;
|
|
@@ -246,7 +255,8 @@ function patchInstructionFiles(dir, agents) {
|
|
|
246
255
|
if (!hookDef)
|
|
247
256
|
continue;
|
|
248
257
|
const targetPath = path.resolve(dir, hookDef.file);
|
|
249
|
-
// Never create the file: a marker such as .codex or .claude/settings.json does not ask for a new AGENTS.md or
|
|
258
|
+
// Never create the file: a marker such as .codex or .claude/settings.json does not ask for a new AGENTS.md or
|
|
259
|
+
// CLAUDE.md.
|
|
250
260
|
if (!fs.existsSync(targetPath) || seen.has(targetPath))
|
|
251
261
|
continue;
|
|
252
262
|
seen.add(targetPath);
|
|
@@ -310,7 +320,8 @@ function installClaudeCodeSettingsHooks(hook) {
|
|
|
310
320
|
}
|
|
311
321
|
}
|
|
312
322
|
function installOpencodeUserPlugin() {
|
|
313
|
-
// opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in
|
|
323
|
+
// opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in
|
|
324
|
+
// src/hooks/opencode.ts).
|
|
314
325
|
const result = installOpencodePlugin();
|
|
315
326
|
if (result.installed) {
|
|
316
327
|
console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
|
|
@@ -322,7 +333,10 @@ function installOpencodeUserPlugin() {
|
|
|
322
333
|
console.log(` WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
|
|
323
334
|
}
|
|
324
335
|
}
|
|
325
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* Claude Code settings hooks, Codex's hooks.json and the OpenCode plugin, under the home directory; idempotent, so
|
|
338
|
+
* re-running init adds newer hooks.
|
|
339
|
+
*/
|
|
326
340
|
function installUserLevelHooks(agents, codexHint) {
|
|
327
341
|
for (const hook of agents) {
|
|
328
342
|
// The Codex capture wrapper swaps the codex launcher binary, so init only points at the opt-in.
|
|
@@ -332,7 +346,8 @@ function installUserLevelHooks(agents, codexHint) {
|
|
|
332
346
|
// Checked first so init never creates ~/.codex on a machine without Codex.
|
|
333
347
|
if (hook === 'codex' && isCodexPresent())
|
|
334
348
|
installCodexMemoryHooks(' ');
|
|
335
|
-
// For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep
|
|
349
|
+
// For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep
|
|
350
|
+
// with
|
|
336
351
|
// `hippo hook install claude-code` and `hippo setup`.
|
|
337
352
|
if (hook === 'claude-code')
|
|
338
353
|
installClaudeCodeSettingsHooks(hook);
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
import { type ExecFileSyncOptionsWithStringEncoding } from 'child_process';
|
|
1
2
|
import { type InstallResult } from '../hooks/json-hooks.js';
|
|
2
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an
|
|
5
|
+
* untrusted hook.
|
|
6
|
+
*/
|
|
3
7
|
export declare function installCodexMemoryHooks(indent: string): void;
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo
|
|
10
|
+
* can edit and so was
|
|
5
11
|
* left unchanged; true when it printed. */
|
|
6
12
|
export declare function warnClaudeSettingsUnusable(result: Pick<InstallResult, 'settingsPath' | 'invalidJson'>, indent: string, action?: 'install' | 'uninstall'): boolean;
|
|
7
|
-
|
|
13
|
+
/** Runs one scheduler program from argv with no shell; tests hand in a stand-in so no real schtasks or crontab runs. */
|
|
14
|
+
type RunScheduler = (file: string, args: readonly string[], opts: ExecFileSyncOptionsWithStringEncoding) => string;
|
|
15
|
+
export declare function setupDailySchedule(globalRoot: string, run?: RunScheduler): void;
|
|
16
|
+
export {};
|
|
8
17
|
//# sourceMappingURL=install-steps.d.ts.map
|