hippo-memory 1.69.0 → 1.70.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 +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +3 -2
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +1 -1
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +1 -1
- package/dist/agent-memories/sync.js +24 -33
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +2 -2
- package/dist/api/assemble.js +42 -32
- package/dist/api/audit.d.ts +4 -7
- package/dist/api/audit.js +6 -20
- package/dist/api/auth.d.ts +5 -18
- package/dist/api/auth.js +44 -194
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
- package/dist/{availability.js → api/availability.js} +12 -29
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +37 -45
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +48 -61
- package/dist/api/dormant.d.ts +3 -3
- package/dist/api/dormant.js +38 -107
- package/dist/api/drill-down.d.ts +2 -2
- package/dist/api/drill-down.js +37 -65
- package/dist/api/forget.d.ts +2 -11
- package/dist/api/forget.js +13 -46
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/index.d.ts +26 -0
- package/dist/api/index.js +29 -0
- package/dist/api/instruction-detect.js +74 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +20 -0
- package/dist/api/ledger-db.js +79 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +36 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/promote.d.ts +4 -15
- package/dist/api/promote.js +29 -106
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
- package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +112 -0
- package/dist/{recall-history.js → api/recall-history.js} +30 -25
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +41 -16
- package/dist/api/recall.d.ts +1 -1
- package/dist/api/recall.js +39 -37
- package/dist/api/remember.d.ts +10 -12
- package/dist/api/remember.js +29 -45
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -7
- package/dist/api/sleep-run.js +63 -75
- package/dist/api/sleep.d.ts +1 -1
- package/dist/api/tokens.d.ts +2 -2
- package/dist/api/tokens.js +9 -21
- package/dist/api/types.d.ts +2 -2
- package/dist/api/types.js +1 -1
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +1 -1
- package/dist/capture/command.js +54 -41
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +4 -1
- package/dist/capture/compact.js +40 -22
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
- package/dist/{session-digest.js → capture/session-digest.js} +17 -23
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.js +68 -74
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
- package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +77 -72
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +18 -20
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +59 -181
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +25 -23
- package/dist/{client.d.ts → cli/client.d.ts} +1 -1
- package/dist/{client.js → cli/client.js} +1 -1
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +39 -0
- package/dist/cli/context.d.ts +2 -13
- package/dist/cli/context.js +41 -71
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +109 -99
- package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
- package/dist/cli/curate.d.ts +9 -9
- package/dist/cli/curate.js +177 -149
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +46 -34
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +108 -218
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +43 -31
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +35 -19
- package/dist/cli/flag-values.d.ts +25 -0
- package/dist/cli/flag-values.js +103 -0
- package/dist/cli/flags.d.ts +303 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +39 -34
- package/dist/cli/hook-runtime.d.ts +49 -0
- package/dist/cli/hook-runtime.js +155 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +151 -118
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +110 -0
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +9 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +31 -27
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +65 -0
- package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
- package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +77 -280
- package/dist/cli/print.d.ts +18 -0
- package/dist/cli/print.js +85 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -49
- package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +101 -150
- package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
- package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
- package/dist/cli/remember.d.ts +1 -3
- package/dist/cli/remember.js +124 -103
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
- package/dist/{scheduler.js → cli/scheduler.js} +13 -7
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +34 -4
- package/dist/cli/session-hooks.d.ts +4 -4
- package/dist/cli/session-hooks.js +190 -184
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +41 -21
- package/dist/cli/shared.d.ts +5 -95
- package/dist/cli/shared.js +18 -369
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +31 -55
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +2 -8
- package/dist/cli/sleep.js +20 -76
- package/dist/cli/status.d.ts +3 -3
- package/dist/cli/status.js +39 -41
- package/dist/{stdin.js → cli/stdin.js} +6 -6
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +68 -42
- package/dist/cli/usage.js +4 -2
- package/dist/cli.d.ts +289 -5
- package/dist/cli.js +184 -117
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +1 -1
- package/dist/connectors/github/backfill.js +29 -66
- package/dist/connectors/github/cli-impl.js +59 -74
- package/dist/connectors/github/deletion.d.ts +5 -6
- package/dist/connectors/github/deletion.js +18 -52
- package/dist/connectors/github/dlq.d.ts +7 -61
- package/dist/connectors/github/dlq.js +19 -119
- package/dist/connectors/github/ingest.d.ts +2 -31
- package/dist/connectors/github/ingest.js +20 -83
- package/dist/connectors/github/octokit-client.d.ts +1 -1
- package/dist/connectors/github/octokit-client.js +2 -1
- package/dist/connectors/github/tenant-routing.d.ts +2 -2
- package/dist/connectors/github/tenant-routing.js +10 -36
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/types.d.ts +1 -1
- package/dist/connectors/github/types.js +15 -18
- package/dist/connectors/github/webhook.d.ts +3 -2
- package/dist/connectors/github/webhook.js +84 -87
- package/dist/connectors/slack/backfill.d.ts +1 -1
- package/dist/connectors/slack/backfill.js +5 -29
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +7 -49
- package/dist/connectors/slack/dlq.js +25 -118
- package/dist/connectors/slack/ingest.d.ts +5 -18
- package/dist/connectors/slack/ingest.js +27 -91
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.js +13 -14
- package/dist/connectors/slack/transform.d.ts +1 -1
- package/dist/connectors/slack/types.d.ts +1 -1
- package/dist/connectors/slack/types.js +3 -12
- package/dist/connectors/slack/web-client.js +2 -2
- package/dist/connectors/slack/webhook.d.ts +3 -2
- package/dist/connectors/slack/webhook.js +75 -82
- package/dist/connectors/slack/workspaces.d.ts +4 -17
- package/dist/connectors/slack/workspaces.js +4 -34
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +4 -4
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
- package/dist/{dag.js → consolidate/dag.js} +60 -81
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +28 -22
- package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
- package/dist/consolidate/flush-units.d.ts +2 -2
- package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
- package/dist/consolidate/half-life-migration.js +106 -0
- package/dist/consolidate/llm-passes.js +8 -8
- package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
- package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
- package/dist/consolidate/merge.js +57 -54
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
- package/dist/consolidate/physics-pass.js +46 -46
- package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
- package/dist/{replay.js → consolidate/replay.js} +2 -2
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +1 -1
- package/dist/consolidate/sleep.js +64 -134
- package/dist/{trace.js → consolidate/trace.js} +4 -6
- package/dist/consolidate/traces.js +34 -29
- package/dist/{ablation.js → core/ablation.js} +1 -1
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.js → core/ambient.js} +12 -10
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
- package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
- package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
- package/dist/{compare.js → core/compare.js} +10 -3
- package/dist/{config.d.ts → core/config.d.ts} +6 -6
- package/dist/{config.js → core/config.js} +99 -72
- package/dist/core/handoff.js +87 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
- package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
- package/dist/{memory.js → core/memory.js} +110 -82
- package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
- package/dist/{physics.js → core/physics.js} +2 -1
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
- package/dist/{project-identity.js → core/project-identity.js} +5 -17
- package/dist/{project-remote.js → core/project-remote.js} +4 -4
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/{salience.js → core/salience.js} +35 -20
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
- package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +18 -1
- package/dist/db/busy.js +74 -9
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +25 -30
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -35
- package/dist/db/migrations/v16.js +29 -26
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v20.js +4 -2
- package/dist/db/migrations/v22.js +39 -36
- package/dist/db/migrations/v24.js +27 -22
- package/dist/db/migrations/v29.js +37 -32
- package/dist/db/migrations/v31.js +36 -31
- package/dist/db/migrations/v35.js +1 -1
- package/dist/db/migrations/v39.js +1 -1
- package/dist/db/migrations/v40.js +15 -14
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +1 -1
- package/dist/db/migrations/v45.js +1 -1
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +1 -1
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +9 -1
- package/dist/db/open.js +21 -4
- package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
- package/dist/{physics-state.js → db/physics-state.js} +9 -16
- package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
- package/dist/{vector-store.js → db/vector-store.js} +76 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +105 -136
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +3 -3
- package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
- package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
- package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
- package/dist/{eval.js → eval/eval.js} +29 -22
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
- package/dist/{judgment.js → eval/judgment.js} +4 -9
- package/dist/extensions/openclaw-plugin/index.js +1 -2
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
- package/dist/{graph-extract.js → graph/extract.js} +37 -52
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
- package/dist/{graph-recall.js → graph/recall.js} +55 -36
- package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
- package/dist/{graph-stream.js → graph/stream.js} +9 -7
- package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
- package/dist/{graph-view.js → graph/view.js} +127 -167
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +14 -15
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +14 -15
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +1 -1
- package/dist/hooks/json-hooks.js +31 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +0 -4
- package/dist/hooks/shared.js +1 -5
- package/dist/importers/core.d.ts +2 -6
- package/dist/importers/core.js +41 -39
- package/dist/importers/markdown-parse.d.ts +1 -10
- package/dist/importers/markdown-parse.js +2 -19
- package/dist/importers/markdown.js +2 -1
- package/dist/importers/sources.js +50 -46
- package/dist/importers/vault.js +71 -92
- package/dist/index.d.ts +22 -22
- package/dist/index.js +21 -21
- package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
- package/dist/{autolearn.js → learn/autolearn.js} +13 -11
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +125 -0
- package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
- package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
- package/dist/{invalidation.js → learn/invalidation.js} +83 -99
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +37 -60
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +7 -27
- package/dist/mcp/protocol.d.ts +6 -10
- package/dist/mcp/protocol.js +8 -14
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +68 -50
- package/dist/mcp/request.js +62 -60
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session-state.d.ts +1 -2
- package/dist/mcp/session-state.js +2 -2
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.js +69 -31
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +2 -2
- package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
- package/dist/objects/customer-notes.js +112 -0
- package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
- package/dist/objects/decisions.js +101 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
- package/dist/objects/incidents.js +130 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
- package/dist/objects/policies.js +189 -0
- package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
- package/dist/objects/processes.js +146 -0
- package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
- package/dist/objects/project-briefs.js +255 -0
- package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
- package/dist/objects/skills.js +156 -0
- package/dist/postinstall.js +4 -2
- package/dist/predictions/planning-fallacy.d.ts +4 -76
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +27 -47
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +15 -23
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +30 -49
- package/dist/rerankers/llm.d.ts +2 -4
- package/dist/rerankers/llm.js +33 -50
- package/dist/rerankers/outage-warning.d.ts +7 -0
- package/dist/rerankers/outage-warning.js +31 -0
- package/dist/rerankers/remote.d.ts +3 -0
- package/dist/rerankers/remote.js +23 -0
- package/dist/rerankers/types.d.ts +1 -1
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -1
- package/dist/search/boosts.js +34 -13
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +4 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +7 -5
- package/dist/{path-context.js → search/path-context.js} +3 -1
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +15 -15
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +3 -3
- package/dist/search/vector.js +17 -11
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/auth.js +26 -18
- package/dist/server/boot.d.ts +24 -0
- package/dist/server/boot.js +465 -0
- package/dist/server/client-ip.d.ts +5 -1
- package/dist/server/client-ip.js +18 -6
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/key-check-bounds.d.ts +8 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.js +1 -1
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +34 -24
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +10 -4
- package/dist/server/request.js +63 -12
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +209 -0
- package/dist/server/routes/admin.js +13 -8
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +32 -97
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +42 -105
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +42 -95
- package/dist/server/routes/memories.js +12 -14
- package/dist/server/routes/object-routes.d.ts +40 -0
- package/dist/server/routes/object-routes.js +80 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +40 -124
- package/dist/server/routes/predictions.js +29 -45
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +38 -118
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +38 -110
- package/dist/server/routes/recall.js +14 -12
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +37 -125
- package/dist/{server-detect.js → server/server-detect.js} +1 -1
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +70 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +27 -8
- package/dist/server/validation.d.ts +3 -4
- package/dist/server/validation.js +6 -11
- package/dist/server.d.ts +39 -61
- package/dist/server.js +24 -568
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
- package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
- package/dist/{scope.js → sharing/scope.js} +1 -1
- package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
- package/dist/{shared.js → sharing/shared.js} +100 -77
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +10 -10
- package/dist/store/audit-event.d.ts +11 -5
- package/dist/store/audit-event.js +5 -4
- package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
- package/dist/{audit.js → store/audit.js} +91 -6
- package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
- package/dist/{auth.js → store/auth.js} +100 -92
- package/dist/store/candidates.d.ts +23 -12
- package/dist/store/candidates.js +87 -35
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
- package/dist/{card-detail.js → store/card-detail.js} +1 -1
- package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
- package/dist/{store-cards.js → store/cards.js} +85 -146
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +22 -5
- package/dist/store/conflicts.js +160 -109
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +92 -0
- package/dist/store/delete-and-batch.d.ts +20 -24
- package/dist/store/delete-and-batch.js +64 -40
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +51 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
- package/dist/{dormant.js → store/dormant.js} +151 -6
- package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
- package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
- package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
- package/dist/store/entry-reads.d.ts +46 -7
- package/dist/store/entry-reads.js +120 -21
- package/dist/store/entry-row.d.ts +8 -2
- package/dist/store/entry-row.js +28 -8
- package/dist/store/entry-writes.d.ts +33 -4
- package/dist/store/entry-writes.js +108 -26
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
- package/dist/{goals.js → store/goals.js} +45 -94
- package/dist/store/graph-queue.d.ts +29 -0
- package/dist/store/graph-queue.js +101 -0
- package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
- package/dist/{graph/read.js → store/graph-reads.js} +63 -115
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
- package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
- package/dist/store/graph-view-rows.d.ts +12 -0
- package/dist/store/graph-view-rows.js +67 -0
- package/dist/store/graph-writes.d.ts +58 -0
- package/dist/store/graph-writes.js +256 -0
- package/dist/store/half-life.d.ts +34 -0
- package/dist/store/half-life.js +77 -0
- package/dist/store/handoffs.d.ts +1 -1
- package/dist/store/handoffs.js +39 -30
- package/dist/store/index-and-stats.d.ts +8 -1
- package/dist/store/index-and-stats.js +51 -48
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +1 -1
- package/dist/store/markdown.js +4 -3
- package/dist/store/mirrors.d.ts +5 -7
- package/dist/store/mirrors.js +39 -25
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +24 -23
- package/dist/store/planning-fallacy-evidence.d.ts +42 -0
- package/dist/store/planning-fallacy-evidence.js +81 -0
- package/dist/store/port.d.ts +646 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
- package/dist/{predictions/store.js → store/predictions.js} +52 -67
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
- package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
- package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
- package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +162 -0
- package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
- package/dist/{rejection.js → store/rejection.js} +3 -2
- package/dist/store/rows.d.ts +2 -3
- package/dist/store/rows.js +18 -11
- package/dist/store/search-rows.d.ts +15 -4
- package/dist/store/search-rows.js +41 -28
- package/dist/store/sessions.d.ts +13 -2
- package/dist/store/sessions.js +79 -45
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +59 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +28 -0
- package/dist/store/sqlite/executor.js +286 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +38 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +218 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +314 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +26 -0
- package/dist/store/sqlite/store.js +295 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +124 -0
- package/dist/store/sqlite/worker-ops.js +82 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +76 -0
- package/dist/store/summaries.d.ts +2 -11
- package/dist/store/summaries.js +17 -44
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/store/tenant-lookup.d.ts +1 -1
- package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
- package/dist/{tenant.js → store/tenant.js} +1 -1
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
- package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +26 -0
- package/dist/store/vector-writes.d.ts +10 -3
- package/dist/store/vector-writes.js +35 -5
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
- package/dist/{working-memory.js → store/working-memory.js} +39 -41
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +13 -33
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +67 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +46 -0
- package/dist/util/atomic-write.d.ts +3 -0
- package/dist/util/atomic-write.js +107 -0
- package/dist/util/crash-handlers.d.ts +5 -0
- package/dist/util/crash-handlers.js +30 -0
- package/dist/{env.d.ts → util/env.d.ts} +15 -2
- package/dist/{env.js → util/env.js} +20 -2
- package/dist/util/home-path.js +67 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
- package/dist/{http-retry.js → util/http-retry.js} +38 -7
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +5 -2
- package/dist/{log.js → util/log.js} +12 -3
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +27 -0
- package/dist/util/request-scope.js +47 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +18 -0
- package/dist/util/token-text.js +23 -0
- package/dist/{version.d.ts → util/version.d.ts} +1 -1
- package/dist/{version.js → util/version.js} +1 -1
- package/extensions/openclaw-plugin/index.ts +1 -5
- 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 -2
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.js +0 -326
- package/dist/extract.js +0 -133
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/policies.js +0 -434
- package/dist/processes.js +0 -371
- package/dist/project-briefs.js +0 -523
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
- /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
- /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
- /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
- /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
- /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
- /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
- /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
- /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{card.d.ts → core/card.d.ts} +0 -0
- /package/dist/{card.js → core/card.js} +0 -0
- /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
- /package/dist/{physics-config.js → core/physics-config.js} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
- /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
- /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
- /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
- /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
- /package/dist/{rrf.js → search/rrf.js} +0 -0
- /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
- /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
- /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
- /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
- /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
- /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
- /package/dist/{yaml.js → store/yaml.js} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
- /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// Each verb's flags as data, keyed like the command table: parseArgs needs a flag's kind before the verb's module loads.
|
|
2
|
+
// The entry point reads these for every verb, so no verb declares them.
|
|
3
|
+
const GLOBAL_FLAGS = { switches: ['help', 'version'] };
|
|
4
|
+
export const VERB_FLAGS = {
|
|
5
|
+
init: { switches: ['global', 'no-hooks', 'no-learn', 'no-schedule'], values: ['scan'], numbers: ['days'] },
|
|
6
|
+
remember: {
|
|
7
|
+
switches: ['error', 'extract', 'force', 'global', 'inferred', 'observed', 'pin', 'verified'],
|
|
8
|
+
values: ['artifact-ref', 'kind', 'layer', 'owner', 'scope'],
|
|
9
|
+
lists: ['tag'],
|
|
10
|
+
},
|
|
11
|
+
recall: {
|
|
12
|
+
switches: ['classic', 'continuity', 'equal-sources', 'evc-adaptive', 'filter-conflicts', 'graph-stream',
|
|
13
|
+
'include-superseded', 'json', 'multihop', 'no-mmr', 'physics', 'rerank-utility', 'value-aware', 'why'],
|
|
14
|
+
values: ['as-of', 'budget', 'goal', 'graph-hops', 'graph-seeds', 'hops', 'layer', 'max-neighbors', 'outcome',
|
|
15
|
+
'reranker', 'salience-threshold', 'scope', 'session-id'],
|
|
16
|
+
numbers: ['limit', 'local-bump', 'min-results', 'mmr-lambda', 'reranker-top-k'],
|
|
17
|
+
},
|
|
18
|
+
drill: { switches: ['json'], values: ['budget', 'depth'], numbers: ['limit'] },
|
|
19
|
+
assemble: { switches: ['json', 'no-summarize-older'], values: ['budget', 'fresh-tail', 'scope', 'session'] },
|
|
20
|
+
supersede: { switches: ['pin'], values: ['layer'], lists: ['tag'] },
|
|
21
|
+
explain: {
|
|
22
|
+
switches: ['classic', 'equal-sources', 'include-superseded', 'json', 'no-mmr', 'physics'],
|
|
23
|
+
values: ['as-of', 'budget', 'scope'],
|
|
24
|
+
numbers: ['limit', 'local-bump', 'mmr-lambda'],
|
|
25
|
+
},
|
|
26
|
+
eval: {
|
|
27
|
+
switches: ['bootstrap', 'equal-sources', 'json', 'no-mmr', 'save-baseline', 'show-cases', 'suite'],
|
|
28
|
+
values: ['baseline', 'compare', 'out'],
|
|
29
|
+
numbers: ['embedding-weight', 'local-bump', 'max-cases', 'min-mrr', 'mmr-lambda'],
|
|
30
|
+
},
|
|
31
|
+
trace: { switches: ['json'], values: ['outcome', 'session', 'source', 'steps', 'task'], lists: ['tag'] },
|
|
32
|
+
refine: { switches: ['all', 'dry-run', 'json'], values: ['model'], numbers: ['limit'] },
|
|
33
|
+
sleep: { switches: ['dry-run', 'no-learn', 'no-share'], values: ['log-file'] },
|
|
34
|
+
'last-sleep': { switches: ['keep'], values: ['path'] },
|
|
35
|
+
'session-end': {
|
|
36
|
+
switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
|
|
37
|
+
values: ['format', 'log-file', 'runtime', 'session-id', 'transcript'],
|
|
38
|
+
},
|
|
39
|
+
'__session-end-worker': {
|
|
40
|
+
switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
|
|
41
|
+
values: ['log-file', 'session-id', 'transcript'],
|
|
42
|
+
},
|
|
43
|
+
'pre-compact': { values: ['format', 'log-file', 'runtime'] },
|
|
44
|
+
'post-compact': { values: ['log-file'] },
|
|
45
|
+
'capture-error': { values: ['format', 'runtime'] },
|
|
46
|
+
'compact-resume': {},
|
|
47
|
+
'codex-run': {},
|
|
48
|
+
'__codex-session-end-worker': { values: ['codex-home', 'history-path', 'log-file', 'start-offset', 'started-at'] },
|
|
49
|
+
dedup: { switches: ['dry-run'], numbers: ['threshold'] },
|
|
50
|
+
dag: { switches: ['stats'] },
|
|
51
|
+
auth: { switches: ['all', 'global', 'json'], values: ['label', 'role', 'tenant'] },
|
|
52
|
+
goal: {
|
|
53
|
+
switches: ['all', 'no-propagate'],
|
|
54
|
+
values: ['level', 'outcome', 'parent', 'policy', 'session-id', 'success', 'tenant-id'],
|
|
55
|
+
},
|
|
56
|
+
slack: { switches: ['force'], values: ['channel', 'since', 'team', 'tenant'] },
|
|
57
|
+
github: { switches: ['force'], values: ['max', 'repo', 'since'] },
|
|
58
|
+
audit: {
|
|
59
|
+
switches: ['apply', 'dry-run', 'fix', 'global', 'json'],
|
|
60
|
+
values: ['older-than', 'op', 'since', 'tenant'],
|
|
61
|
+
numbers: ['limit'],
|
|
62
|
+
},
|
|
63
|
+
'correction-latency': { switches: ['json'] },
|
|
64
|
+
provenance: { switches: ['json', 'strict'] },
|
|
65
|
+
status: {},
|
|
66
|
+
outcome: { switches: ['bad', 'good'], values: ['id'] },
|
|
67
|
+
conflicts: { switches: ['json'], values: ['status'] },
|
|
68
|
+
resolve: { switches: ['forget', 'reject-loser'], values: ['keep', 'reason'] },
|
|
69
|
+
reject: { switches: ['global'], values: ['reason', 'value'] },
|
|
70
|
+
rejections: { switches: ['global', 'json'] },
|
|
71
|
+
unreject: { switches: ['global'] },
|
|
72
|
+
dormant: { switches: ['global', 'json'], numbers: ['limit'] },
|
|
73
|
+
projects: { switches: ['apply', 'global', 'json'] },
|
|
74
|
+
quarantine: { switches: ['all', 'global', 'json'] },
|
|
75
|
+
tokens: { switches: ['global', 'json'], numbers: ['days'] },
|
|
76
|
+
failures: { switches: ['global', 'json'], numbers: ['days'] },
|
|
77
|
+
doctor: { switches: ['json'] },
|
|
78
|
+
'support-bundle': { switches: ['include-logs'], values: ['out'] },
|
|
79
|
+
snapshot: { switches: ['json'], values: ['id', 'next-step', 'session', 'source', 'status', 'summary', 'task'] },
|
|
80
|
+
session: {
|
|
81
|
+
switches: ['json'],
|
|
82
|
+
values: ['content', 'id', 'outcome', 'session', 'source', 'summary', 'task', 'type'],
|
|
83
|
+
numbers: ['limit'],
|
|
84
|
+
},
|
|
85
|
+
handoff: {
|
|
86
|
+
switches: ['json'],
|
|
87
|
+
values: ['card-id', 'id', 'next', 'outcome', 'session', 'summary', 'target-runtime', 'task', 'tests'],
|
|
88
|
+
lists: ['artifact', 'constraint'],
|
|
89
|
+
},
|
|
90
|
+
// Every card subcommand's flags together; card.ts then refuses the ones its subcommand does not read.
|
|
91
|
+
card: {
|
|
92
|
+
switches: ['json'],
|
|
93
|
+
values: ['author', 'body', 'budget', 'contract', 'outcome', 'reason', 'repo', 'run', 'runtime', 'session',
|
|
94
|
+
'status', 'title'],
|
|
95
|
+
lists: ['depends-on'],
|
|
96
|
+
},
|
|
97
|
+
predict: {
|
|
98
|
+
values: ['actual', 'class', 'estimate', 'note', 'state', 'status', 'target', 'unit'],
|
|
99
|
+
numbers: ['limit'],
|
|
100
|
+
},
|
|
101
|
+
current: { switches: ['json'] },
|
|
102
|
+
forget: { switches: ['archive', 'dry-run'], values: ['reason'] },
|
|
103
|
+
inspect: {},
|
|
104
|
+
context: {
|
|
105
|
+
switches: ['auto', 'cross-project', 'pinned-only'],
|
|
106
|
+
values: ['budget', 'format', 'framing', 'include-recent', 'runtime', 'scope'],
|
|
107
|
+
numbers: ['limit'],
|
|
108
|
+
},
|
|
109
|
+
hook: {},
|
|
110
|
+
setup: { switches: ['all', 'dry-run', 'no-learn', 'no-schedule'] },
|
|
111
|
+
'daily-runner': {},
|
|
112
|
+
embed: { switches: ['global', 'reset-physics', 'status'] },
|
|
113
|
+
watch: {},
|
|
114
|
+
learn: { switches: ['git'], values: ['repos'], numbers: ['days'] },
|
|
115
|
+
promote: {},
|
|
116
|
+
sync: { switches: ['cross-project'] },
|
|
117
|
+
share: { switches: ['auto', 'dry-run', 'force'], numbers: ['min-score'] },
|
|
118
|
+
peers: { switches: ['all-tenants'] },
|
|
119
|
+
import: {
|
|
120
|
+
switches: ['agents', 'dry-run', 'global'],
|
|
121
|
+
values: ['chatgpt', 'claude', 'cursor', 'file', 'markdown', 'name', 'scope', 'vault'],
|
|
122
|
+
lists: ['tag'],
|
|
123
|
+
},
|
|
124
|
+
export: { values: ['format'] },
|
|
125
|
+
capture: { switches: ['dry-run', 'global', 'last-session', 'stdin'], values: ['file', 'log-file', 'transcript'] },
|
|
126
|
+
dashboard: { numbers: ['port'] },
|
|
127
|
+
wm: { switches: ['json'], values: ['content', 'importance', 'scope', 'session', 'task'], numbers: ['limit'] },
|
|
128
|
+
mcp: {},
|
|
129
|
+
serve: { values: ['host', 'tls-cert', 'tls-key'], numbers: ['port'] },
|
|
130
|
+
invalidate: { switches: ['churn', 'dry-run'], values: ['id', 'reason'] },
|
|
131
|
+
decide: { values: ['context', 'status', 'supersedes'], numbers: ['limit'] },
|
|
132
|
+
incident: { values: ['context', 'resolution', 'status'], numbers: ['limit'], lists: ['link'] },
|
|
133
|
+
process: { values: ['change', 'description', 'status'], numbers: ['limit'], lists: ['step'] },
|
|
134
|
+
policy: { values: ['change', 'from', 'name', 'status', 'text', 'to'], numbers: ['limit'] },
|
|
135
|
+
skill: { values: ['change', 'instructions', 'status', 'trigger'], numbers: ['limit'] },
|
|
136
|
+
brief: { switches: ['dry-run'], values: ['change', 'repo', 'status', 'summary'], numbers: ['limit'] },
|
|
137
|
+
note: { values: ['change', 'customer', 'status', 'text'], numbers: ['limit'] },
|
|
138
|
+
graph: { switches: ['json', 'open'], values: ['entity', 'format', 'out'] },
|
|
139
|
+
};
|
|
140
|
+
const FIELD_KINDS = [['switches', 'switch'], ['values', 'value'], ['numbers', 'number'], ['lists', 'list']];
|
|
141
|
+
const DECLARED = new Map([GLOBAL_FLAGS, ...Object.values(VERB_FLAGS)].map((verb) => [
|
|
142
|
+
verb,
|
|
143
|
+
new Map(FIELD_KINDS.flatMap(([field, kind]) => (verb[field] ?? []).map((name) => [name, kind]))),
|
|
144
|
+
]));
|
|
145
|
+
// A flag typed on a verb that does not declare it still has to parse: it takes the kind its
|
|
146
|
+
// declaring verbs agree on, and where they differ it is a plain value.
|
|
147
|
+
const SHARED_KIND = (() => {
|
|
148
|
+
const shared = new Map();
|
|
149
|
+
for (const kinds of DECLARED.values()) {
|
|
150
|
+
for (const [name, kind] of kinds)
|
|
151
|
+
shared.set(name, (shared.get(name) ?? kind) === kind ? kind : 'value');
|
|
152
|
+
}
|
|
153
|
+
return shared;
|
|
154
|
+
})();
|
|
155
|
+
/** How parseArgs reads `--name` on the verb with these flags; `undefined` is a command the table lacks. */
|
|
156
|
+
export function flagKind(verb, name) {
|
|
157
|
+
return (verb ? DECLARED.get(verb)?.get(name) : undefined) ?? SHARED_KIND.get(name) ?? 'value';
|
|
158
|
+
}
|
|
159
|
+
/** Whether any verb, or the entry point, reads `--name`. */
|
|
160
|
+
export function isKnownFlag(name) {
|
|
161
|
+
return SHARED_KIND.has(name);
|
|
162
|
+
}
|
|
163
|
+
/** The typed flags this verb does not read, in the order typed. */
|
|
164
|
+
export function undeclaredFlags(verb, typed) {
|
|
165
|
+
const declared = DECLARED.get(verb);
|
|
166
|
+
const global = DECLARED.get(GLOBAL_FLAGS);
|
|
167
|
+
return typed.filter((name) => !declared?.has(name) && !global?.has(name));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=flags.js.map
|
package/dist/cli/goals.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { type CliFlags } from './flag-values.js';
|
|
2
|
+
export declare function cmdGoal(hippoRoot: string, args: string[], flags: CliFlags): void;
|
|
2
3
|
//# sourceMappingURL=goals.d.ts.map
|
package/dist/cli/goals.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// `hippo goal`: the per-session goal stack that recall boosts.
|
|
2
|
-
import { envHippoSessionId } from '../env.js';
|
|
3
|
-
import * as api from '../api.js';
|
|
4
|
-
import { resolveTenantId } from '../tenant.js';
|
|
2
|
+
import { envHippoSessionId } from '../util/env.js';
|
|
3
|
+
import * as api from '../api/index.js';
|
|
4
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
5
5
|
import { printError } from './output.js';
|
|
6
|
+
import { boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
7
8
|
// `hippo goal <push|list|complete|suspend|resume>`
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
@@ -29,6 +30,35 @@ function resolveGoalSession(flags) {
|
|
|
29
30
|
: resolveTenantId({})).trim() || 'default';
|
|
30
31
|
return { sessionId, tenantId };
|
|
31
32
|
}
|
|
33
|
+
function readGoalPolicy(flags) {
|
|
34
|
+
const policyRaw = flags['policy'];
|
|
35
|
+
if (policyRaw === true) {
|
|
36
|
+
printError('--policy requires a value (e.g., --policy error-prioritized)');
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
if (typeof policyRaw !== 'string')
|
|
40
|
+
return undefined;
|
|
41
|
+
if (!GOAL_POLICY_TYPES.includes(policyRaw)) {
|
|
42
|
+
printError(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
return { policyType: policyRaw };
|
|
46
|
+
}
|
|
47
|
+
function readGoalLevel(flags) {
|
|
48
|
+
const levelRaw = flags['level'];
|
|
49
|
+
if (levelRaw === true) {
|
|
50
|
+
printError('--level requires a value (e.g., --level 1)');
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
if (levelRaw === undefined)
|
|
54
|
+
return undefined;
|
|
55
|
+
const parsed = Number(levelRaw);
|
|
56
|
+
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
|
|
57
|
+
printError('--level must be an integer in [0, 2]');
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
return parsed;
|
|
61
|
+
}
|
|
32
62
|
function cmdGoalPush(hippoRoot, args, flags) {
|
|
33
63
|
const rawName = args.join(' ').trim();
|
|
34
64
|
if (!rawName) {
|
|
@@ -41,45 +71,20 @@ function cmdGoalPush(hippoRoot, args, flags) {
|
|
|
41
71
|
printError('note: stripped control characters from goal name');
|
|
42
72
|
}
|
|
43
73
|
const { sessionId, tenantId } = resolveGoalSession(flags);
|
|
44
|
-
|
|
45
|
-
const policyRaw = flags['policy'];
|
|
46
|
-
if (policyRaw === true) {
|
|
47
|
-
printError('--policy requires a value (e.g., --policy error-prioritized)');
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
if (typeof policyRaw === 'string') {
|
|
51
|
-
if (!GOAL_POLICY_TYPES.includes(policyRaw)) {
|
|
52
|
-
printError(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
policy = { policyType: policyRaw };
|
|
56
|
-
}
|
|
74
|
+
const policy = readGoalPolicy(flags);
|
|
57
75
|
const successRaw = flags['success'];
|
|
58
76
|
if (successRaw === true) {
|
|
59
77
|
printError('--success requires a value (e.g., --success "<condition>")');
|
|
60
78
|
process.exit(1);
|
|
61
79
|
}
|
|
62
|
-
const successCondition =
|
|
63
|
-
const
|
|
64
|
-
let level;
|
|
65
|
-
if (levelRaw === true) {
|
|
66
|
-
printError('--level requires a value (e.g., --level 1)');
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
if (levelRaw !== undefined) {
|
|
70
|
-
const parsed = Number(levelRaw);
|
|
71
|
-
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
|
|
72
|
-
printError('--level must be an integer in [0, 2]');
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
level = parsed;
|
|
76
|
-
}
|
|
80
|
+
const successCondition = stringFlag(flags, 'success');
|
|
81
|
+
const level = readGoalLevel(flags);
|
|
77
82
|
const parentRaw = flags['parent'];
|
|
78
83
|
if (parentRaw === true) {
|
|
79
84
|
printError('--parent requires a value (e.g., --parent <goalId>)');
|
|
80
85
|
process.exit(1);
|
|
81
86
|
}
|
|
82
|
-
const parentGoalId =
|
|
87
|
+
const parentGoalId = stringFlag(flags, 'parent');
|
|
83
88
|
const goal = api.goalPush(goalContext(hippoRoot, tenantId), {
|
|
84
89
|
sessionId,
|
|
85
90
|
goalName: name,
|
|
@@ -95,7 +100,7 @@ function goalContext(hippoRoot, tenantId = resolveTenantId({})) {
|
|
|
95
100
|
}
|
|
96
101
|
function cmdGoalList(hippoRoot, flags) {
|
|
97
102
|
const { sessionId, tenantId } = resolveGoalSession(flags);
|
|
98
|
-
const showAll =
|
|
103
|
+
const showAll = boolFlag(flags, 'all');
|
|
99
104
|
const goals = api.goalList(goalContext(hippoRoot, tenantId), { sessionId, all: showAll });
|
|
100
105
|
if (goals.length === 0) {
|
|
101
106
|
console.log('(no goals)');
|
|
@@ -143,7 +148,7 @@ function cmdGoalComplete(hippoRoot, args, flags) {
|
|
|
143
148
|
}
|
|
144
149
|
outcomeScore = parsed;
|
|
145
150
|
}
|
|
146
|
-
const noPropagate = flags
|
|
151
|
+
const noPropagate = flagIsTrue(flags, 'no-propagate');
|
|
147
152
|
api.goalComplete(goalContext(hippoRoot), id, { outcomeScore, noPropagate });
|
|
148
153
|
console.log('ok');
|
|
149
154
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { HookRuntime } from '../core/capture-contract.js';
|
|
2
|
+
import { type DeliveryEventType, type DeliveryRecorder } from '../store/delivery-recorder.js';
|
|
3
|
+
import type { CliFlags } from './flag-values.js';
|
|
4
|
+
/**
|
|
5
|
+
* Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
|
|
6
|
+
* `__session-end-worker` subcommand (not user-facing). Failures in one stage
|
|
7
|
+
* do not block the other.
|
|
8
|
+
*/
|
|
9
|
+
/** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
|
|
10
|
+
export declare function logSessionEndImport(logFile: string | null, transcriptPath: string | undefined): void;
|
|
11
|
+
/**
|
|
12
|
+
* Best-effort log line for the snapshot-close step in
|
|
13
|
+
* `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
|
|
14
|
+
* `logFile` only for their own duration (the tee is restored before this
|
|
15
|
+
* runs), so a plain `console.log` here would be silently discarded under
|
|
16
|
+
* the detached worker's `stdio: 'ignore'` — write straight to the file
|
|
17
|
+
* instead, matching capture.ts's `appendPreCompactLog` convention.
|
|
18
|
+
*/
|
|
19
|
+
export declare function appendSessionEndCloseLog(logFile: string | null, message: string, opts?: {
|
|
20
|
+
startFresh?: boolean;
|
|
21
|
+
}): void;
|
|
22
|
+
export declare function hostSessionId(): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Compaction drops the pinned blocks the per-prompt hook injected
|
|
25
|
+
* earlier, so record a `reset` for the payload's session and the next prompt
|
|
26
|
+
* injects again even if nothing changed. `requiredSource` limits it to hook
|
|
27
|
+
* payloads with that `source` (SessionStart fires for other reasons too).
|
|
28
|
+
* Best-effort and silent: a malformed payload records nothing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resetHookInjection(hippoRoot: string, stdinText: string | undefined, requiredSource: string | null): void;
|
|
31
|
+
/**
|
|
32
|
+
* The store a Claude Code hook writes to: the project store when there is
|
|
33
|
+
* one, else an existing global store, else the project path (which the hook
|
|
34
|
+
* then skips, since hooks fire in every directory and must not create one).
|
|
35
|
+
* Pre-compact and compact-resume must agree, or a snapshot saved to one store
|
|
36
|
+
* is looked for in the other.
|
|
37
|
+
*/
|
|
38
|
+
export declare function hookStoreRoot(hippoRoot: string): string;
|
|
39
|
+
/** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
|
|
40
|
+
export declare function hookRuntime(flags: CliFlags): HookRuntime;
|
|
41
|
+
/** A delivery recorder when the ledger store enables one, else null; never throws. */
|
|
42
|
+
export declare function startDeliveryRecorder(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime, eventType?: DeliveryEventType): DeliveryRecorder | null;
|
|
43
|
+
/** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
|
|
44
|
+
export declare function payloadCwdRoot(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime): string;
|
|
45
|
+
/** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's work with one warning, exit 0. */
|
|
46
|
+
export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
|
|
47
|
+
/** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
|
|
48
|
+
export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean): boolean;
|
|
49
|
+
//# sourceMappingURL=hook-runtime.d.ts.map
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// What the hook commands share: session id, store choice, delivery recorder, session-end log and store-busy handling.
|
|
2
|
+
import { envClaudeCodeSessionId, envHippoSessionId } from '../util/env.js';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { getHippoRoot, isInitialized } from '../store/open.js';
|
|
6
|
+
import { loadConfig } from '../core/config.js';
|
|
7
|
+
import { createDeliveryRecorder } from '../store/delivery-recorder.js';
|
|
8
|
+
import { isSqliteBusy, noteStoreBusy, runWithRequestStores, HOOK_DB_WAIT_MS } from '../db/index.js';
|
|
9
|
+
import { bookTokenUse, ledgerRoot } from '../api/ledger-db.js';
|
|
10
|
+
import { sessionPilotArm } from '../api/pilot-arm.js';
|
|
11
|
+
import { hookPayloadSessionId, hookPayloadString, isSubagentPayload } from '../store/token-ledger.js';
|
|
12
|
+
import { blockHash } from '../util/token-text.js';
|
|
13
|
+
import { importAtSessionEnd, currentMachine } from '../agent-memories/sync.js';
|
|
14
|
+
import { summaryLine } from '../agent-memories/report.js';
|
|
15
|
+
import { isGlobalStoreRoot } from '../core/project-identity.js';
|
|
16
|
+
import { getGlobalRoot } from '../sharing/shared.js';
|
|
17
|
+
import { sanitizeLogMessage } from '../capture/compact.js';
|
|
18
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
19
|
+
import { errorMessage, log } from '../util/log.js';
|
|
20
|
+
import { printError } from './output.js';
|
|
21
|
+
/**
|
|
22
|
+
* Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
|
|
23
|
+
* `__session-end-worker` subcommand (not user-facing). Failures in one stage
|
|
24
|
+
* do not block the other.
|
|
25
|
+
*/
|
|
26
|
+
/** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
|
|
27
|
+
export function logSessionEndImport(logFile, transcriptPath) {
|
|
28
|
+
try {
|
|
29
|
+
const report = importAtSessionEnd(process.cwd(), transcriptPath, { machine: currentMachine() });
|
|
30
|
+
const line = summaryLine(report);
|
|
31
|
+
if (line !== null)
|
|
32
|
+
appendSessionEndCloseLog(logFile, line);
|
|
33
|
+
for (const warning of report.warnings)
|
|
34
|
+
appendSessionEndCloseLog(logFile, `agent memories: ${warning}`);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
appendSessionEndCloseLog(logFile, `agent memory import failed: ${errorMessage(err)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Best-effort log line for the snapshot-close step in
|
|
42
|
+
* `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
|
|
43
|
+
* `logFile` only for their own duration (the tee is restored before this
|
|
44
|
+
* runs), so a plain `console.log` here would be silently discarded under
|
|
45
|
+
* the detached worker's `stdio: 'ignore'` — write straight to the file
|
|
46
|
+
* instead, matching capture.ts's `appendPreCompactLog` convention.
|
|
47
|
+
*/
|
|
48
|
+
export function appendSessionEndCloseLog(logFile, message, opts = {}) {
|
|
49
|
+
if (!logFile)
|
|
50
|
+
return;
|
|
51
|
+
try {
|
|
52
|
+
fs.mkdirSync(path.dirname(logFile), { recursive: true });
|
|
53
|
+
// sanitizeLogMessage: `message` interpolates the payload-controlled
|
|
54
|
+
// session_id — same log-forgery guard appendPreCompactLog applies.
|
|
55
|
+
const write = opts.startFresh ? fs.writeFileSync : fs.appendFileSync;
|
|
56
|
+
write(logFile, `[hippo] ${new Date().toISOString()} ${sanitizeLogMessage(message)}\n`, 'utf8');
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// Best-effort only: a log-write failure must never fail the hook.
|
|
60
|
+
log.debug(`session-end log not written: ${errorMessage(err)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Claude Code exports its own session var, not ours; without the fallback agent-run recalls trace with no session.
|
|
64
|
+
export function hostSessionId() {
|
|
65
|
+
return envHippoSessionId() ?? envClaudeCodeSessionId();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Compaction drops the pinned blocks the per-prompt hook injected
|
|
69
|
+
* earlier, so record a `reset` for the payload's session and the next prompt
|
|
70
|
+
* injects again even if nothing changed. `requiredSource` limits it to hook
|
|
71
|
+
* payloads with that `source` (SessionStart fires for other reasons too).
|
|
72
|
+
* Best-effort and silent: a malformed payload records nothing.
|
|
73
|
+
*/
|
|
74
|
+
export function resetHookInjection(hippoRoot, stdinText, requiredSource) {
|
|
75
|
+
const sessionId = hookPayloadSessionId(stdinText, requiredSource);
|
|
76
|
+
// A sub-agent's compaction leaves its parent's context, and the blocks in it, as they were.
|
|
77
|
+
if (sessionId === null || isSubagentPayload(stdinText))
|
|
78
|
+
return;
|
|
79
|
+
bookTokenUse(hippoRoot, {
|
|
80
|
+
tenantId: resolveTenantId({}), sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The store a Claude Code hook writes to: the project store when there is
|
|
85
|
+
* one, else an existing global store, else the project path (which the hook
|
|
86
|
+
* then skips, since hooks fire in every directory and must not create one).
|
|
87
|
+
* Pre-compact and compact-resume must agree, or a snapshot saved to one store
|
|
88
|
+
* is looked for in the other.
|
|
89
|
+
*/
|
|
90
|
+
export function hookStoreRoot(hippoRoot) {
|
|
91
|
+
if (isInitialized(hippoRoot))
|
|
92
|
+
return hippoRoot;
|
|
93
|
+
const globalRoot = getGlobalRoot();
|
|
94
|
+
return isInitialized(globalRoot) ? globalRoot : hippoRoot;
|
|
95
|
+
}
|
|
96
|
+
/** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
|
|
97
|
+
export function hookRuntime(flags) {
|
|
98
|
+
return flags['runtime'] === 'copilot' || flags['format'] === 'copilot' ? 'copilot' : 'claude-code';
|
|
99
|
+
}
|
|
100
|
+
/** A delivery recorder when the ledger store enables one, else null; never throws. */
|
|
101
|
+
export function startDeliveryRecorder(hippoRoot, stdinText, runtime, eventType) {
|
|
102
|
+
try {
|
|
103
|
+
// The same store withLedgerDb writes the token ledger to, so its config governs both.
|
|
104
|
+
const root = ledgerRoot(hippoRoot);
|
|
105
|
+
if (root === null || !loadConfig(root).deliveryLedger.enabled)
|
|
106
|
+
return null;
|
|
107
|
+
return createDeliveryRecorder({
|
|
108
|
+
root,
|
|
109
|
+
storeHash: blockHash(path.resolve(root)),
|
|
110
|
+
writeStore: isGlobalStoreRoot(root) ? 'global' : 'local',
|
|
111
|
+
tenantId: resolveTenantId({}),
|
|
112
|
+
stdinText,
|
|
113
|
+
envSessionId: hostSessionId(),
|
|
114
|
+
runtime: runtime === 'copilot' ? 'copilot' : undefined,
|
|
115
|
+
eventType,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
// The hook's one-line stderr contract pins this exact text, so it bypasses the leveled logger.
|
|
120
|
+
printError(`[hippo] delivery ledger skipped:${errorMessage(error)}`);
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
|
|
125
|
+
export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
|
|
126
|
+
const cwd = runtime === 'copilot' ? hookPayloadString(stdinText, 'cwd') : null;
|
|
127
|
+
if (cwd === null || cwd.trim() === '')
|
|
128
|
+
return hippoRoot;
|
|
129
|
+
try {
|
|
130
|
+
// Moving, not just re-rooting, keeps project identity, scope, handoff evidence and the session-end worker on that folder too.
|
|
131
|
+
process.chdir(cwd);
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
log.warn(`hippo: payload cwd ${cwd} is not usable, so the hook stays in ${process.cwd()}: ${errorMessage(err)}`);
|
|
135
|
+
return hippoRoot;
|
|
136
|
+
}
|
|
137
|
+
return getHippoRoot(process.cwd());
|
|
138
|
+
}
|
|
139
|
+
/** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's work with one warning, exit 0. */
|
|
140
|
+
export async function runHookWithStores(fn) {
|
|
141
|
+
try {
|
|
142
|
+
return await runWithRequestStores(fn, { busyWaitMs: HOOK_DB_WAIT_MS, failFastWhenBusy: true });
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (!isSqliteBusy(error))
|
|
146
|
+
throw error;
|
|
147
|
+
noteStoreBusy('hook skipped');
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
|
|
152
|
+
export function inPilotHoldout(hippoRoot, tenantId, sessionId, write) {
|
|
153
|
+
return sessionPilotArm(hippoRoot, tenantId, sessionId, write) === 'holdout';
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=hook-runtime.js.map
|
package/dist/cli/init.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { type CliFlags } from './flag-values.js';
|
|
2
|
+
export declare function cmdInit(hippoRoot: string, flags: CliFlags): void;
|
|
2
3
|
//# sourceMappingURL=init.d.ts.map
|