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
|
@@ -16,26 +16,28 @@ import { cmdPreCompact, cmdPostCompact } from '../capture/compact.js';
|
|
|
16
16
|
import { transcriptWorkingState } from '../capture/working-state.js';
|
|
17
17
|
import { collectHandoffEvidence } from '../capture/handoff-evidence.js';
|
|
18
18
|
import { copilotTranscriptFor, SESSION_ID_RE } from '../capture/copilot-transcript.js';
|
|
19
|
-
import { loadTurnPosition, runSessionWorker, saveTurnPosition, turnsAfter } from '../capture/session-worker.js';
|
|
20
|
-
import { isStringValue, readSessionEnd, readVscodeStop } from '../core/capture-contract.js';
|
|
19
|
+
import { loadTurnPosition, runSessionWorker, saveTurnPosition, turnsAfter, } from '../capture/session-worker.js';
|
|
20
|
+
import { isStringValue, readSessionEnd, readVscodeStop, } from '../core/capture-contract.js';
|
|
21
21
|
import { loadConfig } from '../core/config.js';
|
|
22
|
-
import { autoSleepDue } from '../api/auto-sleep.js';
|
|
22
|
+
import { autoSleepDue } from '../api/sleep/auto-sleep.js';
|
|
23
23
|
import { COMPACTION_DB_WAIT_MS } from '../core/compaction-timing.js';
|
|
24
|
-
import {
|
|
24
|
+
import { compactResumeBlock, sessionEndWork as runSessionEnd } from '../api/session-end.js';
|
|
25
25
|
import { normaliseHookPayload, readHookStdin, readStdinBounded } from './stdin.js';
|
|
26
|
-
import { errorMessage, log } from '../util/log.js';
|
|
26
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
27
|
+
import { cmdShimArgs } from '../util/spawn-argv.js';
|
|
27
28
|
import { bookLedgerTurn } from '../api/ledger-db.js';
|
|
28
29
|
import { flushDeliveryRecorder, startDeliveryRecorder, startToolFailureRecorder } from '../api/prompt-hook.js';
|
|
29
30
|
import { printError } from './output.js';
|
|
30
31
|
import { cmdLastSleep } from './last-sleep.js';
|
|
31
32
|
import { readCompactResumePayload } from './compact-resume-payload.js';
|
|
32
|
-
import { cliApiContext } from './api-context.js';
|
|
33
|
-
import { boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
33
|
+
import { cliApiContext, cliLedgerReach } from './api-context.js';
|
|
34
|
+
import { boolFlag, flagIsTrue, stringFlag, stringFlagOrExit, } from './flag-values.js';
|
|
34
35
|
import { logSessionEndImport, appendSessionEndCloseLog, reportSessionEndFailure, resetHookInjection, hookStoreRoot, hookRuntime, payloadCwdRoot, runHookWithStores, inPilotHoldout, hostSessionId, } from './hook-runtime.js';
|
|
35
|
-
import { CliExit } from './exit.js';
|
|
36
|
-
/** SessionStart(compact) injector: prints the task snapshot and session trail lost to compaction; no pinned memories
|
|
37
|
-
* Every path exits 0: a malformed payload or store read failure degrades to empty
|
|
38
|
-
|
|
36
|
+
import { CliExit, fail } from './exit.js';
|
|
37
|
+
/** SessionStart(compact) injector: prints the task snapshot and session trail lost to compaction; no pinned memories
|
|
38
|
+
* (UserPromptSubmit re-injects them). Every path exits 0: a malformed payload or store read failure degrades to empty
|
|
39
|
+
* stdout, never a throw. */
|
|
40
|
+
async function cmdCompactResume(hippoRoot, tenantId, stdinText, stdinTimedOut) {
|
|
39
41
|
let rec = null;
|
|
40
42
|
try {
|
|
41
43
|
// Gate on the non-exiting isInitialized check first: the store reads below call initStore, which would
|
|
@@ -52,48 +54,57 @@ function cmdCompactResume(hippoRoot, tenantId, stdinText, stdinTimedOut) {
|
|
|
52
54
|
});
|
|
53
55
|
}
|
|
54
56
|
// A compaction follows a prompt or SessionStart that booked the arm, so this only reads it.
|
|
55
|
-
if (!suppressOutput && payloadSessionId !== null &&
|
|
57
|
+
if (!suppressOutput && payloadSessionId !== null &&
|
|
58
|
+
inPilotHoldout(hippoRoot, tenantId, payloadSessionId, { write: false })) {
|
|
56
59
|
suppressOutput = true;
|
|
57
60
|
rec?.disabled();
|
|
58
61
|
}
|
|
59
62
|
if (!suppressOutput)
|
|
60
|
-
restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec);
|
|
63
|
+
await restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec);
|
|
61
64
|
}
|
|
62
65
|
catch (err) {
|
|
63
66
|
if (err instanceof CliExit)
|
|
64
67
|
throw err;
|
|
65
|
-
// Empty stdout on any store error, never a crashed SessionStart; the reason goes to stderr, which the model never
|
|
66
|
-
|
|
68
|
+
// Empty stdout on any store error, never a crashed SessionStart; the reason goes to stderr, which the model never
|
|
69
|
+
// sees.
|
|
70
|
+
log.warn(`hippo compact-resume: skipped: ${errorMessage(err)}`, errorFields(err));
|
|
67
71
|
}
|
|
68
72
|
// A no-op when the token ledger's handle already wrote the row; exit would drop it otherwise.
|
|
69
73
|
flushDeliveryRecorder(rec);
|
|
70
74
|
throw new CliExit(0);
|
|
71
75
|
}
|
|
72
|
-
function restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec) {
|
|
73
|
-
const text = compactResumeBlock(cliApiContext(hippoRoot, tenantId), payloadSessionId);
|
|
76
|
+
async function restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec) {
|
|
77
|
+
const text = await compactResumeBlock(cliApiContext(hippoRoot, tenantId), payloadSessionId);
|
|
74
78
|
if (text === null)
|
|
75
79
|
return;
|
|
76
80
|
// Printed in one write so the ledger books exactly the text the model is handed.
|
|
77
81
|
console.log(text);
|
|
78
|
-
rec?.delivered({ state: 'sent', emittedText: `${text}
|
|
79
|
-
` });
|
|
82
|
+
rec?.delivered({ state: 'sent', emittedText: `${text}\n` });
|
|
80
83
|
bookLedgerTurn(hippoRoot, {
|
|
81
84
|
uses: [{
|
|
82
|
-
tenantId,
|
|
85
|
+
tenantId,
|
|
86
|
+
sessionId: payloadSessionId,
|
|
87
|
+
surface: 'compact_resume',
|
|
88
|
+
event: 'inject',
|
|
89
|
+
items: 1,
|
|
90
|
+
tokens: estimateTokens(text),
|
|
83
91
|
}],
|
|
84
92
|
delivery: (write) => flushDeliveryRecorder(rec, write),
|
|
85
|
-
});
|
|
93
|
+
}, cliLedgerReach(hippoRoot));
|
|
86
94
|
}
|
|
87
|
-
/** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs
|
|
88
|
-
* The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
|
|
95
|
+
/** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs
|
|
96
|
+
* sleep then capture, and exit. The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
|
|
89
97
|
export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
|
|
90
98
|
const runtime = hookRuntime(flags);
|
|
91
99
|
const turn = flagIsTrue(flags, 'turn');
|
|
92
|
-
// Copilot's hook command carries no path, since one quoted into it would need escaping for each shell; the log goes
|
|
93
|
-
|
|
100
|
+
// Copilot's hook command carries no path, since one quoted into it would need escaping for each shell; the log goes
|
|
101
|
+
// where the hook table used to point.
|
|
102
|
+
const logFile = stringFlag(flags, 'log-file') ??
|
|
103
|
+
(runtime === 'copilot' ? resolveJsonHookPaths('copilot').logFile : null);
|
|
94
104
|
// Bounded read: extracts transcript_path + session_id for the detached worker's argv.
|
|
95
105
|
const raw = await readStdinBounded();
|
|
96
|
-
// Read before normalising: the Copilot CLI's agentStop shares this hook line, and camelCase keys would pass as VS
|
|
106
|
+
// Read before normalising: the Copilot CLI's agentStop shares this hook line, and camelCase keys would pass as VS
|
|
107
|
+
// Code's.
|
|
97
108
|
const stop = turn ? vscodeStopInput(raw) : null;
|
|
98
109
|
if (turn && !stop)
|
|
99
110
|
return;
|
|
@@ -103,28 +114,24 @@ export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
|
|
|
103
114
|
const input = stop ?? sessionEndInput(stdinText, raw.timedOut, runtime);
|
|
104
115
|
// Only a host payload ends a session: a manual run and a reply's end (turn mode) are not boundaries.
|
|
105
116
|
const rec = !turn && input !== null && !input.manual
|
|
106
|
-
?
|
|
117
|
+
? startSessionEndRecorder(root, tenantId, stdinText, runtime)
|
|
107
118
|
: null;
|
|
108
119
|
const sessionId = input?.sessionId ?? null;
|
|
109
|
-
// Resolved here because only this process saw the payload; the worker captures just the path it is handed.
|
|
110
|
-
//
|
|
120
|
+
// Resolved here because only this process saw the payload; the worker captures just the path it is handed. Always a
|
|
121
|
+
// hook, so never scan: an empty stdin here is not a manual run. The Copilot CLI's sessionEnd names no transcript, so
|
|
122
|
+
// its log is found by id.
|
|
111
123
|
const named = input?.transcriptPath ?? null;
|
|
112
124
|
const transcriptPath = (named !== null && fs.existsSync(named) ? named : null)
|
|
113
125
|
?? (runtime === 'copilot' && sessionId ? copilotTranscriptFor(sessionId) : null);
|
|
126
|
+
const worker = { logFile, transcriptPath, sessionId, turn };
|
|
114
127
|
try {
|
|
115
|
-
spawnSessionEndWorker(sessionEndWorkerArgs(
|
|
128
|
+
spawnSessionEndWorker(sessionEndWorkerArgs(worker));
|
|
116
129
|
}
|
|
117
130
|
catch (err) {
|
|
118
|
-
log.debug(`session-end: the worker did not spawn, running inline: ${errorMessage(err)}
|
|
131
|
+
log.debug(`session-end: the worker did not spawn, running inline: ${errorMessage(err)}`, errorFields(err));
|
|
119
132
|
// Inline is the last resort, handed what the child's argv would have carried.
|
|
120
|
-
if (logFile)
|
|
121
|
-
flags['log-file'] = logFile;
|
|
122
|
-
if (transcriptPath)
|
|
123
|
-
flags['transcript'] = transcriptPath;
|
|
124
|
-
if (sessionId)
|
|
125
|
-
flags['session-id'] = sessionId;
|
|
126
133
|
try {
|
|
127
|
-
await cmdSessionEndWorker(root, tenantId, flags);
|
|
134
|
+
await cmdSessionEndWorker(root, tenantId, inlineWorkerFlags(flags, worker));
|
|
128
135
|
}
|
|
129
136
|
finally {
|
|
130
137
|
await runHookWithStores(() => flushDeliveryRecorder(rec));
|
|
@@ -134,7 +141,16 @@ export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
|
|
|
134
141
|
// After the spawn, so a locked store delays only the row; the hook's short lock wait bounds it.
|
|
135
142
|
await runHookWithStores(() => flushDeliveryRecorder(rec));
|
|
136
143
|
}
|
|
137
|
-
|
|
144
|
+
function startSessionEndRecorder(root, tenantId, stdinText, runtime) {
|
|
145
|
+
return startDeliveryRecorder(cliApiContext(hookStoreRoot(root), tenantId), {
|
|
146
|
+
stdinText,
|
|
147
|
+
runtime,
|
|
148
|
+
eventType: 'session-end',
|
|
149
|
+
envSessionId: hostSessionId(),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/** What the session-end payload named; null for one hippo refuses or one that never arrived, and the worker then runs
|
|
153
|
+
* with neither value. */
|
|
138
154
|
function sessionEndInput(stdinText, timedOut, runtime) {
|
|
139
155
|
const receipt = readSessionEnd(stdinText, timedOut, runtime);
|
|
140
156
|
if (receipt.status === 'received')
|
|
@@ -142,7 +158,8 @@ function sessionEndInput(stdinText, timedOut, runtime) {
|
|
|
142
158
|
log.debug(`session-end: ${receipt.reason}`);
|
|
143
159
|
return null;
|
|
144
160
|
}
|
|
145
|
-
function sessionEndWorkerArgs(
|
|
161
|
+
function sessionEndWorkerArgs(o) {
|
|
162
|
+
const { logFile, transcriptPath, sessionId, turn } = o;
|
|
146
163
|
const workerArgs = [process.argv[1], '__session-end-worker'];
|
|
147
164
|
if (logFile)
|
|
148
165
|
workerArgs.push('--log-file', logFile);
|
|
@@ -154,6 +171,27 @@ function sessionEndWorkerArgs(logFile, transcriptPath, sessionId, turn) {
|
|
|
154
171
|
workerArgs.push('--turn');
|
|
155
172
|
return workerArgs;
|
|
156
173
|
}
|
|
174
|
+
/** The flags the detached worker would parse from its argv, so the inline run sees what the child would have; the
|
|
175
|
+
* hook's own flags fill the gaps. */
|
|
176
|
+
function inlineWorkerFlags(flags, w) {
|
|
177
|
+
const out = {};
|
|
178
|
+
const keep = (name, value) => {
|
|
179
|
+
if (value)
|
|
180
|
+
out[name] = value;
|
|
181
|
+
};
|
|
182
|
+
keep('log-file', w.logFile ?? flags['log-file']);
|
|
183
|
+
keep('transcript', w.transcriptPath ?? flags['transcript']);
|
|
184
|
+
keep('session-id', w.sessionId ?? flags['session-id']);
|
|
185
|
+
if (flagIsTrue(flags, 'turn'))
|
|
186
|
+
out['turn'] = true;
|
|
187
|
+
if (flagIsTrue(flags, 'dry-run'))
|
|
188
|
+
out['dry-run'] = true;
|
|
189
|
+
if (flagIsTrue(flags, 'no-learn'))
|
|
190
|
+
out['no-learn'] = true;
|
|
191
|
+
if (flagIsTrue(flags, 'no-share'))
|
|
192
|
+
out['no-share'] = true;
|
|
193
|
+
return out;
|
|
194
|
+
}
|
|
157
195
|
function spawnSessionEndWorker(workerArgs) {
|
|
158
196
|
const child = spawn(process.execPath, workerArgs, {
|
|
159
197
|
detached: true,
|
|
@@ -164,10 +202,12 @@ function spawnSessionEndWorker(workerArgs) {
|
|
|
164
202
|
child.on('error', (err) => log.warn(`hippo session-end: the worker did not start: ${errorMessage(err)}`));
|
|
165
203
|
child.unref();
|
|
166
204
|
}
|
|
167
|
-
/** The input of a VS Code Stop payload with a session id that can name the lock file; null makes turn mode a silent
|
|
205
|
+
/** The input of a VS Code Stop payload with a session id that can name the lock file; null makes turn mode a silent
|
|
206
|
+
* no-op. */
|
|
168
207
|
function vscodeStopInput(raw) {
|
|
169
208
|
const receipt = readVscodeStop(raw.text, raw.timedOut);
|
|
170
|
-
return receipt.status === 'received' && receipt.input.sessionId !== null &&
|
|
209
|
+
return receipt.status === 'received' && receipt.input.sessionId !== null &&
|
|
210
|
+
SESSION_ID_RE.test(receipt.input.sessionId) ? receipt.input : null;
|
|
171
211
|
}
|
|
172
212
|
async function cmdSessionEndWorker(hippoRoot, tenantId, flags) {
|
|
173
213
|
const sessionId = flags['session-id'];
|
|
@@ -176,48 +216,41 @@ async function cmdSessionEndWorker(hippoRoot, tenantId, flags) {
|
|
|
176
216
|
export function handleSessionEndWorker({ hippoRoot, tenantId, flags }) {
|
|
177
217
|
return cmdSessionEndWorker(hippoRoot, tenantId, flags);
|
|
178
218
|
}
|
|
179
|
-
|
|
219
|
+
function sessionEndWork(hippoRoot, tenantId, flags, mode) {
|
|
180
220
|
const transcriptPath = stringFlag(flags, 'transcript');
|
|
181
|
-
const
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
const flushRereadLog = () => { for (const line of rereadLog.splice(0))
|
|
187
|
-
appendSessionEndCloseLog(closeLogFile, line); };
|
|
188
|
-
process.once('exit', flushRereadLog);
|
|
189
|
-
// Like the other hooks: project store, else global; a folder with neither must not get one made.
|
|
190
|
-
const store = hookStoreRoot(hippoRoot);
|
|
191
|
-
if (!isInitialized(store)) {
|
|
192
|
-
appendSessionEndCloseLog(closeLogFile, 'skip: no hippo store for this folder or globally', { startFresh: true });
|
|
193
|
-
flushRereadLog();
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
if (mode === 'turn' && closeSessionId)
|
|
197
|
-
await sleepIfDue(hippoRoot, tenantId, flags, closeLogFile, transcriptPath, closeSessionId);
|
|
198
|
-
else
|
|
199
|
-
await sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, transcriptPath);
|
|
200
|
-
flushRereadLog();
|
|
201
|
-
const digestLog = (message) => appendSessionEndCloseLog(closeLogFile, message);
|
|
202
|
-
const scan = transcriptPath ? readSessionScan(transcriptPath, digestLog) : null;
|
|
203
|
-
const capture = (turns) => captureEndedSession(hippoRoot, tenantId, store, flags, transcriptPath, turns);
|
|
204
|
-
if (mode === 'turn')
|
|
205
|
-
captureNewTurns(transcriptPath, closeSessionId, scan, capture, digestLog);
|
|
206
|
-
else
|
|
207
|
-
capture(scan?.turns);
|
|
208
|
-
recordSessionDigest(hippoRoot, scan, {
|
|
209
|
-
key: closeSessionId || path.basename(transcriptPath ?? '', '.jsonl'),
|
|
221
|
+
const logFile = stringFlag(flags, 'log-file') ?? null;
|
|
222
|
+
const sessionId = stringFlag(flags, 'session-id') ?? null;
|
|
223
|
+
return runSessionEnd({
|
|
224
|
+
mode,
|
|
225
|
+
hippoRoot,
|
|
210
226
|
tenantId,
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
227
|
+
sessionId,
|
|
228
|
+
transcriptPath,
|
|
229
|
+
contextFor: (root) => cliApiContext(root, tenantId),
|
|
230
|
+
storeRoot: () => {
|
|
231
|
+
const root = hookStoreRoot(hippoRoot);
|
|
232
|
+
return isInitialized(root) ? root : null;
|
|
233
|
+
},
|
|
234
|
+
log: (line, opts) => appendSessionEndCloseLog(logFile, line, opts),
|
|
235
|
+
sleep: () => (mode === 'turn' && sessionId
|
|
236
|
+
? sleepIfDue(hippoRoot, tenantId, flags, logFile, transcriptPath, sessionId)
|
|
237
|
+
: sleepProjectStore(hippoRoot, tenantId, flags, logFile, transcriptPath)),
|
|
238
|
+
readScan: (log) => (transcriptPath ? readSessionScan(transcriptPath, log) : null),
|
|
239
|
+
capture: (store, scan) => {
|
|
240
|
+
const capture = (turns) => captureEndedSession(hippoRoot, tenantId, store, flags, transcriptPath, turns);
|
|
241
|
+
if (mode === 'turn') {
|
|
242
|
+
captureNewTurns(transcriptPath, sessionId, scan, capture, (line) => appendSessionEndCloseLog(logFile, line));
|
|
243
|
+
}
|
|
244
|
+
else
|
|
245
|
+
capture(scan?.turns);
|
|
246
|
+
},
|
|
247
|
+
digest: (scan, log) => recordSessionDigest(hippoRoot, scan, {
|
|
248
|
+
key: sessionId || path.basename(transcriptPath ?? '', '.jsonl'),
|
|
249
|
+
tenantId,
|
|
250
|
+
log,
|
|
251
|
+
}),
|
|
252
|
+
workingState: (log) => (transcriptPath ? transcriptWorkingState(transcriptPath, log) : null),
|
|
219
253
|
evidence: () => collectHandoffEvidence(process.cwd(), 'unknown'),
|
|
220
|
-
log: closeLog,
|
|
221
254
|
});
|
|
222
255
|
}
|
|
223
256
|
async function sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, transcriptPath) {
|
|
@@ -236,7 +269,8 @@ async function sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, trans
|
|
|
236
269
|
logSessionEndImport(closeLogFile, transcriptPath);
|
|
237
270
|
}
|
|
238
271
|
}
|
|
239
|
-
/** A close after every reply sleeps only at the MCP server's auto-sleep threshold; each line starts the log afresh, as
|
|
272
|
+
/** A close after every reply sleeps only at the MCP server's auto-sleep threshold; each line starts the log afresh, as
|
|
273
|
+
* a sleep does. */
|
|
240
274
|
async function sleepIfDue(hippoRoot, tenantId, flags, closeLogFile, transcriptPath, sessionId) {
|
|
241
275
|
if (!isInitialized(hippoRoot))
|
|
242
276
|
return sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, transcriptPath);
|
|
@@ -304,20 +338,6 @@ function loadCodexWrapperMetadata() {
|
|
|
304
338
|
// SAFETY: the file is the one installCodexWrapper wrote; handleCodexRun reads only logFile and realCodexPath from it.
|
|
305
339
|
return JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
|
|
306
340
|
}
|
|
307
|
-
/** Quotes one cmd.exe argument; each `%` leaves the quotes as `^%`, so no %NAME% pair can expand. */
|
|
308
|
-
export function quoteCmdArg(arg) {
|
|
309
|
-
if (arg.length === 0)
|
|
310
|
-
return '""';
|
|
311
|
-
if (!/[ \t"&()^<>|%!]/.test(arg))
|
|
312
|
-
return arg;
|
|
313
|
-
return `"${arg.replace(/"/g, '""').replace(/%/g, '"^%"')}"`;
|
|
314
|
-
}
|
|
315
|
-
/** cmd.exe arguments that run a .cmd or .bat shim with every forwarded argument delivered verbatim. */
|
|
316
|
-
export function cmdShimArgs(shimPath, forwardArgs) {
|
|
317
|
-
const command = `"${shimPath}"${forwardArgs.length > 0 ? ` ${forwardArgs.map(quoteCmdArg).join(' ')}` : ''}`;
|
|
318
|
-
// The line is already quoted for cmd.exe, so Node must not quote it again; /s strips the outer pair.
|
|
319
|
-
return ['/d', '/v:off', '/s', '/c', `"${command}"`];
|
|
320
|
-
}
|
|
321
341
|
function spawnRealCodex(realCodexPath, forwardArgs, cwd) {
|
|
322
342
|
const ext = path.extname(realCodexPath).toLowerCase();
|
|
323
343
|
if (process.platform === 'win32' && ext === '.ps1') {
|
|
@@ -338,7 +358,7 @@ export function handleCodexRun({ hippoRoot, tenantId, args }) {
|
|
|
338
358
|
cmdLastSleep(hippoRoot, { path: metadata.logFile }, 'terminal');
|
|
339
359
|
}
|
|
340
360
|
catch (err) {
|
|
341
|
-
log.debug(`codex run: the last sleep summary was not shown: ${errorMessage(err)}
|
|
361
|
+
log.debug(`codex run: the last sleep summary was not shown: ${errorMessage(err)}`, errorFields(err));
|
|
342
362
|
}
|
|
343
363
|
const child = spawnRealCodex(metadata.realCodexPath, args, process.cwd());
|
|
344
364
|
child.on('error', (err) => {
|
|
@@ -378,10 +398,11 @@ async function launchCodexSessionEndWorker(hippoRoot, tenantId, historyPath, sta
|
|
|
378
398
|
});
|
|
379
399
|
}
|
|
380
400
|
catch (inlineErr) {
|
|
381
|
-
log.debug(`codex run: the inline session-end failed: ${errorMessage(inlineErr)}
|
|
401
|
+
log.debug(`codex run: the inline session-end failed: ${errorMessage(inlineErr)}`, errorFields(inlineErr));
|
|
382
402
|
}
|
|
383
403
|
}
|
|
384
|
-
/** Resolves true once the detached worker is running, false when the spawn fails, whether it throws or reports
|
|
404
|
+
/** Resolves true once the detached worker is running, false when the spawn fails, whether it throws or reports
|
|
405
|
+
* later. */
|
|
385
406
|
function detachedWorkerStarted(workerArgs) {
|
|
386
407
|
return new Promise((resolve) => {
|
|
387
408
|
const failed = (reason) => {
|
|
@@ -446,8 +467,8 @@ function captureCodexTranscript(hippoRoot, tenantId, store, flags, logFile) {
|
|
|
446
467
|
try {
|
|
447
468
|
const codexHome = stringFlag(flags, 'codex-home') ?? resolveCodexWrapperPaths().codexHome;
|
|
448
469
|
const historyPath = stringFlag(flags, 'history-path') ?? path.join(codexHome, 'history.jsonl');
|
|
449
|
-
const startOffsetBytes = parseInt(
|
|
450
|
-
const startedAtMs = parseInt(
|
|
470
|
+
const startOffsetBytes = parseInt(stringFlag(flags, 'start-offset') ?? '', 10) || 0;
|
|
471
|
+
const startedAtMs = parseInt(stringFlag(flags, 'started-at') ?? '', 10) || Date.now();
|
|
451
472
|
const transcriptPath = resolveCodexSessionTranscript({
|
|
452
473
|
codexHome,
|
|
453
474
|
historyPath,
|
|
@@ -508,8 +529,8 @@ export async function handlePreCompact({ hippoRoot, tenantId, flags }) {
|
|
|
508
529
|
});
|
|
509
530
|
}
|
|
510
531
|
export async function handlePostCompact({ hippoRoot, flags }) {
|
|
511
|
-
// PostCompact hook: saves the compaction summary and its memories, then prints one plain line, because Claude Code
|
|
512
|
-
// stdout as-is. Always exits 0.
|
|
532
|
+
// PostCompact hook: saves the compaction summary and its memories, then prints one plain line, because Claude Code
|
|
533
|
+
// shows this hook's stdout as-is. Always exits 0.
|
|
513
534
|
const { text, timedOut } = await readHookStdin();
|
|
514
535
|
const logFlag = flags['log-file'];
|
|
515
536
|
const store = hookStoreRoot(hippoRoot);
|
|
@@ -519,7 +540,10 @@ export async function handlePostCompact({ hippoRoot, flags }) {
|
|
|
519
540
|
logFile: logFlag === true || logFlag === false || Array.isArray(logFlag) ? undefined : logFlag,
|
|
520
541
|
// Passed in, since src/capture/ importing the sync would close an import cycle.
|
|
521
542
|
afterSave: (transcriptPath, cwd, log) => {
|
|
522
|
-
const report = importSessionFolder(store, transcriptPath, cwd, {
|
|
543
|
+
const report = importSessionFolder(store, transcriptPath, cwd, {
|
|
544
|
+
machine: currentMachine(),
|
|
545
|
+
busyWaitMs: COMPACTION_DB_WAIT_MS,
|
|
546
|
+
});
|
|
523
547
|
const summary = summaryLine(report);
|
|
524
548
|
if (summary !== null)
|
|
525
549
|
log(summary);
|
|
@@ -540,7 +564,11 @@ export async function handleCaptureError({ hippoRoot, tenantId, flags }) {
|
|
|
540
564
|
if (isInitialized(root) && payload) {
|
|
541
565
|
// SAFETY: JSON.parse returns a JSON value by definition.
|
|
542
566
|
const failure = JSON.parse(payload);
|
|
543
|
-
const rec = startToolFailureRecorder(cliApiContext(root, tenantId), {
|
|
567
|
+
const rec = startToolFailureRecorder(cliApiContext(root, tenantId), {
|
|
568
|
+
stdinText: text,
|
|
569
|
+
runtime: hookRuntime(flags),
|
|
570
|
+
envSessionId: hostSessionId(),
|
|
571
|
+
});
|
|
544
572
|
await runHookWithStores(() => {
|
|
545
573
|
try {
|
|
546
574
|
return captureToolFailure(root, tenantId, failure, (id) => rec?.logged(id));
|
|
@@ -553,14 +581,14 @@ export async function handleCaptureError({ hippoRoot, tenantId, flags }) {
|
|
|
553
581
|
}
|
|
554
582
|
catch (err) {
|
|
555
583
|
// A malformed payload or store error must never fail the agent's tool call, so it is reported and dropped.
|
|
556
|
-
log.warn(`failure capture skipped: ${errorMessage(err)}
|
|
584
|
+
log.warn(`failure capture skipped: ${errorMessage(err)}`, errorFields(err));
|
|
557
585
|
}
|
|
558
586
|
}
|
|
559
587
|
export async function handleCompactResume({ hippoRoot, tenantId }) {
|
|
560
588
|
const { text: stdinText, timedOut: stdinTimedOut } = await readHookStdin();
|
|
561
|
-
await runHookWithStores(() => {
|
|
589
|
+
await runHookWithStores(async () => {
|
|
562
590
|
resetHookInjection(hippoRoot, tenantId, stdinText, 'compact');
|
|
563
|
-
cmdCompactResume(hookStoreRoot(hippoRoot), tenantId, stdinText, stdinTimedOut);
|
|
591
|
+
await cmdCompactResume(hookStoreRoot(hippoRoot), tenantId, stdinText, stdinTimedOut);
|
|
564
592
|
});
|
|
565
593
|
}
|
|
566
594
|
export async function handleCapture({ hippoRoot, tenantId, flags }) {
|
|
@@ -572,19 +600,19 @@ export async function handleCapture({ hippoRoot, tenantId, flags }) {
|
|
|
572
600
|
}
|
|
573
601
|
else if (flags['file']) {
|
|
574
602
|
captureSource = 'file';
|
|
575
|
-
captureFile =
|
|
603
|
+
captureFile = stringFlagOrExit(flags, 'file');
|
|
576
604
|
}
|
|
577
605
|
else if (flags['last-session']) {
|
|
578
606
|
captureSource = 'last-session';
|
|
579
607
|
}
|
|
580
608
|
if (flags['transcript']) {
|
|
581
|
-
transcriptPath =
|
|
609
|
+
transcriptPath = stringFlagOrExit(flags, 'transcript');
|
|
582
610
|
if (!captureSource)
|
|
583
611
|
captureSource = 'last-session';
|
|
584
612
|
}
|
|
585
613
|
if (!captureSource) {
|
|
586
|
-
|
|
587
|
-
|
|
614
|
+
fail('Usage: hippo capture --stdin|--file <path>|--last-session [--transcript <path>] [--log-file <path>] ' +
|
|
615
|
+
'[--dry-run] [--global]');
|
|
588
616
|
}
|
|
589
617
|
// Bounded, and only when last-session has no explicit path: the
|
|
590
618
|
// --stdin source keeps its own blocking read in src/capture/ by design.
|
package/dist/cli/setup.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
2
|
export declare function handleHook({ args }: CommandContext): void;
|
|
3
3
|
export declare function handleSetup({ flags }: CommandContext): void;
|
|
4
|
-
export declare function handleDailyRunner({ tenantId }: CommandContext): void
|
|
4
|
+
export declare function handleDailyRunner({ tenantId }: CommandContext): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=setup.d.ts.map
|