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
|
@@ -1,43 +1,28 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { resolveTenantId } from '../../store/tenant.js';
|
|
16
|
-
import { backfillRepo } from './backfill.js';
|
|
17
|
-
import { realGitHubFetcher } from './octokit-client.js';
|
|
18
|
-
import { listDlq } from '../dlq.js';
|
|
19
|
-
import { githubDlq, replayDlqEntry } from './dlq.js';
|
|
20
|
-
import { ingestEvent } from './ingest.js';
|
|
21
|
-
import { handleCommentDeleted } from './deletion.js';
|
|
22
|
-
import { computeDeletionKey } from './signature.js';
|
|
23
|
-
import { isGitHubIssueEvent, isGitHubIssueCommentEvent, isGitHubPullRequestEvent, isGitHubPullRequestReviewCommentEvent, } from './types.js';
|
|
1
|
+
/** `hippo github` subcommands, split out of cli.ts so tests can import them without triggering main().
|
|
2
|
+
* The dispatcher in cli.ts re-exports handleGitHub. */
|
|
3
|
+
import { envGitHubToken, envGitHubWebhookSecret, envGitHubWebhookSecretPrevious } from '../util/env.js';
|
|
4
|
+
import { adminActor } from '../api/index.js';
|
|
5
|
+
import { backfillRepo } from '../connectors/github/backfill.js';
|
|
6
|
+
import { realGitHubFetcher } from '../connectors/github/octokit-client.js';
|
|
7
|
+
import { listDlq } from '../connectors/dlq.js';
|
|
8
|
+
import { githubDlq, replayDlqEntry } from '../connectors/github/dlq.js';
|
|
9
|
+
import { ingestEvent } from '../connectors/github/ingest.js';
|
|
10
|
+
import { handleCommentDeleted } from '../connectors/github/deletion.js';
|
|
11
|
+
import { computeDeletionKey } from '../connectors/github/signature.js';
|
|
12
|
+
import { isGitHubIssueEvent, isGitHubIssueCommentEvent, isGitHubPullRequestEvent, isGitHubPullRequestReviewCommentEvent, } from '../connectors/github/types.js';
|
|
13
|
+
import { CliExit } from './exit.js';
|
|
14
|
+
import { errorMessage } from '../util/log.js';
|
|
24
15
|
function isFlagString(value) {
|
|
25
16
|
return typeof value === 'string';
|
|
26
17
|
}
|
|
27
|
-
// FlagValue never includes `number`
|
|
28
|
-
// `value is number` predicate directly on FlagValue would not type-check —
|
|
29
|
-
// the generic wrapper narrows a value of any type T instead.
|
|
18
|
+
// FlagValue never includes `number`, so a `value is number` predicate on it would not type-check; the generic wrapper narrows any type T instead.
|
|
30
19
|
function isNumberLike(value) {
|
|
31
20
|
return typeof value === 'number';
|
|
32
21
|
}
|
|
33
22
|
function isFlagValueNumberLike(value) {
|
|
34
23
|
return isNumberLike(value);
|
|
35
24
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Map a parsed envelope + eventName header to an IngestEvent discriminated
|
|
38
|
-
* union. Returns null for unknown event types or shapes that don't pass the
|
|
39
|
-
* type guards.
|
|
40
|
-
*/
|
|
25
|
+
/** Map a parsed envelope + eventName header to an IngestEvent; null for unknown event types or shapes failing the type guards. */
|
|
41
26
|
function parsedToIngestEvent(parsed, eventName) {
|
|
42
27
|
if (eventName === 'issues' && isGitHubIssueEvent(parsed, eventName)) {
|
|
43
28
|
return { eventName: 'issues', payload: parsed };
|
|
@@ -55,7 +40,7 @@ function parsedToIngestEvent(parsed, eventName) {
|
|
|
55
40
|
return null;
|
|
56
41
|
}
|
|
57
42
|
// Console lines below are the `hippo github` command's printed result and usage text, so they stay off the logger.
|
|
58
|
-
export function
|
|
43
|
+
export function printGitHubBackfillUsage() {
|
|
59
44
|
console.log('hippo github backfill --repo <owner/name> [--since ISO] [--max <N>]');
|
|
60
45
|
console.log(' --repo GitHub repository in owner/name format (required, e.g. acme/widgets)');
|
|
61
46
|
console.log(' --since Initial high-water-mark for first run (optional, ISO 8601)');
|
|
@@ -72,31 +57,21 @@ function maxPerStreamFlag(maxRaw) {
|
|
|
72
57
|
}
|
|
73
58
|
return undefined;
|
|
74
59
|
}
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
* code path without hitting the network. Defaults to `realGitHubFetcher`.
|
|
78
|
-
*/
|
|
79
|
-
export async function cmdGithubBackfill(hippoRoot, flags, fetcher = realGitHubFetcher) {
|
|
60
|
+
/** `hippo github backfill`; the fetcher is injectable so tests avoid the network (default `realGitHubFetcher`). */
|
|
61
|
+
export async function cmdGitHubBackfill(hippoRoot, tenantId, flags, fetcher = realGitHubFetcher) {
|
|
80
62
|
const repo = flags['repo'];
|
|
81
63
|
if (!isFlagString(repo) || !repo.includes('/')) {
|
|
82
|
-
|
|
83
|
-
|
|
64
|
+
printGitHubBackfillUsage();
|
|
65
|
+
throw new CliExit(2);
|
|
84
66
|
}
|
|
85
|
-
const token =
|
|
67
|
+
const token = envGitHubToken();
|
|
86
68
|
if (!token) {
|
|
87
69
|
console.error('GITHUB_TOKEN is not set. Backfill requires a personal access token with repo read scope.');
|
|
88
|
-
|
|
70
|
+
throw new CliExit(2);
|
|
89
71
|
}
|
|
90
72
|
const maxPerStream = maxPerStreamFlag(flags['max']);
|
|
91
73
|
const sinceFlag = flags['since'];
|
|
92
74
|
const sinceIso = isFlagString(sinceFlag) ? sinceFlag : undefined;
|
|
93
|
-
const tenantId = resolveTenantId({});
|
|
94
|
-
// Seed the github_cursors row so all 3 streams use --since on a fresh run.
|
|
95
|
-
// COALESCE preserves any existing HWM (subsequent runs ignore --since for
|
|
96
|
-
// streams that already drained at least once — same idempotency story as
|
|
97
|
-
// Slack's slack_cursors).
|
|
98
|
-
if (sinceIso)
|
|
99
|
-
seedCursors(hippoRoot, tenantId, repo, sinceIso);
|
|
100
75
|
const ctx = {
|
|
101
76
|
hippoRoot,
|
|
102
77
|
tenantId,
|
|
@@ -108,19 +83,17 @@ export async function cmdGithubBackfill(hippoRoot, flags, fetcher = realGitHubFe
|
|
|
108
83
|
fetcher,
|
|
109
84
|
token,
|
|
110
85
|
maxPerStream,
|
|
86
|
+
sinceIso,
|
|
111
87
|
});
|
|
112
88
|
console.log(JSON.stringify(result, null, 2));
|
|
113
89
|
}
|
|
114
90
|
catch (e) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// lenient formatting even when something non-Error was thrown.
|
|
118
|
-
console.error('backfill failed:', e.message);
|
|
119
|
-
process.exit(3);
|
|
91
|
+
console.error('backfill failed:', errorMessage(e));
|
|
92
|
+
throw new CliExit(3);
|
|
120
93
|
}
|
|
121
94
|
}
|
|
122
|
-
export function
|
|
123
|
-
const items = listDlq(githubDlq, hippoRoot, { tenantId
|
|
95
|
+
export function cmdGitHubDlqList(hippoRoot, tenantId, _flags) {
|
|
96
|
+
const items = listDlq(githubDlq, hippoRoot, { tenantId });
|
|
124
97
|
if (items.length === 0) {
|
|
125
98
|
console.log('no entries');
|
|
126
99
|
return;
|
|
@@ -150,9 +123,8 @@ const reingestParkedDelivery = async (innerCtx, args) => {
|
|
|
150
123
|
deliveryId: args.deliveryId,
|
|
151
124
|
eventName: event.eventName,
|
|
152
125
|
});
|
|
153
|
-
// archivedCount maps to memoryId only loosely
|
|
154
|
-
//
|
|
155
|
-
// trail is in github_dlq.retry_count + retried_at.
|
|
126
|
+
// archivedCount maps to memoryId only loosely (the archive can affect multiple rows), so return null;
|
|
127
|
+
// the replay audit trail is github_dlq.retry_count + retried_at.
|
|
156
128
|
return { memoryId: r.archivedCount > 0 ? 'archived' : null };
|
|
157
129
|
}
|
|
158
130
|
const r = await ingestEvent(innerCtx, {
|
|
@@ -162,51 +134,51 @@ const reingestParkedDelivery = async (innerCtx, args) => {
|
|
|
162
134
|
});
|
|
163
135
|
return { memoryId: r.memoryId };
|
|
164
136
|
};
|
|
165
|
-
export async function
|
|
137
|
+
export async function cmdGitHubDlqReplay(hippoRoot, tenantId, args, flags) {
|
|
166
138
|
const idArg = args[0];
|
|
167
139
|
if (!idArg) {
|
|
168
140
|
console.error('Usage: hippo github dlq replay <id> [--force]');
|
|
169
|
-
|
|
141
|
+
throw new CliExit(1);
|
|
170
142
|
}
|
|
171
143
|
const id = Number(idArg);
|
|
172
144
|
if (!Number.isFinite(id) || !Number.isInteger(id) || id < 1) {
|
|
173
145
|
console.error(`replay: invalid id ${idArg}`);
|
|
174
|
-
|
|
146
|
+
throw new CliExit(1);
|
|
175
147
|
}
|
|
176
148
|
const force = flags['force'] === true;
|
|
177
149
|
const ctx = {
|
|
178
150
|
hippoRoot,
|
|
179
|
-
tenantId
|
|
151
|
+
tenantId,
|
|
180
152
|
actor: adminActor('cli:github-dlq-replay'),
|
|
181
153
|
};
|
|
182
154
|
// Without an ingestHook replay only bumps retry_count while printing "replay ok"; the real hook re-runs ingest.
|
|
183
155
|
const result = await replayDlqEntry(ctx, id, {
|
|
184
156
|
force,
|
|
185
|
-
webhookSecret:
|
|
186
|
-
previousSecret:
|
|
157
|
+
webhookSecret: envGitHubWebhookSecret(),
|
|
158
|
+
previousSecret: envGitHubWebhookSecretPrevious(),
|
|
187
159
|
ingestHook: reingestParkedDelivery,
|
|
188
160
|
});
|
|
189
161
|
if (!result.ok) {
|
|
190
162
|
console.error(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
|
|
191
|
-
|
|
163
|
+
throw new CliExit(1);
|
|
192
164
|
}
|
|
193
165
|
console.log(`replay ok: status=${result.status} memory_id=${result.memoryId ?? '(none)'} retry_count=${result.retryCount}`);
|
|
194
166
|
}
|
|
195
|
-
export async function
|
|
167
|
+
export async function handleGitHub({ hippoRoot, tenantId, args, flags }) {
|
|
196
168
|
const sub = args[0];
|
|
197
169
|
if (sub === 'backfill') {
|
|
198
|
-
await
|
|
170
|
+
await cmdGitHubBackfill(hippoRoot, tenantId, flags);
|
|
199
171
|
return;
|
|
200
172
|
}
|
|
201
173
|
if (sub === 'dlq' && args[1] === 'list') {
|
|
202
|
-
|
|
174
|
+
cmdGitHubDlqList(hippoRoot, tenantId, flags);
|
|
203
175
|
return;
|
|
204
176
|
}
|
|
205
177
|
if (sub === 'dlq' && args[1] === 'replay') {
|
|
206
|
-
await
|
|
178
|
+
await cmdGitHubDlqReplay(hippoRoot, tenantId, args.slice(2), flags);
|
|
207
179
|
return;
|
|
208
180
|
}
|
|
209
181
|
console.error('Usage: hippo github <backfill|dlq list|dlq replay <id> [--force]> [...]');
|
|
210
|
-
|
|
182
|
+
throw new CliExit(1);
|
|
211
183
|
}
|
|
212
|
-
//# sourceMappingURL=
|
|
184
|
+
//# sourceMappingURL=github.js.map
|
package/dist/cli/goals.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 handleGoal({ hippoRoot, tenantId, args, flags }: CommandContext): void;
|
|
3
3
|
//# sourceMappingURL=goals.d.ts.map
|
package/dist/cli/goals.js
CHANGED
|
@@ -1,46 +1,48 @@
|
|
|
1
1
|
// `hippo goal`: the per-session goal stack that recall boosts.
|
|
2
|
-
import { envHippoSessionId } from '../util/env.js';
|
|
2
|
+
import { DEFAULT_TENANT_ID, envHippoSessionId } from '../util/env.js';
|
|
3
3
|
import * as api from '../api/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { cliApiContext } from './api-context.js';
|
|
5
5
|
import { printError } from './output.js';
|
|
6
|
-
import { boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
7
|
-
|
|
6
|
+
import { boolFlag, flagIsTrue, isStringFlag, stringFlag } from './flag-values.js';
|
|
7
|
+
import { CliExit } from './exit.js';
|
|
8
8
|
// `hippo goal <push|list|complete|suspend|resume>`
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
9
|
const GOAL_POLICY_TYPES = [
|
|
11
10
|
'schema-fit-biased',
|
|
12
11
|
'error-prioritized',
|
|
13
12
|
'recency-first',
|
|
14
13
|
'hybrid',
|
|
15
14
|
];
|
|
15
|
+
function isGoalPolicyType(value) {
|
|
16
|
+
return GOAL_POLICY_TYPES.some((type) => type === value);
|
|
17
|
+
}
|
|
16
18
|
function sanitizeGoalName(s) {
|
|
17
19
|
// Strip C0 control chars + DEL to prevent terminal escape injection.
|
|
18
|
-
return s.replace(/[\
|
|
20
|
+
return s.replace(/[^\x20-\x7e\u0080-\uffff]/g, '?');
|
|
19
21
|
}
|
|
20
|
-
function resolveGoalSession(flags) {
|
|
22
|
+
function resolveGoalSession(flags, defaultTenantId) {
|
|
21
23
|
const sessionId = (flags['session-id'] !== undefined
|
|
22
24
|
? String(flags['session-id'])
|
|
23
25
|
: envHippoSessionId() ?? '').trim();
|
|
24
26
|
if (!sessionId) {
|
|
25
27
|
printError('session id required (set HIPPO_SESSION_ID or pass --session-id)');
|
|
26
|
-
|
|
28
|
+
throw new CliExit(1);
|
|
27
29
|
}
|
|
28
30
|
const tenantId = (flags['tenant-id'] !== undefined
|
|
29
31
|
? String(flags['tenant-id'])
|
|
30
|
-
:
|
|
32
|
+
: defaultTenantId).trim() || DEFAULT_TENANT_ID;
|
|
31
33
|
return { sessionId, tenantId };
|
|
32
34
|
}
|
|
33
35
|
function readGoalPolicy(flags) {
|
|
34
36
|
const policyRaw = flags['policy'];
|
|
35
37
|
if (policyRaw === true) {
|
|
36
38
|
printError('--policy requires a value (e.g., --policy error-prioritized)');
|
|
37
|
-
|
|
39
|
+
throw new CliExit(1);
|
|
38
40
|
}
|
|
39
|
-
if (
|
|
41
|
+
if (!isStringFlag(policyRaw))
|
|
40
42
|
return undefined;
|
|
41
|
-
if (!
|
|
43
|
+
if (!isGoalPolicyType(policyRaw)) {
|
|
42
44
|
printError(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
|
|
43
|
-
|
|
45
|
+
throw new CliExit(1);
|
|
44
46
|
}
|
|
45
47
|
return { policyType: policyRaw };
|
|
46
48
|
}
|
|
@@ -48,44 +50,44 @@ function readGoalLevel(flags) {
|
|
|
48
50
|
const levelRaw = flags['level'];
|
|
49
51
|
if (levelRaw === true) {
|
|
50
52
|
printError('--level requires a value (e.g., --level 1)');
|
|
51
|
-
|
|
53
|
+
throw new CliExit(1);
|
|
52
54
|
}
|
|
53
55
|
if (levelRaw === undefined)
|
|
54
56
|
return undefined;
|
|
55
57
|
const parsed = Number(levelRaw);
|
|
56
58
|
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
|
|
57
59
|
printError('--level must be an integer in [0, 2]');
|
|
58
|
-
|
|
60
|
+
throw new CliExit(1);
|
|
59
61
|
}
|
|
60
62
|
return parsed;
|
|
61
63
|
}
|
|
62
|
-
function cmdGoalPush(hippoRoot, args, flags) {
|
|
64
|
+
function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
|
|
63
65
|
const rawName = args.join(' ').trim();
|
|
64
66
|
if (!rawName) {
|
|
65
67
|
printError('Usage: hippo goal push <name> [--policy <type>] [--success "<condition>"] [--level N] [--parent <goalId>]');
|
|
66
|
-
|
|
68
|
+
throw new CliExit(1);
|
|
67
69
|
}
|
|
68
70
|
// Sanitize at WRITE time so corrupt names never enter the DB.
|
|
69
71
|
const name = sanitizeGoalName(rawName);
|
|
70
72
|
if (name !== rawName) {
|
|
71
73
|
printError('note: stripped control characters from goal name');
|
|
72
74
|
}
|
|
73
|
-
const { sessionId, tenantId } = resolveGoalSession(flags);
|
|
75
|
+
const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
|
|
74
76
|
const policy = readGoalPolicy(flags);
|
|
75
77
|
const successRaw = flags['success'];
|
|
76
78
|
if (successRaw === true) {
|
|
77
79
|
printError('--success requires a value (e.g., --success "<condition>")');
|
|
78
|
-
|
|
80
|
+
throw new CliExit(1);
|
|
79
81
|
}
|
|
80
82
|
const successCondition = stringFlag(flags, 'success');
|
|
81
83
|
const level = readGoalLevel(flags);
|
|
82
84
|
const parentRaw = flags['parent'];
|
|
83
85
|
if (parentRaw === true) {
|
|
84
86
|
printError('--parent requires a value (e.g., --parent <goalId>)');
|
|
85
|
-
|
|
87
|
+
throw new CliExit(1);
|
|
86
88
|
}
|
|
87
89
|
const parentGoalId = stringFlag(flags, 'parent');
|
|
88
|
-
const goal = api.goalPush(
|
|
90
|
+
const goal = api.goalPush(cliApiContext(hippoRoot, tenantId), {
|
|
89
91
|
sessionId,
|
|
90
92
|
goalName: name,
|
|
91
93
|
level,
|
|
@@ -95,21 +97,15 @@ function cmdGoalPush(hippoRoot, args, flags) {
|
|
|
95
97
|
});
|
|
96
98
|
console.log(goal.id);
|
|
97
99
|
}
|
|
98
|
-
function
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
function cmdGoalList(hippoRoot, flags) {
|
|
102
|
-
const { sessionId, tenantId } = resolveGoalSession(flags);
|
|
100
|
+
function cmdGoalList(hippoRoot, defaultTenantId, flags) {
|
|
101
|
+
const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
|
|
103
102
|
const showAll = boolFlag(flags, 'all');
|
|
104
|
-
const goals = api.goalList(
|
|
103
|
+
const goals = api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
|
|
105
104
|
if (goals.length === 0) {
|
|
106
105
|
console.log('(no goals)');
|
|
107
106
|
return;
|
|
108
107
|
}
|
|
109
|
-
//
|
|
110
|
-
// table but the assertion list (id, status, goal_name, outcome) needs four;
|
|
111
|
-
// tests check for substrings ('active', '0.9', name) so column count is
|
|
112
|
-
// observably four but not asserted.
|
|
108
|
+
// Four columns (id, status, goal_name, outcome); tests only check substrings, so the count is not asserted.
|
|
113
109
|
const rows = goals.map(g => ({
|
|
114
110
|
id: g.id,
|
|
115
111
|
status: g.status,
|
|
@@ -128,74 +124,74 @@ function cmdGoalList(hippoRoot, flags) {
|
|
|
128
124
|
console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)} ${pad(r.outcome, widths.outcome)}`);
|
|
129
125
|
}
|
|
130
126
|
}
|
|
131
|
-
function cmdGoalComplete(hippoRoot, args, flags) {
|
|
127
|
+
function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
|
|
132
128
|
const id = args[0];
|
|
133
129
|
if (!id) {
|
|
134
130
|
printError('Usage: hippo goal complete <id> [--outcome <0..1>] [--no-propagate]');
|
|
135
|
-
|
|
131
|
+
throw new CliExit(1);
|
|
136
132
|
}
|
|
137
133
|
let outcomeScore;
|
|
138
134
|
const outcomeRaw = flags['outcome'];
|
|
139
135
|
if (outcomeRaw === true) {
|
|
140
136
|
printError('--outcome requires a value (e.g., --outcome 0.9)');
|
|
141
|
-
|
|
137
|
+
throw new CliExit(1);
|
|
142
138
|
}
|
|
143
139
|
if (outcomeRaw !== undefined) {
|
|
144
140
|
const parsed = Number(outcomeRaw);
|
|
145
141
|
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
|
|
146
142
|
printError('--outcome must be a number in [0, 1]');
|
|
147
|
-
|
|
143
|
+
throw new CliExit(1);
|
|
148
144
|
}
|
|
149
145
|
outcomeScore = parsed;
|
|
150
146
|
}
|
|
151
147
|
const noPropagate = flagIsTrue(flags, 'no-propagate');
|
|
152
|
-
api.goalComplete(
|
|
148
|
+
api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
|
|
153
149
|
console.log('ok');
|
|
154
150
|
}
|
|
155
|
-
function cmdGoalSuspend(hippoRoot, args) {
|
|
151
|
+
function cmdGoalSuspend(hippoRoot, tenantId, args) {
|
|
156
152
|
const id = args[0];
|
|
157
153
|
if (!id) {
|
|
158
154
|
printError('Usage: hippo goal suspend <id>');
|
|
159
|
-
|
|
155
|
+
throw new CliExit(1);
|
|
160
156
|
}
|
|
161
|
-
api.goalSuspend(
|
|
157
|
+
api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
|
|
162
158
|
console.log('ok');
|
|
163
159
|
}
|
|
164
|
-
function cmdGoalResume(hippoRoot, args) {
|
|
160
|
+
function cmdGoalResume(hippoRoot, tenantId, args) {
|
|
165
161
|
const id = args[0];
|
|
166
162
|
if (!id) {
|
|
167
163
|
printError('Usage: hippo goal resume <id>');
|
|
168
|
-
|
|
164
|
+
throw new CliExit(1);
|
|
169
165
|
}
|
|
170
|
-
api.goalResume(
|
|
166
|
+
api.goalResume(cliApiContext(hippoRoot, tenantId), id);
|
|
171
167
|
console.log('ok');
|
|
172
168
|
}
|
|
173
|
-
export function
|
|
169
|
+
export function handleGoal({ hippoRoot, tenantId, args, flags }) {
|
|
174
170
|
const sub = args[0];
|
|
175
171
|
if (!sub) {
|
|
176
172
|
printError('Usage: hippo goal <push|list|complete|suspend|resume> [args]');
|
|
177
|
-
|
|
173
|
+
throw new CliExit(1);
|
|
178
174
|
}
|
|
179
175
|
const subArgs = args.slice(1);
|
|
180
176
|
switch (sub) {
|
|
181
177
|
case 'push':
|
|
182
|
-
cmdGoalPush(hippoRoot, subArgs, flags);
|
|
178
|
+
cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
|
|
183
179
|
return;
|
|
184
180
|
case 'list':
|
|
185
|
-
cmdGoalList(hippoRoot, flags);
|
|
181
|
+
cmdGoalList(hippoRoot, tenantId, flags);
|
|
186
182
|
return;
|
|
187
183
|
case 'complete':
|
|
188
|
-
cmdGoalComplete(hippoRoot, subArgs, flags);
|
|
184
|
+
cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
|
|
189
185
|
return;
|
|
190
186
|
case 'suspend':
|
|
191
|
-
cmdGoalSuspend(hippoRoot, subArgs);
|
|
187
|
+
cmdGoalSuspend(hippoRoot, tenantId, subArgs);
|
|
192
188
|
return;
|
|
193
189
|
case 'resume':
|
|
194
|
-
cmdGoalResume(hippoRoot, subArgs);
|
|
190
|
+
cmdGoalResume(hippoRoot, tenantId, subArgs);
|
|
195
191
|
return;
|
|
196
192
|
default:
|
|
197
193
|
printError(`Unknown goal subcommand: ${sub}. Expected: push | list | complete | suspend | resume.`);
|
|
198
|
-
|
|
194
|
+
throw new CliExit(1);
|
|
199
195
|
}
|
|
200
196
|
}
|
|
201
197
|
//# sourceMappingURL=goals.js.map
|
|
@@ -1,40 +1,22 @@
|
|
|
1
1
|
import type { HookRuntime } from '../core/capture-contract.js';
|
|
2
2
|
import { type DeliveryEventType, type DeliveryRecorder } from '../store/delivery-recorder.js';
|
|
3
3
|
import type { CliFlags } from './flag-values.js';
|
|
4
|
-
/**
|
|
5
|
-
* Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
|
|
6
|
-
* `__session-end-worker` subcommand (not user-facing). Failures in one stage
|
|
7
|
-
* do not block the other.
|
|
8
|
-
*/
|
|
4
|
+
/** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
|
|
9
5
|
/** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
|
|
10
6
|
export declare function logSessionEndImport(logFile: string | null, transcriptPath: string | undefined): void;
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
|
|
14
|
-
* `logFile` only for their own duration (the tee is restored before this
|
|
15
|
-
* runs), so a plain `console.log` here would be silently discarded under
|
|
16
|
-
* the detached worker's `stdio: 'ignore'` — write straight to the file
|
|
17
|
-
* instead, matching capture.ts's `appendPreCompactLog` convention.
|
|
18
|
-
*/
|
|
7
|
+
/** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
|
|
8
|
+
* so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
|
|
19
9
|
export declare function appendSessionEndCloseLog(logFile: string | null, message: string, opts?: {
|
|
20
10
|
startFresh?: boolean;
|
|
21
11
|
}): void;
|
|
12
|
+
/** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
|
|
13
|
+
export declare function reportSessionEndFailure<E>(logFile: string | null, step: string, err: E): void;
|
|
22
14
|
export declare function hostSessionId(): string | undefined;
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* earlier, so record a `reset` for the payload's session and the next prompt
|
|
26
|
-
* injects again even if nothing changed. `requiredSource` limits it to hook
|
|
27
|
-
* payloads with that `source` (SessionStart fires for other reasons too).
|
|
28
|
-
* Best-effort and silent: a malformed payload records nothing.
|
|
29
|
-
*/
|
|
15
|
+
/** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
|
|
16
|
+
* `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
|
|
30
17
|
export declare function resetHookInjection(hippoRoot: string, stdinText: string | undefined, requiredSource: string | null): void;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* one, else an existing global store, else the project path (which the hook
|
|
34
|
-
* then skips, since hooks fire in every directory and must not create one).
|
|
35
|
-
* Pre-compact and compact-resume must agree, or a snapshot saved to one store
|
|
36
|
-
* is looked for in the other.
|
|
37
|
-
*/
|
|
18
|
+
/** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
|
|
19
|
+
* Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
|
|
38
20
|
export declare function hookStoreRoot(hippoRoot: string): string;
|
|
39
21
|
/** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
|
|
40
22
|
export declare function hookRuntime(flags: CliFlags): HookRuntime;
|
package/dist/cli/hook-runtime.js
CHANGED
|
@@ -13,16 +13,11 @@ import { blockHash } from '../util/token-text.js';
|
|
|
13
13
|
import { importAtSessionEnd, currentMachine } from '../agent-memories/sync.js';
|
|
14
14
|
import { summaryLine } from '../agent-memories/report.js';
|
|
15
15
|
import { isGlobalStoreRoot } from '../core/project-identity.js';
|
|
16
|
-
import { getGlobalRoot } from '../sharing/
|
|
16
|
+
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
17
17
|
import { sanitizeLogMessage } from '../capture/compact.js';
|
|
18
18
|
import { resolveTenantId } from '../store/tenant.js';
|
|
19
19
|
import { errorMessage, log } from '../util/log.js';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
|
|
23
|
-
* `__session-end-worker` subcommand (not user-facing). Failures in one stage
|
|
24
|
-
* do not block the other.
|
|
25
|
-
*/
|
|
20
|
+
/** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
|
|
26
21
|
/** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
|
|
27
22
|
export function logSessionEndImport(logFile, transcriptPath) {
|
|
28
23
|
try {
|
|
@@ -37,14 +32,8 @@ export function logSessionEndImport(logFile, transcriptPath) {
|
|
|
37
32
|
appendSessionEndCloseLog(logFile, `agent memory import failed: ${errorMessage(err)}`);
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
|
|
43
|
-
* `logFile` only for their own duration (the tee is restored before this
|
|
44
|
-
* runs), so a plain `console.log` here would be silently discarded under
|
|
45
|
-
* the detached worker's `stdio: 'ignore'` — write straight to the file
|
|
46
|
-
* instead, matching capture.ts's `appendPreCompactLog` convention.
|
|
47
|
-
*/
|
|
35
|
+
/** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
|
|
36
|
+
* so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
|
|
48
37
|
export function appendSessionEndCloseLog(logFile, message, opts = {}) {
|
|
49
38
|
if (!logFile)
|
|
50
39
|
return;
|
|
@@ -60,17 +49,18 @@ export function appendSessionEndCloseLog(logFile, message, opts = {}) {
|
|
|
60
49
|
log.debug(`session-end log not written: ${errorMessage(err)}`);
|
|
61
50
|
}
|
|
62
51
|
}
|
|
52
|
+
/** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
|
|
53
|
+
export function reportSessionEndFailure(logFile, step, err) {
|
|
54
|
+
const line = `${step} failed: ${errorMessage(err)}`;
|
|
55
|
+
log.warn(line);
|
|
56
|
+
appendSessionEndCloseLog(logFile, line);
|
|
57
|
+
}
|
|
63
58
|
// Claude Code exports its own session var, not ours; without the fallback agent-run recalls trace with no session.
|
|
64
59
|
export function hostSessionId() {
|
|
65
60
|
return envHippoSessionId() ?? envClaudeCodeSessionId();
|
|
66
61
|
}
|
|
67
|
-
/**
|
|
68
|
-
*
|
|
69
|
-
* earlier, so record a `reset` for the payload's session and the next prompt
|
|
70
|
-
* injects again even if nothing changed. `requiredSource` limits it to hook
|
|
71
|
-
* payloads with that `source` (SessionStart fires for other reasons too).
|
|
72
|
-
* Best-effort and silent: a malformed payload records nothing.
|
|
73
|
-
*/
|
|
62
|
+
/** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
|
|
63
|
+
* `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
|
|
74
64
|
export function resetHookInjection(hippoRoot, stdinText, requiredSource) {
|
|
75
65
|
const sessionId = hookPayloadSessionId(stdinText, requiredSource);
|
|
76
66
|
// A sub-agent's compaction leaves its parent's context, and the blocks in it, as they were.
|
|
@@ -80,13 +70,8 @@ export function resetHookInjection(hippoRoot, stdinText, requiredSource) {
|
|
|
80
70
|
tenantId: resolveTenantId({}), sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
|
|
81
71
|
});
|
|
82
72
|
}
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* one, else an existing global store, else the project path (which the hook
|
|
86
|
-
* then skips, since hooks fire in every directory and must not create one).
|
|
87
|
-
* Pre-compact and compact-resume must agree, or a snapshot saved to one store
|
|
88
|
-
* is looked for in the other.
|
|
89
|
-
*/
|
|
73
|
+
/** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
|
|
74
|
+
* Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
|
|
90
75
|
export function hookStoreRoot(hippoRoot) {
|
|
91
76
|
if (isInitialized(hippoRoot))
|
|
92
77
|
return hippoRoot;
|
|
@@ -116,8 +101,7 @@ export function startDeliveryRecorder(hippoRoot, stdinText, runtime, eventType)
|
|
|
116
101
|
});
|
|
117
102
|
}
|
|
118
103
|
catch (error) {
|
|
119
|
-
|
|
120
|
-
printError(`[hippo] delivery ledger skipped:${errorMessage(error)}`);
|
|
104
|
+
log.warn(`delivery ledger skipped: ${errorMessage(error)}`);
|
|
121
105
|
return null;
|
|
122
106
|
}
|
|
123
107
|
}
|
package/dist/cli/init.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 handleInit({ hippoRoot, flags }: CommandContext): void;
|
|
3
3
|
//# sourceMappingURL=init.d.ts.map
|