hippo-memory 1.69.0 → 1.71.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 +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- 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/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- 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} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- 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 +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -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/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- 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 +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- 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 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- 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 +5 -13
- package/dist/capture/command.js +57 -60
- 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 +8 -16
- package/dist/capture/compact.js +56 -47
- 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} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- 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} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- 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.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- 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.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- 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} +7 -7
- 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} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -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 +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- 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/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- 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} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- 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 +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- 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} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- 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 +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- 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 +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- 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 +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -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/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- 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 -3
- package/dist/search/boosts.js +36 -15
- 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/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -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} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- 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/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- 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 +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- 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 +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- 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 +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- 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/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- 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 +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- 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 +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- 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 +61 -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 +29 -0
- package/dist/store/sqlite/executor.js +287 -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 +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -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 +23 -0
- package/dist/store/sqlite/store.js +294 -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 +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- 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} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- 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 +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- 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 +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- 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} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- 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 +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- 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/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- 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/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- 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/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /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/{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/{share-scrub.d.ts → capture/share-scrub.d.ts} +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/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +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/{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.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +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/{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/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/cli/init.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
// `hippo init`: create a store and wire the detected agents' instruction files, hooks and daily runner.
|
|
2
|
-
import { envSkipAutoIntegrations } from '../env.js';
|
|
2
|
+
import { envSkipAutoIntegrations } from '../util/env.js';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
import * as os from 'os';
|
|
6
6
|
import { installJsonHooks } from '../hooks/json-hooks.js';
|
|
7
|
+
import { writeFileAtomic } from '../util/atomic-write.js';
|
|
7
8
|
import { isCodexPresent } from '../hooks/shared.js';
|
|
8
9
|
import { isCodexWrapperInstalled } from '../hooks/codex-wrapper.js';
|
|
9
10
|
import { installOpencodePlugin } from '../hooks/opencode.js';
|
|
10
11
|
import { isInitialized, initStore } from '../store/open.js';
|
|
11
12
|
import { loadAllEntries } from '../store/entry-reads.js';
|
|
12
|
-
import { isGitRepo } from '../autolearn.js';
|
|
13
|
+
import { isGitRepo } from '../learn/autolearn.js';
|
|
13
14
|
import { currentMachine, importForStore, importProjectMemories, importUserMemories } from '../agent-memories/sync.js';
|
|
14
15
|
import { emptyReport, mergeReports } from '../agent-memories/report.js';
|
|
15
|
-
import { getGlobalRoot, initGlobal } from '../
|
|
16
|
-
import { registerWorkspace } from '
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
17
|
+
import { registerWorkspace } from './scheduler.js';
|
|
18
|
+
import { stringFlag } from './flag-values.js';
|
|
19
|
+
import { printAgentImport } from './print.js';
|
|
20
|
+
import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable } from './install-steps.js';
|
|
21
|
+
import { learnFromRepo, skipLearnOnSharedStore } from './shared.js';
|
|
22
|
+
import { HOOK_MARKERS, HOOKS, hippoBlock } from '../hooks/hook-blocks.js';
|
|
19
23
|
function scanForGitRepos(rootDir, maxDepth = 2) {
|
|
20
24
|
const repos = [];
|
|
21
25
|
function walk(dir, depth) {
|
|
@@ -44,6 +48,51 @@ function scanForGitRepos(rootDir, maxDepth = 2) {
|
|
|
44
48
|
walk(rootDir, 0);
|
|
45
49
|
return repos;
|
|
46
50
|
}
|
|
51
|
+
/** Creates the repo's store when absent and registers it; returns whether it already existed. */
|
|
52
|
+
function initScannedRepo(repo, globalRoot) {
|
|
53
|
+
const repoHippo = path.join(repo, '.hippo');
|
|
54
|
+
const alreadyExists = isInitialized(repoHippo);
|
|
55
|
+
if (!alreadyExists) {
|
|
56
|
+
initStore(repoHippo);
|
|
57
|
+
}
|
|
58
|
+
registerWorkspace(globalRoot, repo);
|
|
59
|
+
return alreadyExists;
|
|
60
|
+
}
|
|
61
|
+
/** Seeds one scanned repo from git history and its agents' notes, unless --no-learn. */
|
|
62
|
+
function learnScannedRepo(repo, seedDays, learn, machine, agentImport) {
|
|
63
|
+
const repoHippo = path.join(repo, '.hippo');
|
|
64
|
+
let added = 0;
|
|
65
|
+
let lowInfo = 0;
|
|
66
|
+
if (learn && isGitRepo(repo)) {
|
|
67
|
+
const result = learnFromRepo(repoHippo, repo, seedDays, path.basename(repo));
|
|
68
|
+
added = result.added;
|
|
69
|
+
lowInfo = result.lowInfo;
|
|
70
|
+
}
|
|
71
|
+
if (learn)
|
|
72
|
+
mergeReports(agentImport, importProjectMemories(repoHippo, { machine }));
|
|
73
|
+
return { added, lowInfo };
|
|
74
|
+
}
|
|
75
|
+
function installScanHooks(repos) {
|
|
76
|
+
// User-level hooks only: a hippo block in each repo's CLAUDE.md or AGENTS.md would leave a diff in every repo.
|
|
77
|
+
const agents = detectAgentHooks(repos);
|
|
78
|
+
if (agents.length === 0) {
|
|
79
|
+
console.log(' No agent config found in these repositories. Run `hippo setup` to add hooks for the agents on this machine.');
|
|
80
|
+
}
|
|
81
|
+
installUserLevelHooks(agents, true);
|
|
82
|
+
}
|
|
83
|
+
function initGlobalFirst() {
|
|
84
|
+
const globalRoot = getGlobalRoot();
|
|
85
|
+
if (!isInitialized(globalRoot)) {
|
|
86
|
+
initGlobal();
|
|
87
|
+
console.log(`Initialized global store at ${globalRoot}\n`);
|
|
88
|
+
}
|
|
89
|
+
return globalRoot;
|
|
90
|
+
}
|
|
91
|
+
function printScanSummary(repoCount, totalLessons, totalLowInfo) {
|
|
92
|
+
console.log(`\n${repoCount} repositories, ${totalLessons} new lessons learned` +
|
|
93
|
+
(totalLowInfo > 0 ? `, ${totalLowInfo} low-information subject(s) dropped` : '') +
|
|
94
|
+
'.');
|
|
95
|
+
}
|
|
47
96
|
function cmdInitScan(scanDir, flags) {
|
|
48
97
|
const resolved = path.resolve(scanDir);
|
|
49
98
|
console.log(`Scanning ${resolved} for git repositories...\n`);
|
|
@@ -53,82 +102,70 @@ function cmdInitScan(scanDir, flags) {
|
|
|
53
102
|
return;
|
|
54
103
|
}
|
|
55
104
|
console.log(`Found ${repos.length} repositories:\n`);
|
|
56
|
-
|
|
57
|
-
const globalRoot = getGlobalRoot();
|
|
58
|
-
if (!isInitialized(globalRoot)) {
|
|
59
|
-
initGlobal();
|
|
60
|
-
console.log(`Initialized global store at ${globalRoot}\n`);
|
|
61
|
-
}
|
|
105
|
+
const globalRoot = initGlobalFirst();
|
|
62
106
|
let totalLessons = 0;
|
|
63
|
-
// Rolled up so the cross-repo summary reports the gate too
|
|
64
|
-
// already prints its own count inside learnFromRepo, but the aggregate
|
|
65
|
-
// line showed only what was ADDED - and the point of this change is
|
|
66
|
-
// that a dropped subject is never invisible.
|
|
107
|
+
// Rolled up so the cross-repo summary reports the gate too: a dropped subject is never invisible.
|
|
67
108
|
let totalLowInfo = 0;
|
|
68
109
|
const seedDays = parseInt(String(flags['days'] ?? '365'), 10);
|
|
69
110
|
const machine = currentMachine();
|
|
70
111
|
const agentImport = emptyReport();
|
|
112
|
+
const learn = !flags['no-learn'];
|
|
71
113
|
for (const repo of repos) {
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
initStore(repoHippo);
|
|
77
|
-
}
|
|
78
|
-
registerWorkspace(globalRoot, repo);
|
|
79
|
-
// Learn from git history
|
|
80
|
-
let added = 0;
|
|
81
|
-
if (!flags['no-learn'] && isGitRepo(repo)) {
|
|
82
|
-
const result = learnFromRepo(repoHippo, repo, seedDays, name);
|
|
83
|
-
added = result.added;
|
|
84
|
-
totalLessons += added;
|
|
85
|
-
totalLowInfo += result.lowInfo;
|
|
86
|
-
}
|
|
87
|
-
if (!flags['no-learn'])
|
|
88
|
-
mergeReports(agentImport, importProjectMemories(repoHippo, { machine }));
|
|
114
|
+
const alreadyExists = initScannedRepo(repo, globalRoot);
|
|
115
|
+
const { added, lowInfo } = learnScannedRepo(repo, seedDays, learn, machine, agentImport);
|
|
116
|
+
totalLessons += added;
|
|
117
|
+
totalLowInfo += lowInfo;
|
|
89
118
|
const status = alreadyExists ? 'existing' : 'new';
|
|
90
|
-
const entries = loadAllEntries(
|
|
91
|
-
console.log(` ${
|
|
119
|
+
const entries = loadAllEntries(path.join(repo, '.hippo'));
|
|
120
|
+
console.log(` ${path.basename(repo).padEnd(25)} ${status.padEnd(10)} ${entries.length} memories${added > 0 ? ` (+${added} from git)` : ''}`);
|
|
92
121
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
'.');
|
|
96
|
-
if (!flags['no-learn']) {
|
|
122
|
+
printScanSummary(repos.length, totalLessons, totalLowInfo);
|
|
123
|
+
if (learn) {
|
|
97
124
|
mergeReports(agentImport, importUserMemories(globalRoot, { machine }));
|
|
98
125
|
printAgentImport(agentImport, '');
|
|
99
126
|
}
|
|
100
127
|
console.log(`Global store: ${globalRoot}`);
|
|
101
|
-
if (initInstallsIntegrations(flags))
|
|
102
|
-
|
|
103
|
-
const agents = detectAgentHooks(repos);
|
|
104
|
-
if (agents.length === 0) {
|
|
105
|
-
console.log(' No agent config found in these repositories. Run `hippo setup` to add hooks for the agents on this machine.');
|
|
106
|
-
}
|
|
107
|
-
installUserLevelHooks(agents, true);
|
|
108
|
-
}
|
|
128
|
+
if (initInstallsIntegrations(flags))
|
|
129
|
+
installScanHooks(repos);
|
|
109
130
|
if (!flags['no-schedule']) {
|
|
110
131
|
setupDailySchedule(globalRoot);
|
|
111
132
|
}
|
|
112
133
|
console.log(`\nRun \`hippo sleep\` in any project to consolidate and auto-share to global.`);
|
|
113
134
|
}
|
|
114
|
-
|
|
135
|
+
function initGlobalOnly(flags) {
|
|
136
|
+
const globalRoot = getGlobalRoot();
|
|
137
|
+
if (isInitialized(globalRoot)) {
|
|
138
|
+
console.log('Already initialized global store at', globalRoot);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
initGlobal();
|
|
142
|
+
console.log('Initialized global Hippo store at', globalRoot);
|
|
143
|
+
}
|
|
144
|
+
if (!flags['no-learn'])
|
|
145
|
+
printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }));
|
|
146
|
+
}
|
|
147
|
+
function seedFromGitHistory(hippoRoot) {
|
|
148
|
+
if (!isGitRepo(process.cwd()))
|
|
149
|
+
return;
|
|
150
|
+
const seedDays = 30;
|
|
151
|
+
console.log(`\n Seeding memories from last ${seedDays} days of git history...`);
|
|
152
|
+
const { added, skipped } = learnFromRepo(hippoRoot, process.cwd(), seedDays);
|
|
153
|
+
if (added > 0) {
|
|
154
|
+
console.log(` Learned ${added} lessons from git (${skipped} duplicates skipped).`);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.log(` No matching commits found in git history.`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export function handleInit({ hippoRoot, flags }) {
|
|
115
161
|
// Handle --scan mode
|
|
116
162
|
if (flags['scan']) {
|
|
117
|
-
const scanDir =
|
|
163
|
+
const scanDir = stringFlag(flags, 'scan') ?? os.homedir();
|
|
118
164
|
cmdInitScan(scanDir, flags);
|
|
119
165
|
return;
|
|
120
166
|
}
|
|
121
167
|
if (flags['global']) {
|
|
122
|
-
|
|
123
|
-
if (isInitialized(globalRoot)) {
|
|
124
|
-
console.log('Already initialized global store at', globalRoot);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
initGlobal();
|
|
128
|
-
console.log('Initialized global Hippo store at', globalRoot);
|
|
129
|
-
}
|
|
130
|
-
if (!flags['no-learn'])
|
|
131
|
-
printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }));
|
|
168
|
+
initGlobalOnly(flags);
|
|
132
169
|
return;
|
|
133
170
|
}
|
|
134
171
|
const alreadyExists = isInitialized(hippoRoot);
|
|
@@ -152,19 +189,8 @@ export function cmdInit(hippoRoot, flags) {
|
|
|
152
189
|
}
|
|
153
190
|
const learn = !flags['no-learn'] && !skipLearnOnSharedStore(hippoRoot);
|
|
154
191
|
// Seed with git history on first init (unless --no-learn)
|
|
155
|
-
if (!alreadyExists && learn && !flags['global'])
|
|
156
|
-
|
|
157
|
-
const seedDays = 30;
|
|
158
|
-
console.log(`\n Seeding memories from last ${seedDays} days of git history...`);
|
|
159
|
-
const { added, skipped } = learnFromRepo(hippoRoot, process.cwd(), seedDays);
|
|
160
|
-
if (added > 0) {
|
|
161
|
-
console.log(` Learned ${added} lessons from git (${skipped} duplicates skipped).`);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
console.log(` No matching commits found in git history.`);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
192
|
+
if (!alreadyExists && learn && !flags['global'])
|
|
193
|
+
seedFromGitHistory(hippoRoot);
|
|
168
194
|
// Every run, not only the first: an agent's notes change between inits.
|
|
169
195
|
if (learn)
|
|
170
196
|
printAgentImport(importForStore(hippoRoot, { machine: currentMachine() }));
|
|
@@ -222,7 +248,7 @@ function patchInstructionFiles(dir, agents) {
|
|
|
222
248
|
}
|
|
223
249
|
const block = `${HOOK_MARKERS.start}\n${hookDef.content}\n${HOOK_MARKERS.end}`;
|
|
224
250
|
const sep = existing.endsWith('\n') ? '\n' : '\n\n';
|
|
225
|
-
|
|
251
|
+
writeFileAtomic(targetPath, existing + sep + block + '\n');
|
|
226
252
|
console.log(` Auto-installed ${hook} hook in ${hookDef.file}`);
|
|
227
253
|
}
|
|
228
254
|
}
|
|
@@ -237,9 +263,56 @@ function refreshShippedBlock(filePath, text, hook) {
|
|
|
237
263
|
console.log(` Left the edited hippo block in ${name} as is; \`hippo hook install ${hook}\` replaces it.`);
|
|
238
264
|
return;
|
|
239
265
|
}
|
|
240
|
-
|
|
266
|
+
writeFileAtomic(filePath, `${text.slice(0, start)}${eol}${HOOKS[owner].content.replace(/\n/g, eol)}${eol}${text.slice(end)}`);
|
|
241
267
|
console.log(` Refreshed the ${owner} hippo block in ${name}`);
|
|
242
268
|
}
|
|
269
|
+
function installClaudeCodeSettingsHooks(hook) {
|
|
270
|
+
const result = installJsonHooks(hook);
|
|
271
|
+
warnClaudeSettingsUnusable(result, ' ');
|
|
272
|
+
if (result.installedSessionEnd) {
|
|
273
|
+
console.log(` Auto-installed hippo session-end SessionEnd hook in ${hook} settings`);
|
|
274
|
+
}
|
|
275
|
+
if (result.installedSessionStart) {
|
|
276
|
+
console.log(` Auto-installed hippo last-sleep SessionStart hook in ${hook} settings`);
|
|
277
|
+
}
|
|
278
|
+
if (result.installedUserPromptSubmit) {
|
|
279
|
+
console.log(` Auto-installed hippo pinned-inject UserPromptSubmit hook in ${hook} settings`);
|
|
280
|
+
}
|
|
281
|
+
if (result.installedPreCompact) {
|
|
282
|
+
console.log(` Auto-installed hippo pre-compact PreCompact hook in ${hook} settings`);
|
|
283
|
+
}
|
|
284
|
+
if (result.installedCompactResume) {
|
|
285
|
+
console.log(` Auto-installed hippo compact-resume SessionStart(compact) hook in ${hook} settings`);
|
|
286
|
+
}
|
|
287
|
+
if (result.installedPostCompact) {
|
|
288
|
+
console.log(` Auto-installed hippo post-compact PostCompact hook in ${hook} settings`);
|
|
289
|
+
}
|
|
290
|
+
if (result.installedCaptureError) {
|
|
291
|
+
console.log(` Auto-installed hippo capture-error PostToolUseFailure hook in ${hook} settings`);
|
|
292
|
+
}
|
|
293
|
+
if (result.migratedFromStop) {
|
|
294
|
+
console.log(` Migrated legacy Stop hook → SessionEnd (no longer runs every turn)`);
|
|
295
|
+
}
|
|
296
|
+
if (result.migratedSplitSessionEnd) {
|
|
297
|
+
console.log(` Migrated split sleep+capture SessionEnd entries → single detached hippo session-end`);
|
|
298
|
+
}
|
|
299
|
+
else if (result.migratedLegacySessionEnd) {
|
|
300
|
+
console.log(` Migrated legacy SessionEnd entry to the new detached form`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function installOpencodeUserPlugin() {
|
|
304
|
+
// opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in src/hooks/opencode.ts).
|
|
305
|
+
const result = installOpencodePlugin();
|
|
306
|
+
if (result.installed) {
|
|
307
|
+
console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
|
|
308
|
+
}
|
|
309
|
+
if (result.migratedLegacyHooks) {
|
|
310
|
+
console.log(` Removed legacy Claude Code-style hooks block from opencode.json — opencode can now launch`);
|
|
311
|
+
}
|
|
312
|
+
if (result.jsonRepairFailed) {
|
|
313
|
+
console.log(` WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
243
316
|
/** Claude Code settings hooks, Codex's hooks.json and the OpenCode plugin, under the home directory; idempotent, so re-running init adds newer hooks. */
|
|
244
317
|
function installUserLevelHooks(agents, codexHint) {
|
|
245
318
|
for (const hook of agents) {
|
|
@@ -250,58 +323,12 @@ function installUserLevelHooks(agents, codexHint) {
|
|
|
250
323
|
// Checked first so init never creates ~/.codex on a machine without Codex.
|
|
251
324
|
if (hook === 'codex' && isCodexPresent())
|
|
252
325
|
installCodexMemoryHooks(' ');
|
|
253
|
-
// For Claude Code, also install SessionEnd+SessionStart entries in
|
|
254
|
-
//
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
if (result.installedSessionEnd) {
|
|
260
|
-
console.log(` Auto-installed hippo session-end SessionEnd hook in ${hook} settings`);
|
|
261
|
-
}
|
|
262
|
-
if (result.installedSessionStart) {
|
|
263
|
-
console.log(` Auto-installed hippo last-sleep SessionStart hook in ${hook} settings`);
|
|
264
|
-
}
|
|
265
|
-
if (result.installedUserPromptSubmit) {
|
|
266
|
-
console.log(` Auto-installed hippo pinned-inject UserPromptSubmit hook in ${hook} settings`);
|
|
267
|
-
}
|
|
268
|
-
if (result.installedPreCompact) {
|
|
269
|
-
console.log(` Auto-installed hippo pre-compact PreCompact hook in ${hook} settings`);
|
|
270
|
-
}
|
|
271
|
-
if (result.installedCompactResume) {
|
|
272
|
-
console.log(` Auto-installed hippo compact-resume SessionStart(compact) hook in ${hook} settings`);
|
|
273
|
-
}
|
|
274
|
-
if (result.installedPostCompact) {
|
|
275
|
-
console.log(` Auto-installed hippo post-compact PostCompact hook in ${hook} settings`);
|
|
276
|
-
}
|
|
277
|
-
if (result.installedCaptureError) {
|
|
278
|
-
console.log(` Auto-installed hippo capture-error PostToolUseFailure hook in ${hook} settings`);
|
|
279
|
-
}
|
|
280
|
-
if (result.migratedFromStop) {
|
|
281
|
-
console.log(` Migrated legacy Stop hook → SessionEnd (no longer runs every turn)`);
|
|
282
|
-
}
|
|
283
|
-
if (result.migratedSplitSessionEnd) {
|
|
284
|
-
console.log(` Migrated split sleep+capture SessionEnd entries → single detached hippo session-end`);
|
|
285
|
-
}
|
|
286
|
-
else if (result.migratedLegacySessionEnd) {
|
|
287
|
-
console.log(` Migrated legacy SessionEnd entry to the new detached form`);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
else if (hook === 'opencode') {
|
|
291
|
-
// opencode uses a TS plugin, not Claude Code's JSON-hook schema.
|
|
292
|
-
// See OPENCODE_PLUGIN_SOURCE in src/hooks.ts for the plugin file
|
|
293
|
-
// content + design rationale.
|
|
294
|
-
const result = installOpencodePlugin();
|
|
295
|
-
if (result.installed) {
|
|
296
|
-
console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
|
|
297
|
-
}
|
|
298
|
-
if (result.migratedLegacyHooks) {
|
|
299
|
-
console.log(` Removed legacy Claude Code-style hooks block from opencode.json — opencode can now launch`);
|
|
300
|
-
}
|
|
301
|
-
if (result.jsonRepairFailed) {
|
|
302
|
-
console.log(` WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
326
|
+
// For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep with
|
|
327
|
+
// `hippo hook install claude-code` and `hippo setup`.
|
|
328
|
+
if (hook === 'claude-code')
|
|
329
|
+
installClaudeCodeSettingsHooks(hook);
|
|
330
|
+
else if (hook === 'opencode')
|
|
331
|
+
installOpencodeUserPlugin();
|
|
305
332
|
}
|
|
306
333
|
}
|
|
307
334
|
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type InstallResult } from '../hooks/json-hooks.js';
|
|
2
|
+
/** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
|
|
3
|
+
export declare function installCodexMemoryHooks(indent: string): void;
|
|
4
|
+
/** The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo can edit and so was left unchanged; true when it printed. */
|
|
5
|
+
export declare function warnClaudeSettingsUnusable(result: Pick<InstallResult, 'settingsPath' | 'invalidJson'>, indent: string, action?: 'install' | 'uninstall'): boolean;
|
|
6
|
+
export declare function setupDailySchedule(globalRoot: string): void;
|
|
7
|
+
//# sourceMappingURL=install-steps.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// The init and setup steps that touch the machine: Codex hooks, the settings.json warning and the daily schedule.
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { execFileSync, execSync } from 'child_process';
|
|
4
|
+
import { installJsonHooks } from '../hooks/json-hooks.js';
|
|
5
|
+
import { CODEX_TRUST_LINE } from '../hooks/shared.js';
|
|
6
|
+
import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg } from './scheduler.js';
|
|
7
|
+
/** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
|
|
8
|
+
export function installCodexMemoryHooks(indent) {
|
|
9
|
+
const result = installJsonHooks('codex');
|
|
10
|
+
if (result.invalidJson) {
|
|
11
|
+
console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo hook install codex\`.`);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const added = [
|
|
15
|
+
result.installedUserPromptSubmit ? 'UserPromptSubmit' : '',
|
|
16
|
+
result.installedCompactResume ? 'SessionStart(compact)' : '',
|
|
17
|
+
].filter(Boolean);
|
|
18
|
+
console.log(added.length > 0
|
|
19
|
+
? `${indent}Installed hippo's Codex memory hooks (${added.join(', ')}) in ${result.settingsPath}`
|
|
20
|
+
: `${indent}hippo's Codex memory hooks already in ${result.settingsPath}`);
|
|
21
|
+
console.log(`${indent}${CODEX_TRUST_LINE}`);
|
|
22
|
+
}
|
|
23
|
+
/** The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo can edit and so was left unchanged; true when it printed. */
|
|
24
|
+
export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
|
|
25
|
+
if (!result.invalidJson)
|
|
26
|
+
return false;
|
|
27
|
+
console.log(`${indent}WARNING: ${result.settingsPath} is not a JSON object hippo can merge into, so it was left unchanged; fix it, then run \`hippo hook ${action} claude-code\`.`);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
/** Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on Windows; skips if installed. */
|
|
31
|
+
/** Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`. */
|
|
32
|
+
const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
|
|
33
|
+
/** Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is missing. */
|
|
34
|
+
function schedulerTimedOut(err) {
|
|
35
|
+
return err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT';
|
|
36
|
+
}
|
|
37
|
+
function warnSchedulerTimedOut(command) {
|
|
38
|
+
console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner is not scheduled.`);
|
|
39
|
+
}
|
|
40
|
+
export function setupDailySchedule(globalRoot) {
|
|
41
|
+
const runnerDir = path.resolve(globalRoot);
|
|
42
|
+
if (hasUnsafeRunnerPathChars(runnerDir, process.platform)) {
|
|
43
|
+
console.log(` Skipping schedule: runner path contains unsafe characters.`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const isWindows = process.platform === 'win32';
|
|
47
|
+
const taskName = DAILY_TASK_NAME;
|
|
48
|
+
const cmd = buildDailyRunnerCommand(runnerDir);
|
|
49
|
+
if (isWindows)
|
|
50
|
+
scheduleOnWindows(taskName, cmd);
|
|
51
|
+
else
|
|
52
|
+
scheduleOnCrontab(taskName, cmd);
|
|
53
|
+
}
|
|
54
|
+
function scheduleOnWindows(taskName, cmd) {
|
|
55
|
+
// Check if task already exists
|
|
56
|
+
try {
|
|
57
|
+
const existing = execSync(`schtasks /query /tn "${taskName}" 2>nul`, { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
|
|
58
|
+
if (existing.includes(taskName)) {
|
|
59
|
+
return; // already scheduled
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
// A non-zero exit means the task does not exist yet, so it is created below.
|
|
64
|
+
if (schedulerTimedOut(err))
|
|
65
|
+
warnSchedulerTimedOut('schtasks /query');
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
execFileSync('schtasks', buildSchtasksCreateArgs(taskName, cmd), { stdio: 'pipe', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
|
|
69
|
+
console.log(` Scheduled machine-level daily runner (6:15am) via Task Scheduler: ${taskName}`);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
if (schedulerTimedOut(err))
|
|
73
|
+
warnSchedulerTimedOut('schtasks /create');
|
|
74
|
+
// No admin rights or schtasks unavailable, fall back to printing instructions
|
|
75
|
+
console.log(` To schedule the machine-level daily runner, run:`);
|
|
76
|
+
console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st 06:15`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function scheduleOnCrontab(taskName, cmd) {
|
|
80
|
+
// Unix: check crontab for existing entry
|
|
81
|
+
const marker = `# hippo:${taskName}`;
|
|
82
|
+
try {
|
|
83
|
+
const existing = execSync('crontab -l 2>/dev/null', { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
|
|
84
|
+
if (existing.includes(marker)) {
|
|
85
|
+
return; // already scheduled
|
|
86
|
+
}
|
|
87
|
+
const cronLine = `15 6 * * * ${cmd} ${marker}`;
|
|
88
|
+
const newCrontab = existing.trimEnd() + '\n' + cronLine + '\n';
|
|
89
|
+
execSync('crontab -', { input: newCrontab, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
|
|
90
|
+
console.log(` Scheduled machine-level daily runner (6:15am) via crontab`);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
if (schedulerTimedOut(err))
|
|
94
|
+
warnSchedulerTimedOut('crontab');
|
|
95
|
+
// No crontab or no permission: print the line for the user to add by hand.
|
|
96
|
+
const cronLine = `15 6 * * * ${cmd}`;
|
|
97
|
+
console.log(` To schedule the machine-level daily runner, add to crontab (crontab -e):`);
|
|
98
|
+
console.log(` ${cronLine}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=install-steps.js.map
|
package/dist/cli/last-sleep.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
1
2
|
/** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
|
|
2
3
|
export declare function sleepProblems(logText: string, bad: number): string | null;
|
|
3
4
|
/** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
|
|
4
5
|
* because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */
|
|
5
|
-
export declare function cmdLastSleep(hippoRoot: string, flags:
|
|
6
|
+
export declare function cmdLastSleep(hippoRoot: string, flags: CliFlags, out?: 'hook' | 'terminal'): void;
|
|
7
|
+
export declare function handleLastSleep({ hippoRoot, flags }: CommandContext): void;
|
|
6
8
|
//# sourceMappingURL=last-sleep.d.ts.map
|
package/dist/cli/last-sleep.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// `hippo last-sleep`: the previous session's sleep log for the debug log, and one problems line for the user.
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import { isStringValue } from '../capture-contract.js';
|
|
4
|
-
import { REPLAY_AFTER_MS } from '../compaction-record.js';
|
|
5
|
-
import { SPOOL_PROBLEM, spoolCounts } from '../compaction-spool.js';
|
|
3
|
+
import { isStringValue } from '../core/capture-contract.js';
|
|
4
|
+
import { REPLAY_AFTER_MS } from '../capture/compaction-record.js';
|
|
5
|
+
import { SPOOL_PROBLEM, spoolCounts } from '../capture/compaction-spool.js';
|
|
6
6
|
import { defaultSleepLogPath } from '../hooks/shared.js';
|
|
7
|
-
import { errorMessage } from '../log.js';
|
|
8
|
-
import { truncateCodePointSafe } from '../transcript-tail.js';
|
|
7
|
+
import { errorMessage, log } from '../util/log.js';
|
|
8
|
+
import { truncateCodePointSafe } from '../util/transcript-tail.js';
|
|
9
9
|
import { printError } from './output.js';
|
|
10
|
-
import { hookStoreRoot } from './
|
|
10
|
+
import { hookStoreRoot } from './hook-runtime.js';
|
|
11
11
|
const SLEEP_FAILED = '[hippo] sleep failed: ';
|
|
12
12
|
const FAILURE_CHARS = 120;
|
|
13
13
|
/** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
|
|
@@ -62,7 +62,12 @@ export function cmdLastSleep(hippoRoot, flags, out = process.stdout.isTTY ? 'ter
|
|
|
62
62
|
try {
|
|
63
63
|
fs.unlinkSync(logPath);
|
|
64
64
|
}
|
|
65
|
-
catch {
|
|
65
|
+
catch (err) {
|
|
66
|
+
log.debug(`last-sleep log not removed, it shows again next session: ${errorMessage(err)}`);
|
|
67
|
+
}
|
|
66
68
|
}
|
|
67
69
|
}
|
|
70
|
+
export function handleLastSleep({ hippoRoot, flags }) {
|
|
71
|
+
return cmdLastSleep(hippoRoot, flags);
|
|
72
|
+
}
|
|
68
73
|
//# sourceMappingURL=last-sleep.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type EmbeddingProvider } from '../
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
1
|
+
import { type EmbeddingProvider } from '../store/embeddings/provider.js';
|
|
2
|
+
import { type CommandContext } from './flag-values.js';
|
|
3
|
+
export declare function handleRefine({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
4
|
+
export declare function handleDedup({ hippoRoot, flags }: CommandContext): void;
|
|
5
|
+
export declare function handleEmbed({ hippoRoot, flags }: CommandContext, given?: EmbeddingProvider): Promise<void>;
|
|
5
6
|
//# sourceMappingURL=maintenance.d.ts.map
|