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/init.js
CHANGED
|
@@ -13,7 +13,7 @@ import { loadAllEntries } from '../store/entry-reads.js';
|
|
|
13
13
|
import { isGitRepo } from '../learn/autolearn.js';
|
|
14
14
|
import { currentMachine, importForStore, importProjectMemories, importUserMemories } from '../agent-memories/sync.js';
|
|
15
15
|
import { emptyReport, mergeReports } from '../agent-memories/report.js';
|
|
16
|
-
import { getGlobalRoot, initGlobal } from '../sharing/
|
|
16
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
17
17
|
import { registerWorkspace } from './scheduler.js';
|
|
18
18
|
import { stringFlag } from './flag-values.js';
|
|
19
19
|
import { printAgentImport } from './print.js';
|
|
@@ -104,10 +104,7 @@ function cmdInitScan(scanDir, flags) {
|
|
|
104
104
|
console.log(`Found ${repos.length} repositories:\n`);
|
|
105
105
|
const globalRoot = initGlobalFirst();
|
|
106
106
|
let totalLessons = 0;
|
|
107
|
-
// Rolled up so the cross-repo summary reports the gate too
|
|
108
|
-
// already prints its own count inside learnFromRepo, but the aggregate
|
|
109
|
-
// line showed only what was ADDED - and the point of this change is
|
|
110
|
-
// 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.
|
|
111
108
|
let totalLowInfo = 0;
|
|
112
109
|
const seedDays = parseInt(String(flags['days'] ?? '365'), 10);
|
|
113
110
|
const machine = currentMachine();
|
|
@@ -160,7 +157,7 @@ function seedFromGitHistory(hippoRoot) {
|
|
|
160
157
|
console.log(` No matching commits found in git history.`);
|
|
161
158
|
}
|
|
162
159
|
}
|
|
163
|
-
export function
|
|
160
|
+
export function handleInit({ hippoRoot, flags }) {
|
|
164
161
|
// Handle --scan mode
|
|
165
162
|
if (flags['scan']) {
|
|
166
163
|
const scanDir = stringFlag(flags, 'scan') ?? os.homedir();
|
|
@@ -304,9 +301,7 @@ function installClaudeCodeSettingsHooks(hook) {
|
|
|
304
301
|
}
|
|
305
302
|
}
|
|
306
303
|
function installOpencodeUserPlugin() {
|
|
307
|
-
// opencode uses a TS plugin, not Claude Code's JSON-hook schema.
|
|
308
|
-
// See OPENCODE_PLUGIN_SOURCE in src/hooks.ts for the plugin file
|
|
309
|
-
// content + design rationale.
|
|
304
|
+
// opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in src/hooks/opencode.ts).
|
|
310
305
|
const result = installOpencodePlugin();
|
|
311
306
|
if (result.installed) {
|
|
312
307
|
console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
|
|
@@ -328,9 +323,8 @@ function installUserLevelHooks(agents, codexHint) {
|
|
|
328
323
|
// Checked first so init never creates ~/.codex on a machine without Codex.
|
|
329
324
|
if (hook === 'codex' && isCodexPresent())
|
|
330
325
|
installCodexMemoryHooks(' ');
|
|
331
|
-
// For Claude Code, also install SessionEnd+SessionStart entries in
|
|
332
|
-
//
|
|
333
|
-
// claude-code` and `hippo setup`.
|
|
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`.
|
|
334
328
|
if (hook === 'claude-code')
|
|
335
329
|
installClaudeCodeSettingsHooks(hook);
|
|
336
330
|
else if (hook === 'opencode')
|
|
@@ -3,7 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import { execFileSync, execSync } from 'child_process';
|
|
4
4
|
import { installJsonHooks } from '../hooks/json-hooks.js';
|
|
5
5
|
import { CODEX_TRUST_LINE } from '../hooks/shared.js';
|
|
6
|
-
import { DAILY_TASK_NAME, buildDailyRunnerCommand, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg } from './scheduler.js';
|
|
6
|
+
import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg } from './scheduler.js';
|
|
7
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
8
|
export function installCodexMemoryHooks(indent) {
|
|
9
9
|
const result = installJsonHooks('codex');
|
|
@@ -27,13 +27,7 @@ export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
|
|
|
27
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
28
|
return true;
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Set up a machine-level daily runner that sweeps all registered Hippo
|
|
32
|
-
* workspaces.
|
|
33
|
-
* Linux/macOS: writes to user crontab.
|
|
34
|
-
* Windows: creates a scheduled task.
|
|
35
|
-
* Skips if already installed.
|
|
36
|
-
*/
|
|
30
|
+
/** Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on Windows; skips if installed. */
|
|
37
31
|
/** Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`. */
|
|
38
32
|
const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
|
|
39
33
|
/** Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is missing. */
|
|
@@ -45,10 +39,7 @@ function warnSchedulerTimedOut(command) {
|
|
|
45
39
|
}
|
|
46
40
|
export function setupDailySchedule(globalRoot) {
|
|
47
41
|
const runnerDir = path.resolve(globalRoot);
|
|
48
|
-
|
|
49
|
-
// (backslash is normal on Windows, only dangerous in Unix shell/crontab)
|
|
50
|
-
const unsafeChars = process.platform === 'win32' ? /["`$%\n\r]/ : /["`$\n\r\\]/;
|
|
51
|
-
if (unsafeChars.test(runnerDir)) {
|
|
42
|
+
if (hasUnsafeRunnerPathChars(runnerDir, process.platform)) {
|
|
52
43
|
console.log(` Skipping schedule: runner path contains unsafe characters.`);
|
|
53
44
|
return;
|
|
54
45
|
}
|
package/dist/cli/last-sleep.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { type CliFlags } from './flag-values.js';
|
|
1
|
+
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
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. */
|
|
3
3
|
export declare function sleepProblems(logText: string, bad: number): string | null;
|
|
4
4
|
/** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
|
|
5
5
|
* because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */
|
|
6
6
|
export declare function cmdLastSleep(hippoRoot: string, flags: CliFlags, out?: 'hook' | 'terminal'): void;
|
|
7
|
+
export declare function handleLastSleep({ hippoRoot, flags }: CommandContext): void;
|
|
7
8
|
//# sourceMappingURL=last-sleep.d.ts.map
|
package/dist/cli/last-sleep.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type EmbeddingProvider } from '../store/embeddings/provider.js';
|
|
2
|
-
import { type
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
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>;
|
|
6
6
|
//# sourceMappingURL=maintenance.d.ts.map
|
package/dist/cli/maintenance.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
// Store upkeep verbs: `hippo refine`, `hippo dedup` and `hippo embed`.
|
|
2
2
|
import { envAnthropicApiKey } from '../util/env.js';
|
|
3
|
-
import { loadAllEntries } from '../store/entry-reads.js';
|
|
3
|
+
import { loadAllEntries, loadAllEntryIds } from '../store/entry-reads.js';
|
|
4
4
|
import { deduplicateStore } from '../consolidate/dedupe.js';
|
|
5
|
-
import { embedAll
|
|
5
|
+
import { embedAll } from '../store/embeddings/index.js';
|
|
6
6
|
import { resolveEmbeddingProvider } from '../store/embeddings/provider.js';
|
|
7
|
-
import { resetStoredParticles } from '../store/vector-
|
|
7
|
+
import { loadEmbeddingIndex, resetStoredParticles } from '../store/vector-index.js';
|
|
8
8
|
import { loadConfig } from '../core/config.js';
|
|
9
|
-
import { resolveTenantId } from '../store/tenant.js';
|
|
10
9
|
import { refineStore } from './refine-llm.js';
|
|
11
10
|
import { printError } from './output.js';
|
|
12
11
|
import { boolFlag } from './flag-values.js';
|
|
13
12
|
import { requireInit, resolveAuthRoot } from './shared.js';
|
|
14
13
|
import { errorMessage } from '../util/log.js';
|
|
14
|
+
import { CliExit } from './exit.js';
|
|
15
15
|
const MAX_FAILED_SHOWN = 5;
|
|
16
16
|
const MAX_PAIRS_SHOWN = 15;
|
|
17
17
|
const PAIR_PREVIEW_CHARS = 90;
|
|
18
|
-
export async function
|
|
18
|
+
export async function handleRefine({ hippoRoot, tenantId, flags }) {
|
|
19
19
|
requireInit(hippoRoot);
|
|
20
20
|
const apiKey = envAnthropicApiKey();
|
|
21
21
|
if (!apiKey) {
|
|
22
22
|
printError('hippo refine needs ANTHROPIC_API_KEY in the environment.');
|
|
23
|
-
|
|
23
|
+
throw new CliExit(1);
|
|
24
24
|
}
|
|
25
25
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
26
26
|
const all = boolFlag(flags, 'all');
|
|
@@ -33,7 +33,7 @@ export async function cmdRefine(hippoRoot, flags) {
|
|
|
33
33
|
limit,
|
|
34
34
|
dryRun,
|
|
35
35
|
all,
|
|
36
|
-
tenantId
|
|
36
|
+
tenantId,
|
|
37
37
|
});
|
|
38
38
|
if (asJson) {
|
|
39
39
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -50,7 +50,7 @@ export async function cmdRefine(hippoRoot, flags) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
export function
|
|
53
|
+
export function handleDedup({ hippoRoot, flags }) {
|
|
54
54
|
requireInit(hippoRoot);
|
|
55
55
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
56
56
|
if (flags['threshold'] !== undefined) {
|
|
@@ -99,17 +99,13 @@ function printDedupPairs(result, dryRun) {
|
|
|
99
99
|
console.log(` ... and ${result.pairs.length - 15} more (run with --dry-run to see all)`);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
102
|
// Embed command
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
// root, skipping the local requireInit entirely, so this is the healing
|
|
108
|
-
// path for pre-1.27.0 global stores from a directory with no local .hippo.
|
|
103
|
+
export async function handleEmbed({ hippoRoot, flags }, given) {
|
|
104
|
+
// --global mirrors resolveAuthRoot: initGlobal() + the global root, skipping the local requireInit,
|
|
105
|
+
// so it heals pre-1.27.0 global stores from a directory with no local .hippo.
|
|
109
106
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
110
|
-
// --status and --reset-physics only read cached state, so they must work
|
|
111
|
-
//
|
|
112
|
-
// later removed). The provider-availability gate is deferred to the embed path.
|
|
107
|
+
// --status and --reset-physics only read cached state, so they must work with no provider key (e.g. removed after an earlier embed);
|
|
108
|
+
// the provider-availability gate is deferred to the embed path.
|
|
113
109
|
if (flags['reset-physics']) {
|
|
114
110
|
resetPhysics(root);
|
|
115
111
|
return;
|
|
@@ -143,9 +139,8 @@ export async function cmdEmbed(hippoRoot, flags, given) {
|
|
|
143
139
|
}
|
|
144
140
|
}
|
|
145
141
|
function resetPhysics(root) {
|
|
146
|
-
const entries = loadAllEntries(root);
|
|
147
142
|
const embIndex = loadEmbeddingIndex(root);
|
|
148
|
-
const count = resetStoredParticles(root,
|
|
143
|
+
const count = resetStoredParticles(root, loadAllEntryIds(root), embIndex);
|
|
149
144
|
console.log(`Reset physics state: ${count} particles re-initialized from embeddings.`);
|
|
150
145
|
}
|
|
151
146
|
function printEmbedStatus(root) {
|
package/dist/cli/object-verbs.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// The status, list, id and not-found paths the typed-object verbs (process, policy, skill, brief, note, decide, incident, predict) share.
|
|
2
2
|
import { printError } from './output.js';
|
|
3
3
|
import { parseListLimit, parsePositiveId, stringFlag } from './flag-values.js';
|
|
4
|
+
import { CliExit } from './exit.js';
|
|
4
5
|
/** The member of `states` named by `status`, or exit 1 with the message that lists every allowed value. */
|
|
5
6
|
export function requireStatus(status, states) {
|
|
6
7
|
const found = [...states].find((s) => s === status);
|
|
7
8
|
if (found === undefined) {
|
|
8
9
|
printError(`Invalid --status: "${status}". Must be one of: ${[...states, 'all'].join(' | ')}.`);
|
|
9
|
-
|
|
10
|
+
throw new CliExit(1);
|
|
10
11
|
}
|
|
11
12
|
return found;
|
|
12
13
|
}
|
|
@@ -32,14 +33,14 @@ export function idArgOrExit(args, usage, label, parseId = parsePositiveId) {
|
|
|
32
33
|
const idRaw = args[1];
|
|
33
34
|
if (!idRaw) {
|
|
34
35
|
printError(usage);
|
|
35
|
-
|
|
36
|
+
throw new CliExit(1);
|
|
36
37
|
}
|
|
37
38
|
return parseId(idRaw, label);
|
|
38
39
|
}
|
|
39
40
|
export function foundOrExit(found, noun, id) {
|
|
40
41
|
if (!found) {
|
|
41
42
|
printError(`${noun} ${id} not found.`);
|
|
42
|
-
|
|
43
|
+
throw new CliExit(1);
|
|
43
44
|
}
|
|
44
45
|
return found;
|
|
45
46
|
}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Documented MEMORY_ENVELOPE.md contract: owner = `user:<id>` | `agent:<id>`
|
|
5
|
-
* with id ∈ `[A-Za-z0-9_-]+`.
|
|
6
|
-
*
|
|
7
|
-
* Default: WARN-ONLY (log + accept) to preserve back-compat with existing
|
|
8
|
-
* scripted callers passing legacy owner strings. Set `HIPPO_STRICT_OWNER=1`
|
|
9
|
-
* to reject + exit. Strict mode will become the default once real auth replaces
|
|
10
|
-
* the stub (see `TODOS.md` for the migration path).
|
|
11
|
-
*/
|
|
1
|
+
/** --owner validation per MEMORY_ENVELOPE.md: `user:<id>` | `agent:<id>`, id in `[A-Za-z0-9_-]+`.
|
|
2
|
+
* Warn-only by default for legacy scripted callers; `HIPPO_STRICT_OWNER=1` rejects and exits. */
|
|
12
3
|
export declare const OWNER_CONTRACT_HINT = "Must match ^(user|agent):[A-Za-z0-9_-]+$ (e.g. user:alice, agent:capture-bot).";
|
|
13
4
|
export interface OwnerValidation {
|
|
14
5
|
ok: boolean;
|
|
@@ -17,25 +8,11 @@ export interface OwnerValidation {
|
|
|
17
8
|
/** Human-readable message (warn or error). Empty when ok = true. */
|
|
18
9
|
message: string;
|
|
19
10
|
}
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* `process.exit`. The CLI wrapper below handles side effects so this is
|
|
23
|
-
* unit-testable.
|
|
24
|
-
*
|
|
25
|
-
* Behaviour:
|
|
26
|
-
* - owner undefined → ok=true, value=undefined, no message.
|
|
27
|
-
* - owner matches OWNER_RE → ok=true, value=owner.
|
|
28
|
-
* - owner doesn't match + strict=false → ok=true, value=owner (accept),
|
|
29
|
-
* message contains the warning text.
|
|
30
|
-
* - owner doesn't match + strict=true → ok=false, value=owner (echoed),
|
|
31
|
-
* message contains the error text.
|
|
32
|
-
*/
|
|
11
|
+
/** Pure validator returning `{ ok, value, message }`; never prints or exits, so it is unit-testable.
|
|
12
|
+
* A non-matching owner is accepted with a warning unless strict, where ok=false with an error message. */
|
|
33
13
|
export declare function validateOwner(owner: string | null | undefined, opts?: {
|
|
34
14
|
strict?: boolean;
|
|
35
15
|
}): OwnerValidation;
|
|
36
|
-
/**
|
|
37
|
-
* Returns true when strict-owner enforcement is enabled via env var.
|
|
38
|
-
* Centralised here so any future bump to default-strict is one edit.
|
|
39
|
-
*/
|
|
16
|
+
/** True when strict-owner enforcement is enabled via env var. */
|
|
40
17
|
export declare function isStrictOwnerEnv(env?: NodeJS.ProcessEnv): boolean;
|
|
41
18
|
//# sourceMappingURL=owner-validation.d.ts.map
|
|
@@ -1,30 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Documented MEMORY_ENVELOPE.md contract: owner = `user:<id>` | `agent:<id>`
|
|
5
|
-
* with id ∈ `[A-Za-z0-9_-]+`.
|
|
6
|
-
*
|
|
7
|
-
* Default: WARN-ONLY (log + accept) to preserve back-compat with existing
|
|
8
|
-
* scripted callers passing legacy owner strings. Set `HIPPO_STRICT_OWNER=1`
|
|
9
|
-
* to reject + exit. Strict mode will become the default once real auth replaces
|
|
10
|
-
* the stub (see `TODOS.md` for the migration path).
|
|
11
|
-
*/
|
|
1
|
+
/** --owner validation per MEMORY_ENVELOPE.md: `user:<id>` | `agent:<id>`, id in `[A-Za-z0-9_-]+`.
|
|
2
|
+
* Warn-only by default for legacy scripted callers; `HIPPO_STRICT_OWNER=1` rejects and exits. */
|
|
12
3
|
import { processEnv } from '../util/env.js';
|
|
13
4
|
const OWNER_RE = /^(user|agent):[A-Za-z0-9_-]+$/;
|
|
14
5
|
export const OWNER_CONTRACT_HINT = 'Must match ^(user|agent):[A-Za-z0-9_-]+$ (e.g. user:alice, agent:capture-bot).';
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* `process.exit`. The CLI wrapper below handles side effects so this is
|
|
18
|
-
* unit-testable.
|
|
19
|
-
*
|
|
20
|
-
* Behaviour:
|
|
21
|
-
* - owner undefined → ok=true, value=undefined, no message.
|
|
22
|
-
* - owner matches OWNER_RE → ok=true, value=owner.
|
|
23
|
-
* - owner doesn't match + strict=false → ok=true, value=owner (accept),
|
|
24
|
-
* message contains the warning text.
|
|
25
|
-
* - owner doesn't match + strict=true → ok=false, value=owner (echoed),
|
|
26
|
-
* message contains the error text.
|
|
27
|
-
*/
|
|
6
|
+
/** Pure validator returning `{ ok, value, message }`; never prints or exits, so it is unit-testable.
|
|
7
|
+
* A non-matching owner is accepted with a warning unless strict, where ok=false with an error message. */
|
|
28
8
|
export function validateOwner(owner, opts = {}) {
|
|
29
9
|
if (owner === undefined || owner === null || owner === '') {
|
|
30
10
|
return { ok: true, value: undefined, message: '' };
|
|
@@ -46,10 +26,7 @@ export function validateOwner(owner, opts = {}) {
|
|
|
46
26
|
`Accepting for back-compat; set HIPPO_STRICT_OWNER=1 to reject.`,
|
|
47
27
|
};
|
|
48
28
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Returns true when strict-owner enforcement is enabled via env var.
|
|
51
|
-
* Centralised here so any future bump to default-strict is one edit.
|
|
52
|
-
*/
|
|
29
|
+
/** True when strict-owner enforcement is enabled via env var. */
|
|
53
30
|
export function isStrictOwnerEnv(env = processEnv()) {
|
|
54
31
|
return env.HIPPO_STRICT_OWNER === '1';
|
|
55
32
|
}
|
package/dist/cli/playbooks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleProcess({ hippoRoot, tenantId, args, flags }: CommandContext): void;
|
|
3
|
+
export declare function handlePolicy({ hippoRoot, tenantId, args, flags }: CommandContext): void;
|
|
4
|
+
export declare function handleSkill({ hippoRoot, tenantId, args, flags }: CommandContext): void;
|
|
5
5
|
//# sourceMappingURL=playbooks.d.ts.map
|
package/dist/cli/playbooks.js
CHANGED
|
@@ -3,12 +3,12 @@ import { extractPathTags } from '../search/path-context.js';
|
|
|
3
3
|
import * as processesModule from '../objects/processes.js';
|
|
4
4
|
import * as policiesModule from '../objects/policies.js';
|
|
5
5
|
import * as skillsModule from '../objects/skills.js';
|
|
6
|
-
import { resolveTenantId } from '../store/tenant.js';
|
|
7
6
|
import { printError } from './output.js';
|
|
8
|
-
import { nonEmptyStringFlag, stringFlag } from './flag-values.js';
|
|
7
|
+
import { isStringFlag, nonEmptyStringFlag, stringFlag } from './flag-values.js';
|
|
9
8
|
import { requireInit } from './shared.js';
|
|
10
9
|
import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
|
|
11
10
|
import { errorMessage } from '../util/log.js';
|
|
11
|
+
import { CliExit } from './exit.js';
|
|
12
12
|
const PROCESS = { cmd: 'process', noun: 'Process', idLabel: 'process' };
|
|
13
13
|
const POLICY = { cmd: 'policy', noun: 'Policy', idLabel: 'policy' };
|
|
14
14
|
const SKILL = { cmd: 'skill', noun: 'Skill', idLabel: 'skill' };
|
|
@@ -17,11 +17,11 @@ const SKILL = { cmd: 'skill', noun: 'Skill', idLabel: 'skill' };
|
|
|
17
17
|
function collectProcessSteps(stepRaw) {
|
|
18
18
|
if (Array.isArray(stepRaw))
|
|
19
19
|
return stepRaw;
|
|
20
|
-
if (
|
|
20
|
+
if (isStringFlag(stepRaw))
|
|
21
21
|
return [stepRaw];
|
|
22
22
|
if (stepRaw === true) {
|
|
23
23
|
printError('--step requires a value, e.g. hippo process new "<name>" --step "do X".');
|
|
24
|
-
|
|
24
|
+
throw new CliExit(1);
|
|
25
25
|
}
|
|
26
26
|
return [];
|
|
27
27
|
}
|
|
@@ -59,11 +59,10 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
59
59
|
const steps = collectProcessSteps(flags['step']);
|
|
60
60
|
if (steps.length === 0) {
|
|
61
61
|
printError('hippo process supersede requires at least one --step "<text>" for the new version.');
|
|
62
|
-
|
|
62
|
+
throw new CliExit(1);
|
|
63
63
|
}
|
|
64
|
-
// A supersession is a new version of the SAME process, so the new row reuses the predecessor's name
|
|
65
|
-
//
|
|
66
|
-
// is the authoritative active-state check.
|
|
64
|
+
// A supersession is a new version of the SAME process, so the new row reuses the predecessor's name; loadProcessById gives an early not-found,
|
|
65
|
+
// and saveProcess's in-SAVEPOINT preflight is the authoritative active-state check.
|
|
67
66
|
const existing = foundOrExit(processesModule.loadProcessById(hippoRoot, tenantId, id), PROCESS.noun, id);
|
|
68
67
|
const changeSummary = nonEmptyStringFlag(flags, 'change');
|
|
69
68
|
const description = nonEmptyStringFlag(flags, 'description');
|
|
@@ -83,9 +82,8 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
83
82
|
function processClose(hippoRoot, tenantId, args) {
|
|
84
83
|
closeObject(args, PROCESS, (id) => processesModule.closeProcess(hippoRoot, tenantId, id));
|
|
85
84
|
}
|
|
86
|
-
export function
|
|
85
|
+
export function handleProcess({ hippoRoot, tenantId, args, flags }) {
|
|
87
86
|
requireInit(hippoRoot);
|
|
88
|
-
const tenantId = resolveTenantId({});
|
|
89
87
|
const subcommand = args[0] ?? '';
|
|
90
88
|
if (subcommand === 'list')
|
|
91
89
|
return processList(hippoRoot, tenantId, flags);
|
|
@@ -95,9 +93,8 @@ export function cmdProcess(hippoRoot, args, flags) {
|
|
|
95
93
|
return processSupersede(hippoRoot, tenantId, args, flags);
|
|
96
94
|
if (subcommand === 'close')
|
|
97
95
|
return processClose(hippoRoot, tenantId, args);
|
|
98
|
-
// Default subcommand
|
|
99
|
-
//
|
|
100
|
-
// `new` keyword the name is args[1], otherwise args[0] IS the name.
|
|
96
|
+
// Default subcommand is new (create): accept both `process new "<name>"` and bare `process "<name>"`;
|
|
97
|
+
// for the `new` keyword the name is args[1], otherwise args[0] is the name.
|
|
101
98
|
processCreate(hippoRoot, tenantId, subcommand === 'new' ? (args[1] ?? '') : subcommand, flags);
|
|
102
99
|
}
|
|
103
100
|
function processCreate(hippoRoot, tenantId, processName, flags) {
|
|
@@ -107,7 +104,7 @@ function processCreate(hippoRoot, tenantId, processName, flags) {
|
|
|
107
104
|
printError(' hippo process get <id>');
|
|
108
105
|
printError(' hippo process supersede <id> --step "<text>" [--change "<summary>"]');
|
|
109
106
|
printError(' hippo process close <id>');
|
|
110
|
-
|
|
107
|
+
throw new CliExit(1);
|
|
111
108
|
}
|
|
112
109
|
const steps = collectProcessSteps(flags['step']);
|
|
113
110
|
const description = nonEmptyStringFlag(flags, 'description');
|
|
@@ -141,7 +138,7 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
|
|
|
141
138
|
const dateRaw = args[1];
|
|
142
139
|
if (!dateRaw) {
|
|
143
140
|
printError('Usage: hippo policy asof <iso-date> [--name "<policy>"]');
|
|
144
|
-
|
|
141
|
+
throw new CliExit(1);
|
|
145
142
|
}
|
|
146
143
|
const name = nonEmptyStringFlag(flags, 'name');
|
|
147
144
|
let results;
|
|
@@ -150,7 +147,7 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
|
|
|
150
147
|
}
|
|
151
148
|
catch (e) {
|
|
152
149
|
printError(errorMessage(e));
|
|
153
|
-
|
|
150
|
+
throw new CliExit(1);
|
|
154
151
|
}
|
|
155
152
|
if (results.length === 0) {
|
|
156
153
|
console.log(`No active policies in force at ${dateRaw}${name ? ` for "${name}"` : ''}.`);
|
|
@@ -177,7 +174,7 @@ function policySupersede(hippoRoot, tenantId, args, flags) {
|
|
|
177
174
|
const textRaw = stringFlag(flags, 'text');
|
|
178
175
|
if (!textRaw?.trim()) {
|
|
179
176
|
printError('hippo policy supersede requires --text "<rule>" for the new version.');
|
|
180
|
-
|
|
177
|
+
throw new CliExit(1);
|
|
181
178
|
}
|
|
182
179
|
const existing = foundOrExit(policiesModule.loadPolicyById(hippoRoot, tenantId, id), POLICY.noun, id);
|
|
183
180
|
try {
|
|
@@ -196,15 +193,14 @@ function policySupersede(hippoRoot, tenantId, args, flags) {
|
|
|
196
193
|
}
|
|
197
194
|
catch (e) {
|
|
198
195
|
printError(errorMessage(e));
|
|
199
|
-
|
|
196
|
+
throw new CliExit(1);
|
|
200
197
|
}
|
|
201
198
|
}
|
|
202
199
|
function policyClose(hippoRoot, tenantId, args) {
|
|
203
200
|
closeObject(args, POLICY, (id) => policiesModule.closePolicy(hippoRoot, tenantId, id));
|
|
204
201
|
}
|
|
205
|
-
export function
|
|
202
|
+
export function handlePolicy({ hippoRoot, tenantId, args, flags }) {
|
|
206
203
|
requireInit(hippoRoot);
|
|
207
|
-
const tenantId = resolveTenantId({});
|
|
208
204
|
const subcommand = args[0] ?? '';
|
|
209
205
|
if (subcommand === 'list')
|
|
210
206
|
return policyList(hippoRoot, tenantId, flags);
|
|
@@ -231,7 +227,7 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
|
|
|
231
227
|
printError(' hippo policy asof <iso-date> [--name "<policy>"]');
|
|
232
228
|
printError(' hippo policy supersede <id> --text "<rule>" [--from] [--to] [--change "<summary>"]');
|
|
233
229
|
printError(' hippo policy close <id>');
|
|
234
|
-
|
|
230
|
+
throw new CliExit(1);
|
|
235
231
|
}
|
|
236
232
|
try {
|
|
237
233
|
const created = policiesModule.savePolicy(hippoRoot, tenantId, {
|
|
@@ -248,7 +244,7 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
|
|
|
248
244
|
}
|
|
249
245
|
catch (e) {
|
|
250
246
|
printError(errorMessage(e));
|
|
251
|
-
|
|
247
|
+
throw new CliExit(1);
|
|
252
248
|
}
|
|
253
249
|
}
|
|
254
250
|
function printSkillRow(s) {
|
|
@@ -291,7 +287,7 @@ function skillSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
291
287
|
const instrRaw = stringFlag(flags, 'instructions');
|
|
292
288
|
if (!instrRaw?.trim()) {
|
|
293
289
|
printError('hippo skill supersede requires --instructions "<text>" for the new version.');
|
|
294
|
-
|
|
290
|
+
throw new CliExit(1);
|
|
295
291
|
}
|
|
296
292
|
const existing = foundOrExit(skillsModule.loadSkillById(hippoRoot, tenantId, id), SKILL.noun, id);
|
|
297
293
|
try {
|
|
@@ -309,15 +305,14 @@ function skillSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
309
305
|
}
|
|
310
306
|
catch (e) {
|
|
311
307
|
printError(errorMessage(e));
|
|
312
|
-
|
|
308
|
+
throw new CliExit(1);
|
|
313
309
|
}
|
|
314
310
|
}
|
|
315
311
|
function skillClose(hippoRoot, tenantId, args) {
|
|
316
312
|
closeObject(args, SKILL, (id) => skillsModule.closeSkill(hippoRoot, tenantId, id));
|
|
317
313
|
}
|
|
318
|
-
export function
|
|
314
|
+
export function handleSkill({ hippoRoot, tenantId, args, flags }) {
|
|
319
315
|
requireInit(hippoRoot);
|
|
320
|
-
const tenantId = resolveTenantId({});
|
|
321
316
|
const subcommand = args[0] ?? '';
|
|
322
317
|
if (subcommand === 'list')
|
|
323
318
|
return skillList(hippoRoot, tenantId, flags);
|
|
@@ -344,7 +339,7 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
|
|
|
344
339
|
printError(' hippo skill export (render active skills as an AGENTS.md/CLAUDE.md block)');
|
|
345
340
|
printError(' hippo skill supersede <id> --instructions "<text>" [--trigger] [--change "<summary>"]');
|
|
346
341
|
printError(' hippo skill close <id>');
|
|
347
|
-
|
|
342
|
+
throw new CliExit(1);
|
|
348
343
|
}
|
|
349
344
|
try {
|
|
350
345
|
const created = skillsModule.saveSkill(hippoRoot, tenantId, {
|
|
@@ -359,7 +354,7 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
|
|
|
359
354
|
}
|
|
360
355
|
catch (e) {
|
|
361
356
|
printError(errorMessage(e));
|
|
362
|
-
|
|
357
|
+
throw new CliExit(1);
|
|
363
358
|
}
|
|
364
359
|
}
|
|
365
360
|
//# sourceMappingURL=playbooks.js.map
|
package/dist/cli/print.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TaskSnapshot, SessionEvent } from '../store/rows.js';
|
|
1
|
+
import type { TaskSnapshot, SessionEvent } from '../store/rows.js';
|
|
2
2
|
import type { SessionHandoff } from '../core/handoff.js';
|
|
3
3
|
import type { SearchResult } from '../core/search-types.js';
|
|
4
4
|
import { type ImportReport } from '../agent-memories/report.js';
|
|
@@ -10,9 +10,6 @@ export declare function printAgentImport(report: ImportReport, indent?: string):
|
|
|
10
10
|
export declare function printActiveTaskSnapshot(snapshot: TaskSnapshot): void;
|
|
11
11
|
export declare function printSessionEvents(events: SessionEvent[]): void;
|
|
12
12
|
export declare function printHandoff(handoff: SessionHandoff): void;
|
|
13
|
-
/**
|
|
14
|
-
* Run `fn` with console.log captured; returns the captured lines joined by
|
|
15
|
-
* newlines (what the same calls would have printed, minus the final newline).
|
|
16
|
-
*/
|
|
13
|
+
/** Run `fn` with console.log captured; returns the captured lines joined by newlines (no final newline). */
|
|
17
14
|
export declare function captureConsole(fn: () => void): string;
|
|
18
15
|
//# sourceMappingURL=print.d.ts.map
|
package/dist/cli/print.js
CHANGED
|
@@ -66,10 +66,7 @@ export function printSessionEvents(events) {
|
|
|
66
66
|
export function printHandoff(handoff) {
|
|
67
67
|
console.log(handoffText(handoff));
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Run `fn` with console.log captured; returns the captured lines joined by
|
|
71
|
-
* newlines (what the same calls would have printed, minus the final newline).
|
|
72
|
-
*/
|
|
69
|
+
/** Run `fn` with console.log captured; returns the captured lines joined by newlines (no final newline). */
|
|
73
70
|
export function captureConsole(fn) {
|
|
74
71
|
const lines = [];
|
|
75
72
|
const realLog = console.log;
|
package/dist/cli/projects.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleProjects({ hippoRoot, tenantId, args, flags }: CommandContext): void;
|
|
3
3
|
//# sourceMappingURL=projects.d.ts.map
|
package/dist/cli/projects.js
CHANGED
|
@@ -3,7 +3,6 @@ import * as path from 'path';
|
|
|
3
3
|
import { execFileSync } from 'child_process';
|
|
4
4
|
import { closeHippoDb, openHippoDb } from '../db/index.js';
|
|
5
5
|
import { listProjects, mergeProjects, repairProjects } from '../sharing/project-merge.js';
|
|
6
|
-
import { resolveTenantId } from '../store/tenant.js';
|
|
7
6
|
import { flagIsTrue } from './flag-values.js';
|
|
8
7
|
import { resolveAuthRoot } from './shared.js';
|
|
9
8
|
import { printError } from './output.js';
|
|
@@ -76,9 +75,8 @@ function projectsRepair(db, tenantId, root, flags) {
|
|
|
76
75
|
console.log(` ${r.untraced.length} left as they are (no parent left to show which project; check them with hippo inspect <id>)`);
|
|
77
76
|
console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_repair` : 'Nothing written. Add --apply to run it.');
|
|
78
77
|
}
|
|
79
|
-
export function
|
|
78
|
+
export function handleProjects({ hippoRoot, tenantId, args, flags }) {
|
|
80
79
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
81
|
-
const tenantId = resolveTenantId({});
|
|
82
80
|
const sub = args[0] ?? 'list';
|
|
83
81
|
const db = openHippoDb(root);
|
|
84
82
|
try {
|
|
@@ -8,11 +8,7 @@ export interface ProvenanceCoverage {
|
|
|
8
8
|
missing: ('owner' | 'artifact_ref')[];
|
|
9
9
|
}>;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* and `artifact_ref`. Distilled / superseded / archived rows are excluded —
|
|
14
|
-
* those are derivative or terminal, not source receipts. Coverage of 1.0 on
|
|
15
|
-
* a non-empty raw set is the ship gate from the Company Brain scorecard.
|
|
16
|
-
*/
|
|
11
|
+
/** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
|
|
12
|
+
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
17
13
|
export declare function buildProvenanceCoverage(entries: MemoryEntry[]): ProvenanceCoverage;
|
|
18
14
|
//# sourceMappingURL=provenance-coverage.d.ts.map
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* and `artifact_ref`. Distilled / superseded / archived rows are excluded —
|
|
4
|
-
* those are derivative or terminal, not source receipts. Coverage of 1.0 on
|
|
5
|
-
* a non-empty raw set is the ship gate from the Company Brain scorecard.
|
|
6
|
-
*/
|
|
1
|
+
/** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
|
|
2
|
+
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
7
3
|
export function buildProvenanceCoverage(entries) {
|
|
8
4
|
const raws = entries.filter((e) => e.kind === 'raw');
|
|
9
5
|
const gaps = [];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Sleep and the daily runner clean a store's old automatic memories once, so an upgrade needs no command.
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { errorMessage, log } from '../util/log.js';
|
|
4
|
-
import { repairQualityOnce } from '
|
|
5
|
-
import { getGlobalRoot } from '../sharing/
|
|
4
|
+
import { repairQualityOnce } from '../store/quality-repair.js';
|
|
5
|
+
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
6
6
|
import { resolveTenantId } from '../store/tenant.js';
|
|
7
7
|
/** Fault-isolated like the project tag repair: a failure warns, leaves the store unmarked and runs again next time. */
|
|
8
8
|
export function repairQualityOnceAt(root) {
|
package/dist/cli/recall.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
3
|
-
export declare function cmdRecall(hippoRoot: string, query: string, flags: CliFlags): Promise<void>;
|
|
4
|
-
export declare function handleRecall({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleRecall({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
5
3
|
//# sourceMappingURL=recall.d.ts.map
|