hippo-memory 1.70.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 +1 -1
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +14 -5
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +10 -5
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +2 -22
- package/dist/api/audit.d.ts +5 -1
- package/dist/api/audit.js +9 -1
- package/dist/api/auth.d.ts +13 -22
- package/dist/api/auth.js +34 -24
- package/dist/api/auto-sleep.js +2 -2
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +2 -15
- package/dist/api/context-select.js +3 -4
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +21 -38
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +7 -26
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +5 -26
- package/dist/api/forget.d.ts +5 -24
- package/dist/api/forget.js +5 -28
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/instruction-detect.js +16 -5
- package/dist/api/ledger-db.d.ts +2 -1
- package/dist/api/ledger-db.js +5 -3
- 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.js +5 -3
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +11 -19
- package/dist/api/prompt-hook.d.ts +4 -4
- package/dist/api/prompt-hook.js +10 -9
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.js +14 -6
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +16 -9
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +59 -60
- 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 +18 -1
- package/dist/api/remember.js +13 -1
- package/dist/api/sleep-run.d.ts +1 -3
- package/dist/api/sleep-run.js +17 -21
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +3 -10
- package/dist/api/types.d.ts +6 -29
- package/dist/api/types.js +4 -22
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +6 -22
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +16 -25
- package/dist/capture/compaction-record.js +101 -69
- package/dist/capture/compaction-spool.d.ts +1 -1
- package/dist/capture/compaction-spool.js +1 -1
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +13 -7
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +4 -18
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +6 -39
- package/dist/cli/audit-prune.js +6 -39
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +33 -34
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +57 -39
- package/dist/cli/briefs.d.ts +4 -4
- package/dist/cli/briefs.js +18 -22
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +31 -32
- package/dist/cli/client.d.ts +7 -27
- package/dist/cli/client.js +24 -43
- package/dist/cli/compact-resume-payload.js +3 -2
- package/dist/cli/context.d.ts +1 -2
- package/dist/cli/context.js +12 -8
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +62 -64
- package/dist/cli/correction-latency.d.ts +2 -14
- package/dist/cli/correction-latency.js +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +68 -92
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +33 -27
- package/dist/cli/decisions.d.ts +4 -4
- package/dist/cli/decisions.js +33 -47
- package/dist/cli/eval.js +15 -13
- 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 +6 -4
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +27 -10
- package/dist/cli/flags.d.ts +1 -0
- package/dist/cli/flags.js +1 -1
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/hook-runtime.d.ts +9 -27
- package/dist/cli/hook-runtime.js +15 -31
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +6 -12
- package/dist/cli/install-steps.js +3 -12
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +3 -0
- package/dist/cli/maintenance.d.ts +4 -4
- package/dist/cli/maintenance.js +14 -19
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +4 -4
- package/dist/cli/playbooks.js +23 -28
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +1 -4
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +1 -3
- package/dist/cli/provenance-coverage.d.ts +2 -6
- package/dist/cli/provenance-coverage.js +2 -6
- package/dist/cli/quality-repair-once.js +2 -2
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +55 -131
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +9 -36
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +122 -180
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +12 -18
- package/dist/cli/serve.js +21 -12
- package/dist/cli/session-hooks.d.ts +10 -18
- package/dist/cli/session-hooks.js +112 -113
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +19 -21
- package/dist/cli/shared.d.ts +9 -23
- package/dist/cli/shared.js +9 -32
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +15 -16
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +55 -98
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +66 -89
- package/dist/cli/usage.js +11 -5
- package/dist/cli.d.ts +66 -448
- package/dist/cli.js +87 -263
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +14 -49
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +12 -29
- package/dist/connectors/github/ingest.d.ts +2 -6
- package/dist/connectors/github/ingest.js +4 -10
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- 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 +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +2 -16
- package/dist/connectors/github/webhook.js +6 -22
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +2 -19
- package/dist/connectors/slack/ingest.d.ts +2 -3
- package/dist/connectors/slack/ingest.js +2 -3
- 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/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +2 -19
- package/dist/connectors/slack/webhook.js +5 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +6 -14
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +14 -75
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +6 -52
- package/dist/consolidate/dedupe.js +13 -71
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +4 -21
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +16 -104
- package/dist/consolidate/merge.js +10 -31
- package/dist/consolidate/merged-row.js +2 -1
- package/dist/consolidate/physics-pass.js +1 -3
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +14 -52
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +5 -17
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +6 -22
- package/dist/core/ablation.d.ts +4 -91
- package/dist/core/ablation.js +4 -91
- package/dist/core/ambient.d.ts +1 -8
- package/dist/core/ambient.js +1 -8
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +8 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +13 -14
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +41 -164
- package/dist/core/memory.js +51 -221
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +59 -122
- package/dist/core/project-identity.d.ts +17 -58
- package/dist/core/project-identity.js +17 -38
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +1 -1
- package/dist/db/busy.js +17 -8
- package/dist/db/connect.d.ts +1 -0
- package/dist/db/connect.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- 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 +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- 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 +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/open.d.ts +2 -0
- package/dist/db/open.js +17 -1
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +25 -36
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +8 -1
- package/dist/doctor.js +74 -19
- package/dist/entry/session-text.js +2 -1
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +74 -34
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +7 -34
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +19 -11
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +7 -33
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +14 -76
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +11 -39
- package/dist/hooks/codex-wrapper.js +2 -2
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +18 -57
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +9 -76
- package/dist/hooks/shared.d.ts +8 -17
- package/dist/hooks/shared.js +29 -20
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +9 -27
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +7 -35
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +25 -81
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/learn/autolearn.d.ts +14 -41
- package/dist/learn/autolearn.js +14 -41
- package/dist/learn/extract.js +2 -4
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +14 -66
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +9 -26
- package/dist/mcp/admin-tools.js +3 -5
- package/dist/mcp/memory-tools.js +4 -9
- package/dist/mcp/protocol.d.ts +8 -26
- package/dist/mcp/protocol.js +3 -6
- package/dist/mcp/recall-tools.js +3 -3
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +10 -26
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +48 -12
- package/dist/mcp/tools.js +5 -3
- package/dist/objects/customer-notes.d.ts +7 -42
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +12 -50
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/incidents.d.ts +7 -38
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/policies.d.ts +11 -89
- package/dist/objects/policies.js +11 -98
- package/dist/objects/processes.d.ts +7 -52
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +11 -55
- package/dist/objects/project-briefs.js +14 -75
- package/dist/objects/skills.d.ts +7 -42
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +6 -19
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +3 -31
- package/dist/rerankers/cross-encoder.js +4 -6
- package/dist/rerankers/jev.js +9 -6
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +2 -1
- package/dist/rerankers/outage-warning.js +2 -1
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +2 -2
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid.d.ts +2 -0
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.js +11 -8
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +7 -0
- package/dist/search/vector.js +35 -5
- package/dist/server/auth.d.ts +9 -28
- package/dist/server/auth.js +32 -25
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +63 -96
- package/dist/server/client-ip.d.ts +3 -19
- package/dist/server/client-ip.js +5 -28
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +10 -44
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +9 -17
- package/dist/server/route-table.js +42 -49
- package/dist/server/routes/admin.js +22 -28
- package/dist/server/routes/customer-notes.js +7 -12
- package/dist/server/routes/decisions.js +10 -17
- package/dist/server/routes/incidents.js +12 -20
- package/dist/server/routes/memories.js +12 -32
- package/dist/server/routes/object-routes.d.ts +0 -5
- package/dist/server/routes/object-routes.js +7 -15
- package/dist/server/routes/policies.js +10 -18
- package/dist/server/routes/predictions.js +13 -25
- package/dist/server/routes/processes.js +16 -26
- package/dist/server/routes/project-briefs.js +9 -16
- package/dist/server/routes/recall.js +10 -35
- package/dist/server/routes/skills.js +8 -18
- package/dist/server/server-detect.d.ts +9 -53
- package/dist/server/server-detect.js +24 -90
- package/dist/server/sleep-offload.js +4 -1
- package/dist/server/types.d.ts +12 -10
- package/dist/server/validation.d.ts +3 -1
- package/dist/server/validation.js +10 -23
- package/dist/server.d.ts +2 -2
- package/dist/server.js +3 -2
- 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/sharing/project-merge.d.ts +4 -5
- package/dist/sharing/project-merge.js +9 -7
- package/dist/sharing/scope.d.ts +4 -11
- package/dist/sharing/scope.js +4 -11
- 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/store/ambient.js +4 -9
- package/dist/store/audit-event.d.ts +4 -12
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -5
- package/dist/store/audit.js +4 -12
- package/dist/store/auth.d.ts +6 -6
- package/dist/store/auth.js +10 -9
- package/dist/store/candidates.d.ts +20 -3
- package/dist/store/candidates.js +77 -48
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +71 -150
- package/dist/store/connectors/github.d.ts +10 -10
- package/dist/store/connectors/github.js +10 -10
- package/dist/store/dashboard-reads.js +4 -8
- package/dist/store/delete-and-batch.d.ts +11 -31
- package/dist/store/delete-and-batch.js +48 -64
- package/dist/store/delivery-recorder.d.ts +8 -4
- package/dist/store/delivery-recorder.js +25 -15
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +7 -29
- package/dist/store/dormant.js +15 -56
- package/dist/store/embeddings/index.d.ts +11 -80
- package/dist/store/embeddings/index.js +71 -207
- package/dist/store/embeddings/local.js +15 -32
- package/dist/store/embeddings/provider.d.ts +16 -53
- package/dist/store/embeddings/provider.js +41 -69
- package/dist/store/entry-reads.d.ts +21 -57
- package/dist/store/entry-reads.js +65 -126
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +10 -16
- package/dist/store/entry-writes.js +17 -35
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +21 -160
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +20 -58
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +6 -31
- package/dist/store/graph-writes.js +13 -37
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +5 -11
- package/dist/store/handoffs.js +16 -34
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +34 -82
- package/dist/store/markdown.d.ts +2 -6
- package/dist/store/markdown.js +21 -20
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +14 -23
- package/dist/store/open.js +6 -13
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +82 -79
- package/dist/store/predictions.d.ts +11 -51
- package/dist/store/predictions.js +38 -119
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-scope.d.ts +19 -79
- package/dist/store/recall-scope.js +21 -82
- package/dist/store/recall-trace.d.ts +10 -77
- package/dist/store/recall-trace.js +19 -95
- package/dist/store/rejected-values.js +7 -19
- package/dist/store/rejection.d.ts +12 -58
- package/dist/store/rejection.js +13 -65
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +14 -50
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +17 -73
- package/dist/store/sqlite/connector-events-group.js +2 -2
- package/dist/store/sqlite/entry-writes-group.js +2 -2
- package/dist/store/sqlite/error-codec.js +4 -2
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +2 -1
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.js +4 -2
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +2 -3
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +10 -62
- package/dist/store/summaries.js +34 -146
- package/dist/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 +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -43
- package/dist/store/token-ledger.js +19 -50
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/store/yaml.d.ts +1 -5
- package/dist/store/yaml.js +2 -6
- package/dist/support-bundle.js +7 -5
- package/dist/trust/reject-flow.js +1 -3
- package/dist/util/anthropic-messages.js +14 -2
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/env.d.ts +13 -6
- package/dist/util/env.js +14 -7
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/http-retry.d.ts +3 -1
- package/dist/util/http-retry.js +26 -5
- package/dist/util/log.d.ts +3 -2
- package/dist/util/log.js +25 -9
- package/dist/util/request-scope.d.ts +2 -1
- package/dist/util/request-scope.js +2 -1
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +13 -39
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/extensions/openclaw-plugin/index.ts +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,54 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Commands:
|
|
6
|
-
* hippo init [--global]
|
|
7
|
-
* hippo remember <text> [--tag <t>] [--error] [--pin] [--global]
|
|
8
|
-
* hippo recall <query> [--budget <n>] [--json] [--why]
|
|
9
|
-
* hippo sleep [--dry-run]
|
|
10
|
-
* hippo status
|
|
11
|
-
* hippo outcome --good | --bad [--id <id>]
|
|
12
|
-
* hippo conflicts [--status <status>] [--json]
|
|
13
|
-
* hippo snapshot <save|show|clear>
|
|
14
|
-
* hippo session <log|show|latest|resume|complete>
|
|
15
|
-
* hippo handoff <create|latest|show>
|
|
16
|
-
* hippo card <create|show|list|claim|heartbeat|block|review|complete|reclaim|comment>
|
|
17
|
-
* hippo current <show>
|
|
18
|
-
* hippo forget <id> [--archive --reason "<why>"]
|
|
19
|
-
* hippo reject <id>|--value "<text>" --reason "<why>"
|
|
20
|
-
* hippo rejections
|
|
21
|
-
* hippo unreject <digest-prefix>
|
|
22
|
-
* hippo dormant [<query>] [--limit <n>] [--json] | restore <id> | forget <id>
|
|
23
|
-
* hippo projects [--json] | merge <from> <into> [--apply] | repair [--apply]
|
|
24
|
-
* hippo tokens [--days <n>] [--json] [--global]
|
|
25
|
-
* hippo doctor [--json]
|
|
26
|
-
* hippo inspect <id>
|
|
27
|
-
* hippo embed [--status]
|
|
28
|
-
* hippo watch "<command>"
|
|
29
|
-
* hippo learn --git [--days <n>] [--repos <paths>]
|
|
30
|
-
* hippo daily-runner
|
|
31
|
-
* hippo promote <id>
|
|
32
|
-
* hippo sync
|
|
33
|
-
* hippo decide "<decision>" [--context "<why>"] [--supersedes <id>]
|
|
34
|
-
* hippo wm <push|read|clear|flush>
|
|
35
|
-
*/
|
|
2
|
+
// Hippo CLI entry point: parses argv and dispatches each verb through the table below.
|
|
3
|
+
// `hippo help` prints the verb list from that table, so no list is kept here.
|
|
36
4
|
import { envSkipAutoIntegrations } from './util/env.js';
|
|
37
5
|
import * as path from 'path';
|
|
38
6
|
import * as fs from 'fs';
|
|
39
7
|
import { fileURLToPath } from 'node:url';
|
|
40
8
|
import { repairCodexWrapperIfInstalled } from './hooks/codex-wrapper.js';
|
|
41
9
|
import { getHippoRoot } from './store/open.js';
|
|
42
|
-
import {
|
|
10
|
+
import { resolveTenantId } from './store/tenant.js';
|
|
11
|
+
import { handleGitHub, printGitHubBackfillUsage } from './cli/github.js';
|
|
43
12
|
import { printError } from './cli/output.js';
|
|
44
13
|
import { errorFields, errorMessage, isLevelEnabled, log } from './util/log.js';
|
|
45
14
|
import { isStoreBusy, STORE_BUSY_MESSAGE } from './db/busy.js';
|
|
46
|
-
import { boolFlag, flagIsTrue } from './cli/flag-values.js';
|
|
15
|
+
import { boolFlag, flagIsTrue, isBooleanFlag, isStringFlag } from './cli/flag-values.js';
|
|
47
16
|
import { VERB_USAGE, USAGE_HEADER, USAGE_EXAMPLES, printAuditPruneUsage, printSlackBackfillUsage, printSlackWorkspacesUsage } from './cli/usage.js';
|
|
48
17
|
import { VERB_FLAGS, flagKind, isKnownFlag, undeclaredFlags } from './cli/flags.js';
|
|
49
|
-
|
|
18
|
+
import { CliExit } from './cli/exit.js';
|
|
50
19
|
// Helpers
|
|
51
|
-
// ---------------------------------------------------------------------------
|
|
52
20
|
// Commands that delete or hide memories: an unknown flag here stops the run instead of being ignored.
|
|
53
21
|
const DESTRUCTIVE_COMMANDS = new Set([
|
|
54
22
|
'audit', 'dedup', 'forget', 'invalidate', 'projects', 'reject', 'resolve', 'sleep', 'supersede',
|
|
@@ -154,11 +122,8 @@ export function shouldAutoRepairCodexWrapper(currentCommand, flags) {
|
|
|
154
122
|
return false;
|
|
155
123
|
return true;
|
|
156
124
|
}
|
|
157
|
-
// Repair-only:
|
|
158
|
-
//
|
|
159
|
-
// shim). Never first-installs — silently swapping the codex binary on routine
|
|
160
|
-
// commands is a consent violation and reads as binary hijacking to
|
|
161
|
-
// supply-chain scanners.
|
|
125
|
+
// Repair-only: never first-installs, because silently swapping the codex binary on routine commands
|
|
126
|
+
// is a consent violation and reads as binary hijacking to supply-chain scanners.
|
|
162
127
|
function maybeRepairCodexWrapper(currentCommand, flags) {
|
|
163
128
|
if (!shouldAutoRepairCodexWrapper(currentCommand, flags))
|
|
164
129
|
return;
|
|
@@ -169,417 +134,274 @@ function maybeRepairCodexWrapper(currentCommand, flags) {
|
|
|
169
134
|
log.debug(`codex wrapper not repaired: ${errorMessage(err)}`);
|
|
170
135
|
}
|
|
171
136
|
}
|
|
172
|
-
|
|
173
|
-
|
|
137
|
+
// A verb's entry is handle<Verb>(ctx); cmd<Name> is a typed function below an entry, never called from this table.
|
|
138
|
+
/** Every verb main() dispatches, keyed by name; a verb without a VERB_FLAGS entry, or the reverse, fails to compile. */
|
|
139
|
+
export const VERB_HANDLERS = {
|
|
174
140
|
init: {
|
|
175
|
-
run: async (
|
|
176
|
-
usage: VERB_USAGE.init,
|
|
177
|
-
flags: VERB_FLAGS.init,
|
|
141
|
+
run: async (c) => { (await import('./cli/init.js')).handleInit(c); },
|
|
178
142
|
},
|
|
179
143
|
remember: {
|
|
180
144
|
run: async (c) => { await (await import('./cli/remember.js')).handleRemember(c); },
|
|
181
|
-
usage: VERB_USAGE.remember,
|
|
182
|
-
flags: VERB_FLAGS.remember,
|
|
183
145
|
},
|
|
184
146
|
recall: {
|
|
185
147
|
run: async (c) => { await (await import('./cli/recall.js')).handleRecall(c); },
|
|
186
148
|
scoped: true,
|
|
187
|
-
usage: VERB_USAGE.recall,
|
|
188
|
-
flags: VERB_FLAGS.recall,
|
|
189
149
|
},
|
|
190
150
|
drill: {
|
|
191
151
|
run: async (c) => { await (await import('./cli/dag.js')).handleDrill(c); },
|
|
192
152
|
scoped: true,
|
|
193
|
-
usage: VERB_USAGE.drill,
|
|
194
|
-
flags: VERB_FLAGS.drill,
|
|
195
153
|
},
|
|
196
154
|
assemble: {
|
|
197
155
|
run: async (c) => { await (await import('./cli/dag.js')).handleAssemble(c); },
|
|
198
156
|
scoped: true,
|
|
199
|
-
usage: VERB_USAGE.assemble,
|
|
200
|
-
flags: VERB_FLAGS.assemble,
|
|
201
157
|
},
|
|
202
158
|
supersede: {
|
|
203
159
|
run: async (c) => { await (await import('./cli/remember.js')).handleSupersede(c); },
|
|
204
|
-
usage: VERB_USAGE.supersede,
|
|
205
|
-
flags: VERB_FLAGS.supersede,
|
|
206
160
|
},
|
|
207
161
|
explain: {
|
|
208
162
|
run: async (c) => { await (await import('./cli/explain.js')).handleExplain(c); },
|
|
209
163
|
scoped: true,
|
|
210
|
-
usage: VERB_USAGE.explain,
|
|
211
|
-
flags: VERB_FLAGS.explain,
|
|
212
164
|
},
|
|
213
165
|
eval: {
|
|
214
166
|
run: async (c) => { await (await import('./cli/eval.js')).handleEval(c); },
|
|
215
|
-
usage: VERB_USAGE.eval,
|
|
216
|
-
flags: VERB_FLAGS.eval,
|
|
217
167
|
},
|
|
218
168
|
trace: {
|
|
219
169
|
run: async (c) => { await (await import('./cli/remember.js')).handleTrace(c); },
|
|
220
|
-
usage: VERB_USAGE.trace,
|
|
221
|
-
flags: VERB_FLAGS.trace,
|
|
222
170
|
},
|
|
223
171
|
refine: {
|
|
224
|
-
run: async (
|
|
225
|
-
usage: VERB_USAGE.refine,
|
|
226
|
-
flags: VERB_FLAGS.refine,
|
|
172
|
+
run: async (c) => { await (await import('./cli/maintenance.js')).handleRefine(c); },
|
|
227
173
|
},
|
|
228
174
|
sleep: {
|
|
229
|
-
run: async (
|
|
175
|
+
run: async (c) => { await (await import('./cli/sleep.js')).handleSleep(c); },
|
|
230
176
|
scoped: true,
|
|
231
|
-
usage: VERB_USAGE.sleep,
|
|
232
|
-
flags: VERB_FLAGS.sleep,
|
|
233
177
|
},
|
|
234
178
|
'last-sleep': {
|
|
235
|
-
run: async (
|
|
236
|
-
usage: VERB_USAGE['last-sleep'],
|
|
237
|
-
flags: VERB_FLAGS['last-sleep'],
|
|
179
|
+
run: async (c) => { (await import('./cli/last-sleep.js')).handleLastSleep(c); },
|
|
238
180
|
},
|
|
239
181
|
'session-end': {
|
|
240
|
-
run: async (
|
|
241
|
-
usage: VERB_USAGE['session-end'],
|
|
242
|
-
flags: VERB_FLAGS['session-end'],
|
|
182
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleSessionEnd(c); },
|
|
243
183
|
},
|
|
244
184
|
'__session-end-worker': {
|
|
245
|
-
run: async (
|
|
246
|
-
usage: [],
|
|
247
|
-
flags: VERB_FLAGS['__session-end-worker'],
|
|
185
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleSessionEndWorker(c); },
|
|
248
186
|
},
|
|
249
187
|
'pre-compact': {
|
|
250
188
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handlePreCompact(c); },
|
|
251
|
-
usage: VERB_USAGE['pre-compact'],
|
|
252
|
-
flags: VERB_FLAGS['pre-compact'],
|
|
253
189
|
},
|
|
254
190
|
'post-compact': {
|
|
255
191
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handlePostCompact(c); },
|
|
256
|
-
usage: VERB_USAGE['post-compact'],
|
|
257
|
-
flags: VERB_FLAGS['post-compact'],
|
|
258
192
|
},
|
|
259
193
|
'capture-error': {
|
|
260
194
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCaptureError(c); },
|
|
261
|
-
usage: VERB_USAGE['capture-error'],
|
|
262
|
-
flags: VERB_FLAGS['capture-error'],
|
|
263
195
|
},
|
|
264
196
|
'compact-resume': {
|
|
265
197
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCompactResume(c); },
|
|
266
|
-
usage: VERB_USAGE['compact-resume'],
|
|
267
|
-
flags: VERB_FLAGS['compact-resume'],
|
|
268
198
|
},
|
|
269
199
|
'codex-run': {
|
|
270
|
-
run: async (
|
|
271
|
-
usage: VERB_USAGE['codex-run'],
|
|
272
|
-
flags: VERB_FLAGS['codex-run'],
|
|
200
|
+
run: async (c) => { (await import('./cli/session-hooks.js')).handleCodexRun(c); },
|
|
273
201
|
},
|
|
274
202
|
'__codex-session-end-worker': {
|
|
275
|
-
run: async (
|
|
276
|
-
usage: [],
|
|
277
|
-
flags: VERB_FLAGS['__codex-session-end-worker'],
|
|
203
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCodexSessionEndWorker(c); },
|
|
278
204
|
},
|
|
279
205
|
dedup: {
|
|
280
|
-
run: async (
|
|
281
|
-
usage: VERB_USAGE.dedup,
|
|
282
|
-
flags: VERB_FLAGS.dedup,
|
|
206
|
+
run: async (c) => { (await import('./cli/maintenance.js')).handleDedup(c); },
|
|
283
207
|
},
|
|
284
208
|
dag: {
|
|
285
|
-
run: async (
|
|
286
|
-
usage: VERB_USAGE.dag,
|
|
287
|
-
flags: VERB_FLAGS.dag,
|
|
209
|
+
run: async (c) => { (await import('./cli/dag.js')).handleDag(c); },
|
|
288
210
|
},
|
|
289
211
|
auth: {
|
|
290
|
-
run: async (
|
|
212
|
+
run: async (c) => { (await import('./cli/auth.js')).handleAuth(c); },
|
|
291
213
|
scoped: true,
|
|
292
|
-
usage: VERB_USAGE.auth,
|
|
293
|
-
flags: VERB_FLAGS.auth,
|
|
294
214
|
},
|
|
295
215
|
goal: {
|
|
296
|
-
run: async (
|
|
216
|
+
run: async (c) => { (await import('./cli/goals.js')).handleGoal(c); },
|
|
297
217
|
scoped: true,
|
|
298
|
-
usage: VERB_USAGE.goal,
|
|
299
|
-
flags: VERB_FLAGS.goal,
|
|
300
218
|
},
|
|
301
219
|
slack: {
|
|
302
|
-
run: async (
|
|
303
|
-
usage: VERB_USAGE.slack,
|
|
304
|
-
flags: VERB_FLAGS.slack,
|
|
220
|
+
run: async (c) => { await (await import('./cli/slack.js')).handleSlack(c); },
|
|
305
221
|
},
|
|
306
222
|
github: {
|
|
307
|
-
run: async (
|
|
308
|
-
usage: VERB_USAGE.github,
|
|
309
|
-
flags: VERB_FLAGS.github,
|
|
223
|
+
run: async (c) => { await handleGitHub(c); },
|
|
310
224
|
},
|
|
311
225
|
audit: {
|
|
312
226
|
run: async (c) => { await (await import('./cli/audit.js')).handleAudit(c); },
|
|
313
227
|
scoped: true,
|
|
314
|
-
usage: VERB_USAGE.audit,
|
|
315
|
-
flags: VERB_FLAGS.audit,
|
|
316
228
|
},
|
|
317
229
|
'correction-latency': {
|
|
318
230
|
run: async (c) => { await (await import('./cli/status.js')).handleCorrectionLatency(c); },
|
|
319
|
-
usage: VERB_USAGE['correction-latency'],
|
|
320
|
-
flags: VERB_FLAGS['correction-latency'],
|
|
321
231
|
},
|
|
322
232
|
provenance: {
|
|
323
233
|
run: async (c) => { await (await import('./cli/status.js')).handleProvenance(c); },
|
|
324
|
-
usage: VERB_USAGE.provenance,
|
|
325
|
-
flags: VERB_FLAGS.provenance,
|
|
326
234
|
},
|
|
327
235
|
status: {
|
|
328
|
-
run: async (
|
|
329
|
-
usage: VERB_USAGE.status,
|
|
330
|
-
flags: VERB_FLAGS.status,
|
|
236
|
+
run: async (c) => { (await import('./cli/status.js')).handleStatus(c); },
|
|
331
237
|
},
|
|
332
238
|
outcome: {
|
|
333
|
-
run: async (
|
|
239
|
+
run: async (c) => { (await import('./cli/curate.js')).handleOutcome(c); },
|
|
334
240
|
scoped: true,
|
|
335
|
-
usage: VERB_USAGE.outcome,
|
|
336
|
-
flags: VERB_FLAGS.outcome,
|
|
337
241
|
},
|
|
338
242
|
conflicts: {
|
|
339
|
-
run: async (
|
|
340
|
-
usage: VERB_USAGE.conflicts,
|
|
341
|
-
flags: VERB_FLAGS.conflicts,
|
|
243
|
+
run: async (c) => { (await import('./cli/curate.js')).handleConflicts(c); },
|
|
342
244
|
},
|
|
343
245
|
resolve: {
|
|
344
|
-
run: async (
|
|
345
|
-
usage: VERB_USAGE.resolve,
|
|
346
|
-
flags: VERB_FLAGS.resolve,
|
|
246
|
+
run: async (c) => { await (await import('./cli/curate.js')).handleResolve(c); },
|
|
347
247
|
},
|
|
348
248
|
reject: {
|
|
349
|
-
run: async (
|
|
350
|
-
usage: VERB_USAGE.reject,
|
|
351
|
-
flags: VERB_FLAGS.reject,
|
|
249
|
+
run: async (c) => { (await import('./cli/curate.js')).handleReject(c); },
|
|
352
250
|
},
|
|
353
251
|
rejections: {
|
|
354
|
-
run: async (
|
|
355
|
-
usage: VERB_USAGE.rejections,
|
|
356
|
-
flags: VERB_FLAGS.rejections,
|
|
252
|
+
run: async (c) => { (await import('./cli/curate.js')).handleRejections(c); },
|
|
357
253
|
},
|
|
358
254
|
unreject: {
|
|
359
|
-
run: async (
|
|
360
|
-
usage: VERB_USAGE.unreject,
|
|
361
|
-
flags: VERB_FLAGS.unreject,
|
|
255
|
+
run: async (c) => { (await import('./cli/curate.js')).handleUnreject(c); },
|
|
362
256
|
},
|
|
363
257
|
dormant: {
|
|
364
|
-
run: async (
|
|
258
|
+
run: async (c) => { (await import('./cli/curate.js')).handleDormant(c); },
|
|
365
259
|
scoped: true,
|
|
366
|
-
usage: VERB_USAGE.dormant,
|
|
367
|
-
flags: VERB_FLAGS.dormant,
|
|
368
260
|
},
|
|
369
261
|
projects: {
|
|
370
|
-
run: async (
|
|
371
|
-
usage: VERB_USAGE.projects,
|
|
372
|
-
flags: VERB_FLAGS.projects,
|
|
262
|
+
run: async (c) => { (await import('./cli/projects.js')).handleProjects(c); },
|
|
373
263
|
},
|
|
374
264
|
quarantine: {
|
|
375
|
-
run: async (
|
|
265
|
+
run: async (c) => { await (await import('./cli/curate.js')).handleQuarantine(c); },
|
|
376
266
|
scoped: true,
|
|
377
|
-
usage: VERB_USAGE.quarantine,
|
|
378
|
-
flags: VERB_FLAGS.quarantine,
|
|
379
267
|
},
|
|
380
268
|
tokens: {
|
|
381
|
-
run: async (
|
|
269
|
+
run: async (c) => { (await import('./cli/status.js')).handleTokens(c); },
|
|
382
270
|
scoped: true,
|
|
383
|
-
usage: VERB_USAGE.tokens,
|
|
384
|
-
flags: VERB_FLAGS.tokens,
|
|
385
271
|
},
|
|
386
272
|
failures: {
|
|
387
|
-
run: async (
|
|
273
|
+
run: async (c) => { (await import('./cli/status.js')).handleFailures(c); },
|
|
388
274
|
scoped: true,
|
|
389
|
-
usage: VERB_USAGE.failures,
|
|
390
|
-
flags: VERB_FLAGS.failures,
|
|
391
275
|
},
|
|
392
276
|
doctor: {
|
|
393
277
|
run: async (c) => { await (await import('./cli/status.js')).handleDoctor(c); },
|
|
394
|
-
usage: VERB_USAGE.doctor,
|
|
395
|
-
flags: VERB_FLAGS.doctor,
|
|
396
278
|
},
|
|
397
279
|
'support-bundle': {
|
|
398
280
|
run: async (c) => { await (await import('./cli/status.js')).handleSupportBundle(c); },
|
|
399
|
-
usage: VERB_USAGE['support-bundle'],
|
|
400
|
-
flags: VERB_FLAGS['support-bundle'],
|
|
401
281
|
},
|
|
402
282
|
snapshot: {
|
|
403
|
-
run: async (
|
|
404
|
-
usage: VERB_USAGE.snapshot,
|
|
405
|
-
flags: VERB_FLAGS.snapshot,
|
|
283
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleSnapshot(c); },
|
|
406
284
|
},
|
|
407
285
|
session: {
|
|
408
|
-
run: async (
|
|
409
|
-
usage: VERB_USAGE.session,
|
|
410
|
-
flags: VERB_FLAGS.session,
|
|
286
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleSession(c); },
|
|
411
287
|
},
|
|
412
288
|
handoff: {
|
|
413
|
-
run: async (
|
|
414
|
-
usage: VERB_USAGE.handoff,
|
|
415
|
-
flags: VERB_FLAGS.handoff,
|
|
289
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleHandoff(c); },
|
|
416
290
|
},
|
|
417
291
|
card: {
|
|
418
|
-
run: async (
|
|
419
|
-
usage: VERB_USAGE.card,
|
|
420
|
-
flags: VERB_FLAGS.card,
|
|
292
|
+
run: async (c) => { (await import('./cli/card.js')).handleCard(c); },
|
|
421
293
|
},
|
|
422
294
|
predict: {
|
|
423
|
-
run: async (
|
|
424
|
-
usage: VERB_USAGE.predict,
|
|
425
|
-
flags: VERB_FLAGS.predict,
|
|
295
|
+
run: async (c) => { (await import('./cli/decisions.js')).handlePredict(c); },
|
|
426
296
|
},
|
|
427
297
|
current: {
|
|
428
|
-
run: async (
|
|
429
|
-
usage: VERB_USAGE.current,
|
|
430
|
-
flags: VERB_FLAGS.current,
|
|
298
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleCurrent(c); },
|
|
431
299
|
},
|
|
432
300
|
forget: {
|
|
433
301
|
run: async (c) => { await (await import('./cli/curate.js')).handleForget(c); },
|
|
434
302
|
scoped: true,
|
|
435
|
-
usage: VERB_USAGE.forget,
|
|
436
|
-
flags: VERB_FLAGS.forget,
|
|
437
303
|
},
|
|
438
304
|
inspect: {
|
|
439
305
|
run: async (c) => { await (await import('./cli/status.js')).handleInspect(c); },
|
|
440
|
-
usage: VERB_USAGE.inspect,
|
|
441
|
-
flags: VERB_FLAGS.inspect,
|
|
442
306
|
},
|
|
443
307
|
context: {
|
|
444
308
|
run: async (c) => { await (await import('./cli/context.js')).handleContext(c); },
|
|
445
|
-
usage: VERB_USAGE.context,
|
|
446
|
-
flags: VERB_FLAGS.context,
|
|
447
309
|
},
|
|
448
310
|
hook: {
|
|
449
|
-
run: async (
|
|
450
|
-
usage: VERB_USAGE.hook,
|
|
451
|
-
flags: VERB_FLAGS.hook,
|
|
311
|
+
run: async (c) => { (await import('./cli/setup.js')).handleHook(c); },
|
|
452
312
|
},
|
|
453
313
|
setup: {
|
|
454
|
-
run: async (
|
|
455
|
-
usage: VERB_USAGE.setup,
|
|
456
|
-
flags: VERB_FLAGS.setup,
|
|
314
|
+
run: async (c) => { (await import('./cli/setup.js')).handleSetup(c); },
|
|
457
315
|
},
|
|
458
316
|
'daily-runner': {
|
|
459
|
-
run: async () => { (await import('./cli/setup.js')).
|
|
460
|
-
usage: VERB_USAGE['daily-runner'],
|
|
461
|
-
flags: VERB_FLAGS['daily-runner'],
|
|
317
|
+
run: async (c) => { (await import('./cli/setup.js')).handleDailyRunner(c); },
|
|
462
318
|
},
|
|
463
319
|
embed: {
|
|
464
|
-
run: async (
|
|
465
|
-
usage: VERB_USAGE.embed,
|
|
466
|
-
flags: VERB_FLAGS.embed,
|
|
320
|
+
run: async (c) => { await (await import('./cli/maintenance.js')).handleEmbed(c); },
|
|
467
321
|
},
|
|
468
322
|
watch: {
|
|
469
323
|
run: async (c) => { await (await import('./cli/transfer.js')).handleWatch(c); },
|
|
470
|
-
usage: VERB_USAGE.watch,
|
|
471
|
-
flags: VERB_FLAGS.watch,
|
|
472
324
|
},
|
|
473
325
|
learn: {
|
|
474
|
-
run: async (
|
|
326
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleLearn(c); },
|
|
475
327
|
scoped: true,
|
|
476
|
-
usage: VERB_USAGE.learn,
|
|
477
|
-
flags: VERB_FLAGS.learn,
|
|
478
328
|
},
|
|
479
329
|
promote: {
|
|
480
330
|
run: async (c) => { await (await import('./cli/transfer.js')).handlePromote(c); },
|
|
481
331
|
scoped: true,
|
|
482
|
-
usage: VERB_USAGE.promote,
|
|
483
|
-
flags: VERB_FLAGS.promote,
|
|
484
332
|
},
|
|
485
333
|
sync: {
|
|
486
|
-
run: async (
|
|
487
|
-
usage: VERB_USAGE.sync,
|
|
488
|
-
flags: VERB_FLAGS.sync,
|
|
334
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleSync(c); },
|
|
489
335
|
},
|
|
490
336
|
share: {
|
|
491
337
|
run: async (c) => { await (await import('./cli/transfer.js')).handleShare(c); },
|
|
492
|
-
usage: VERB_USAGE.share,
|
|
493
|
-
flags: VERB_FLAGS.share,
|
|
494
338
|
},
|
|
495
339
|
peers: {
|
|
496
340
|
run: async (c) => { await (await import('./cli/transfer.js')).handlePeers(c); },
|
|
497
|
-
usage: VERB_USAGE.peers,
|
|
498
|
-
flags: VERB_FLAGS.peers,
|
|
499
341
|
},
|
|
500
342
|
import: {
|
|
501
|
-
run: async (
|
|
502
|
-
usage: VERB_USAGE.import,
|
|
503
|
-
flags: VERB_FLAGS.import,
|
|
343
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleImport(c); },
|
|
504
344
|
},
|
|
505
345
|
export: {
|
|
506
346
|
run: async (c) => { await (await import('./cli/transfer.js')).handleExport(c); },
|
|
507
|
-
usage: VERB_USAGE.export,
|
|
508
|
-
flags: VERB_FLAGS.export,
|
|
509
347
|
},
|
|
510
348
|
capture: {
|
|
511
349
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCapture(c); },
|
|
512
|
-
usage: VERB_USAGE.capture,
|
|
513
|
-
flags: VERB_FLAGS.capture,
|
|
514
350
|
},
|
|
515
351
|
dashboard: {
|
|
516
352
|
run: async (c) => { await (await import('./cli/serve.js')).handleDashboard(c); },
|
|
517
|
-
usage: VERB_USAGE.dashboard,
|
|
518
|
-
flags: VERB_FLAGS.dashboard,
|
|
519
353
|
},
|
|
520
354
|
wm: {
|
|
521
|
-
run: async (
|
|
522
|
-
usage: VERB_USAGE.wm,
|
|
523
|
-
flags: VERB_FLAGS.wm,
|
|
355
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleWm(c); },
|
|
524
356
|
},
|
|
525
357
|
mcp: {
|
|
526
358
|
run: async () => { await (await import('./cli/serve.js')).handleMcp(); },
|
|
527
|
-
usage: VERB_USAGE.mcp,
|
|
528
|
-
flags: VERB_FLAGS.mcp,
|
|
529
359
|
},
|
|
530
360
|
serve: {
|
|
531
361
|
run: async (c) => { await (await import('./cli/serve.js')).handleServe(c); },
|
|
532
|
-
usage: VERB_USAGE.serve,
|
|
533
|
-
flags: VERB_FLAGS.serve,
|
|
534
362
|
},
|
|
535
363
|
invalidate: {
|
|
536
364
|
run: async (c) => { await (await import('./cli/curate.js')).handleInvalidate(c); },
|
|
537
|
-
usage: VERB_USAGE.invalidate,
|
|
538
|
-
flags: VERB_FLAGS.invalidate,
|
|
539
365
|
},
|
|
540
366
|
decide: {
|
|
541
|
-
run: async (
|
|
542
|
-
usage: VERB_USAGE.decide,
|
|
543
|
-
flags: VERB_FLAGS.decide,
|
|
367
|
+
run: async (c) => { await (await import('./cli/decisions.js')).handleDecide(c); },
|
|
544
368
|
},
|
|
545
369
|
incident: {
|
|
546
|
-
run: async (
|
|
547
|
-
usage: VERB_USAGE.incident,
|
|
548
|
-
flags: VERB_FLAGS.incident,
|
|
370
|
+
run: async (c) => { (await import('./cli/decisions.js')).handleIncident(c); },
|
|
549
371
|
},
|
|
550
372
|
process: {
|
|
551
|
-
run: async (
|
|
552
|
-
usage: VERB_USAGE.process,
|
|
553
|
-
flags: VERB_FLAGS.process,
|
|
373
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handleProcess(c); },
|
|
554
374
|
},
|
|
555
375
|
policy: {
|
|
556
|
-
run: async (
|
|
557
|
-
usage: VERB_USAGE.policy,
|
|
558
|
-
flags: VERB_FLAGS.policy,
|
|
376
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handlePolicy(c); },
|
|
559
377
|
},
|
|
560
378
|
skill: {
|
|
561
|
-
run: async (
|
|
562
|
-
usage: VERB_USAGE.skill,
|
|
563
|
-
flags: VERB_FLAGS.skill,
|
|
379
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handleSkill(c); },
|
|
564
380
|
},
|
|
565
381
|
brief: {
|
|
566
|
-
run: async (
|
|
382
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleProjectBrief(c); },
|
|
567
383
|
aliases: ['project-brief'],
|
|
568
|
-
usage: VERB_USAGE.brief,
|
|
569
|
-
flags: VERB_FLAGS.brief,
|
|
570
384
|
},
|
|
571
385
|
note: {
|
|
572
|
-
run: async (
|
|
386
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleCustomerNote(c); },
|
|
573
387
|
aliases: ['customer-note'],
|
|
574
|
-
usage: VERB_USAGE.note,
|
|
575
|
-
flags: VERB_FLAGS.note,
|
|
576
388
|
},
|
|
577
389
|
graph: {
|
|
578
|
-
run: async (
|
|
579
|
-
usage: VERB_USAGE.graph,
|
|
580
|
-
flags: VERB_FLAGS.graph,
|
|
390
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleGraph(c); },
|
|
581
391
|
},
|
|
582
392
|
};
|
|
393
|
+
const USAGE_BLOCKS = VERB_USAGE;
|
|
394
|
+
const FLAGS_BY_VERB = VERB_FLAGS;
|
|
395
|
+
function buildCommands() {
|
|
396
|
+
const specs = Object.entries(VERB_HANDLERS).map(([verb, handler]) => {
|
|
397
|
+
const spec = { ...handler, usage: USAGE_BLOCKS[verb] ?? [], flags: FLAGS_BY_VERB[verb] };
|
|
398
|
+
return [verb, spec];
|
|
399
|
+
});
|
|
400
|
+
// SAFETY: VERB_HANDLERS is checked above to have exactly the VerbName keys, so every key is present.
|
|
401
|
+
return Object.fromEntries(specs);
|
|
402
|
+
}
|
|
403
|
+
/** Every verb's handler, aliases, help blocks and flags, keyed by name. */
|
|
404
|
+
export const COMMANDS = buildCommands();
|
|
583
405
|
const COMMAND_INDEX = new Map(Object.entries(COMMANDS).flatMap(([verb, spec]) => [verb, ...(spec.aliases ?? [])].map((name) => [name, spec])));
|
|
584
406
|
// The full listing order; a verb listed twice prints its next help block.
|
|
585
407
|
const USAGE_ORDER = [
|
|
@@ -615,7 +437,7 @@ const SUBCOMMAND_USAGE = new Map([
|
|
|
615
437
|
['audit prune', printAuditPruneUsage],
|
|
616
438
|
['slack backfill', printSlackBackfillUsage],
|
|
617
439
|
['slack workspaces', printSlackWorkspacesUsage],
|
|
618
|
-
['github backfill',
|
|
440
|
+
['github backfill', printGitHubBackfillUsage],
|
|
619
441
|
]);
|
|
620
442
|
function printHelp(command, args) {
|
|
621
443
|
const printSubcommandUsage = SUBCOMMAND_USAGE.get(`${command} ${args[0] ?? ''}`);
|
|
@@ -624,23 +446,22 @@ function printHelp(command, args) {
|
|
|
624
446
|
else
|
|
625
447
|
console.log(verbUsage(command) ?? usageText());
|
|
626
448
|
}
|
|
627
|
-
// ---------------------------------------------------------------------------
|
|
628
449
|
// Entry point
|
|
629
|
-
// ---------------------------------------------------------------------------
|
|
630
450
|
function printVersion() {
|
|
631
451
|
const __filename_local = fileURLToPath(import.meta.url);
|
|
632
452
|
const __dirname_local = path.dirname(__filename_local);
|
|
633
453
|
const pkgJson = fs.readFileSync(path.join(__dirname_local, '..', 'package.json'), 'utf-8');
|
|
454
|
+
// SAFETY: package.json ships with the build, and npm refuses to pack a package without a string version.
|
|
634
455
|
const { version } = JSON.parse(pkgJson);
|
|
635
456
|
console.log(version);
|
|
636
|
-
|
|
457
|
+
throw new CliExit(0);
|
|
637
458
|
}
|
|
638
459
|
/** A value-less --scope parses as boolean true, which consumers coerced to the scope 'true' or dropped;
|
|
639
460
|
* reject it once here so every command, thin-client relays included, sees only a non-empty string. */
|
|
640
461
|
function rejectEmptyScope(flags) {
|
|
641
|
-
if ('scope' in flags && (
|
|
462
|
+
if ('scope' in flags && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
|
|
642
463
|
printError('--scope requires a non-empty value (e.g. --scope slack:private:C1).');
|
|
643
|
-
|
|
464
|
+
throw new CliExit(1);
|
|
644
465
|
}
|
|
645
466
|
}
|
|
646
467
|
// parseArgs stores a value-less flag as boolean true, and NaN then survives every
|
|
@@ -649,9 +470,9 @@ function rejectNonNumericFlags(flags, declared) {
|
|
|
649
470
|
for (const [key, raw] of Object.entries(flags)) {
|
|
650
471
|
if (flagKind(declared, key) !== 'number')
|
|
651
472
|
continue;
|
|
652
|
-
if (
|
|
473
|
+
if (!isStringFlag(raw) || !raw.trim() || !Number.isFinite(Number(raw))) {
|
|
653
474
|
printError(`--${key} requires a numeric value.`);
|
|
654
|
-
|
|
475
|
+
throw new CliExit(1);
|
|
655
476
|
}
|
|
656
477
|
}
|
|
657
478
|
}
|
|
@@ -659,9 +480,9 @@ function rejectNonNumericFlags(flags, declared) {
|
|
|
659
480
|
// so no single coercion of an inline value would be correct for every one of them.
|
|
660
481
|
function rejectValuedSwitches(flags, declared) {
|
|
661
482
|
for (const [key, raw] of Object.entries(flags)) {
|
|
662
|
-
if (flagKind(declared, key) === 'switch' &&
|
|
483
|
+
if (flagKind(declared, key) === 'switch' && !isBooleanFlag(raw)) {
|
|
663
484
|
printError(`--${key} takes no value`);
|
|
664
|
-
|
|
485
|
+
throw new CliExit(1);
|
|
665
486
|
}
|
|
666
487
|
}
|
|
667
488
|
}
|
|
@@ -673,7 +494,7 @@ function checkUnknownFlags(command, flags, declared) {
|
|
|
673
494
|
const unknown = Object.keys(flags).filter((key) => !isKnownFlag(key));
|
|
674
495
|
if (unknown.length > 0 && DESTRUCTIVE_COMMANDS.has(command)) {
|
|
675
496
|
printError(`Unknown flag ${flagNames(unknown)} for hippo ${command}. Nothing was changed.`);
|
|
676
|
-
|
|
497
|
+
throw new CliExit(2);
|
|
677
498
|
}
|
|
678
499
|
// main() refuses --dry-run by name on a verb without one, so that flag is not also called ignored.
|
|
679
500
|
const ignored = declared ? undeclaredFlags(declared, Object.keys(flags)).filter((key) => key !== 'dry-run') : unknown;
|
|
@@ -701,14 +522,14 @@ async function main(command, args, flags, hippoRoot) {
|
|
|
701
522
|
const refusal = Object.hasOwn(flags, 'dry-run') ? dryRunRefusal(command, args, flags) : null;
|
|
702
523
|
if (refusal) {
|
|
703
524
|
printError(refusal);
|
|
704
|
-
|
|
525
|
+
throw new CliExit(2);
|
|
705
526
|
}
|
|
706
527
|
if (!spec) {
|
|
707
528
|
printError(`Unknown command: ${command}`);
|
|
708
529
|
printUsage();
|
|
709
|
-
|
|
530
|
+
throw new CliExit(1);
|
|
710
531
|
}
|
|
711
|
-
const run = () => spec.run({ hippoRoot, args, flags });
|
|
532
|
+
const run = () => spec.run({ hippoRoot, tenantId: resolveTenantId({}), args, flags });
|
|
712
533
|
await (spec.scoped ? (await import('./db/request-stores.js')).runWithRequestStores(run) : run());
|
|
713
534
|
}
|
|
714
535
|
export async function runCli(argv = process.argv) {
|
|
@@ -717,6 +538,9 @@ export async function runCli(argv = process.argv) {
|
|
|
717
538
|
await main(command, args, flags, getHippoRoot(process.cwd()));
|
|
718
539
|
}
|
|
719
540
|
catch (err) {
|
|
541
|
+
// The verb printed its own message before it threw, so this branch adds no line.
|
|
542
|
+
if (err instanceof CliExit)
|
|
543
|
+
process.exit(err.code);
|
|
720
544
|
printError('Error:', isStoreBusy(err) ? STORE_BUSY_MESSAGE : err instanceof Error ? err.message : err);
|
|
721
545
|
// The message alone rarely says where it came from; debug is the level that asks for the rest.
|
|
722
546
|
if (isLevelEnabled('debug')) {
|