hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type MergeResult, type ProjectSummary, type RepairResult } from '
|
|
2
|
-
import type { Context } from '
|
|
3
|
-
export type { MergeResult, ProjectCollision, ProjectSummary, RepairResult } from '
|
|
4
|
-
export type { ProjectFold } from '
|
|
1
|
+
import { type MergeResult, type ProjectSummary, type RepairResult } from '../../sharing/project-merge.js';
|
|
2
|
+
import type { Context } from '../types.js';
|
|
3
|
+
export type { MergeResult, ProjectCollision, ProjectSummary, RepairResult } from '../../sharing/project-merge.js';
|
|
4
|
+
export type { ProjectFold } from '../../agent-memories/project-folds.js';
|
|
5
5
|
export interface MergeProjectNamesOpts {
|
|
6
6
|
from: string;
|
|
7
7
|
into: string;
|
|
@@ -10,7 +10,10 @@ export interface MergeProjectNamesOpts {
|
|
|
10
10
|
}
|
|
11
11
|
/** Live rows per project name in the caller's tenant, newest write first. */
|
|
12
12
|
export declare function listProjectNames(ctx: Context): ProjectSummary[];
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal
|
|
15
|
+
* names.
|
|
16
|
+
*/
|
|
14
17
|
export declare function mergeProjectNames(ctx: Context, opts: MergeProjectNamesOpts): MergeResult;
|
|
15
18
|
/** Sets aside stray imports, folds renamed projects and re-tags sleep's user-global merges; a dry run only plans. */
|
|
16
19
|
export declare function repairProjectNames(ctx: Context, opts: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// Project names for every front end: list them, fold one into another, and repair old tags; the store opens hippo.db
|
|
1
|
+
// Project names for every front end: list them, fold one into another, and repair old tags; the store opens hippo.db
|
|
2
|
+
// and owns each transaction.
|
|
2
3
|
// SHORTCUT: hippo.db only, since the store port has no project calls; a projects group when a served store needs them.
|
|
3
|
-
import { listProjects, mergeProjects, repairOnceOnSleep, repairProjects, } from '
|
|
4
|
-
import { onProjectTags } from '
|
|
4
|
+
import { listProjects, mergeProjects, repairOnceOnSleep, repairProjects, } from '../../sharing/project-merge.js';
|
|
5
|
+
import { onProjectTags } from '../../store/project-tags.js';
|
|
5
6
|
function onProjects(ctx, fn) {
|
|
6
7
|
return onProjectTags({ hippoRoot: ctx.hippoRoot, tenantId: ctx.tenantId, actor: ctx.actor.subject }, fn);
|
|
7
8
|
}
|
|
@@ -9,7 +10,10 @@ function onProjects(ctx, fn) {
|
|
|
9
10
|
export function listProjectNames(ctx) {
|
|
10
11
|
return onProjects(ctx, listProjects);
|
|
11
12
|
}
|
|
12
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal
|
|
15
|
+
* names.
|
|
16
|
+
*/
|
|
13
17
|
export function mergeProjectNames(ctx, opts) {
|
|
14
18
|
return onProjects(ctx, (store) => mergeProjects(store, opts));
|
|
15
19
|
}
|
package/dist/api/pilot-arm.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type LedgerReach } from './ledger-db.js';
|
|
2
2
|
import { type PilotArm } from '../store/pilot-arm.js';
|
|
3
|
-
export interface SessionArmOpts
|
|
4
|
-
|
|
3
|
+
export interface SessionArmOpts {
|
|
4
|
+
readonly reach: LedgerReach;
|
|
5
|
+
/**
|
|
6
|
+
* Only the caller tenant's arm row counts, so a caller holding another tenant's session id cannot claim that
|
|
7
|
+
* session's arm.
|
|
8
|
+
*/
|
|
5
9
|
readonly ownTenantOnly?: boolean;
|
|
6
10
|
}
|
|
7
11
|
/** The session's arm, or null at rate 0, with no session id, or with no store.
|
|
8
12
|
* `write` books the arm row; a read-only caller (env-only id, sub-agent) follows the stored arm, else the hash. */
|
|
9
|
-
export declare function sessionPilotArm(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean, opts
|
|
13
|
+
export declare function sessionPilotArm(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean, opts: SessionArmOpts): PilotArm | null;
|
|
10
14
|
//# sourceMappingURL=pilot-arm.d.ts.map
|
package/dist/api/pilot-arm.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
// Which pilot arm a session is in: the rate comes from the ledger store's config, the arm row from
|
|
1
|
+
// Which pilot arm a session is in: the rate comes from the ledger store's config, the arm row from
|
|
2
|
+
// src/store/pilot-arm.ts.
|
|
2
3
|
import { loadConfig } from '../core/config.js';
|
|
3
4
|
import { ledgerRoot, onLedgerRoot } from './ledger-db.js';
|
|
4
5
|
import { pilotArmOnRoot } from '../store/ledger-turn.js';
|
|
5
6
|
import { hashArm } from '../store/pilot-arm.js';
|
|
6
7
|
/** The session's arm, or null at rate 0, with no session id, or with no store.
|
|
7
8
|
* `write` books the arm row; a read-only caller (env-only id, sub-agent) follows the stored arm, else the hash. */
|
|
8
|
-
export function sessionPilotArm(hippoRoot, tenantId, sessionId, write, opts
|
|
9
|
+
export function sessionPilotArm(hippoRoot, tenantId, sessionId, write, opts) {
|
|
9
10
|
if (sessionId === undefined || sessionId.trim() === '')
|
|
10
11
|
return null;
|
|
11
|
-
const root = ledgerRoot(hippoRoot, opts);
|
|
12
|
+
const root = ledgerRoot(hippoRoot, opts.reach);
|
|
12
13
|
if (root === null)
|
|
13
14
|
return null;
|
|
14
15
|
const rate = loadConfig(root).pilot.holdoutRateBp;
|
|
15
16
|
if (rate <= 0)
|
|
16
17
|
return null;
|
|
17
18
|
const { ownTenantOnly } = opts;
|
|
18
|
-
const arm = onLedgerRoot(hippoRoot, opts, (at) => pilotArmOnRoot(at, tenantId, sessionId, rate, { write, ownTenantOnly }));
|
|
19
|
+
const arm = onLedgerRoot(hippoRoot, opts.reach, (at) => pilotArmOnRoot(at, tenantId, sessionId, rate, { write, ownTenantOnly }));
|
|
19
20
|
return arm ?? hashArm(sessionId, rate);
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=pilot-arm.js.map
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { type Context, type ContextResult, type ContextResultEntry } from './index.js';
|
|
1
|
+
import { type Context, type ContextResult, type ContextResultEntry, type ContextWith } from './index.js';
|
|
2
|
+
import { type HippoConfig } from '../core/config.js';
|
|
2
3
|
import { type DeliveryEventType, type DeliveryFault, type DeliveryRecorder } from '../store/delivery-recorder.js';
|
|
3
4
|
import type { HookRuntime } from '../core/capture-contract.js';
|
|
4
5
|
import { type JsonValue } from '../util/json.js';
|
|
6
|
+
import { type LedgerReach } from './ledger-db.js';
|
|
5
7
|
import type { MemoryEntry } from '../core/memory.js';
|
|
6
8
|
import type { PilotArm } from '../store/pilot-arm.js';
|
|
7
9
|
import type { DeliveryWrite } from '../store/ledger-turn.js';
|
|
@@ -17,13 +19,17 @@ export interface DeliveryStart {
|
|
|
17
19
|
}
|
|
18
20
|
/** A delivery recorder for a hook on `ctx.hippoRoot` when the ledger store enables one, else null; never throws. */
|
|
19
21
|
export declare function startDeliveryRecorder(ctx: Context, start: DeliveryStart): DeliveryRecorder | null;
|
|
20
|
-
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
22
|
+
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
23
|
+
* points into another. */
|
|
21
24
|
export declare function startToolFailureRecorder(ctx: Context, start: Omit<DeliveryStart, 'eventType'>): DeliveryRecorder | null;
|
|
22
|
-
/** With `write`, stores on the token ledger's connection (same
|
|
25
|
+
/** With `write`, stores on the token ledger's connection (same
|
|
26
|
+
* store); without it, opens its own. A second flush is a no-op. */
|
|
23
27
|
export declare function flushDeliveryRecorder(rec: DeliveryRecorder | null, write?: DeliveryWrite): void;
|
|
24
28
|
/** What one render needs once api.getContext has answered. */
|
|
25
29
|
export interface ContextView {
|
|
26
30
|
readonly hippoRoot: string;
|
|
31
|
+
/** The caller's Context config, else the folder's config.json is read. */
|
|
32
|
+
readonly config?: HippoConfig;
|
|
27
33
|
readonly tenantId: string;
|
|
28
34
|
readonly ledgerSessionId: string | undefined;
|
|
29
35
|
readonly payloadSessionId: string | undefined;
|
|
@@ -31,17 +37,20 @@ export interface ContextView {
|
|
|
31
37
|
readonly framing: string;
|
|
32
38
|
readonly rec: DeliveryRecorder | null;
|
|
33
39
|
readonly result: ContextResult;
|
|
34
|
-
/**
|
|
35
|
-
readonly
|
|
40
|
+
/** Where the ledger rows go; a shared store's reach has no global store, see promptHookContext. */
|
|
41
|
+
readonly reach: LedgerReach;
|
|
36
42
|
/** The static block's hash the caller says it printed last. Undefined keeps the ledger-only skip rule;
|
|
37
|
-
* a string or null also needs that hash to match, because the ledger counts blocks a caller that prints elsewhere
|
|
43
|
+
* a string or null also needs that hash to match, because the ledger counts blocks a caller that prints elsewhere
|
|
44
|
+
* may never have shown. */
|
|
38
45
|
readonly printedHash?: string | null;
|
|
39
46
|
/** The reply's JSON wrapper; absent means Claude Code's UserPromptSubmit. */
|
|
40
47
|
readonly envelope?: HookEnvelope;
|
|
41
48
|
}
|
|
42
|
-
/** `copilot-session-start` is the Copilot harness's top-level reply,
|
|
49
|
+
/** `copilot-session-start` is the Copilot harness's top-level reply,
|
|
50
|
+
* `vscode-session-start` the nested one VS Code Local reads. */
|
|
43
51
|
export type HookEnvelope = 'user-prompt-submit' | 'copilot-session-start' | 'vscode-session-start';
|
|
44
|
-
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
52
|
+
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
53
|
+
* only the Copilot harness sends. */
|
|
45
54
|
export declare function sessionStartEnvelope(stdinText: string | undefined): HookEnvelope;
|
|
46
55
|
export declare function hasContextData(result: ContextResult): boolean;
|
|
47
56
|
export type RenderItem = {
|
|
@@ -51,36 +60,40 @@ export type RenderItem = {
|
|
|
51
60
|
isGlobal: boolean;
|
|
52
61
|
};
|
|
53
62
|
export declare function toRenderItems(entries: ContextResultEntry[]): RenderItem[];
|
|
54
|
-
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
63
|
+
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
64
|
+
* recent-N) and a never-skipped recall block. */
|
|
55
65
|
export declare function additionalContextOutput(view: ContextView): string;
|
|
56
|
-
/** The project a hook caller runs in: its id, the folder name
|
|
66
|
+
/** The project a hook caller runs in: its id, the folder name
|
|
67
|
+
* its older rows carry, and any other names it resolves to. */
|
|
57
68
|
export interface CallerProject {
|
|
58
69
|
readonly name: string;
|
|
59
70
|
readonly legacyName: string;
|
|
60
71
|
readonly aliases?: readonly string[];
|
|
61
72
|
}
|
|
62
|
-
interface PromptHookRequest {
|
|
73
|
+
export interface PromptHookRequest {
|
|
63
74
|
readonly sessionId: string;
|
|
64
75
|
readonly project: CallerProject;
|
|
65
76
|
readonly payload?: Readonly<Record<string, JsonValue>>;
|
|
66
|
-
/** The staticHash of the last reply whose stdout the caller
|
|
77
|
+
/** The staticHash of the last reply whose stdout the caller
|
|
78
|
+
* printed in this session; absent, the block is always sent. */
|
|
67
79
|
readonly printedHash?: string;
|
|
68
80
|
}
|
|
69
|
-
interface PromptHookOpts {
|
|
81
|
+
export interface PromptHookOpts {
|
|
70
82
|
/** The store serves many people, so the caller is not its owner: no global store, no user-global recent rows,
|
|
71
83
|
* task state only for the caller's own owner and project, and no ledger rows outside this store. */
|
|
72
84
|
readonly sharedStore?: true;
|
|
73
85
|
}
|
|
74
86
|
/** The caps on a hook caller's session id and project names, so a caller other than an HTTP route is bounded too. */
|
|
75
87
|
export declare function assertCallerIds(sessionId: string, project: CallerProject): void;
|
|
76
|
-
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
77
|
-
* Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
78
|
-
* `
|
|
79
|
-
*
|
|
80
|
-
|
|
88
|
+
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
89
|
+
* on `ctx`'s store for its project. Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
90
|
+
* ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout. `staticHash` is the hash to echo back
|
|
91
|
+
* (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
|
|
92
|
+
* Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before
|
|
93
|
+
* any arm is booked. */
|
|
94
|
+
export declare function promptHookContext(ctx: ContextWith<'contextReads'>, req: PromptHookRequest, opts?: PromptHookOpts): Promise<{
|
|
81
95
|
arm: PilotArm | null;
|
|
82
96
|
stdout: string;
|
|
83
97
|
staticHash: string | null;
|
|
84
98
|
}>;
|
|
85
|
-
export {};
|
|
86
99
|
//# sourceMappingURL=prompt-hook.d.ts.map
|
package/dist/api/prompt-hook.js
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
// The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote
|
|
2
|
-
// promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
|
|
3
|
-
//
|
|
1
|
+
// The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote
|
|
2
|
+
// hook route's call). promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts); the
|
|
3
|
+
// CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
|
|
4
4
|
import { getContext } from './index.js';
|
|
5
5
|
import { BadRequestError } from '../core/api-errors.js';
|
|
6
6
|
import { isSharedStore, loadConfig } from '../core/config.js';
|
|
7
|
-
import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
|
|
8
|
-
import { createDeliveryRecorder } from '../store/delivery-recorder.js';
|
|
7
|
+
import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText, } from './context-render.js';
|
|
8
|
+
import { createDeliveryRecorder, } from '../store/delivery-recorder.js';
|
|
9
9
|
import { realpathOrResolve } from '../util/real-path.js';
|
|
10
10
|
import { MAX_ID_LEN } from '../util/limits.js';
|
|
11
11
|
import { isJsonString } from '../util/json.js';
|
|
12
|
-
import { bookLedgerTurn, ledgerLastSent, ledgerRoot } from './ledger-db.js';
|
|
12
|
+
import { bookLedgerTurn, ledgerLastSent, ledgerReachOf, ledgerRoot } from './ledger-db.js';
|
|
13
13
|
import { noteLedgerRowSkipped } from '../store/ledger-turn.js';
|
|
14
14
|
import { sessionPilotArm } from './pilot-arm.js';
|
|
15
|
-
import { assertCallerProject,
|
|
15
|
+
import { assertCallerProject, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
|
|
16
16
|
import { writeDeliveryEventAtRoot } from '../store/recall-trace.js';
|
|
17
17
|
import { shouldSkipUnchanged } from '../store/token-ledger.js';
|
|
18
18
|
import { hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
|
|
19
19
|
import { blockHash, estimateTokens } from '../util/token-text.js';
|
|
20
|
-
import { errorMessage, log } from '../util/log.js';
|
|
20
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
21
21
|
import { DEFAULT_CONTEXT_BUDGET } from './context.js';
|
|
22
22
|
/** A delivery recorder for a hook on `ctx.hippoRoot` when the ledger store enables one, else null; never throws. */
|
|
23
23
|
export function startDeliveryRecorder(ctx, start) {
|
|
24
24
|
try {
|
|
25
25
|
// The same store the token ledger writes to, so its config governs both.
|
|
26
|
-
const root = ledgerRoot(ctx.hippoRoot);
|
|
26
|
+
const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
|
|
27
27
|
if (root === null || !loadConfig(root).deliveryLedger.enabled)
|
|
28
28
|
return null;
|
|
29
29
|
return createDeliveryRecorder({
|
|
30
30
|
root,
|
|
31
31
|
storeHash: blockHash(realpathOrResolve(root)),
|
|
32
|
-
|
|
32
|
+
// ledgerRoot falls back to the global root only when the primary is not initialized.
|
|
33
|
+
writeStore: root !== ctx.hippoRoot || ctx.reach?.isGlobal === true ? 'global' : 'local',
|
|
33
34
|
tenantId: ctx.tenantId,
|
|
34
35
|
stdinText: start.stdinText,
|
|
35
36
|
envSessionId: start.envSessionId,
|
|
@@ -39,24 +40,26 @@ export function startDeliveryRecorder(ctx, start) {
|
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
catch (error) {
|
|
42
|
-
log.warn(`delivery ledger skipped: ${errorMessage(error)}
|
|
43
|
+
log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
|
|
43
44
|
return null;
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
|
-
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
47
|
+
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
48
|
+
* points into another. */
|
|
47
49
|
export function startToolFailureRecorder(ctx, start) {
|
|
48
50
|
try {
|
|
49
|
-
const root = ledgerRoot(ctx.hippoRoot);
|
|
51
|
+
const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
|
|
50
52
|
if (root === null || realpathOrResolve(root) !== realpathOrResolve(ctx.hippoRoot))
|
|
51
53
|
return null;
|
|
52
54
|
return startDeliveryRecorder(ctx, { ...start, eventType: 'tool-failure' });
|
|
53
55
|
}
|
|
54
56
|
catch (error) {
|
|
55
|
-
log.warn(`delivery ledger skipped: ${errorMessage(error)}
|
|
57
|
+
log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
|
|
56
58
|
return null;
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
/** With `write`, stores on the token ledger's connection (same
|
|
61
|
+
/** With `write`, stores on the token ledger's connection (same
|
|
62
|
+
* store); without it, opens its own. A second flush is a no-op. */
|
|
60
63
|
export function flushDeliveryRecorder(rec, write) {
|
|
61
64
|
if (rec === null)
|
|
62
65
|
return;
|
|
@@ -64,10 +67,11 @@ export function flushDeliveryRecorder(rec, write) {
|
|
|
64
67
|
rec.flush(write ?? ((input) => writeDeliveryEventAtRoot(rec.root, input)));
|
|
65
68
|
}
|
|
66
69
|
catch (error) {
|
|
67
|
-
log.error(`delivery ledger write failed: ${errorMessage(error)}
|
|
70
|
+
log.error(`delivery ledger write failed: ${errorMessage(error)}`, errorFields(error));
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
|
-
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
73
|
+
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
74
|
+
* only the Copilot harness sends. */
|
|
71
75
|
export function sessionStartEnvelope(stdinText) {
|
|
72
76
|
return hookPayloadString(stdinText, 'sessionId') !== null ? 'copilot-session-start' : 'vscode-session-start';
|
|
73
77
|
}
|
|
@@ -87,17 +91,14 @@ export function hasContextData(result) {
|
|
|
87
91
|
export function toRenderItems(entries) {
|
|
88
92
|
return entries.map((r) => ({ entry: r.entry, score: r.score, tokens: r.tokens, isGlobal: r.isGlobal ?? false }));
|
|
89
93
|
}
|
|
90
|
-
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
94
|
+
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
95
|
+
* recent-N) and a never-skipped recall block. */
|
|
91
96
|
export function additionalContextOutput(view) {
|
|
92
97
|
return renderAdditionalContext(view).stdout;
|
|
93
98
|
}
|
|
94
|
-
function
|
|
95
|
-
const { result,
|
|
96
|
-
|
|
97
|
-
const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
|
|
98
|
-
const staticItems = toRenderItems(staticEntries);
|
|
99
|
-
const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
|
|
100
|
-
const staticBlock = settleTokens((t) => [
|
|
99
|
+
function renderStaticBlock(view, staticItems, staticCrossEntries) {
|
|
100
|
+
const { result, framing } = view;
|
|
101
|
+
return settleTokens((t) => [
|
|
101
102
|
...(result.activeSnapshot ? [snapshotText(result.activeSnapshot)] : []),
|
|
102
103
|
...(result.sessionHandoff ? [handoffText(result.sessionHandoff)] : []),
|
|
103
104
|
...(result.recentEvents && result.recentEvents.length > 0 ? [sessionTrailText(result.recentEvents)] : []),
|
|
@@ -105,9 +106,20 @@ function renderAdditionalContext(view) {
|
|
|
105
106
|
...(staticItems.length > 0 ? contextBlockLines(staticItems, t, framing, { showStrength: false }) : []),
|
|
106
107
|
...crossProjectLines(staticCrossEntries),
|
|
107
108
|
].join('\n'));
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
}
|
|
110
|
+
function renderRecallBlock(recallItems, framing) {
|
|
111
|
+
if (recallItems.length === 0)
|
|
112
|
+
return '';
|
|
113
|
+
return settleTokens((t) => contextBlockLines(recallItems, t, framing, { showStrength: false, heading: 'Prompt-Relevant Memory' }).join('\n'));
|
|
114
|
+
}
|
|
115
|
+
function renderAdditionalContext(view) {
|
|
116
|
+
const { result, rec, framing } = view;
|
|
117
|
+
const staticEntries = result.entries.filter((r) => r.category !== 'cross-project' && !r.promptRecall);
|
|
118
|
+
const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
|
|
119
|
+
const staticItems = toRenderItems(staticEntries);
|
|
120
|
+
const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
|
|
121
|
+
const staticBlock = renderStaticBlock(view, staticItems, staticCrossEntries);
|
|
122
|
+
const recallBlock = renderRecallBlock(recallItems, framing);
|
|
111
123
|
if (!staticBlock.trim() && !recallBlock.trim()) {
|
|
112
124
|
rec?.delivered({ state: 'empty' });
|
|
113
125
|
return NOTHING_RENDERED;
|
|
@@ -139,13 +151,12 @@ function renderAdditionalContext(view) {
|
|
|
139
151
|
/** True, after booking the skip row, when the hook may omit a static block this session already holds. */
|
|
140
152
|
function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCount) {
|
|
141
153
|
const { hippoRoot, payloadSessionId, rec } = view;
|
|
142
|
-
const ledgerOpts = { sharedStore: view.sharedStore };
|
|
143
154
|
if (!view.pinnedOnly || payloadSessionId === undefined)
|
|
144
155
|
return false;
|
|
145
156
|
// Session start is the only injection Copilot gets, so a resumed session needs the whole block again.
|
|
146
157
|
if (view.envelope === 'copilot-session-start' || view.envelope === 'vscode-session-start')
|
|
147
158
|
return false;
|
|
148
|
-
const injectCfg = loadConfig(hippoRoot).pinnedInject;
|
|
159
|
+
const injectCfg = (view.config ?? loadConfig(hippoRoot)).pinnedInject;
|
|
149
160
|
if (injectCfg.skipUnchanged === false)
|
|
150
161
|
return false;
|
|
151
162
|
const refreshTurns = Number.isFinite(injectCfg.refreshTurns) && injectCfg.refreshTurns >= 0
|
|
@@ -156,7 +167,7 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
|
|
|
156
167
|
// Before the ledger read, so a caller that did not print this block books no skip row.
|
|
157
168
|
if (view.printedHash !== undefined && view.printedHash !== staticHash)
|
|
158
169
|
return false;
|
|
159
|
-
const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface,
|
|
170
|
+
const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, view.reach);
|
|
160
171
|
if (!shouldSkipUnchanged(last ?? null, staticHash, refreshTurns))
|
|
161
172
|
return false;
|
|
162
173
|
bookLedgerTurn(hippoRoot, {
|
|
@@ -168,20 +179,24 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
|
|
|
168
179
|
rec?.delivered({ state: 'reused', staticHash, staticReused: true });
|
|
169
180
|
flushDeliveryRecorder(rec, write);
|
|
170
181
|
},
|
|
171
|
-
},
|
|
182
|
+
}, view.reach);
|
|
172
183
|
return true;
|
|
173
184
|
}
|
|
174
|
-
/** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not
|
|
185
|
+
/** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not
|
|
186
|
+
* break the hook. */
|
|
175
187
|
function recordAdditionalContextRows(view, surface, staticPart, recallPart) {
|
|
176
188
|
const row = (part, on) => ({
|
|
177
189
|
tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: on, event: 'inject',
|
|
178
190
|
items: part.items, tokens: estimateTokens(part.text), hash: blockHash(part.text),
|
|
179
191
|
});
|
|
180
192
|
bookLedgerTurn(view.hippoRoot, {
|
|
181
|
-
uses: [
|
|
193
|
+
uses: [
|
|
194
|
+
...(staticPart.text ? [row(staticPart, surface)] : []),
|
|
195
|
+
...(recallPart.text ? [row(recallPart, 'hook_recall')] : []),
|
|
196
|
+
],
|
|
182
197
|
onRowError: noteLedgerRowSkipped,
|
|
183
198
|
delivery: (write) => flushDeliveryRecorder(view.rec, write),
|
|
184
|
-
},
|
|
199
|
+
}, view.reach);
|
|
185
200
|
}
|
|
186
201
|
// The flags HIPPO_PINNED_INJECT_COMMAND gives the local hook; the CLI parity test fails if the two drift.
|
|
187
202
|
const HOOK_INCLUDE_RECENT = 5;
|
|
@@ -192,8 +207,9 @@ const BLOCK_HASH_RE = /^[0-9a-f]{16}$/;
|
|
|
192
207
|
/** The caps on a hook caller's session id and project names, so a caller other than an HTTP route is bounded too. */
|
|
193
208
|
export function assertCallerIds(sessionId, project) {
|
|
194
209
|
const { name, legacyName, aliases = [] } = project;
|
|
195
|
-
if (aliases.length > MAX_PROJECT_ALIASES)
|
|
210
|
+
if (aliases.length > MAX_PROJECT_ALIASES) {
|
|
196
211
|
throw new BadRequestError(`project aliases: at most ${MAX_PROJECT_ALIASES}`);
|
|
212
|
+
}
|
|
197
213
|
if ([sessionId, name, legacyName, ...aliases].some((v) => v.length > MAX_ID_LEN)) {
|
|
198
214
|
throw new BadRequestError(`session id and project names: at most ${MAX_ID_LEN} characters each`);
|
|
199
215
|
}
|
|
@@ -204,20 +220,24 @@ function assertPromptHookRequest(req) {
|
|
|
204
220
|
throw new BadRequestError('printed hash: 16 lowercase hex characters');
|
|
205
221
|
}
|
|
206
222
|
}
|
|
207
|
-
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
208
|
-
* Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
209
|
-
* `
|
|
210
|
-
*
|
|
223
|
+
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
224
|
+
* on `ctx`'s store for its project. Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
225
|
+
* ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout. `staticHash` is the hash to echo back
|
|
226
|
+
* (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
|
|
227
|
+
* Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before
|
|
228
|
+
* any arm is booked. */
|
|
211
229
|
export async function promptHookContext(ctx, req, opts = {}) {
|
|
212
230
|
assertPromptHookRequest(req);
|
|
213
231
|
const { sessionId, payload } = req;
|
|
214
232
|
const { sharedStore } = opts;
|
|
215
|
-
|
|
233
|
+
const sharedByReach = ctx.reach ? ctx.reach.shared : isSharedStore(ctx.hippoRoot);
|
|
234
|
+
if (sharedStore || sharedByReach)
|
|
216
235
|
assertCallerProject(req.project);
|
|
217
236
|
// The test the local hook runs on its stdin, so a sub-agent books no arm and no session rows here either.
|
|
218
237
|
const subagent = payload !== undefined && isSubagentPayload(JSON.stringify(payload));
|
|
219
238
|
const ledgerSessionId = subagent ? undefined : sessionId;
|
|
220
|
-
const
|
|
239
|
+
const reach = ledgerReachOf(ctx, sharedStore);
|
|
240
|
+
const arm = sessionPilotArm(ctx.hippoRoot, ctx.tenantId, sessionId, !subagent, { reach, ownTenantOnly: true });
|
|
221
241
|
if (arm === 'holdout')
|
|
222
242
|
return { arm, ...NOTHING_RENDERED };
|
|
223
243
|
const prompt = payload?.prompt;
|
|
@@ -234,8 +254,9 @@ export async function promptHookContext(ctx, req, opts = {}) {
|
|
|
234
254
|
});
|
|
235
255
|
const rendered = hasContextData(result)
|
|
236
256
|
? renderAdditionalContext({
|
|
237
|
-
hippoRoot: ctx.hippoRoot, tenantId: ctx.tenantId, ledgerSessionId,
|
|
238
|
-
pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result,
|
|
257
|
+
hippoRoot: ctx.hippoRoot, config: ctx.config, tenantId: ctx.tenantId, ledgerSessionId,
|
|
258
|
+
payloadSessionId: ledgerSessionId, pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result, reach,
|
|
259
|
+
printedHash: req.printedHash ?? null,
|
|
239
260
|
})
|
|
240
261
|
: NOTHING_RENDERED;
|
|
241
262
|
// A sub-agent's output is not the session's, so its caller must not record it as printed.
|
|
@@ -8,7 +8,9 @@ export interface ProvenanceCoverage {
|
|
|
8
8
|
missing: ('owner' | 'artifact_ref')[];
|
|
9
9
|
}>;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
|
|
13
|
+
* are excluded.
|
|
12
14
|
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
13
15
|
export declare function buildProvenanceCoverage(entries: MemoryEntry[]): ProvenanceCoverage;
|
|
14
16
|
//# sourceMappingURL=provenance-coverage.d.ts.map
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
|
|
3
|
+
* are excluded.
|
|
2
4
|
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
3
5
|
export function buildProvenanceCoverage(entries) {
|
|
4
6
|
const raws = entries.filter((e) => e.kind === 'raw');
|