hippo-memory 2.0.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/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 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- 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 +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- 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} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- 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} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- 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 -8
- 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 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- 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 +32 -19
- package/dist/api/prompt-hook.js +65 -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} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- 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 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- 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} +51 -43
- 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 +28 -7
- 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 +33 -14
- 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 +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- 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 +45 -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 +23 -23
- package/dist/cli/auth.js +19 -27
- 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 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- 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 +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- 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 +4 -4
- package/dist/cli/object-verbs.js +10 -13
- 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 +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- 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 +14 -6
- 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 +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- 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 -5
- 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 -6
- 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 -6
- 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 +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- 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 -6
- 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 -5
- 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 -6
- 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 +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- 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 +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- 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 +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- 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 +24 -14
- 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 +21 -16
- 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 +84 -27
- package/dist/core/memory.js +73 -29
- 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 +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- 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.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- 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 -3
- package/dist/db/connect.js +8 -3
- 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 +26 -13
- 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/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- 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 -4
- package/dist/db/physics-state.js +13 -20
- 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 +19 -5
- package/dist/db/request-stores.js +14 -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 +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- 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 +19 -6
- package/dist/entry/store-kit.js +6 -4
- 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 +16 -6
- 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 +69 -34
- 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 +8 -7
- 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 +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- 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 +16 -9
- 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 -7
- package/dist/learn/invalidation.js +56 -27
- 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 +18 -14
- 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 +57 -74
- 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 +52 -21
- 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 +9 -6
- 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 +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- 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 +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- 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 +547 -93
- 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 -19
- 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 +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- 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 +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -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 +75 -36
- 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 +93 -60
- 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 +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- 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 +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- 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 +8 -10
- 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 +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- 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 +3 -1
- package/dist/store/index.js +1 -0
- 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 +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- 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 +215 -229
- 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 +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- 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 +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- 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 +9 -4
- 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 +6 -3
- 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 +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- 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.js +2 -1
- 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 +84 -33
- 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 -11
- package/dist/store/sqlite/store.js +84 -11
- 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 +19 -12
- package/dist/store/summaries.js +36 -21
- 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 +6 -3
- 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 +24 -10
- 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 +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- 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 +16 -4
- package/dist/util/env.js +78 -25
- 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 +11 -3
- package/dist/util/request-scope.js +13 -4
- 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 +3 -1
- package/dist/util/spawn-argv.js +13 -4
- 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/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 +2 -1
- package/scripts/postinstall.cjs +3 -1
- 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 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- 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 -11
- 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 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/util/env.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// The one module in src/ that reads process.env; scripts/check-env-reads.mjs fails CI on any other read.
|
|
2
|
-
// Accessors read at call time, so a test that sets a variable between cases, or a HIPPO_HOME switch mid-process, still
|
|
2
|
+
// Accessors read at call time, so a test that sets a variable between cases, or a HIPPO_HOME switch mid-process, still
|
|
3
|
+
// holds.
|
|
3
4
|
function raw(name) {
|
|
4
5
|
return process.env[name];
|
|
5
6
|
}
|
|
@@ -24,7 +25,10 @@ function nonNegativeInt(name) {
|
|
|
24
25
|
function trimmed(name) {
|
|
25
26
|
return raw(name)?.trim() || undefined;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* The whole environment, for code that takes it as an injectable map (agent-memory machines, owner checks, support
|
|
30
|
+
* bundles).
|
|
31
|
+
*/
|
|
28
32
|
export function processEnv() {
|
|
29
33
|
return process.env;
|
|
30
34
|
}
|
|
@@ -93,13 +97,18 @@ export function envLogLevel() { return raw('HIPPO_LOG')?.trim().toLowerCase() ??
|
|
|
93
97
|
export function envLogJson() { return raw('HIPPO_LOG_FORMAT')?.trim().toLowerCase() === 'json'; }
|
|
94
98
|
// Server.
|
|
95
99
|
export function envPort() { return raw('HIPPO_PORT'); }
|
|
96
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* How long a client waits for a running server's /health before writing to the store directly; server-detect.ts holds
|
|
102
|
+
* the default.
|
|
103
|
+
*/
|
|
97
104
|
export function envHealthProbeMs() { return positiveInt('HIPPO_HEALTH_PROBE_MS'); }
|
|
98
105
|
export function envRequireAuth() { return isOne('HIPPO_REQUIRE_AUTH'); }
|
|
99
106
|
/** `1` lets a request made on this machine in with no key; HIPPO_REQUIRE_AUTH=1 wins over it. */
|
|
100
107
|
export function envAllowKeylessLocal() { return isOne('HIPPO_ALLOW_KEYLESS_LOCAL'); }
|
|
101
108
|
/** The role a keyless local request gets: `admin` (host admin) only when asked for by name, else `member`. */
|
|
102
|
-
export function envKeylessLocalRole() {
|
|
109
|
+
export function envKeylessLocalRole() {
|
|
110
|
+
return trimmed('HIPPO_KEYLESS_LOCAL_ROLE')?.toLowerCase() === 'admin' ? 'admin' : 'member';
|
|
111
|
+
}
|
|
103
112
|
/** `1` lets a non-loopback bind start without TLS, for TLS that ends at a proxy in front. */
|
|
104
113
|
export function envAllowCleartext() { return isOne('HIPPO_ALLOW_CLEARTEXT'); }
|
|
105
114
|
export function envV1Rps() { return raw('HIPPO_V1_RPS'); }
|
|
@@ -112,7 +121,10 @@ export function envSleepTimeoutMs() { return positiveInt('HIPPO_SLEEP_TIMEOUT_MS
|
|
|
112
121
|
/** How long a /v1 or /mcp request may run before the server answers 504, and a stdio MCP
|
|
113
122
|
* request before its timeout error; 0 for no deadline; util/request-scope.ts holds the default. */
|
|
114
123
|
export function envRequestDeadlineMs() { return nonNegativeInt('HIPPO_REQUEST_DEADLINE_MS'); }
|
|
115
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* How many store calls may wait for one worker thread before the next is refused; store/sqlite/executor.ts holds the
|
|
126
|
+
* default.
|
|
127
|
+
*/
|
|
116
128
|
export function envStoreQueueMax() { return positiveInt('HIPPO_STORE_QUEUE_MAX'); }
|
|
117
129
|
/** How long the daily runner lets one child `hippo` step run; cli/setup.ts holds the default. */
|
|
118
130
|
export function envDailyStepTimeoutMs() { return positiveInt('HIPPO_DAILY_STEP_TIMEOUT_MS'); }
|
|
@@ -132,25 +144,66 @@ export function envLlmTimeoutMs() { return positiveInt('HIPPO_LLM_TIMEOUT_MS');
|
|
|
132
144
|
export function envTypesafeApiKey() { return trimmed('TYPESAFE_API_KEY'); }
|
|
133
145
|
export function envJevTimeoutMs() { return positiveInt('HIPPO_JEV_TIMEOUT_MS'); }
|
|
134
146
|
export function envJevModel() { return raw('HIPPO_JEV_MODEL'); }
|
|
135
|
-
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
export function
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
export function
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
export function
|
|
147
|
+
/**
|
|
148
|
+
* How long a recall waits for an API provider to embed its query before ranking on BM25 alone; search/vector.ts holds
|
|
149
|
+
* the default.
|
|
150
|
+
*/
|
|
151
|
+
export function envQueryEmbedTimeoutMs() {
|
|
152
|
+
return positiveInt('HIPPO_QUERY_EMBED_TIMEOUT_MS');
|
|
153
|
+
}
|
|
154
|
+
export function envLlmRerankerUrl() {
|
|
155
|
+
return raw('HIPPO_LLM_RERANKER_URL');
|
|
156
|
+
}
|
|
157
|
+
export function envLlmRerankerKey() {
|
|
158
|
+
return raw('HIPPO_LLM_RERANKER_KEY');
|
|
159
|
+
}
|
|
160
|
+
export function envLlmRerankerModel() {
|
|
161
|
+
return raw('HIPPO_LLM_RERANKER_MODEL');
|
|
162
|
+
}
|
|
163
|
+
export function envLlmRerankerTimeoutMs() {
|
|
164
|
+
return positiveInt('HIPPO_LLM_RERANKER_TIMEOUT_MS');
|
|
165
|
+
}
|
|
166
|
+
export function envClefEndpoint() {
|
|
167
|
+
return raw('HIPPO_CLEF_ENDPOINT')?.trim();
|
|
168
|
+
}
|
|
169
|
+
export function envClefEndpointToken() {
|
|
170
|
+
return raw('HIPPO_CLEF_ENDPOINT_TOKEN')?.trim() || undefined;
|
|
171
|
+
}
|
|
172
|
+
export function envClefTimeoutMs() {
|
|
173
|
+
return raw('HIPPO_CLEF_TIMEOUT_MS');
|
|
174
|
+
}
|
|
175
|
+
export function envCloudflareAccountId() {
|
|
176
|
+
return raw('CLOUDFLARE_ACCOUNT_ID')?.trim() ?? '';
|
|
177
|
+
}
|
|
178
|
+
export function envCloudflareApiToken() {
|
|
179
|
+
return raw('CLOUDFLARE_API_TOKEN')?.trim() ?? '';
|
|
180
|
+
}
|
|
146
181
|
// Connectors.
|
|
147
|
-
export function envSlackBotToken() {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
export function
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
export function
|
|
154
|
-
|
|
155
|
-
|
|
182
|
+
export function envSlackBotToken() {
|
|
183
|
+
return raw('SLACK_BOT_TOKEN');
|
|
184
|
+
}
|
|
185
|
+
export function envSlackTeamId() {
|
|
186
|
+
return raw('SLACK_TEAM_ID');
|
|
187
|
+
}
|
|
188
|
+
export function envSlackSigningSecret() {
|
|
189
|
+
return raw('SLACK_SIGNING_SECRET');
|
|
190
|
+
}
|
|
191
|
+
export function envSlackSigningSecretPrevious() {
|
|
192
|
+
return raw('SLACK_SIGNING_SECRET_PREVIOUS');
|
|
193
|
+
}
|
|
194
|
+
export function envSlackAllowUnknownTeamFallback() {
|
|
195
|
+
return isOne('SLACK_ALLOW_UNKNOWN_TEAM_FALLBACK');
|
|
196
|
+
}
|
|
197
|
+
export function envGitHubToken() {
|
|
198
|
+
return raw('GITHUB_TOKEN');
|
|
199
|
+
}
|
|
200
|
+
export function envGitHubWebhookSecret() {
|
|
201
|
+
return raw('GITHUB_WEBHOOK_SECRET');
|
|
202
|
+
}
|
|
203
|
+
export function envGitHubWebhookSecretPrevious() {
|
|
204
|
+
return raw('GITHUB_WEBHOOK_SECRET_PREVIOUS');
|
|
205
|
+
}
|
|
206
|
+
export function envGitHubAllowUnknownInstallationFallback() {
|
|
207
|
+
return isOne('GITHUB_ALLOW_UNKNOWN_INSTALLATION_FALLBACK');
|
|
208
|
+
}
|
|
156
209
|
//# sourceMappingURL=env.js.map
|
package/dist/util/home-path.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
// Home-directory paths name their user, so text bound for a shared
|
|
1
|
+
// Home-directory paths name their user, so text bound for a shared
|
|
2
|
+
// store tests or masks them here; no imports keep it light.
|
|
2
3
|
// VS Code writes file links URL-encoded, so a separator may be %5C or %2F.
|
|
3
4
|
const WIN_SEP = String.raw `(?:[\\/]|%5[Cc]|%2[Ff])`;
|
|
4
5
|
const WIN_CHAR = String.raw `(?:(?!%5[Cc]|%2[Ff])[^\\/:*?"<>|\s])`;
|
|
5
6
|
// A Windows name never holds a quote, so JSON stops it; one with spaces runs to a separator, quote,
|
|
6
7
|
// closing mark or line end, leaving the mark, as stopping at its first word leaks the surname.
|
|
7
|
-
const WIN_USER = String.raw `(?:${WIN_CHAR}+(?: ${WIN_CHAR}+){0,3}(?=${WIN_SEP}|["'\`)\]>,;]|\.(?=\s|$)
|
|
8
|
-
|
|
8
|
+
const WIN_USER = String.raw `(?:${WIN_CHAR}+(?: ${WIN_CHAR}+){0,3}(?=${WIN_SEP}|["'\`)\]>,;]|\.(?=\s|$)|` +
|
|
9
|
+
String.raw `(?<!\.)(?:[^\S ]|$))(?<![\`)\],;'])|${WIN_CHAR}+)`;
|
|
10
|
+
// Slash-led homes with their case spelled out and no flag, so one pattern can hold all four: Git Bash and WSL mounts,
|
|
11
|
+
// Linux, root and macOS.
|
|
9
12
|
const MOUNT_HOME = String.raw `(?:\/[Mm][Nn][Tt])?\/[A-Za-z]\/[Uu][Ss][Ee][Rr][Ss]\/${WIN_USER}`;
|
|
10
13
|
const LINUX_HOME = String.raw `(?:\/var)?\/home\/[^/\s]+`;
|
|
11
14
|
const ROOT_HOME = String.raw `(?:\/var)?\/root(?![\w.-])`;
|
|
@@ -35,8 +38,10 @@ const MASK = '[home]';
|
|
|
35
38
|
// Global copies, so the shared test patterns keep their lastIndex at 0.
|
|
36
39
|
const allOf = (re) => new RegExp(re.source, `${re.flags}g`);
|
|
37
40
|
const [DRIVE_HOMES, LONG_PATHS, SHARE_HOMES, SHORT_NAMES] = [DRIVE_HOME, LONG_PATH, SHARE_HOME, SHORT_NAME].map(allOf);
|
|
38
|
-
// A home glued after another starts where a mask will end, which no guard
|
|
39
|
-
//
|
|
41
|
+
// A home glued after another starts where a mask will end, which no guard
|
|
42
|
+
// refuses: one match takes the whole run, as masking one a pass costs a
|
|
43
|
+
// pass per home. A run holds only shapes whose own step is not still to
|
|
44
|
+
// come, so a later step meets the same text it would without the run.
|
|
40
45
|
const runFrom = (start, ...glued) => new RegExp(`${start}(?:${glued.join('|')})*`, 'g');
|
|
41
46
|
const MOUNT_RUNS = runFrom(MOUNT_START, MOUNT_HOME);
|
|
42
47
|
const LINUX_RUNS = runFrom(LINUX_START, MOUNT_HOME, LINUX_HOME);
|
|
@@ -59,7 +64,8 @@ function maskOnce(text) {
|
|
|
59
64
|
export function maskHomePaths(text) {
|
|
60
65
|
let out = text;
|
|
61
66
|
let next = maskOnce(out);
|
|
62
|
-
// A mask can uncover a home path its text was hiding, so passes repeat until one changes nothing; each takes a
|
|
67
|
+
// A mask can uncover a home path its text was hiding, so passes repeat until one changes nothing; each takes a
|
|
68
|
+
// separator out, so they end.
|
|
63
69
|
while (next !== out) {
|
|
64
70
|
out = next;
|
|
65
71
|
next = maskOnce(out);
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
export declare function hookPayloadSessionId(stdinText: string | undefined, requiredSource?: string | null): string | null;
|
|
3
3
|
/** A hook payload's string `field` as sent, or null when the payload or the field is missing or not a string. */
|
|
4
4
|
export declare function hookPayloadString(stdinText: string | undefined, field: string): string | null;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Whether a hook fired inside a sub-agent, the only payload with `agent_id`
|
|
7
|
+
* (https://code.claude.com/docs/en/hooks#common-input-fields).
|
|
6
8
|
* Its `session_id` is the parent's, so a sub-agent's blocks and compactions must not count as the parent's. */
|
|
7
9
|
export declare function isSubagentPayload(stdinText: string | undefined): boolean;
|
|
8
10
|
//# sourceMappingURL=hook-payload.d.ts.map
|
|
@@ -28,7 +28,9 @@ export function hookPayloadString(stdinText, field) {
|
|
|
28
28
|
const value = parseHookPayload(stdinText)?.[field];
|
|
29
29
|
return isJsonString(value) ? value : null;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Whether a hook fired inside a sub-agent, the only payload with `agent_id`
|
|
33
|
+
* (https://code.claude.com/docs/en/hooks#common-input-fields).
|
|
32
34
|
* Its `session_id` is the parent's, so a sub-agent's blocks and compactions must not count as the parent's. */
|
|
33
35
|
export function isSubagentPayload(stdinText) {
|
|
34
36
|
const agentId = parseHookPayload(stdinText)?.agent_id;
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
/** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
|
|
1
|
+
/** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
|
|
2
|
+
* connection where a replay is safe. */
|
|
2
3
|
export interface RetryPolicy {
|
|
3
4
|
/** Per-attempt limit; a stalled peer ends as a thrown `TimeoutError`, never a hang. */
|
|
4
5
|
timeoutMs: number;
|
|
5
6
|
/** Total attempts including the first. */
|
|
6
7
|
attempts?: number;
|
|
7
|
-
/** Limit on the whole call, waits included: an attempt is cut short at it and no retry starts whose wait would
|
|
8
|
+
/** Limit on the whole call, waits included: an attempt is cut short at it and no retry starts whose wait would
|
|
9
|
+
* reach it. */
|
|
8
10
|
totalMs?: number;
|
|
9
11
|
baseDelayMs?: number;
|
|
10
12
|
/** A Retry-After longer than this hands the response back, so a caller with its own long pause keeps it. */
|
|
11
13
|
maxDelayMs?: number;
|
|
12
14
|
/** Which responses to retry; defaults to 429 and 5xx. A write narrows it to answers that prove nothing committed. */
|
|
13
15
|
retryOn?: (res: Response) => boolean;
|
|
14
|
-
/** Also retry a dropped connection or a timed-out attempt. On for GET and HEAD; any other method turns it on only
|
|
16
|
+
/** Also retry a dropped connection or a timed-out attempt. On for GET and HEAD; any other method turns it on only
|
|
17
|
+
* when a replay cannot commit twice. */
|
|
15
18
|
retryTransport?: boolean;
|
|
16
19
|
fetchFn?: typeof fetch;
|
|
17
20
|
/** Replaces the timer between attempts. A caller `signal` that aborts still ends the wait at once. */
|
|
@@ -20,14 +23,17 @@ export interface RetryPolicy {
|
|
|
20
23
|
/** Replaces the clock `totalMs` is measured on. */
|
|
21
24
|
now?: () => number;
|
|
22
25
|
}
|
|
23
|
-
/** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
|
|
26
|
+
/** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
|
|
27
|
+
* overrides it. */
|
|
24
28
|
export declare function llmTimeoutMs(): number;
|
|
25
|
-
/** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
|
|
29
|
+
/** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
|
|
30
|
+
* would hold a sleep for 3x the timeout. */
|
|
26
31
|
export declare function llmTotalMs(): number;
|
|
27
32
|
export declare function isRetryableStatus(status: number): boolean;
|
|
28
33
|
/** Retry-After as milliseconds: delta-seconds or an HTTP date; null when absent or unreadable. */
|
|
29
34
|
export declare function parseRetryAfterMs(header: string | null, now?: number): number | null;
|
|
30
|
-
/** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
|
|
35
|
+
/** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
|
|
36
|
+
* not one. */
|
|
31
37
|
export declare function isTransientTransportError<E>(err: E): boolean;
|
|
32
38
|
/** `fetch` with a per-attempt timeout and up to `attempts` tries on 429, 5xx and (see
|
|
33
39
|
* `retryTransport`) transport faults; the last response or error comes back as is. */
|
package/dist/util/http-retry.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
|
|
1
|
+
/** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
|
|
2
|
+
* connection where a replay is safe. */
|
|
2
3
|
import { MINUTE_MS } from './time.js';
|
|
3
4
|
import { envLlmTimeoutMs } from './env.js';
|
|
4
5
|
import { errorCode, errorFields, log } from './log.js';
|
|
@@ -6,11 +7,13 @@ const DEFAULT_ATTEMPTS = 3;
|
|
|
6
7
|
const DEFAULT_BASE_DELAY_MS = 250;
|
|
7
8
|
const DEFAULT_MAX_DELAY_MS = 8_000;
|
|
8
9
|
const DEFAULT_LLM_TIMEOUT_MS = MINUTE_MS;
|
|
9
|
-
/** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
|
|
10
|
+
/** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
|
|
11
|
+
* overrides it. */
|
|
10
12
|
export function llmTimeoutMs() {
|
|
11
13
|
return envLlmTimeoutMs() ?? DEFAULT_LLM_TIMEOUT_MS;
|
|
12
14
|
}
|
|
13
|
-
/** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
|
|
15
|
+
/** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
|
|
16
|
+
* would hold a sleep for 3x the timeout. */
|
|
14
17
|
export function llmTotalMs() {
|
|
15
18
|
return 2 * llmTimeoutMs() + DEFAULT_MAX_DELAY_MS;
|
|
16
19
|
}
|
|
@@ -31,7 +34,8 @@ export function parseRetryAfterMs(header, now = Date.now()) {
|
|
|
31
34
|
const TRANSIENT_CODES = new Set([
|
|
32
35
|
'ECONNRESET', 'ETIMEDOUT', 'EAI_AGAIN', 'UND_ERR_SOCKET', 'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_HEADERS_TIMEOUT',
|
|
33
36
|
]);
|
|
34
|
-
/** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
|
|
37
|
+
/** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
|
|
38
|
+
* not one. */
|
|
35
39
|
export function isTransientTransportError(err) {
|
|
36
40
|
if (!(err instanceof Error))
|
|
37
41
|
return false;
|
|
@@ -58,7 +62,11 @@ function redactedTarget(url) {
|
|
|
58
62
|
function logRetry(init, url, reason, attempt, attempts, delayMs) {
|
|
59
63
|
// Debug: an attempt that may still succeed is not a warning, and the caller reports the final failure.
|
|
60
64
|
log.debug('http retry', {
|
|
61
|
-
method: (init.method ?? 'GET').toUpperCase(),
|
|
65
|
+
method: (init.method ?? 'GET').toUpperCase(),
|
|
66
|
+
target: redactedTarget(url),
|
|
67
|
+
reason,
|
|
68
|
+
attempt: `${attempt}/${attempts}`,
|
|
69
|
+
delayMs: Math.round(delayMs),
|
|
62
70
|
});
|
|
63
71
|
}
|
|
64
72
|
// `cancel` clears the timer, so a wait the caller left does not keep the process alive.
|
|
@@ -66,7 +74,8 @@ const timerSleep = (ms, cancel) => new Promise((resolve) => {
|
|
|
66
74
|
const timer = setTimeout(resolve, ms);
|
|
67
75
|
cancel?.addEventListener('abort', () => clearTimeout(timer), { once: true });
|
|
68
76
|
});
|
|
69
|
-
/** The wait between attempts. With a caller signal it ends the moment that signal aborts and rejects with its
|
|
77
|
+
/** The wait between attempts. With a caller signal it ends the moment that signal aborts and rejects with its
|
|
78
|
+
* reason, so no further attempt starts. */
|
|
70
79
|
async function backoffWait(ms, sleep, signal) {
|
|
71
80
|
if (!signal)
|
|
72
81
|
return (sleep ?? timerSleep)(ms);
|
|
@@ -132,6 +141,7 @@ export async function fetchWithRetry(url, init, policy) {
|
|
|
132
141
|
await res.body?.cancel();
|
|
133
142
|
}
|
|
134
143
|
catch (err) {
|
|
144
|
+
// Best-effort: the response is spent either way, so a failed cancel only leaves the socket to idle out.
|
|
135
145
|
log.debug('http retry: body cancel failed', errorFields(err));
|
|
136
146
|
}
|
|
137
147
|
logRetry(init, url, `status ${res.status}`, attempt, attempts, delay);
|
package/dist/util/http-util.d.ts
CHANGED
|
@@ -10,7 +10,10 @@ export declare class HttpError extends Error {
|
|
|
10
10
|
readonly retryAfterSec: number | undefined;
|
|
11
11
|
constructor(status: number, message: string, retryAfterSec?: number);
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client
|
|
15
|
+
* branches without parsing prose.
|
|
16
|
+
*/
|
|
14
17
|
export declare class DeadlineExceededError extends HttpError {
|
|
15
18
|
readonly code = "deadline_exceeded";
|
|
16
19
|
constructor(message: string);
|
|
@@ -25,7 +28,10 @@ export declare const INTERNAL_ERROR_MESSAGE = "internal server error";
|
|
|
25
28
|
export declare const STORE_NOT_PORTED_MESSAGE = "store_not_ported";
|
|
26
29
|
/** Serialises before the head goes out, so a body that is not JSON still reaches the caller's error reply. */
|
|
27
30
|
export declare function sendJson<T>(res: ServerResponse, status: number, body: T): void;
|
|
28
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request
|
|
33
|
+
* open: 30 s, or HIPPO_BODY_TIMEOUT_MS.
|
|
34
|
+
*/
|
|
29
35
|
export declare function bodyDeadlineMs(): number;
|
|
30
36
|
export interface ReadBodyOpts {
|
|
31
37
|
/** Defaults to 1 MB. */
|
|
@@ -33,7 +39,10 @@ export interface ReadBodyOpts {
|
|
|
33
39
|
/** Fails with BodyTimeoutError when the whole body has not arrived by then; defaults to bodyDeadlineMs(). */
|
|
34
40
|
deadlineMs?: number;
|
|
35
41
|
}
|
|
36
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up
|
|
44
|
+
* the server.
|
|
45
|
+
*/
|
|
37
46
|
export declare function readBody(req: IncomingMessage, { maxBytes, deadlineMs }?: ReadBodyOpts): Promise<string>;
|
|
38
47
|
export declare function closeAfterReply(req: IncomingMessage): void;
|
|
39
48
|
export declare const LOOPBACK_HOST_HEADER: RegExp;
|
|
@@ -48,8 +57,14 @@ export interface WebhookRequest {
|
|
|
48
57
|
webhookBodyDeadlineMs?: number;
|
|
49
58
|
};
|
|
50
59
|
}
|
|
51
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it
|
|
62
|
+
* does after a 413.
|
|
63
|
+
*/
|
|
52
64
|
export declare function closeIfBodyUnread({ req, res }: WebhookRequest): void;
|
|
53
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and
|
|
67
|
+
* the signature headers are present.
|
|
68
|
+
*/
|
|
54
69
|
export declare function readWebhookBody({ req, opts }: WebhookRequest): Promise<string>;
|
|
55
70
|
//# sourceMappingURL=http-util.d.ts.map
|
package/dist/util/http-util.js
CHANGED
|
@@ -11,7 +11,8 @@ export const MAX_BODY_BYTES = 1024 * 1024;
|
|
|
11
11
|
function sizeLabel(bytes) {
|
|
12
12
|
return bytes % (1024 * 1024) === 0 ? `${bytes / (1024 * 1024)}MB` : `${Math.ceil(bytes / 1024)}KB`;
|
|
13
13
|
}
|
|
14
|
-
// How long a refused upload is still read and discarded after its reply, so a client that never stops cannot hold the
|
|
14
|
+
// How long a refused upload is still read and discarded after its reply, so a client that never stops cannot hold the
|
|
15
|
+
// socket.
|
|
15
16
|
const REFUSED_UPLOAD_LINGER_MS = 2000;
|
|
16
17
|
export const JSON_HEADERS = { 'content-type': 'application/json' };
|
|
17
18
|
export class HttpError extends Error {
|
|
@@ -24,7 +25,10 @@ export class HttpError extends Error {
|
|
|
24
25
|
this.retryAfterSec = retryAfterSec;
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client
|
|
30
|
+
* branches without parsing prose.
|
|
31
|
+
*/
|
|
28
32
|
export class DeadlineExceededError extends HttpError {
|
|
29
33
|
code = 'deadline_exceeded';
|
|
30
34
|
constructor(message) {
|
|
@@ -48,11 +52,17 @@ export function sendJson(res, status, body) {
|
|
|
48
52
|
res.end(text);
|
|
49
53
|
}
|
|
50
54
|
const DEFAULT_BODY_DEADLINE_MS = 30_000;
|
|
51
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request
|
|
57
|
+
* open: 30 s, or HIPPO_BODY_TIMEOUT_MS.
|
|
58
|
+
*/
|
|
52
59
|
export function bodyDeadlineMs() {
|
|
53
60
|
return envBodyTimeoutMs() ?? DEFAULT_BODY_DEADLINE_MS;
|
|
54
61
|
}
|
|
55
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up
|
|
64
|
+
* the server.
|
|
65
|
+
*/
|
|
56
66
|
export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDeadlineMs() } = {}) {
|
|
57
67
|
return new Promise((resolve, reject) => {
|
|
58
68
|
const chunks = [];
|
|
@@ -63,7 +73,8 @@ export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDead
|
|
|
63
73
|
chunks.length = 0;
|
|
64
74
|
reject(err);
|
|
65
75
|
};
|
|
66
|
-
// Not for-await: leaving that loop early destroys the request, so the socket stops reading and the 413 caller
|
|
76
|
+
// Not for-await: leaving that loop early destroys the request, so the socket stops reading and the 413 caller
|
|
77
|
+
// cannot close it cleanly.
|
|
67
78
|
const onData = (chunk) => {
|
|
68
79
|
total += chunk.length;
|
|
69
80
|
if (total <= maxBytes) {
|
|
@@ -84,7 +95,8 @@ export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDead
|
|
|
84
95
|
});
|
|
85
96
|
});
|
|
86
97
|
}
|
|
87
|
-
// A full close with request bytes unread sends a TCP reset, which discards the reply before the client reads it (RFC
|
|
98
|
+
// A full close with request bytes unread sends a TCP reset, which discards the reply before the client reads it (RFC
|
|
99
|
+
// 9112 9.6).
|
|
88
100
|
export function closeAfterReply(req) {
|
|
89
101
|
const socket = req.socket;
|
|
90
102
|
req.resume();
|
|
@@ -112,16 +124,23 @@ function originHost(origin) {
|
|
|
112
124
|
return null;
|
|
113
125
|
}
|
|
114
126
|
}
|
|
115
|
-
// A webhook route takes no key, so anyone holding a signature header could otherwise keep a socket open with a body
|
|
127
|
+
// A webhook route takes no key, so anyone holding a signature header could otherwise keep a socket open with a body
|
|
128
|
+
// that never ends.
|
|
116
129
|
const WEBHOOK_BODY_DEADLINE_MS = 10_000;
|
|
117
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it
|
|
132
|
+
* does after a 413.
|
|
133
|
+
*/
|
|
118
134
|
export function closeIfBodyUnread({ req, res }) {
|
|
119
135
|
res.once('finish', () => {
|
|
120
136
|
if (!req.complete)
|
|
121
137
|
closeAfterReply(req);
|
|
122
138
|
});
|
|
123
139
|
}
|
|
124
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and
|
|
142
|
+
* the signature headers are present.
|
|
143
|
+
*/
|
|
125
144
|
export function readWebhookBody({ req, opts }) {
|
|
126
145
|
return readBody(req, { deadlineMs: opts.webhookBodyDeadlineMs ?? WEBHOOK_BODY_DEADLINE_MS });
|
|
127
146
|
}
|
package/dist/util/json.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export declare function isJsonObject(value: JsonValue | undefined): value is {
|
|
|
12
12
|
export declare function isJsonObjectLiteral(value: JsonValue | undefined): value is {
|
|
13
13
|
[key: string]: JsonValue;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is
|
|
17
|
+
* dropped.
|
|
18
|
+
*/
|
|
16
19
|
export declare function readJsonFile(file: string): JsonValue;
|
|
17
20
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/util/json.js
CHANGED
|
@@ -17,7 +17,10 @@ export function isJsonObject(value) {
|
|
|
17
17
|
export function isJsonObjectLiteral(value) {
|
|
18
18
|
return value !== undefined && value !== null && !Array.isArray(value) && value.constructor === Object;
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is
|
|
22
|
+
* dropped.
|
|
23
|
+
*/
|
|
21
24
|
export function readJsonFile(file) {
|
|
22
25
|
const text = fs.readFileSync(file, 'utf8');
|
|
23
26
|
return JSON.parse(text.codePointAt(0) === 0xfeff ? text.slice(1) : text);
|
package/dist/util/keyset.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// Keyset paging for list queries ordered by (sort key DESC, id DESC), so a page never skips or repeats a row when rows
|
|
1
|
+
// Keyset paging for list queries ordered by (sort key DESC, id DESC), so a page never skips or repeats a row when rows
|
|
2
|
+
// arrive between requests.
|
|
2
3
|
/** An ` AND ...` WHERE fragment and its params selecting rows strictly after `after`; empty when `after` is unset. */
|
|
3
4
|
export function keysetAfter(sortCol, idCol, after) {
|
|
4
5
|
if (!after)
|
package/dist/util/limits.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
// Cap for id-shaped request fields (ids, tenant, session, scope, class): far above real values, small enough to bound
|
|
1
|
+
// Cap for id-shaped request fields (ids, tenant, session, scope, class): far above real values, small enough to bound
|
|
2
|
+
// logs and indexes.
|
|
2
3
|
export const MAX_ID_LEN = 256;
|
|
3
4
|
// Page size every list surface (CLI, HTTP, store) falls back to when the caller names none.
|
|
4
5
|
export const DEFAULT_LIST_LIMIT = 100;
|
|
5
|
-
// Ceiling for a caller-named list page; SQLite `LIMIT ?` and one response's size bound it, and every list surface
|
|
6
|
+
// Ceiling for a caller-named list page; SQLite `LIMIT ?` and one response's size bound it, and every list surface
|
|
7
|
+
// shares it.
|
|
6
8
|
export const MAX_LIST_LIMIT = 1000;
|
|
7
9
|
/** The one list-limit rule: absent means the default; a positive integer up to the ceiling passes.
|
|
8
10
|
* Anything else returns undefined, so each surface words its own error. */
|
package/dist/util/log.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/** Leveled stderr logger. `HIPPO_LOG` picks the threshold (error, warn, info,
|
|
2
2
|
* debug); unset or unknown means warn. `HIPPO_LOG_FORMAT=json` writes JSON lines. */
|
|
3
3
|
export type LogLevel = 'error' | 'warn' | 'info' | 'debug';
|
|
4
|
-
/** Extra key=value pairs appended to the line. `ts` and, inside a request, `requestId` are added to every line
|
|
4
|
+
/** Extra key=value pairs appended to the line. `ts` and, inside a request, `requestId` are added to every line
|
|
5
|
+
* written. */
|
|
5
6
|
export interface LogFields {
|
|
6
7
|
ts?: string;
|
|
7
8
|
requestId?: string;
|
|
@@ -14,10 +15,15 @@ export declare function isLevelEnabled(level: LogLevel): boolean;
|
|
|
14
15
|
export declare function formatLogLine(level: LogLevel, message: string, fields?: LogFields): string;
|
|
15
16
|
/** One JSON object per line for a log collector; JSON escaping keeps a multi-line value on the one line. */
|
|
16
17
|
export declare function formatLogJson(level: LogLevel, message: string, fields?: LogFields): string;
|
|
17
|
-
/** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
|
|
18
|
+
/** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
|
|
19
|
+
* cap an unseen key logs at debug. */
|
|
18
20
|
declare function once(key: string, level: LogLevel, message: string, fields?: LogFields): void;
|
|
19
|
-
/** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
|
|
21
|
+
/** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
|
|
22
|
+
* without flooding stderr. */
|
|
20
23
|
declare function warnThenDebug(key: string, message: string, fields?: LogFields): void;
|
|
24
|
+
/** Warn the first time `key` is seen, then count repeats at debug and warn again with the running count on every
|
|
25
|
+
* 100th, so a failure that keeps happening stays visible without flooding stderr. */
|
|
26
|
+
declare function warnThenSample(key: string, message: string, fields?: LogFields): void;
|
|
21
27
|
/** The class name and stack of a thrown value, as log fields; a non-Error throw has no stack. */
|
|
22
28
|
export declare function errorFields<E>(err: E): LogFields;
|
|
23
29
|
export declare const log: {
|
|
@@ -27,11 +33,13 @@ export declare const log: {
|
|
|
27
33
|
readonly debug: (message: string, fields?: LogFields) => void;
|
|
28
34
|
readonly once: typeof once;
|
|
29
35
|
readonly warnThenDebug: typeof warnThenDebug;
|
|
36
|
+
readonly warnThenSample: typeof warnThenSample;
|
|
30
37
|
};
|
|
31
|
-
/** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
|
|
38
|
+
/** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
|
|
39
|
+
* enrichment). */
|
|
32
40
|
export declare function errorMessage(cause: unknown): string;
|
|
33
41
|
/** One post-compact failure, told once to the hook's output (`say`) and once to the structured log. */
|
|
34
|
-
export declare function reportCompactionFailure(say: (message: string) => void, step: string, reason: string): void;
|
|
42
|
+
export declare function reportCompactionFailure(say: (message: string) => void, step: string, reason: string, fields?: LogFields): void;
|
|
35
43
|
/** The string `code` of a caught value (an errno name such as EACCES), or '' when it has none. */
|
|
36
44
|
export declare function errorCode(cause: unknown): string;
|
|
37
45
|
/** Test hook: forget which once-keys have fired. */
|
package/dist/util/log.js
CHANGED
|
@@ -41,7 +41,8 @@ function write(level, message, fields) {
|
|
|
41
41
|
const ONCE_KEY_CAP = 1_000;
|
|
42
42
|
const onceKeys = new Set();
|
|
43
43
|
let onceCapReported = false;
|
|
44
|
-
/** 'new' records the key and 'seen' is a repeat. 'uncounted' is an unseen key once the set is full: it is not
|
|
44
|
+
/** 'new' records the key and 'seen' is a repeat. 'uncounted' is an unseen key once the set is full: it is not
|
|
45
|
+
* recorded, and the first one says so at warn. */
|
|
45
46
|
function sightOnceKey(key) {
|
|
46
47
|
if (onceKeys.has(key))
|
|
47
48
|
return 'seen';
|
|
@@ -55,16 +56,35 @@ function sightOnceKey(key) {
|
|
|
55
56
|
}
|
|
56
57
|
return 'uncounted';
|
|
57
58
|
}
|
|
58
|
-
/** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
|
|
59
|
+
/** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
|
|
60
|
+
* cap an unseen key logs at debug. */
|
|
59
61
|
function once(key, level, message, fields) {
|
|
60
62
|
const sighting = sightOnceKey(key);
|
|
61
63
|
if (sighting !== 'seen')
|
|
62
64
|
write(sighting === 'new' ? level : 'debug', message, fields);
|
|
63
65
|
}
|
|
64
|
-
/** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
|
|
66
|
+
/** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
|
|
67
|
+
* without flooding stderr. */
|
|
65
68
|
function warnThenDebug(key, message, fields) {
|
|
66
69
|
write(sightOnceKey(key) === 'new' ? 'warn' : 'debug', message, fields);
|
|
67
70
|
}
|
|
71
|
+
const SAMPLE_EVERY = 100;
|
|
72
|
+
const repeatCounts = new Map();
|
|
73
|
+
/** Warn the first time `key` is seen, then count repeats at debug and warn again with the running count on every
|
|
74
|
+
* 100th, so a failure that keeps happening stays visible without flooding stderr. */
|
|
75
|
+
function warnThenSample(key, message, fields) {
|
|
76
|
+
if (sightOnceKey(key) === 'new') {
|
|
77
|
+
write('warn', message, fields);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Counts only keys sightOnceKey recorded, so the map is bounded by ONCE_KEY_CAP.
|
|
81
|
+
const seen = (repeatCounts.get(key) ?? 0) + 1;
|
|
82
|
+
repeatCounts.set(key, seen);
|
|
83
|
+
if (seen % SAMPLE_EVERY === 0)
|
|
84
|
+
write('warn', `${message} (${seen} more since the first warning)`, fields);
|
|
85
|
+
else
|
|
86
|
+
write('debug', message, fields);
|
|
87
|
+
}
|
|
68
88
|
/** The class name and stack of a thrown value, as log fields; a non-Error throw has no stack. */
|
|
69
89
|
export function errorFields(err) {
|
|
70
90
|
if (!(err instanceof Error))
|
|
@@ -78,15 +98,17 @@ export const log = {
|
|
|
78
98
|
debug: (message, fields) => write('debug', message, fields),
|
|
79
99
|
once,
|
|
80
100
|
warnThenDebug,
|
|
101
|
+
warnThenSample,
|
|
81
102
|
};
|
|
82
|
-
/** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
|
|
103
|
+
/** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
|
|
104
|
+
* enrichment). */
|
|
83
105
|
export function errorMessage(cause) {
|
|
84
106
|
return cause instanceof Error ? cause.message : String(cause);
|
|
85
107
|
}
|
|
86
108
|
/** One post-compact failure, told once to the hook's output (`say`) and once to the structured log. */
|
|
87
|
-
export function reportCompactionFailure(say, step, reason) {
|
|
109
|
+
export function reportCompactionFailure(say, step, reason, fields) {
|
|
88
110
|
say(`${step} failed: ${reason}`);
|
|
89
|
-
log.error(`post-compact: ${step} failed: ${reason}
|
|
111
|
+
log.error(`post-compact: ${step} failed: ${reason}`, fields);
|
|
90
112
|
}
|
|
91
113
|
/** The string `code` of a caught value (an errno name such as EACCES), or '' when it has none. */
|
|
92
114
|
export function errorCode(cause) {
|
|
@@ -95,6 +117,7 @@ export function errorCode(cause) {
|
|
|
95
117
|
/** Test hook: forget which once-keys have fired. */
|
|
96
118
|
export function resetLogOnce() {
|
|
97
119
|
onceKeys.clear();
|
|
120
|
+
repeatCounts.clear();
|
|
98
121
|
onceCapReported = false;
|
|
99
122
|
}
|
|
100
123
|
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A URL hostname that stays on this machine: localhost, ::1 (bracketed or not) or any 127.0.0.0/8 address. */
|
|
2
|
+
export declare function isLoopbackHost(hostname: string): boolean;
|
|
3
|
+
/** A socket remote address on this machine; Node reports a dual-stack IPv4 peer as '::ffff:127.x.x.x'. */
|
|
4
|
+
export declare function isLoopbackAddress(remoteAddress: string | undefined): boolean;
|
|
5
|
+
//# sourceMappingURL=net.d.ts.map
|