hippo-memory 1.72.0 → 2.1.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 +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -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 +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
package/dist/cli/eval.js
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
// The `hippo eval` verb; main() loads it lazily from the command table.
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
|
-
import { listMemories } from '../api/memories.js';
|
|
4
|
+
import { listMemories } from '../api/memories/memories.js';
|
|
5
5
|
import { cliApiContext } from './api-context.js';
|
|
6
6
|
import { loadConfig } from '../core/config.js';
|
|
7
7
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
8
8
|
import { runEval, bootstrapCorpus, compareSummaries } from '../eval/eval.js';
|
|
9
|
-
import { runFeatureEval, formatResult, resultToBaseline, detectRegressions } from '../eval/eval-suite.js';
|
|
9
|
+
import { runFeatureEval, formatResult, resultToBaseline, detectRegressions, } from '../eval/eval-suite.js';
|
|
10
10
|
import { PACKAGE_VERSION } from '../util/version.js';
|
|
11
11
|
import { printError } from './output.js';
|
|
12
12
|
import { requireInit } from './shared.js';
|
|
13
13
|
import { fmt } from './print.js';
|
|
14
|
-
import { boolFlag, numberFlag } from './flag-values.js';
|
|
14
|
+
import { boolFlag, numberFlag, stringFlagOrExit } from './flag-values.js';
|
|
15
15
|
import { errorMessage } from '../util/log.js';
|
|
16
|
-
import { CliExit } from './exit.js';
|
|
16
|
+
import { CliExit, fail } from './exit.js';
|
|
17
17
|
const HIT_TOP_K = 10;
|
|
18
18
|
const MAX_FAILING_SHOWN = 10;
|
|
19
19
|
const TOP_IDS_SHOWN = 3;
|
|
20
20
|
const MAX_MISSED_SHOWN = 4;
|
|
21
21
|
const QUERY_PREVIEW_CHARS = 60;
|
|
22
22
|
const MAX_DELTAS_SHOWN = 5;
|
|
23
|
-
/** Runs `hippo eval`: --bootstrap writes a corpus, --suite runs the built-in feature eval, else it scores a corpus
|
|
23
|
+
/** Runs `hippo eval`: --bootstrap writes a corpus, --suite runs the built-in feature eval, else it scores a corpus
|
|
24
|
+
* file. */
|
|
24
25
|
async function cmdEval(hippoRoot, tenantId, corpusPath, flags) {
|
|
25
26
|
const asJson = boolFlag(flags, 'json');
|
|
26
27
|
const minMrr = numberFlag(flags, 'min-mrr') ?? null;
|
|
27
|
-
const comparePath = flags
|
|
28
|
+
const comparePath = stringFlagOrExit(flags, 'compare') || null;
|
|
28
29
|
// Suite mode doesn't need an initialized store
|
|
29
30
|
if (!flags['suite'])
|
|
30
31
|
requireInit(hippoRoot);
|
|
31
|
-
const entries = flags['suite'] ? [] : listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
|
|
32
|
+
const entries = flags['suite'] ? [] : await listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
|
|
32
33
|
if (flags['bootstrap']) {
|
|
33
34
|
writeBootstrapCorpus(entries, flags);
|
|
34
35
|
return;
|
|
@@ -45,8 +46,7 @@ async function cmdEval(hippoRoot, tenantId, corpusPath, flags) {
|
|
|
45
46
|
printEvalSummary(summary, boolFlag(flags, 'show-cases'));
|
|
46
47
|
}
|
|
47
48
|
if (minMrr !== null && summary.meanMrr < minMrr) {
|
|
48
|
-
|
|
49
|
-
throw new CliExit(1);
|
|
49
|
+
fail(`MRR ${fmt(summary.meanMrr, 4)} below threshold ${minMrr}`);
|
|
50
50
|
}
|
|
51
51
|
if (comparePath)
|
|
52
52
|
printEvalCompare(summary, comparePath, asJson);
|
|
@@ -68,7 +68,7 @@ async function runCorpusEval(hippoRoot, corpusPath, entries, flags) {
|
|
|
68
68
|
}
|
|
69
69
|
/** Bootstrap mode: emit a synthetic corpus built from the store's own memories. */
|
|
70
70
|
function writeBootstrapCorpus(entries, flags) {
|
|
71
|
-
const outPath = flags
|
|
71
|
+
const outPath = stringFlagOrExit(flags, 'out') || null;
|
|
72
72
|
const max = numberFlag(flags, 'max-cases') ?? 50;
|
|
73
73
|
const corpus = bootstrapCorpus(entries, max);
|
|
74
74
|
const payload = JSON.stringify({ cases: corpus }, null, 2);
|
|
@@ -83,7 +83,7 @@ function writeBootstrapCorpus(entries, flags) {
|
|
|
83
83
|
}
|
|
84
84
|
/** Suite mode: run the built-in feature eval (no corpus file needed, no init needed). */
|
|
85
85
|
async function runEvalSuite(hippoRoot, flags, asJson, minMrr) {
|
|
86
|
-
const baselinePath = flags
|
|
86
|
+
const baselinePath = stringFlagOrExit(flags, 'baseline') || path.join(hippoRoot, 'eval-baseline.json');
|
|
87
87
|
let baseline;
|
|
88
88
|
try {
|
|
89
89
|
baseline = JSON.parse(fs.readFileSync(baselinePath, 'utf8'));
|
|
@@ -117,12 +117,10 @@ async function runEvalSuite(hippoRoot, flags, asJson, minMrr) {
|
|
|
117
117
|
/** Loads the corpus file, exiting with the usage line or the read error when there is none to score. */
|
|
118
118
|
function readCorpus(corpusPath) {
|
|
119
119
|
if (!corpusPath) {
|
|
120
|
-
|
|
121
|
-
throw new CliExit(1);
|
|
120
|
+
fail('Usage: hippo eval <corpus.json> OR hippo eval --suite [--save-baseline] OR hippo eval --bootstrap');
|
|
122
121
|
}
|
|
123
122
|
if (!fs.existsSync(corpusPath)) {
|
|
124
|
-
|
|
125
|
-
throw new CliExit(1);
|
|
123
|
+
fail(`Corpus file not found: ${corpusPath}`);
|
|
126
124
|
}
|
|
127
125
|
let cases;
|
|
128
126
|
try {
|
|
@@ -132,8 +130,7 @@ function readCorpus(corpusPath) {
|
|
|
132
130
|
throw new Error('Corpus JSON must be an array or { cases: [...] }');
|
|
133
131
|
}
|
|
134
132
|
catch (err) {
|
|
135
|
-
|
|
136
|
-
throw new CliExit(1);
|
|
133
|
+
fail(`Failed to read corpus: ${errorMessage(err)}`);
|
|
137
134
|
}
|
|
138
135
|
return cases;
|
|
139
136
|
}
|
|
@@ -176,16 +173,14 @@ function printEvalSummary(summary, showCases) {
|
|
|
176
173
|
}
|
|
177
174
|
function printEvalCompare(summary, comparePath, asJson) {
|
|
178
175
|
if (!fs.existsSync(comparePath)) {
|
|
179
|
-
|
|
180
|
-
throw new CliExit(1);
|
|
176
|
+
fail(`Baseline file not found: ${comparePath}`);
|
|
181
177
|
}
|
|
182
178
|
let baseline;
|
|
183
179
|
try {
|
|
184
180
|
baseline = JSON.parse(fs.readFileSync(comparePath, 'utf8'));
|
|
185
181
|
}
|
|
186
182
|
catch (err) {
|
|
187
|
-
|
|
188
|
-
throw new CliExit(1);
|
|
183
|
+
fail(`Failed to parse baseline: ${errorMessage(err)}`);
|
|
189
184
|
}
|
|
190
185
|
const cmp = compareSummaries(baseline, summary);
|
|
191
186
|
if (asJson) {
|
package/dist/cli/exit.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
/** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to
|
|
1
|
+
/** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to
|
|
2
|
+
* print. */
|
|
2
3
|
export declare class CliExit extends Error {
|
|
3
4
|
readonly code: number;
|
|
4
5
|
constructor(code: number);
|
|
5
6
|
}
|
|
7
|
+
/** Stops the verb with a message the user must act on: one call, so the text and the exit code 1 cannot drift apart. */
|
|
8
|
+
export declare function fail(...args: unknown[]): never;
|
|
6
9
|
//# sourceMappingURL=exit.d.ts.map
|
package/dist/cli/exit.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
// The one error a CLI verb throws to stop its command; runCli is the one place that turns it into the process exit
|
|
2
|
-
|
|
1
|
+
// The one error a CLI verb throws to stop its command; runCli is the one place that turns it into the process exit
|
|
2
|
+
// code.
|
|
3
|
+
import { printError } from './output.js';
|
|
4
|
+
/** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to
|
|
5
|
+
* print. */
|
|
3
6
|
export class CliExit extends Error {
|
|
4
7
|
code;
|
|
5
8
|
constructor(code) {
|
|
@@ -8,4 +11,9 @@ export class CliExit extends Error {
|
|
|
8
11
|
this.code = code;
|
|
9
12
|
}
|
|
10
13
|
}
|
|
14
|
+
/** Stops the verb with a message the user must act on: one call, so the text and the exit code 1 cannot drift apart. */
|
|
15
|
+
export function fail(...args) {
|
|
16
|
+
printError(...args);
|
|
17
|
+
throw new CliExit(1);
|
|
18
|
+
}
|
|
11
19
|
//# sourceMappingURL=exit.js.map
|
package/dist/cli/explain.js
CHANGED
|
@@ -6,14 +6,14 @@ import { dropHeldCopies } from '../util/same-text.js';
|
|
|
6
6
|
import { detectScope } from '../core/active-scope.js';
|
|
7
7
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
8
8
|
import * as api from '../api/index.js';
|
|
9
|
-
import { cliRecallOrigin, scopeHiddenCount } from '../api/recall
|
|
9
|
+
import { cliRecallOrigin, scopeHiddenCount } from '../api/recall/rows.js';
|
|
10
10
|
import { cliApiContext } from './api-context.js';
|
|
11
11
|
import { printedTokens } from '../api/context-render.js';
|
|
12
12
|
import { printError } from './output.js';
|
|
13
|
-
import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag } from './flag-values.js';
|
|
13
|
+
import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag, stringFlagOrExit, } from './flag-values.js';
|
|
14
14
|
import { requireInit } from './shared.js';
|
|
15
15
|
import { fmt, recallEntryText, recallHeading } from './print.js';
|
|
16
|
-
import {
|
|
16
|
+
import { fail } from './exit.js';
|
|
17
17
|
const EXPLAIN_PREVIEW_CHARS = 48;
|
|
18
18
|
/** The SQL predicate drops denied rows before the window, so an unscoped probe counts what the policy hides. */
|
|
19
19
|
function noteScopeHidden(ctx, globalRoot, query, requested) {
|
|
@@ -32,7 +32,7 @@ async function cmdExplain(hippoRoot, tenantId, query, flags) {
|
|
|
32
32
|
const globalRoot = getGlobalRoot();
|
|
33
33
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
34
34
|
// Explain shows what recall would see, so it applies the same scope rule.
|
|
35
|
-
const explicitScope = flags
|
|
35
|
+
const explicitScope = stringFlagOrExit(flags, 'scope') ?? null;
|
|
36
36
|
const activeScope = explicitScope || detectScope();
|
|
37
37
|
// Unlike recall, explain reads the global store whenever it exists, even when it is the local root.
|
|
38
38
|
const origin = cliRecallOrigin(ctx, { globalRoot, primaryIsGlobal: false, activeScope });
|
|
@@ -52,7 +52,7 @@ async function cmdExplain(hippoRoot, tenantId, query, flags) {
|
|
|
52
52
|
explicitScope, activeScope,
|
|
53
53
|
search: { ...engine, multihop: false, explain: true },
|
|
54
54
|
},
|
|
55
|
-
sources: { globalRoot:
|
|
55
|
+
sources: explainGlobalOn ? { globalRoot, globalStore: cliApiContext(globalRoot, tenantId).store } : undefined,
|
|
56
56
|
inspect: (ranking) => { slot.rank = ranking; },
|
|
57
57
|
},
|
|
58
58
|
});
|
|
@@ -112,8 +112,8 @@ function printExplainTable(results, query, modeUsed, candidates) {
|
|
|
112
112
|
const b = r.breakdown;
|
|
113
113
|
const preview = r.entry.content.replace(/\s+/g, ' ').slice(0, EXPLAIN_PREVIEW_CHARS);
|
|
114
114
|
const ageStr = b ? `${b.ageDays}d` : '?';
|
|
115
|
-
console.log(`${String(i + 1).padEnd(5)} ${fmt(r.score, 3).padEnd(7)} ${fmt(r.entry.strength).padEnd(9)}
|
|
116
|
-
`${r.entry.layer.padEnd(10)} ${r.entry.id.padEnd(17)} ${preview}`);
|
|
115
|
+
console.log(`${String(i + 1).padEnd(5)} ${fmt(r.score, 3).padEnd(7)} ${fmt(r.entry.strength).padEnd(9)} ` +
|
|
116
|
+
`${ageStr.padEnd(6)} ${r.entry.layer.padEnd(10)} ${r.entry.id.padEnd(17)} ${preview}`);
|
|
117
117
|
}
|
|
118
118
|
console.log();
|
|
119
119
|
}
|
|
@@ -140,8 +140,9 @@ function printExplainBreakdown(r, i) {
|
|
|
140
140
|
console.log(` recency: x${fmt(b.recencyMultiplier, 3)} (age=${b.ageDays}d)`);
|
|
141
141
|
if (b.decisionBoost !== 1)
|
|
142
142
|
console.log(` decision: x${fmt(b.decisionBoost, 2)} (tagged 'decision')`);
|
|
143
|
-
if (b.scopeBoost !== 1)
|
|
143
|
+
if (b.scopeBoost !== 1) {
|
|
144
144
|
console.log(` scope: x${fmt(b.scopeBoost, 2)} (scope tag ${b.scopeBoost > 1 ? 'match' : 'mismatch'})`);
|
|
145
|
+
}
|
|
145
146
|
if (b.pathBoost !== 1)
|
|
146
147
|
console.log(` path: x${fmt(b.pathBoost, 3)} (cwd path tag overlap)`);
|
|
147
148
|
if (b.sourceBump !== 1)
|
|
@@ -150,8 +151,9 @@ function printExplainBreakdown(r, i) {
|
|
|
150
151
|
console.log(` outcome: x${fmt(b.outcomeBoost, 3)} ` +
|
|
151
152
|
`(user feedback: pos-neg = ${(r.entry.outcome_positive ?? 0) - (r.entry.outcome_negative ?? 0)})`);
|
|
152
153
|
}
|
|
153
|
-
if (b.churnStaleMultiplier !== 1)
|
|
154
|
+
if (b.churnStaleMultiplier !== 1) {
|
|
154
155
|
console.log(` churn: x${fmt(b.churnStaleMultiplier, 2)} (tagged 'churn-stale')`);
|
|
156
|
+
}
|
|
155
157
|
if (b.preMmrRank !== undefined && b.postMmrRank !== undefined && b.preMmrRank !== b.postMmrRank) {
|
|
156
158
|
const arrow = b.postMmrRank < b.preMmrRank ? 'up' : 'down';
|
|
157
159
|
console.log(` mmr: rank ${b.preMmrRank} -> ${b.postMmrRank} (diversity ${arrow})`);
|
|
@@ -163,8 +165,7 @@ function printExplainBreakdown(r, i) {
|
|
|
163
165
|
export async function handleExplain({ hippoRoot, tenantId, args, flags }) {
|
|
164
166
|
const query = args.join(' ').trim();
|
|
165
167
|
if (!query) {
|
|
166
|
-
|
|
167
|
-
throw new CliExit(1);
|
|
168
|
+
fail('Please provide a search query.');
|
|
168
169
|
}
|
|
169
170
|
await cmdExplain(hippoRoot, tenantId, query, flags);
|
|
170
171
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RecallSearchOpts } from '../api/recall
|
|
1
|
+
import type { RecallSearchOpts } from '../api/recall/pipeline.js';
|
|
2
2
|
import type { HippoConfig } from '../core/config.js';
|
|
3
3
|
export declare function isBooleanFlag(value: string | boolean | string[] | undefined): value is boolean;
|
|
4
4
|
export declare function isStringFlag(value: string | boolean | string[] | undefined): value is string;
|
package/dist/cli/flag-values.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Readers that turn parsed CLI flags into typed values, and the flag types they share.
|
|
2
2
|
import { resolveListLimit } from '../util/limits.js';
|
|
3
|
-
import {
|
|
4
|
-
import { CliExit } from './exit.js';
|
|
3
|
+
import { fail } from './exit.js';
|
|
5
4
|
export function isBooleanFlag(value) {
|
|
6
5
|
return typeof value === 'boolean';
|
|
7
6
|
}
|
|
@@ -25,14 +24,12 @@ export function parseBudgetFlag(value, fallback) {
|
|
|
25
24
|
return fallback;
|
|
26
25
|
// A value-less flag and a junk value are different typos; the --hops guard already splits them.
|
|
27
26
|
if (!isStringFlag(value)) {
|
|
28
|
-
|
|
29
|
-
throw new CliExit(1);
|
|
27
|
+
fail('--budget requires an integer value (e.g. --budget 1500).');
|
|
30
28
|
}
|
|
31
29
|
// Number(), like the --hops guard: parseInt('12abc') is 12, silently accepting what this message rejects.
|
|
32
30
|
const parsed = Number(value);
|
|
33
31
|
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
34
|
-
|
|
35
|
-
throw new CliExit(1);
|
|
32
|
+
fail(`Invalid --budget: "${value}". Must be a non-negative integer.`);
|
|
36
33
|
}
|
|
37
34
|
return parsed;
|
|
38
35
|
}
|
|
@@ -42,8 +39,7 @@ export function parsePositiveId(idRaw, label) {
|
|
|
42
39
|
const s = String(idRaw ?? '').trim();
|
|
43
40
|
const id = parseInt(s, 10);
|
|
44
41
|
if (!/^\d+$/.test(s) || id <= 0 || !Number.isSafeInteger(id)) {
|
|
45
|
-
|
|
46
|
-
throw new CliExit(1);
|
|
42
|
+
fail(`Invalid ${label} id: "${idRaw}" (expected a positive integer).`);
|
|
47
43
|
}
|
|
48
44
|
return id;
|
|
49
45
|
}
|
|
@@ -51,8 +47,7 @@ export function parseListLimit(flags) {
|
|
|
51
47
|
const limitRaw = flags['limit'];
|
|
52
48
|
const limit = resolveListLimit(limitRaw !== undefined ? parseInt(String(limitRaw), 10) : undefined);
|
|
53
49
|
if (limit === undefined) {
|
|
54
|
-
|
|
55
|
-
throw new CliExit(1);
|
|
50
|
+
fail(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
|
|
56
51
|
}
|
|
57
52
|
return limit;
|
|
58
53
|
}
|
|
@@ -82,8 +77,7 @@ export function numberFlag(flags, name) {
|
|
|
82
77
|
return undefined;
|
|
83
78
|
const parsed = Number(v);
|
|
84
79
|
if (v.trim() === '' || !Number.isFinite(parsed)) {
|
|
85
|
-
|
|
86
|
-
throw new CliExit(1);
|
|
80
|
+
fail(`Invalid --${name}: "${v}". Must be a number.`);
|
|
87
81
|
}
|
|
88
82
|
return parsed;
|
|
89
83
|
}
|
|
@@ -98,8 +92,7 @@ export function flagIsTrue(flags, name) {
|
|
|
98
92
|
export function parseAsOfFlag(flags) {
|
|
99
93
|
const asOf = stringFlag(flags, 'as-of');
|
|
100
94
|
if (asOf !== undefined && Number.isNaN(new Date(asOf).getTime())) {
|
|
101
|
-
|
|
102
|
-
throw new CliExit(1);
|
|
95
|
+
fail(`Error: --as-of value "${asOf}" is not a valid ISO date (e.g. 2026-04-22 or 2026-04-22T12:00:00Z).`);
|
|
103
96
|
}
|
|
104
97
|
return asOf;
|
|
105
98
|
}
|
|
@@ -121,10 +114,8 @@ export function stringFlagOrExit(flags, key) {
|
|
|
121
114
|
const v = flags[key];
|
|
122
115
|
if (v === undefined)
|
|
123
116
|
return undefined;
|
|
124
|
-
if (v === true || v === false || Array.isArray(v))
|
|
125
|
-
|
|
126
|
-
throw new CliExit(1);
|
|
127
|
-
}
|
|
117
|
+
if (v === true || v === false || Array.isArray(v))
|
|
118
|
+
fail(`--${key} requires a value`);
|
|
128
119
|
return v.trim();
|
|
129
120
|
}
|
|
130
121
|
//# sourceMappingURL=flag-values.js.map
|
package/dist/cli/github.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** `hippo github` subcommands, split out of cli.ts so tests can import them without triggering main().
|
|
2
2
|
* The dispatcher in cli.ts re-exports handleGitHub. */
|
|
3
3
|
import { type GitHubFetcher } from '../connectors/github/octokit-client.js';
|
|
4
|
+
import type { JsonValue } from '../util/json.js';
|
|
4
5
|
import type { CommandContext } from './flag-values.js';
|
|
5
6
|
type FlagValue = string | boolean | string[];
|
|
6
7
|
type Flags = Record<string, FlagValue>;
|
|
@@ -8,6 +9,11 @@ export declare function printGitHubBackfillUsage(): void;
|
|
|
8
9
|
/** `hippo github backfill`; the fetcher is injectable so tests avoid the network (default `realGitHubFetcher`). */
|
|
9
10
|
export declare function cmdGitHubBackfill(hippoRoot: string, tenantId: string, flags: Flags, fetcher?: GitHubFetcher): Promise<void>;
|
|
10
11
|
export declare function cmdGitHubDlqList(hippoRoot: string, tenantId: string, _flags: Flags): void;
|
|
12
|
+
/** A parked payload that is not JSON, naming the command and the start of the text so the operator can find the row. */
|
|
13
|
+
export declare class GitHubPayloadParseError extends Error {
|
|
14
|
+
constructor(command: string, rawPayload: string, cause: unknown);
|
|
15
|
+
}
|
|
16
|
+
export declare function parseParkedPayload(rawPayload: string): JsonValue;
|
|
11
17
|
export declare function cmdGitHubDlqReplay(hippoRoot: string, tenantId: string, args: string[], flags: Flags): Promise<void>;
|
|
12
18
|
export declare function handleGitHub({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
13
19
|
export {};
|
package/dist/cli/github.js
CHANGED
|
@@ -10,19 +10,22 @@ import { ingestEvent } from '../connectors/github/ingest.js';
|
|
|
10
10
|
import { handleCommentDeleted } from '../connectors/github/deletion.js';
|
|
11
11
|
import { computeDeletionKey } from '../connectors/github/signature.js';
|
|
12
12
|
import { isGitHubIssueEvent, isGitHubIssueCommentEvent, isGitHubPullRequestEvent, isGitHubPullRequestReviewCommentEvent, } from '../connectors/github/types.js';
|
|
13
|
+
import { cliApiContext } from './api-context.js';
|
|
13
14
|
import { CliExit } from './exit.js';
|
|
14
15
|
import { errorMessage } from '../util/log.js';
|
|
15
16
|
function isFlagString(value) {
|
|
16
17
|
return typeof value === 'string';
|
|
17
18
|
}
|
|
18
|
-
// FlagValue never includes `number`, so a `value is number` predicate on it would not type-check; the generic wrapper
|
|
19
|
+
// FlagValue never includes `number`, so a `value is number` predicate on it would not type-check; the generic wrapper
|
|
20
|
+
// narrows any type T instead.
|
|
19
21
|
function isNumberLike(value) {
|
|
20
22
|
return typeof value === 'number';
|
|
21
23
|
}
|
|
22
24
|
function isFlagValueNumberLike(value) {
|
|
23
25
|
return isNumberLike(value);
|
|
24
26
|
}
|
|
25
|
-
/** Map a parsed envelope + eventName header to an IngestEvent;
|
|
27
|
+
/** Map a parsed envelope + eventName header to an IngestEvent;
|
|
28
|
+
* null for unknown event types or shapes failing the type guards. */
|
|
26
29
|
function parsedToIngestEvent(parsed, eventName) {
|
|
27
30
|
if (eventName === 'issues' && isGitHubIssueEvent(parsed, eventName)) {
|
|
28
31
|
return { eventName: 'issues', payload: parsed };
|
|
@@ -72,11 +75,7 @@ export async function cmdGitHubBackfill(hippoRoot, tenantId, flags, fetcher = re
|
|
|
72
75
|
const maxPerStream = maxPerStreamFlag(flags['max']);
|
|
73
76
|
const sinceFlag = flags['since'];
|
|
74
77
|
const sinceIso = isFlagString(sinceFlag) ? sinceFlag : undefined;
|
|
75
|
-
const ctx = {
|
|
76
|
-
hippoRoot,
|
|
77
|
-
tenantId,
|
|
78
|
-
actor: adminActor('cli:github-backfill'),
|
|
79
|
-
};
|
|
78
|
+
const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: adminActor('cli:github-backfill') };
|
|
80
79
|
try {
|
|
81
80
|
const result = await backfillRepo(ctx, {
|
|
82
81
|
repoFullName: repo,
|
|
@@ -102,8 +101,25 @@ export function cmdGitHubDlqList(hippoRoot, tenantId, _flags) {
|
|
|
102
101
|
console.log(`${it.id}\t${it.bucket}\t${it.tenantId}\t${it.eventName ?? '-'}\t${it.receivedAt}\t${it.error}`);
|
|
103
102
|
}
|
|
104
103
|
}
|
|
104
|
+
const PAYLOAD_PREVIEW_CHARS = 200;
|
|
105
|
+
/** A parked payload that is not JSON, naming the command and the start of the text so the operator can find the row. */
|
|
106
|
+
export class GitHubPayloadParseError extends Error {
|
|
107
|
+
constructor(command, rawPayload, cause) {
|
|
108
|
+
const start = JSON.stringify(rawPayload.slice(0, PAYLOAD_PREVIEW_CHARS));
|
|
109
|
+
super(`${command}: payload is not valid JSON (${errorMessage(cause)}); starts with ${start}`, { cause });
|
|
110
|
+
this.name = 'GitHubPayloadParseError';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function parseParkedPayload(rawPayload) {
|
|
114
|
+
try {
|
|
115
|
+
return JSON.parse(rawPayload);
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
throw new GitHubPayloadParseError('hippo github dlq replay', rawPayload, err);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
105
121
|
const reingestParkedDelivery = async (innerCtx, args) => {
|
|
106
|
-
const parsed =
|
|
122
|
+
const parsed = parseParkedPayload(args.rawPayload);
|
|
107
123
|
const event = parsedToIngestEvent(parsed, args.eventName);
|
|
108
124
|
if (!event) {
|
|
109
125
|
return { memoryId: null };
|
|
@@ -146,11 +162,7 @@ export async function cmdGitHubDlqReplay(hippoRoot, tenantId, args, flags) {
|
|
|
146
162
|
throw new CliExit(1);
|
|
147
163
|
}
|
|
148
164
|
const force = flags['force'] === true;
|
|
149
|
-
const ctx = {
|
|
150
|
-
hippoRoot,
|
|
151
|
-
tenantId,
|
|
152
|
-
actor: adminActor('cli:github-dlq-replay'),
|
|
153
|
-
};
|
|
165
|
+
const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: adminActor('cli:github-dlq-replay') };
|
|
154
166
|
// Without an ingestHook replay only bumps retry_count while printing "replay ok"; the real hook re-runs ingest.
|
|
155
167
|
const result = await replayDlqEntry(ctx, id, {
|
|
156
168
|
force,
|
package/dist/cli/goals.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleGoal({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
2
|
+
export declare function handleGoal({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=goals.d.ts.map
|
package/dist/cli/goals.js
CHANGED
|
@@ -3,8 +3,8 @@ import { DEFAULT_TENANT_ID, envHippoSessionId } from '../util/env.js';
|
|
|
3
3
|
import * as api from '../api/index.js';
|
|
4
4
|
import { cliApiContext } from './api-context.js';
|
|
5
5
|
import { printError } from './output.js';
|
|
6
|
-
import { boolFlag, flagIsTrue, isStringFlag, stringFlag } from './flag-values.js';
|
|
7
|
-
import {
|
|
6
|
+
import { boolFlag, flagIsTrue, isStringFlag, stringFlag, stringFlagOrExit, } from './flag-values.js';
|
|
7
|
+
import { fail } from './exit.js';
|
|
8
8
|
// `hippo goal <push|list|complete|suspend|resume>`
|
|
9
9
|
const GOAL_POLICY_TYPES = [
|
|
10
10
|
'schema-fit-biased',
|
|
@@ -20,52 +20,42 @@ function sanitizeGoalName(s) {
|
|
|
20
20
|
return s.replace(/[^\x20-\x7e\u0080-\uffff]/g, '?');
|
|
21
21
|
}
|
|
22
22
|
function resolveGoalSession(flags, defaultTenantId) {
|
|
23
|
-
const sessionId = (flags
|
|
24
|
-
? String(flags['session-id'])
|
|
25
|
-
: envHippoSessionId() ?? '').trim();
|
|
23
|
+
const sessionId = (stringFlagOrExit(flags, 'session-id') ?? envHippoSessionId() ?? '').trim();
|
|
26
24
|
if (!sessionId) {
|
|
27
|
-
|
|
28
|
-
throw new CliExit(1);
|
|
25
|
+
fail('session id required (set HIPPO_SESSION_ID or pass --session-id)');
|
|
29
26
|
}
|
|
30
|
-
const tenantId = (flags
|
|
31
|
-
? String(flags['tenant-id'])
|
|
32
|
-
: defaultTenantId).trim() || DEFAULT_TENANT_ID;
|
|
27
|
+
const tenantId = (stringFlagOrExit(flags, 'tenant-id') ?? defaultTenantId).trim() || DEFAULT_TENANT_ID;
|
|
33
28
|
return { sessionId, tenantId };
|
|
34
29
|
}
|
|
35
30
|
function readGoalPolicy(flags) {
|
|
36
31
|
const policyRaw = flags['policy'];
|
|
37
32
|
if (policyRaw === true) {
|
|
38
|
-
|
|
39
|
-
throw new CliExit(1);
|
|
33
|
+
fail('--policy requires a value (e.g., --policy error-prioritized)');
|
|
40
34
|
}
|
|
41
35
|
if (!isStringFlag(policyRaw))
|
|
42
36
|
return undefined;
|
|
43
37
|
if (!isGoalPolicyType(policyRaw)) {
|
|
44
|
-
|
|
45
|
-
throw new CliExit(1);
|
|
38
|
+
fail(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
|
|
46
39
|
}
|
|
47
40
|
return { policyType: policyRaw };
|
|
48
41
|
}
|
|
49
42
|
function readGoalLevel(flags) {
|
|
50
43
|
const levelRaw = flags['level'];
|
|
51
44
|
if (levelRaw === true) {
|
|
52
|
-
|
|
53
|
-
throw new CliExit(1);
|
|
45
|
+
fail('--level requires a value (e.g., --level 1)');
|
|
54
46
|
}
|
|
55
47
|
if (levelRaw === undefined)
|
|
56
48
|
return undefined;
|
|
57
49
|
const parsed = Number(levelRaw);
|
|
58
50
|
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
|
|
59
|
-
|
|
60
|
-
throw new CliExit(1);
|
|
51
|
+
fail('--level must be an integer in [0, 2]');
|
|
61
52
|
}
|
|
62
53
|
return parsed;
|
|
63
54
|
}
|
|
64
|
-
function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
|
|
55
|
+
async function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
|
|
65
56
|
const rawName = args.join(' ').trim();
|
|
66
57
|
if (!rawName) {
|
|
67
|
-
|
|
68
|
-
throw new CliExit(1);
|
|
58
|
+
fail('Usage: hippo goal push <name> [--policy <type>] [--success "<condition>"] [--level N] [--parent <goalId>]');
|
|
69
59
|
}
|
|
70
60
|
// Sanitize at WRITE time so corrupt names never enter the DB.
|
|
71
61
|
const name = sanitizeGoalName(rawName);
|
|
@@ -76,18 +66,16 @@ function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
|
|
|
76
66
|
const policy = readGoalPolicy(flags);
|
|
77
67
|
const successRaw = flags['success'];
|
|
78
68
|
if (successRaw === true) {
|
|
79
|
-
|
|
80
|
-
throw new CliExit(1);
|
|
69
|
+
fail('--success requires a value (e.g., --success "<condition>")');
|
|
81
70
|
}
|
|
82
71
|
const successCondition = stringFlag(flags, 'success');
|
|
83
72
|
const level = readGoalLevel(flags);
|
|
84
73
|
const parentRaw = flags['parent'];
|
|
85
74
|
if (parentRaw === true) {
|
|
86
|
-
|
|
87
|
-
throw new CliExit(1);
|
|
75
|
+
fail('--parent requires a value (e.g., --parent <goalId>)');
|
|
88
76
|
}
|
|
89
77
|
const parentGoalId = stringFlag(flags, 'parent');
|
|
90
|
-
const goal = api.goalPush(cliApiContext(hippoRoot, tenantId), {
|
|
78
|
+
const goal = await api.goalPush(cliApiContext(hippoRoot, tenantId), {
|
|
91
79
|
sessionId,
|
|
92
80
|
goalName: name,
|
|
93
81
|
level,
|
|
@@ -97,10 +85,10 @@ function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
|
|
|
97
85
|
});
|
|
98
86
|
console.log(goal.id);
|
|
99
87
|
}
|
|
100
|
-
function cmdGoalList(hippoRoot, defaultTenantId, flags) {
|
|
88
|
+
async function cmdGoalList(hippoRoot, defaultTenantId, flags) {
|
|
101
89
|
const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
|
|
102
90
|
const showAll = boolFlag(flags, 'all');
|
|
103
|
-
const goals = api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
|
|
91
|
+
const goals = await api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
|
|
104
92
|
if (goals.length === 0) {
|
|
105
93
|
console.log('(no goals)');
|
|
106
94
|
return;
|
|
@@ -119,79 +107,74 @@ function cmdGoalList(hippoRoot, defaultTenantId, flags) {
|
|
|
119
107
|
outcome: Math.max(7, ...rows.map(r => r.outcome.length)),
|
|
120
108
|
};
|
|
121
109
|
const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
|
|
122
|
-
console.log(`${pad('id', widths.id)} ${pad('status', widths.status)} ${pad('name', widths.name)}
|
|
110
|
+
console.log(`${pad('id', widths.id)} ${pad('status', widths.status)} ${pad('name', widths.name)} ` +
|
|
111
|
+
pad('outcome', widths.outcome));
|
|
123
112
|
for (const r of rows) {
|
|
124
|
-
console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)}
|
|
113
|
+
console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)} ` +
|
|
114
|
+
pad(r.outcome, widths.outcome));
|
|
125
115
|
}
|
|
126
116
|
}
|
|
127
|
-
function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
|
|
117
|
+
async function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
|
|
128
118
|
const id = args[0];
|
|
129
119
|
if (!id) {
|
|
130
|
-
|
|
131
|
-
throw new CliExit(1);
|
|
120
|
+
fail('Usage: hippo goal complete <id> [--outcome <0..1>] [--no-propagate]');
|
|
132
121
|
}
|
|
133
122
|
let outcomeScore;
|
|
134
123
|
const outcomeRaw = flags['outcome'];
|
|
135
124
|
if (outcomeRaw === true) {
|
|
136
|
-
|
|
137
|
-
throw new CliExit(1);
|
|
125
|
+
fail('--outcome requires a value (e.g., --outcome 0.9)');
|
|
138
126
|
}
|
|
139
127
|
if (outcomeRaw !== undefined) {
|
|
140
128
|
const parsed = Number(outcomeRaw);
|
|
141
129
|
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
|
|
142
|
-
|
|
143
|
-
throw new CliExit(1);
|
|
130
|
+
fail('--outcome must be a number in [0, 1]');
|
|
144
131
|
}
|
|
145
132
|
outcomeScore = parsed;
|
|
146
133
|
}
|
|
147
134
|
const noPropagate = flagIsTrue(flags, 'no-propagate');
|
|
148
|
-
api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
|
|
135
|
+
await api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
|
|
149
136
|
console.log('ok');
|
|
150
137
|
}
|
|
151
|
-
function cmdGoalSuspend(hippoRoot, tenantId, args) {
|
|
138
|
+
async function cmdGoalSuspend(hippoRoot, tenantId, args) {
|
|
152
139
|
const id = args[0];
|
|
153
140
|
if (!id) {
|
|
154
|
-
|
|
155
|
-
throw new CliExit(1);
|
|
141
|
+
fail('Usage: hippo goal suspend <id>');
|
|
156
142
|
}
|
|
157
|
-
api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
|
|
143
|
+
await api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
|
|
158
144
|
console.log('ok');
|
|
159
145
|
}
|
|
160
|
-
function cmdGoalResume(hippoRoot, tenantId, args) {
|
|
146
|
+
async function cmdGoalResume(hippoRoot, tenantId, args) {
|
|
161
147
|
const id = args[0];
|
|
162
148
|
if (!id) {
|
|
163
|
-
|
|
164
|
-
throw new CliExit(1);
|
|
149
|
+
fail('Usage: hippo goal resume <id>');
|
|
165
150
|
}
|
|
166
|
-
api.goalResume(cliApiContext(hippoRoot, tenantId), id);
|
|
151
|
+
await api.goalResume(cliApiContext(hippoRoot, tenantId), id);
|
|
167
152
|
console.log('ok');
|
|
168
153
|
}
|
|
169
|
-
export function handleGoal({ hippoRoot, tenantId, args, flags }) {
|
|
154
|
+
export async function handleGoal({ hippoRoot, tenantId, args, flags }) {
|
|
170
155
|
const sub = args[0];
|
|
171
156
|
if (!sub) {
|
|
172
|
-
|
|
173
|
-
throw new CliExit(1);
|
|
157
|
+
fail('Usage: hippo goal <push|list|complete|suspend|resume> [args]');
|
|
174
158
|
}
|
|
175
159
|
const subArgs = args.slice(1);
|
|
176
160
|
switch (sub) {
|
|
177
161
|
case 'push':
|
|
178
|
-
cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
|
|
162
|
+
await cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
|
|
179
163
|
return;
|
|
180
164
|
case 'list':
|
|
181
|
-
cmdGoalList(hippoRoot, tenantId, flags);
|
|
165
|
+
await cmdGoalList(hippoRoot, tenantId, flags);
|
|
182
166
|
return;
|
|
183
167
|
case 'complete':
|
|
184
|
-
cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
|
|
168
|
+
await cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
|
|
185
169
|
return;
|
|
186
170
|
case 'suspend':
|
|
187
|
-
cmdGoalSuspend(hippoRoot, tenantId, subArgs);
|
|
171
|
+
await cmdGoalSuspend(hippoRoot, tenantId, subArgs);
|
|
188
172
|
return;
|
|
189
173
|
case 'resume':
|
|
190
|
-
cmdGoalResume(hippoRoot, tenantId, subArgs);
|
|
174
|
+
await cmdGoalResume(hippoRoot, tenantId, subArgs);
|
|
191
175
|
return;
|
|
192
176
|
default:
|
|
193
|
-
|
|
194
|
-
throw new CliExit(1);
|
|
177
|
+
fail(`Unknown goal subcommand: ${sub}. Expected: push | list | complete | suspend | resume.`);
|
|
195
178
|
}
|
|
196
179
|
}
|
|
197
180
|
//# sourceMappingURL=goals.js.map
|
package/dist/cli/graph.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleGraph({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
2
|
+
export declare function handleGraph({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=graph.d.ts.map
|