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/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,27 +1,49 @@
|
|
|
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. */
|
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 {
|
|
@@ -107,6 +131,7 @@ export async function runHookWithStores(fn) {
|
|
|
107
131
|
}
|
|
108
132
|
/** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
|
|
109
133
|
export function inPilotHoldout(hippoRoot, tenantId, sessionId, opts) {
|
|
110
|
-
|
|
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.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
|
|
@@ -125,8 +130,9 @@ async function cmdInitScan(scanDir, tenantId, flags) {
|
|
|
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) {
|
|
@@ -204,7 +210,10 @@ export async function handleInit({ hippoRoot, tenantId, flags }) {
|
|
|
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
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
// The init and setup steps that touch the machine: Codex hooks, the settings.json warning and the daily schedule.
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { execFileSync
|
|
3
|
+
import { execFileSync } from 'child_process';
|
|
4
4
|
import { installJsonHooks } from '../hooks/json-hooks.js';
|
|
5
5
|
import { CODEX_TRUST_LINE } from '../hooks/shared.js';
|
|
6
6
|
import { envSkipSchedule } from '../util/env.js';
|
|
7
7
|
import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg, } from './scheduler.js';
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an
|
|
10
|
+
* untrusted hook.
|
|
11
|
+
*/
|
|
9
12
|
export function installCodexMemoryHooks(indent) {
|
|
10
13
|
const result = installJsonHooks('codex');
|
|
11
14
|
if (result.invalidJson) {
|
|
12
|
-
console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo
|
|
15
|
+
console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo ` +
|
|
16
|
+
`hook install codex\`.`);
|
|
13
17
|
return;
|
|
14
18
|
}
|
|
15
19
|
const added = [
|
|
@@ -21,7 +25,9 @@ export function installCodexMemoryHooks(indent) {
|
|
|
21
25
|
: `${indent}hippo's Codex memory hooks already in ${result.settingsPath}`);
|
|
22
26
|
console.log(`${indent}${CODEX_TRUST_LINE}`);
|
|
23
27
|
}
|
|
24
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo
|
|
30
|
+
* can edit and so was
|
|
25
31
|
* left unchanged; true when it printed. */
|
|
26
32
|
export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
|
|
27
33
|
if (!result.invalidJson)
|
|
@@ -30,17 +36,34 @@ export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
|
|
|
30
36
|
`fix it, then run \`hippo hook ${action} claude-code\`.`);
|
|
31
37
|
return true;
|
|
32
38
|
}
|
|
33
|
-
/**
|
|
34
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on
|
|
41
|
+
* Windows; skips if installed.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`.
|
|
45
|
+
*/
|
|
35
46
|
const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
|
|
36
|
-
|
|
47
|
+
// Piped stderr stands in for `2>nul` and `2>/dev/null`, so no shell is needed to keep the scheduler's complaints off
|
|
48
|
+
// the terminal.
|
|
49
|
+
const SCHEDULER_CALL = {
|
|
50
|
+
encoding: 'utf-8',
|
|
51
|
+
stdio: 'pipe',
|
|
52
|
+
windowsHide: true,
|
|
53
|
+
timeout: SCHEDULER_CALL_TIMEOUT_MS,
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is
|
|
57
|
+
* missing.
|
|
58
|
+
*/
|
|
37
59
|
function schedulerTimedOut(err) {
|
|
38
60
|
return err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT';
|
|
39
61
|
}
|
|
40
62
|
function warnSchedulerTimedOut(command) {
|
|
41
|
-
console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner
|
|
63
|
+
console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner ` +
|
|
64
|
+
`is not scheduled.`);
|
|
42
65
|
}
|
|
43
|
-
export function setupDailySchedule(globalRoot) {
|
|
66
|
+
export function setupDailySchedule(globalRoot, run = execFileSync) {
|
|
44
67
|
// Checked here, not per caller, so init, init --scan and setup all honour it.
|
|
45
68
|
if (envSkipSchedule()) {
|
|
46
69
|
console.log(' HIPPO_SKIP_SCHEDULE=1, so the machine-level daily runner was not scheduled.');
|
|
@@ -55,14 +78,14 @@ export function setupDailySchedule(globalRoot) {
|
|
|
55
78
|
const taskName = DAILY_TASK_NAME;
|
|
56
79
|
const cmd = buildDailyRunnerCommand(runnerDir);
|
|
57
80
|
if (isWindows)
|
|
58
|
-
scheduleOnWindows(taskName, cmd);
|
|
81
|
+
scheduleOnWindows(taskName, cmd, run);
|
|
59
82
|
else
|
|
60
|
-
scheduleOnCrontab(taskName, cmd);
|
|
83
|
+
scheduleOnCrontab(taskName, cmd, run);
|
|
61
84
|
}
|
|
62
|
-
function scheduleOnWindows(taskName, cmd) {
|
|
85
|
+
function scheduleOnWindows(taskName, cmd, run) {
|
|
63
86
|
// Check if task already exists
|
|
64
87
|
try {
|
|
65
|
-
const existing =
|
|
88
|
+
const existing = run('schtasks', ['/query', '/tn', taskName], SCHEDULER_CALL);
|
|
66
89
|
if (existing.includes(taskName)) {
|
|
67
90
|
return; // already scheduled
|
|
68
91
|
}
|
|
@@ -73,7 +96,7 @@ function scheduleOnWindows(taskName, cmd) {
|
|
|
73
96
|
warnSchedulerTimedOut('schtasks /query');
|
|
74
97
|
}
|
|
75
98
|
try {
|
|
76
|
-
|
|
99
|
+
run('schtasks', buildSchtasksCreateArgs(taskName, cmd), SCHEDULER_CALL);
|
|
77
100
|
console.log(` Scheduled machine-level daily runner (6:15am) via Task Scheduler: ${taskName}`);
|
|
78
101
|
}
|
|
79
102
|
catch (err) {
|
|
@@ -81,20 +104,21 @@ function scheduleOnWindows(taskName, cmd) {
|
|
|
81
104
|
warnSchedulerTimedOut('schtasks /create');
|
|
82
105
|
// No admin rights or schtasks unavailable, fall back to printing instructions
|
|
83
106
|
console.log(` To schedule the machine-level daily runner, run:`);
|
|
84
|
-
console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st
|
|
107
|
+
console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st ` +
|
|
108
|
+
`06:15`);
|
|
85
109
|
}
|
|
86
110
|
}
|
|
87
|
-
function scheduleOnCrontab(taskName, cmd) {
|
|
111
|
+
function scheduleOnCrontab(taskName, cmd, run) {
|
|
88
112
|
// Unix: check crontab for existing entry
|
|
89
113
|
const marker = `# hippo:${taskName}`;
|
|
90
114
|
try {
|
|
91
|
-
const existing =
|
|
115
|
+
const existing = run('crontab', ['-l'], SCHEDULER_CALL);
|
|
92
116
|
if (existing.includes(marker)) {
|
|
93
117
|
return; // already scheduled
|
|
94
118
|
}
|
|
95
119
|
const cronLine = `15 6 * * * ${cmd} ${marker}`;
|
|
96
120
|
const newCrontab = existing.trimEnd() + '\n' + cronLine + '\n';
|
|
97
|
-
|
|
121
|
+
run('crontab', ['-'], { ...SCHEDULER_CALL, input: newCrontab });
|
|
98
122
|
console.log(` Scheduled machine-level daily runner (6:15am) via crontab`);
|
|
99
123
|
}
|
|
100
124
|
catch (err) {
|
package/dist/cli/last-sleep.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad`
|
|
4
|
+
* files; null when none did.
|
|
5
|
+
*/
|
|
3
6
|
export declare function sleepProblems(logText: string, bad: number): string | null;
|
|
4
7
|
/** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
|
|
5
8
|
* because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */
|