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
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Transcript-line flags isNonHumanUserLine reads (any may be absent); `promptSource: 'system'` marks Claude Code's own
|
|
3
|
+
* notices.
|
|
4
|
+
*/
|
|
2
5
|
interface TranscriptLineFlags {
|
|
3
6
|
type?: unknown;
|
|
4
7
|
isMeta?: unknown;
|
|
@@ -9,7 +12,9 @@ interface TranscriptLineFlags {
|
|
|
9
12
|
interface TranscriptMessage {
|
|
10
13
|
content?: unknown;
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The human's words on a Claude Code user line, '' when none; VS Code stores prompts as text blocks, beside its own
|
|
17
|
+
* open-file, selection
|
|
13
18
|
* and interrupt blocks. */
|
|
14
19
|
export declare function humanUserText(entry: TranscriptLineFlags, message: TranscriptMessage): string;
|
|
15
20
|
export interface SessionTurn {
|
|
@@ -29,8 +34,12 @@ export declare function sessionTail(turns: readonly SessionTurn[]): {
|
|
|
29
34
|
assistants: string[];
|
|
30
35
|
};
|
|
31
36
|
export declare function summariseSessionTurns(turns: readonly SessionTurn[]): string;
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
37
|
+
/**
|
|
38
|
+
* Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest
|
|
39
|
+
* `.jsonl` in the Claude config dir.
|
|
40
|
+
* The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never
|
|
41
|
+
* throws.
|
|
42
|
+
*/
|
|
34
43
|
export declare function resolveLastSessionTranscript(explicit: string | undefined, stdinText: string | undefined, opts: {
|
|
35
44
|
mayScan: boolean;
|
|
36
45
|
}): string | null;
|
|
@@ -6,18 +6,26 @@ import { isObjectLike, isStringValue, readSessionEnd } from '../core/capture-con
|
|
|
6
6
|
import { copilotTurn } from './copilot-transcript.js';
|
|
7
7
|
const RECENT_USER_TURNS = 20;
|
|
8
8
|
const RECENT_ASSISTANT_TURNS = 10;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Build a compact text summary from a Claude Code / OpenCode / Copilot JSONL transcript: plain user messages and the
|
|
11
|
+
* final assistant text chunk,
|
|
10
12
|
* without thinking, tool_use and tool_result noise. Exported for tests. */
|
|
11
13
|
/** Leading markers of the command lines Claude Code writes with type 'user'. */
|
|
12
14
|
const CLAUDE_CODE_COMMAND_PREFIXES = ['<local-command-', '<command-name>', '<command-message>', '<command-args>'];
|
|
13
15
|
function isNonHumanUserLine(entry, content) {
|
|
14
|
-
if (entry.isMeta === true ||
|
|
16
|
+
if (entry.isMeta === true ||
|
|
17
|
+
entry.isSidechain === true ||
|
|
18
|
+
entry.isCompactSummary === true ||
|
|
19
|
+
entry.promptSource === 'system') {
|
|
15
20
|
return true;
|
|
21
|
+
}
|
|
16
22
|
const head = content.trimStart();
|
|
17
23
|
return CLAUDE_CODE_COMMAND_PREFIXES.some((p) => head.startsWith(p));
|
|
18
24
|
}
|
|
19
25
|
const NON_HUMAN_BLOCK_PREFIXES = ['<ide_', '[Request interrupted by user'];
|
|
20
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* The human's words on a Claude Code user line, '' when none; VS Code stores prompts as text blocks, beside its own
|
|
28
|
+
* open-file, selection
|
|
21
29
|
* and interrupt blocks. */
|
|
22
30
|
export function humanUserText(entry, message) {
|
|
23
31
|
const content = message.content;
|
|
@@ -25,12 +33,14 @@ export function humanUserText(entry, message) {
|
|
|
25
33
|
if (isStringValue(content)) {
|
|
26
34
|
text = content;
|
|
27
35
|
}
|
|
28
|
-
else if (Array.isArray(content) &&
|
|
36
|
+
else if (Array.isArray(content) &&
|
|
37
|
+
!content.some((b) => isObjectLike(b) && 'type' in b && b.type === 'tool_result')) {
|
|
29
38
|
const parts = [];
|
|
30
39
|
for (const block of content) {
|
|
31
40
|
const blockText = isObjectLike(block) && 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
|
|
32
|
-
if (isStringValue(blockText) && !NON_HUMAN_BLOCK_PREFIXES.some((p) => blockText.trimStart().startsWith(p)))
|
|
41
|
+
if (isStringValue(blockText) && !NON_HUMAN_BLOCK_PREFIXES.some((p) => blockText.trimStart().startsWith(p))) {
|
|
33
42
|
parts.push(blockText);
|
|
43
|
+
}
|
|
34
44
|
}
|
|
35
45
|
text = parts.join('\n');
|
|
36
46
|
}
|
|
@@ -57,7 +67,10 @@ export function collectSessionTurns(jsonl, visit) {
|
|
|
57
67
|
}
|
|
58
68
|
return turns;
|
|
59
69
|
}
|
|
60
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* The turn a Claude Code `user` or `assistant` line carries; null for any other line or one with no human or reply
|
|
72
|
+
* text.
|
|
73
|
+
*/
|
|
61
74
|
function claudeCodeTurn(entry) {
|
|
62
75
|
if (entry.type !== 'user' && entry.type !== 'assistant')
|
|
63
76
|
return null;
|
|
@@ -83,7 +96,8 @@ function claudeCodeTurn(entry) {
|
|
|
83
96
|
}
|
|
84
97
|
return chunks.length > 0 ? { role: 'assistant', text: chunks.join('\n') } : null;
|
|
85
98
|
}
|
|
86
|
-
// Codex stores its own context as user messages: the AGENTS.md text, and one tagged block each for the environment and
|
|
99
|
+
// Codex stores its own context as user messages: the AGENTS.md text, and one tagged block each for the environment and
|
|
100
|
+
// app state.
|
|
87
101
|
const CODEX_INJECTED_USER_TEXT = /^(?:# AGENTS\.md instructions\b|<([A-Za-z][\w-]*)(?:\s[^>]*)?>[\s\S]*<\/\1>$)/;
|
|
88
102
|
// Codex rollout transcript shape: response_item -> payload.message
|
|
89
103
|
function codexTurn(entry) {
|
|
@@ -102,7 +116,11 @@ function codexTurn(entry) {
|
|
|
102
116
|
continue;
|
|
103
117
|
const blockType = 'type' in block ? block.type : undefined;
|
|
104
118
|
const blockText = 'text' in block ? block.text : undefined;
|
|
105
|
-
if (role === 'user' &&
|
|
119
|
+
if (role === 'user' &&
|
|
120
|
+
blockType === 'input_text' &&
|
|
121
|
+
isStringValue(blockText) &&
|
|
122
|
+
blockText.trim() &&
|
|
123
|
+
!CODEX_INJECTED_USER_TEXT.test(blockText.trim())) {
|
|
106
124
|
chunks.push(blockText.trim());
|
|
107
125
|
}
|
|
108
126
|
if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
|
|
@@ -142,8 +160,12 @@ export function summariseSessionTurns(turns) {
|
|
|
142
160
|
tailAssistants.join('\n\n'),
|
|
143
161
|
].join('\n');
|
|
144
162
|
}
|
|
145
|
-
/**
|
|
146
|
-
*
|
|
163
|
+
/**
|
|
164
|
+
* Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest
|
|
165
|
+
* `.jsonl` in the Claude config dir.
|
|
166
|
+
* The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never
|
|
167
|
+
* throws.
|
|
168
|
+
*/
|
|
147
169
|
export function resolveLastSessionTranscript(explicit, stdinText, opts) {
|
|
148
170
|
if (explicit)
|
|
149
171
|
return fs.existsSync(explicit) ? explicit : null;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { TaskSnapshot } from '../store/rows.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these
|
|
4
|
+
* instead of copying them.
|
|
5
|
+
*/
|
|
3
6
|
export declare const WORKING_STATE_CAPS: {
|
|
4
7
|
readonly task: 200;
|
|
5
8
|
readonly summary: number;
|
|
@@ -8,13 +11,19 @@ export declare const WORKING_STATE_CAPS: {
|
|
|
8
11
|
export type WorkingState = Pick<TaskSnapshot, 'task' | 'summary' | 'next_step'>;
|
|
9
12
|
/** Cuts each field to {@link WORKING_STATE_CAPS}, for after a scrub, as a mask can run longer than what it hides. */
|
|
10
13
|
export declare function fitWorkingState(state: WorkingState): WorkingState;
|
|
11
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so
|
|
16
|
+
* blanks never replace a snapshot.
|
|
12
17
|
* Never across sessions: another session's task saved under this id would pass compact-resume's session check. */
|
|
13
18
|
export declare function mergeWorkingState(derived: WorkingState, existing: TaskSnapshot | null, sessionId: string | null): WorkingState | null;
|
|
14
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a
|
|
21
|
+
* head cap would drop
|
|
15
22
|
* the newest working state. */
|
|
16
23
|
export declare function truncateKeepNewest(text: string, maxChars: number): string;
|
|
17
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null
|
|
26
|
+
* with a logged
|
|
18
27
|
* reason when nothing is derivable. */
|
|
19
28
|
export declare function transcriptWorkingState(transcriptPath: string, log: (message: string) => void): Pick<TaskSnapshot, 'task' | 'summary' | 'next_step'> | null;
|
|
20
29
|
//# sourceMappingURL=working-state.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// A session's working state read from its transcript tail, with no store in the imports, so a hook with no store can
|
|
1
|
+
// A session's working state read from its transcript tail, with no store in the imports, so a hook with no store can
|
|
2
|
+
// derive it.
|
|
2
3
|
import * as fs from 'fs';
|
|
3
4
|
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
4
5
|
import { isObjectLike, isStringValue } from '../core/capture-contract.js';
|
|
@@ -10,7 +11,10 @@ const PRE_COMPACT_TASK_CAP = 200;
|
|
|
10
11
|
const PRE_COMPACT_SUMMARY_CAP = 2000;
|
|
11
12
|
const PRE_COMPACT_NEXT_STEP_CAP = 500;
|
|
12
13
|
const TRIM_MARKER = '[...earlier turns trimmed]\n';
|
|
13
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these
|
|
16
|
+
* instead of copying them.
|
|
17
|
+
*/
|
|
14
18
|
export const WORKING_STATE_CAPS = {
|
|
15
19
|
task: PRE_COMPACT_TASK_CAP,
|
|
16
20
|
summary: PRE_COMPACT_SUMMARY_CAP + TRIM_MARKER.length,
|
|
@@ -20,15 +24,22 @@ export const WORKING_STATE_CAPS = {
|
|
|
20
24
|
export function fitWorkingState(state) {
|
|
21
25
|
return {
|
|
22
26
|
task: truncateCodePointSafe(state.task, WORKING_STATE_CAPS.task),
|
|
23
|
-
// Only past the cap, since re-trimming a summary that fits would drop its head again; the cut keeps the newest
|
|
24
|
-
|
|
27
|
+
// Only past the cap, since re-trimming a summary that fits would drop its head again; the cut keeps the newest
|
|
28
|
+
// turns.
|
|
29
|
+
summary: state.summary.length > WORKING_STATE_CAPS.summary
|
|
30
|
+
? truncateKeepNewest(state.summary, PRE_COMPACT_SUMMARY_CAP)
|
|
31
|
+
: state.summary,
|
|
25
32
|
next_step: truncateCodePointSafe(state.next_step, WORKING_STATE_CAPS.next_step),
|
|
26
33
|
};
|
|
27
34
|
}
|
|
28
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so
|
|
37
|
+
* blanks never replace a snapshot.
|
|
29
38
|
* Never across sessions: another session's task saved under this id would pass compact-resume's session check. */
|
|
30
39
|
export function mergeWorkingState(derived, existing, sessionId) {
|
|
31
|
-
const fallback = existing !== null && (existing.session_id === null || sessionId === null || existing.session_id === sessionId)
|
|
40
|
+
const fallback = existing !== null && (existing.session_id === null || sessionId === null || existing.session_id === sessionId)
|
|
41
|
+
? existing
|
|
42
|
+
: null;
|
|
32
43
|
const merged = {
|
|
33
44
|
task: derived.task || (fallback?.task ?? ''),
|
|
34
45
|
summary: derived.summary || (fallback?.summary ?? ''),
|
|
@@ -36,7 +47,9 @@ export function mergeWorkingState(derived, existing, sessionId) {
|
|
|
36
47
|
};
|
|
37
48
|
return merged.task || merged.summary || merged.next_step ? merged : null;
|
|
38
49
|
}
|
|
39
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a
|
|
52
|
+
* head cap would drop
|
|
40
53
|
* the newest working state. */
|
|
41
54
|
export function truncateKeepNewest(text, maxChars) {
|
|
42
55
|
if (text.length <= maxChars)
|
|
@@ -50,8 +63,11 @@ export function truncateKeepNewest(text, maxChars) {
|
|
|
50
63
|
start = nl + 1;
|
|
51
64
|
return TRIM_MARKER + text.slice(start);
|
|
52
65
|
}
|
|
53
|
-
/**
|
|
54
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Newest main-agent `role` turn in a JSONL tail, from a Claude Code or a Copilot transcript; `textOf` reads a Claude
|
|
68
|
+
* Code line, '' when it has no text.
|
|
69
|
+
*/
|
|
70
|
+
function lastTurnText(jsonl, role, textOf) {
|
|
55
71
|
const lines = jsonl.split('\n').filter((l) => l.trim());
|
|
56
72
|
for (let i = lines.length - 1; i >= 0; i--) {
|
|
57
73
|
let entry;
|
|
@@ -66,65 +82,42 @@ function lastPlainUserMessage(jsonl) {
|
|
|
66
82
|
if (!('type' in entry))
|
|
67
83
|
continue;
|
|
68
84
|
const copilot = copilotTurn(entry);
|
|
69
|
-
if (copilot?.role ===
|
|
85
|
+
if (copilot?.role === role)
|
|
70
86
|
return copilot.text;
|
|
71
|
-
if (entry.type !==
|
|
87
|
+
if (entry.type !== role)
|
|
72
88
|
continue;
|
|
73
|
-
// An isMeta
|
|
74
|
-
|
|
89
|
+
// An isMeta line holds an earlier compact summary and an isSidechain one is a sub-agent turn; neither is this
|
|
90
|
+
// session's own.
|
|
91
|
+
if (('isMeta' in entry && entry.isMeta === true) || ('isSidechain' in entry && entry.isSidechain === true)) {
|
|
75
92
|
continue;
|
|
93
|
+
}
|
|
76
94
|
const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
|
|
77
95
|
if (!message)
|
|
78
96
|
continue;
|
|
79
|
-
const text =
|
|
97
|
+
const text = textOf(entry, message);
|
|
80
98
|
if (text)
|
|
81
99
|
return text;
|
|
82
100
|
}
|
|
83
101
|
return '';
|
|
84
102
|
}
|
|
85
|
-
/**
|
|
86
|
-
function
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
catch {
|
|
94
|
-
continue; // the tail read can start mid-line; skip the torn fragment
|
|
95
|
-
}
|
|
96
|
-
if (!isObjectLike(entry))
|
|
97
|
-
continue;
|
|
98
|
-
if (!('type' in entry))
|
|
99
|
-
continue;
|
|
100
|
-
const copilot = copilotTurn(entry);
|
|
101
|
-
if (copilot?.role === 'assistant')
|
|
102
|
-
return copilot.text;
|
|
103
|
-
if (entry.type !== 'assistant')
|
|
104
|
-
continue;
|
|
105
|
-
// Same meta/sidechain guard as lastPlainUserMessage: sub-agent turns
|
|
106
|
-
// (isSidechain) are not this session's next step.
|
|
107
|
-
if (('isMeta' in entry && entry.isMeta === true) || ('isSidechain' in entry && entry.isSidechain === true))
|
|
108
|
-
continue;
|
|
109
|
-
const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
|
|
110
|
-
if (!message)
|
|
111
|
-
continue;
|
|
112
|
-
const content = 'content' in message ? message.content : undefined;
|
|
113
|
-
if (!Array.isArray(content))
|
|
103
|
+
/** The last text block of an assistant message, skipping thinking and tool_use blocks (as summariseTranscript does). */
|
|
104
|
+
function lastTextBlock(_entry, message) {
|
|
105
|
+
const content = message.content;
|
|
106
|
+
if (!Array.isArray(content))
|
|
107
|
+
return '';
|
|
108
|
+
for (let j = content.length - 1; j >= 0; j--) {
|
|
109
|
+
const block = content[j];
|
|
110
|
+
if (!isObjectLike(block))
|
|
114
111
|
continue;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
|
|
119
|
-
if (isStringValue(blockText) && blockText.trim()) {
|
|
120
|
-
return blockText.trim();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
112
|
+
const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
|
|
113
|
+
if (isStringValue(blockText) && blockText.trim())
|
|
114
|
+
return blockText.trim();
|
|
124
115
|
}
|
|
125
116
|
return '';
|
|
126
117
|
}
|
|
127
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null
|
|
120
|
+
* with a logged
|
|
128
121
|
* reason when nothing is derivable. */
|
|
129
122
|
export function transcriptWorkingState(transcriptPath, log) {
|
|
130
123
|
let tail = '';
|
|
@@ -135,11 +128,12 @@ export function transcriptWorkingState(transcriptPath, log) {
|
|
|
135
128
|
// megabytes back: grow the window a bounded number of times until both turns are in it.
|
|
136
129
|
const size = fs.statSync(transcriptPath).size;
|
|
137
130
|
for (const cap of [PRE_COMPACT_TAIL_BYTES, PRE_COMPACT_TAIL_BYTES * 4, PRE_COMPACT_TAIL_BYTES * 16]) {
|
|
138
|
-
if (cap > PRE_COMPACT_TAIL_BYTES)
|
|
131
|
+
if (cap > PRE_COMPACT_TAIL_BYTES) {
|
|
139
132
|
log(`tail window grown to ${cap} bytes (last ${rawTask ? 'assistant' : 'user'} turn is further back)`);
|
|
133
|
+
}
|
|
140
134
|
tail = readTranscriptTail(transcriptPath, cap);
|
|
141
|
-
rawTask =
|
|
142
|
-
rawNextStep =
|
|
135
|
+
rawTask = lastTurnText(tail, 'user', humanUserText);
|
|
136
|
+
rawNextStep = lastTurnText(tail, 'assistant', lastTextBlock);
|
|
143
137
|
if ((rawTask && rawNextStep) || size <= cap)
|
|
144
138
|
break;
|
|
145
139
|
}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
1
|
+
import { type ContextWith } from '../api/index.js';
|
|
2
|
+
import { type LedgerReach } from '../api/ledger-db.js';
|
|
3
|
+
import type { McpHost } from '../mcp/protocol.js';
|
|
4
|
+
import type { StoreGroup } from '../store/index.js';
|
|
5
|
+
import type { LocalFiles } from '../store/port.js';
|
|
6
|
+
/** The folder's hippo.db for a verb that runs a sleep pass by itself. */
|
|
7
|
+
export declare function cliLocalFiles(hippoRoot: string): LocalFiles;
|
|
8
|
+
/** The request scope a scoped CLI verb and the stdio MCP server run in; named here so no other surface opens one. */
|
|
9
|
+
export declare function cliRequest<T>(run: () => T | Promise<T>): Promise<T>;
|
|
10
|
+
export declare function cliApiContext(hippoRoot: string, tenantId: string): ContextWith<StoreGroup>;
|
|
11
|
+
/** Where a hook on `hippoRoot` books its ledger rows: the folder's store, else the global one, probed once here. */
|
|
12
|
+
export declare function cliLedgerReach(hippoRoot: string): LedgerReach;
|
|
13
|
+
/** Stdio is the operator's own process: host admin, the folder's hippo.db, and an auto-sleep that runs in process. */
|
|
14
|
+
export declare const cliStdioHost: McpHost;
|
|
3
15
|
//# sourceMappingURL=api-context.d.ts.map
|
package/dist/cli/api-context.js
CHANGED
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
import { adminActor } from '../api/index.js';
|
|
2
|
-
|
|
2
|
+
import { ledgerReachOf } from '../api/ledger-db.js';
|
|
3
|
+
import { loadConfig } from '../core/config.js';
|
|
4
|
+
import { runConsolidation } from '../consolidate/sleep.js';
|
|
5
|
+
import { runDetachedSqliteRequest, runSqliteRequest, sqliteReach, sqliteStore, sqliteSyncStore, } from '../store/sqlite/store.js';
|
|
6
|
+
/** The store the CLI and the stdio MCP server open; the adapter is named here so src/mcp never imports it. */
|
|
7
|
+
function cliStore(hippoRoot) {
|
|
8
|
+
return sqliteStore(hippoRoot);
|
|
9
|
+
}
|
|
10
|
+
/** The folder's hippo.db for a verb that runs a sleep pass by itself. */
|
|
11
|
+
export function cliLocalFiles(hippoRoot) {
|
|
12
|
+
return sqliteSyncStore(hippoRoot).localFiles;
|
|
13
|
+
}
|
|
14
|
+
/** The request scope a scoped CLI verb and the stdio MCP server run in; named here so no other surface opens one. */
|
|
15
|
+
export function cliRequest(run) {
|
|
16
|
+
return runSqliteRequest(run, 'cli');
|
|
17
|
+
}
|
|
18
|
+
// The one place the CLI names its audit actor and builds its store;
|
|
19
|
+
// root is a parameter because some verbs target the global store.
|
|
3
20
|
export function cliApiContext(hippoRoot, tenantId) {
|
|
4
|
-
|
|
21
|
+
const store = cliStore(hippoRoot);
|
|
22
|
+
// Read here, once per command, so a long-lived caller of this function never pins a stale config.
|
|
23
|
+
const config = loadConfig(hippoRoot);
|
|
24
|
+
return { hippoRoot, tenantId, actor: adminActor('cli'), store, reach: sqliteReach(hippoRoot, store), config };
|
|
25
|
+
}
|
|
26
|
+
/** Where a hook on `hippoRoot` books its ledger rows: the folder's store, else the global one, probed once here. */
|
|
27
|
+
export function cliLedgerReach(hippoRoot) {
|
|
28
|
+
const store = cliStore(hippoRoot);
|
|
29
|
+
return ledgerReachOf({ reach: sqliteReach(hippoRoot, store), store });
|
|
5
30
|
}
|
|
31
|
+
/** Stdio is the operator's own process: host admin, the folder's hippo.db, and an auto-sleep that runs in process. */
|
|
32
|
+
export const cliStdioHost = {
|
|
33
|
+
contextFor(hippoRoot, tenantId) {
|
|
34
|
+
const store = cliStore(hippoRoot);
|
|
35
|
+
return {
|
|
36
|
+
hippoRoot,
|
|
37
|
+
tenantId,
|
|
38
|
+
actor: 'mcp',
|
|
39
|
+
role: 'admin',
|
|
40
|
+
hostAdmin: true,
|
|
41
|
+
stdio: true,
|
|
42
|
+
store,
|
|
43
|
+
reach: sqliteReach(hippoRoot, store),
|
|
44
|
+
autoSleepRunner: (root) => runDetachedSqliteRequest(() => runConsolidation(cliLocalFiles(root))).then(() => { }),
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
runRequest: cliRequest,
|
|
48
|
+
};
|
|
6
49
|
//# sourceMappingURL=api-context.js.map
|
package/dist/cli/audit.js
CHANGED
|
@@ -4,13 +4,12 @@ import { DEFAULT_LIST_LIMIT } from '../util/limits.js';
|
|
|
4
4
|
import { AUDIT_OPS } from '../store/audit.js';
|
|
5
5
|
import * as api from '../api/index.js';
|
|
6
6
|
import { parseOlderThanFlag } from './audit-prune.js';
|
|
7
|
-
import { printError } from './output.js';
|
|
8
7
|
import { cliApiContext } from './api-context.js';
|
|
9
8
|
import { boolFlag, flagIsTrue, isBooleanFlag, stringFlag } from './flag-values.js';
|
|
10
9
|
import { requireInit, resolveAuthRoot } from './shared.js';
|
|
11
10
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
12
11
|
import { errorMessage } from '../util/log.js';
|
|
13
|
-
import {
|
|
12
|
+
import { fail } from './exit.js';
|
|
14
13
|
// Audit log subcommands (`hippo audit list`)
|
|
15
14
|
const VALID_AUDIT_OPS = new Set(AUDIT_OPS);
|
|
16
15
|
function formatAuditRow(ev) {
|
|
@@ -24,10 +23,10 @@ function readAuditOp(flags) {
|
|
|
24
23
|
if (opFlag && !VALID_AUDIT_OPS.has(opFlag)) {
|
|
25
24
|
// Built from the Set so the message cannot drift from the valid ops.
|
|
26
25
|
const expected = Array.from(VALID_AUDIT_OPS).join(' | ');
|
|
27
|
-
|
|
28
|
-
throw new CliExit(1);
|
|
26
|
+
fail(`Unknown --op value: ${opFlag}. Expected one of: ${expected}.`);
|
|
29
27
|
}
|
|
30
|
-
// SAFETY: the exit above rejects every non-empty opFlag outside VALID_AUDIT_OPS, and an empty one is returned as
|
|
28
|
+
// SAFETY: the exit above rejects every non-empty opFlag outside VALID_AUDIT_OPS, and an empty one is returned as
|
|
29
|
+
// given.
|
|
31
30
|
return opFlag;
|
|
32
31
|
}
|
|
33
32
|
function readAuditLimit(flags) {
|
|
@@ -36,14 +35,12 @@ function readAuditLimit(flags) {
|
|
|
36
35
|
if (limitRaw !== undefined && !isBooleanFlag(limitRaw)) {
|
|
37
36
|
const parsed = parseInt(String(limitRaw), 10);
|
|
38
37
|
if (!Number.isFinite(parsed)) {
|
|
39
|
-
|
|
40
|
-
throw new CliExit(1);
|
|
38
|
+
fail(`Invalid --limit value: ${String(limitRaw)} (expected a positive integer).`);
|
|
41
39
|
}
|
|
42
40
|
limit = parsed;
|
|
43
41
|
}
|
|
44
42
|
if (limit < 1 || limit > 10000) {
|
|
45
|
-
|
|
46
|
-
throw new CliExit(1);
|
|
43
|
+
fail(`--limit must be between 1 and 10000 (got ${limit}).`);
|
|
47
44
|
}
|
|
48
45
|
return limit;
|
|
49
46
|
}
|
|
@@ -53,11 +50,13 @@ async function cmdAuditList(hippoRoot, tenantId, flags) {
|
|
|
53
50
|
const op = readAuditOp(flags);
|
|
54
51
|
const since = stringFlag(flags, 'since');
|
|
55
52
|
if (since !== undefined && !Number.isFinite(new Date(since).getTime())) {
|
|
56
|
-
|
|
57
|
-
throw new CliExit(1);
|
|
53
|
+
fail(`Invalid --since: ${since} (expected an ISO timestamp like 2026-04-22 or 2026-04-22T12:00:00Z).`);
|
|
58
54
|
}
|
|
59
55
|
const limit = readAuditLimit(flags);
|
|
60
|
-
const ctx = {
|
|
56
|
+
const ctx = {
|
|
57
|
+
...cliApiContext(root, tenantId),
|
|
58
|
+
actor: { subject: 'cli', role: 'admin' },
|
|
59
|
+
};
|
|
61
60
|
const events = await api.auditList(ctx, { op, since, limit });
|
|
62
61
|
if (asJson) {
|
|
63
62
|
console.log(JSON.stringify(events));
|
|
@@ -72,24 +71,22 @@ async function cmdAuditList(hippoRoot, tenantId, flags) {
|
|
|
72
71
|
console.log(formatAuditRow(ev));
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
|
-
function cmdAuditPrune(hippoRoot, ctxTenantId, flags) {
|
|
74
|
+
async function cmdAuditPrune(hippoRoot, ctxTenantId, flags) {
|
|
76
75
|
const olderThanRaw = stringFlag(flags, 'older-than') ?? '';
|
|
77
76
|
if (!olderThanRaw) {
|
|
78
|
-
|
|
79
|
-
throw new CliExit(1);
|
|
77
|
+
fail('Usage: hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
|
|
80
78
|
}
|
|
81
79
|
let olderThanDays;
|
|
82
80
|
try {
|
|
83
81
|
olderThanDays = parseOlderThanFlag(olderThanRaw);
|
|
84
82
|
}
|
|
85
83
|
catch (e) {
|
|
86
|
-
|
|
87
|
-
throw new CliExit(1);
|
|
84
|
+
fail(errorMessage(e));
|
|
88
85
|
}
|
|
89
86
|
const tenantId = stringFlag(flags, 'tenant')?.trim() || ctxTenantId;
|
|
90
87
|
const dryRun = flagIsTrue(flags, 'dry-run');
|
|
91
88
|
const asJson = boolFlag(flags, 'json');
|
|
92
|
-
const result = api.pruneAuditLog(cliApiContext(hippoRoot, tenantId), { olderThanDays, dryRun });
|
|
89
|
+
const result = await api.pruneAuditLog(cliApiContext(hippoRoot, tenantId), { olderThanDays, dryRun });
|
|
93
90
|
if (asJson) {
|
|
94
91
|
console.log(JSON.stringify(result));
|
|
95
92
|
return;
|
|
@@ -107,45 +104,47 @@ async function cmdAuditLog(hippoRoot, tenantId, args, flags) {
|
|
|
107
104
|
return;
|
|
108
105
|
}
|
|
109
106
|
if (sub === 'prune') {
|
|
110
|
-
cmdAuditPrune(hippoRoot, tenantId, flags);
|
|
107
|
+
await cmdAuditPrune(hippoRoot, tenantId, flags);
|
|
111
108
|
return;
|
|
112
109
|
}
|
|
113
|
-
|
|
114
|
-
throw new CliExit(1);
|
|
110
|
+
fail(`Unknown audit subcommand: ${sub}. Expected: list | prune.`);
|
|
115
111
|
}
|
|
116
|
-
function auditRepair(hippoRoot, tenantId, flags) {
|
|
112
|
+
async function auditRepair(hippoRoot, tenantId, flags) {
|
|
117
113
|
const apply = flagIsTrue(flags, 'apply') && flags['dry-run'] !== true;
|
|
118
|
-
const result = api.repairMemoryQuality(cliApiContext(flags['global'] ? getGlobalRoot() : hippoRoot, tenantId), apply);
|
|
114
|
+
const result = await api.repairMemoryQuality(cliApiContext(flags['global'] ? getGlobalRoot() : hippoRoot, tenantId), apply);
|
|
119
115
|
if (flags['json']) {
|
|
120
116
|
console.log(JSON.stringify(result));
|
|
121
117
|
return;
|
|
122
118
|
}
|
|
123
119
|
console.log(`Quality repair ${apply ? 'apply' : 'preview'}: ${result.issues.length} issue(s) across ${result.total} memories.`);
|
|
124
|
-
for (const issue of result.issues)
|
|
120
|
+
for (const issue of result.issues) {
|
|
125
121
|
console.log(` [${issue.disposition}] ${issue.id}: ${issue.reason}${issue.protection ? ` (${issue.protection})` : ''}`);
|
|
122
|
+
}
|
|
126
123
|
for (const blocker of result.blockers) {
|
|
127
124
|
console.log(` Blocked: ${blocker}. Repair never upgrades a store; ` +
|
|
128
125
|
'any other hippo command does, then run repair again.');
|
|
129
126
|
}
|
|
130
127
|
const restore = `hippo dormant restore <id>${flags['global'] ? ' --global' : ''}`;
|
|
131
|
-
if (result.backup)
|
|
128
|
+
if (result.backup) {
|
|
132
129
|
console.log(`Backup: ${result.backup}\nMoved ${result.appliedIds.length} memories to dormant storage. Recovery: ${restore}.`);
|
|
130
|
+
}
|
|
133
131
|
else if (apply && result.supported)
|
|
134
132
|
console.log('Nothing moved: no unprotected memory has a certain defect.');
|
|
135
133
|
for (const warning of result.warnings)
|
|
136
134
|
console.log(`Warning: ${warning}`);
|
|
137
|
-
if (!apply)
|
|
135
|
+
if (!apply) {
|
|
138
136
|
console.log('Preview only. Add --apply to move set-aside memories to dormant storage. Pin a review memory to keep it.');
|
|
137
|
+
}
|
|
139
138
|
}
|
|
140
|
-
function fixAuditErrors(hippoRoot, tenantId, result, flags) {
|
|
141
|
-
const errors = result.issues.filter(i => i.severity === 'error');
|
|
139
|
+
async function fixAuditErrors(hippoRoot, tenantId, result, flags) {
|
|
140
|
+
const errors = result.issues.filter((i) => i.severity === 'error');
|
|
142
141
|
if (errors.length > 0 && flagIsTrue(flags, 'dry-run')) {
|
|
143
142
|
console.log(`\nWould remove ${errors.length} error-severity memories (dry run, nothing deleted).`);
|
|
144
143
|
console.log(`${result.issues.length - errors.length} warnings would remain (review manually).`);
|
|
145
144
|
}
|
|
146
145
|
else if (errors.length > 0) {
|
|
147
146
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
148
|
-
const removedCount = api.removeAuditErrors(ctx, 'audit --fix', errors).length;
|
|
147
|
+
const removedCount = (await api.removeAuditErrors(ctx, 'audit --fix', errors)).length;
|
|
149
148
|
console.log(`\nRemoved ${removedCount} error-severity memories.`);
|
|
150
149
|
console.log(`${result.issues.length - errors.length} warnings remain (review manually).`);
|
|
151
150
|
}
|
|
@@ -155,16 +154,17 @@ function fixAuditErrors(hippoRoot, tenantId, result, flags) {
|
|
|
155
154
|
}
|
|
156
155
|
export async function handleAudit({ hippoRoot, tenantId, args, flags }) {
|
|
157
156
|
if (args[0] === 'repair') {
|
|
158
|
-
auditRepair(hippoRoot, tenantId, flags);
|
|
157
|
+
await auditRepair(hippoRoot, tenantId, flags);
|
|
159
158
|
return;
|
|
160
159
|
}
|
|
161
|
-
// `audit list` and `audit prune` are the audit-log subcommands;
|
|
160
|
+
// `audit list` and `audit prune` are the audit-log subcommands;
|
|
161
|
+
// other forms (no sub, --fix) keep the memory-quality auditor.
|
|
162
162
|
if (args[0] === 'list' || args[0] === 'prune') {
|
|
163
163
|
await cmdAuditLog(hippoRoot, tenantId, args, flags);
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
requireInit(hippoRoot);
|
|
167
|
-
const result = api.auditMemoryQuality(cliApiContext(hippoRoot, tenantId));
|
|
167
|
+
const result = await api.auditMemoryQuality(cliApiContext(hippoRoot, tenantId));
|
|
168
168
|
const shouldFix = boolFlag(flags, 'fix');
|
|
169
169
|
if (result.issues.length === 0) {
|
|
170
170
|
console.log(`All ${result.total} memories passed quality checks.`);
|
|
@@ -177,7 +177,7 @@ export async function handleAudit({ hippoRoot, tenantId, args, flags }) {
|
|
|
177
177
|
console.log(` "${truncateWithEllipsis(issue.content, 80)}"`);
|
|
178
178
|
}
|
|
179
179
|
if (shouldFix) {
|
|
180
|
-
fixAuditErrors(hippoRoot, tenantId, result, flags);
|
|
180
|
+
await fixAuditErrors(hippoRoot, tenantId, result, flags);
|
|
181
181
|
}
|
|
182
182
|
else {
|
|
183
183
|
console.log(`\nRun with --fix to auto-remove error-severity issues.`);
|