hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- 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 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/replay.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Replay — biologically-inspired rehearsal during consolidation.
|
|
3
|
-
*
|
|
4
|
-
* Hippocampal replay is internally-driven reactivation of memories during
|
|
5
|
-
* slow-wave sleep: the brain picks important recent experiences and "plays
|
|
6
|
-
* them back" without external input, strengthening them before they decay.
|
|
7
|
-
* In McClelland's complementary-learning-systems framing, replay is also
|
|
8
|
-
* how episodic memories train the neocortex (interleaved rehearsal); in
|
|
9
|
-
* reward-modulated STDP, replay is gated by dopamine so rewarded
|
|
10
|
-
* experiences get preferentially consolidated.
|
|
11
|
-
*
|
|
12
|
-
* This module implements a lightweight, deterministic analog. During each
|
|
13
|
-
* `hippo sleep`, we sample N surviving memories by a priority score that
|
|
14
|
-
* weighs reward feedback, emotional valence, under-rehearsal, and age —
|
|
15
|
-
* then apply the same retrieval-strengthening dynamics `markRetrieved`
|
|
16
|
-
* applies to real queries. The effect is that important memories stay
|
|
17
|
-
* strong even when the user hasn't explicitly queried them recently.
|
|
18
|
-
*
|
|
19
|
-
* Distinct from the other consolidation passes:
|
|
20
|
-
* - decay: removes what's too weak
|
|
21
|
-
* - physics: moves particles in embedding space
|
|
22
|
-
* - merge: collapses near-duplicate episodics into semantics
|
|
23
|
-
* - REPLAY: picks winners and rehearses them (this file)
|
|
24
|
-
*/
|
|
25
|
-
import { isOutcomeSlowAblated } from './ablation.js';
|
|
26
|
-
import { resolveConfidence } from './memory.js';
|
|
27
|
-
const VALENCE_WEIGHT = {
|
|
28
|
-
neutral: 1.0,
|
|
29
|
-
positive: 1.3,
|
|
30
|
-
negative: 1.5,
|
|
31
|
-
critical: 2.0,
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Priority score used to rank survivors for replay. Higher = more likely
|
|
35
|
-
* to be sampled. Pure function of the entry and current time.
|
|
36
|
-
*/
|
|
37
|
-
export function replayPriority(entry, now) {
|
|
38
|
-
const pos = entry.outcome_positive ?? 0;
|
|
39
|
-
const neg = entry.outcome_negative ?? 0;
|
|
40
|
-
// Reward signal: neutral memories get 1, strongly-rewarded memories > 1,
|
|
41
|
-
// negative-dominated memories floor at 0.1 (so they're still eligible, just
|
|
42
|
-
// much less likely to be sampled than neutral peers). Clamp is required
|
|
43
|
-
// because sampleForReplay depends on all weights being positive.
|
|
44
|
-
const rewardSignal = isOutcomeSlowAblated()
|
|
45
|
-
? 1.0 // EVAL-ONLY ablation (see ablation.ts): outcome-off also silences replay's reward bias
|
|
46
|
-
: Math.max(0.1, 1 + pos * 0.5 + (pos - neg) * 0.25);
|
|
47
|
-
const valence = VALENCE_WEIGHT[entry.emotional_valence] ?? 1.0;
|
|
48
|
-
// Under-rehearsed memories benefit most from replay.
|
|
49
|
-
const underRehearsed = 1 / (1 + (entry.retrieval_count ?? 0));
|
|
50
|
-
// Idle-time boost: memories that haven't been touched recently need rehearsal more.
|
|
51
|
-
const lastRetrieved = new Date(entry.last_retrieved);
|
|
52
|
-
const deltaMs = now.getTime() - lastRetrieved.getTime();
|
|
53
|
-
const ageHours = Number.isFinite(deltaMs) ? Math.max(0, deltaMs / 3_600_000) : 0;
|
|
54
|
-
const idleBoost = 1 + Math.log1p(ageHours) * 0.1;
|
|
55
|
-
// Weight by current strength so dead-and-decaying memories don't waste replay slots.
|
|
56
|
-
const rawStrength = Number.isFinite(entry.strength) ? entry.strength : 0;
|
|
57
|
-
const strengthFloor = Math.max(0.1, rawStrength);
|
|
58
|
-
return rewardSignal * valence * underRehearsed * idleBoost * strengthFloor;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Deterministic 32-bit RNG (Mulberry32). Same seed → same sequence.
|
|
62
|
-
* Keeps replay reproducible for tests and audit runs without bringing
|
|
63
|
-
* in a random-number dependency.
|
|
64
|
-
*/
|
|
65
|
-
function mulberry32(seed) {
|
|
66
|
-
let s = seed >>> 0;
|
|
67
|
-
return () => {
|
|
68
|
-
let t = (s += 0x6D2B79F5);
|
|
69
|
-
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
70
|
-
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
71
|
-
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Pick `count` memories for replay, weighted by `replayPriority`, without
|
|
76
|
-
* replacement. Deterministic given the same seed.
|
|
77
|
-
*
|
|
78
|
-
* The sampler is weighted but not greedy — picking by priority alone would
|
|
79
|
-
* always pick the top-N, which overfits. Biological replay shows both
|
|
80
|
-
* preferential-for-reward AND stochastic-exploration characteristics; we
|
|
81
|
-
* keep the stochastic element so adjacent survivors aren't always ignored.
|
|
82
|
-
*/
|
|
83
|
-
export function sampleForReplay(survivors, count, now, seed = Date.now() >>> 0) {
|
|
84
|
-
if (count <= 0 || survivors.length === 0)
|
|
85
|
-
return [];
|
|
86
|
-
const rng = mulberry32(seed);
|
|
87
|
-
// Deliberately-marked and aged-out memories are both untrusted; rehearsing
|
|
88
|
-
// them would defeat the purpose of staleness, so derive rather than trust
|
|
89
|
-
// the stored value (it no longer carries the age-out case, see memory.ts).
|
|
90
|
-
const eligible = survivors.filter((e) => resolveConfidence(e, now) !== 'stale');
|
|
91
|
-
if (eligible.length === 0)
|
|
92
|
-
return [];
|
|
93
|
-
const pool = eligible.map((entry, idx) => ({
|
|
94
|
-
entry,
|
|
95
|
-
idx,
|
|
96
|
-
weight: replayPriority(entry, now),
|
|
97
|
-
}));
|
|
98
|
-
const want = Math.min(count, pool.length);
|
|
99
|
-
const chosen = [];
|
|
100
|
-
const taken = new Set();
|
|
101
|
-
for (let k = 0; k < want; k++) {
|
|
102
|
-
let totalW = 0;
|
|
103
|
-
for (const p of pool)
|
|
104
|
-
if (!taken.has(p.idx))
|
|
105
|
-
totalW += p.weight;
|
|
106
|
-
if (totalW <= 0)
|
|
107
|
-
break;
|
|
108
|
-
let r = rng() * totalW;
|
|
109
|
-
for (const p of pool) {
|
|
110
|
-
if (taken.has(p.idx))
|
|
111
|
-
continue;
|
|
112
|
-
r -= p.weight;
|
|
113
|
-
if (r <= 0) {
|
|
114
|
-
chosen.push(p.entry);
|
|
115
|
-
taken.add(p.idx);
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return chosen;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=replay.js.map
|
package/dist/rrf.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reciprocal Rank Fusion (Cormack, Clarke, and Buettcher 2009).
|
|
3
|
-
*
|
|
4
|
-
* Fuses N ranked candidate lists into a single ordering by summing
|
|
5
|
-
* weighted 1/(k + rank) contributions per candidate. The constant K is
|
|
6
|
-
* the canonical 60 from the original paper and the value already in use
|
|
7
|
-
* across hippo's `hybridSearch`. Do NOT tune K without an
|
|
8
|
-
* explicit cross-corpus eval — it is calibrated against IR benchmarks
|
|
9
|
-
* and works robustly across BM25/dense/cross-encoder rank-list shapes.
|
|
10
|
-
*
|
|
11
|
-
* Generic over the candidate id type so this helper can be shared by
|
|
12
|
-
* `src/search.ts::hybridSearch` (T = number, idx into MemoryEntry[]) and
|
|
13
|
-
* the LongMemEval hybrid retrieve benchmark (T = string, session_id).
|
|
14
|
-
*
|
|
15
|
-
* Behaviour MUST stay byte-identical to the inline implementation that
|
|
16
|
-
* lived in `src/search.ts:354-374` before extraction (commit ab6c5eb).
|
|
17
|
-
* The `tests/rrf.test.ts` suite is the contract.
|
|
18
|
-
*/
|
|
19
|
-
export declare const RRF_K = 60;
|
|
20
|
-
export interface RrfFuseOptions {
|
|
21
|
-
/** Smoothing constant. Default RRF_K = 60. */
|
|
22
|
-
k?: number;
|
|
23
|
-
/**
|
|
24
|
-
* Rank assigned to candidates absent from a list. Default is
|
|
25
|
-
* `max(rankedLists.map(l => l.length)) + 1` — the convention used in
|
|
26
|
-
* the pre-extraction `hybridSearch` code (`entries.length + 1`).
|
|
27
|
-
*/
|
|
28
|
-
absentRank?: number;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Fuse N ranked lists into a single Map of candidate id -> RRF score.
|
|
32
|
-
*
|
|
33
|
-
* @param rankedLists Each inner array is candidates in descending-score order.
|
|
34
|
-
* Element at index 0 is rank 1; index 1 is rank 2; etc.
|
|
35
|
-
* @param weights Per-list weights. weights.length === rankedLists.length.
|
|
36
|
-
* Weights are summed without normalisation — pass {0.5, 0.5}
|
|
37
|
-
* for symmetric fusion or {0.2, 0.8} for asymmetric.
|
|
38
|
-
* @param options Optional k override + absentRank override.
|
|
39
|
-
* @returns Map from candidate id to fused RRF score. Sort descending
|
|
40
|
-
* by value to get the fused ordering.
|
|
41
|
-
*/
|
|
42
|
-
export declare function rrfFuse<T>(rankedLists: ReadonlyArray<ReadonlyArray<T>>, weights: ReadonlyArray<number>, options?: RrfFuseOptions): Map<T, number>;
|
|
43
|
-
//# sourceMappingURL=rrf.d.ts.map
|
package/dist/rrf.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reciprocal Rank Fusion (Cormack, Clarke, and Buettcher 2009).
|
|
3
|
-
*
|
|
4
|
-
* Fuses N ranked candidate lists into a single ordering by summing
|
|
5
|
-
* weighted 1/(k + rank) contributions per candidate. The constant K is
|
|
6
|
-
* the canonical 60 from the original paper and the value already in use
|
|
7
|
-
* across hippo's `hybridSearch`. Do NOT tune K without an
|
|
8
|
-
* explicit cross-corpus eval — it is calibrated against IR benchmarks
|
|
9
|
-
* and works robustly across BM25/dense/cross-encoder rank-list shapes.
|
|
10
|
-
*
|
|
11
|
-
* Generic over the candidate id type so this helper can be shared by
|
|
12
|
-
* `src/search.ts::hybridSearch` (T = number, idx into MemoryEntry[]) and
|
|
13
|
-
* the LongMemEval hybrid retrieve benchmark (T = string, session_id).
|
|
14
|
-
*
|
|
15
|
-
* Behaviour MUST stay byte-identical to the inline implementation that
|
|
16
|
-
* lived in `src/search.ts:354-374` before extraction (commit ab6c5eb).
|
|
17
|
-
* The `tests/rrf.test.ts` suite is the contract.
|
|
18
|
-
*/
|
|
19
|
-
export const RRF_K = 60;
|
|
20
|
-
/**
|
|
21
|
-
* Fuse N ranked lists into a single Map of candidate id -> RRF score.
|
|
22
|
-
*
|
|
23
|
-
* @param rankedLists Each inner array is candidates in descending-score order.
|
|
24
|
-
* Element at index 0 is rank 1; index 1 is rank 2; etc.
|
|
25
|
-
* @param weights Per-list weights. weights.length === rankedLists.length.
|
|
26
|
-
* Weights are summed without normalisation — pass {0.5, 0.5}
|
|
27
|
-
* for symmetric fusion or {0.2, 0.8} for asymmetric.
|
|
28
|
-
* @param options Optional k override + absentRank override.
|
|
29
|
-
* @returns Map from candidate id to fused RRF score. Sort descending
|
|
30
|
-
* by value to get the fused ordering.
|
|
31
|
-
*/
|
|
32
|
-
export function rrfFuse(rankedLists, weights, options) {
|
|
33
|
-
if (rankedLists.length !== weights.length) {
|
|
34
|
-
throw new Error(`rrfFuse: rankedLists.length (${rankedLists.length}) must match weights.length (${weights.length})`);
|
|
35
|
-
}
|
|
36
|
-
const k = options?.k ?? RRF_K;
|
|
37
|
-
const defaultAbsentRank = rankedLists.reduce((m, l) => Math.max(m, l.length), 0) + 1;
|
|
38
|
-
const absentRank = options?.absentRank ?? defaultAbsentRank;
|
|
39
|
-
const rankMaps = rankedLists.map((list) => {
|
|
40
|
-
const m = new Map();
|
|
41
|
-
for (let i = 0; i < list.length; i++) {
|
|
42
|
-
m.set(list[i], i + 1); // 1-indexed rank
|
|
43
|
-
}
|
|
44
|
-
return m;
|
|
45
|
-
});
|
|
46
|
-
const allCandidates = new Set();
|
|
47
|
-
for (const list of rankedLists)
|
|
48
|
-
for (const c of list)
|
|
49
|
-
allCandidates.add(c);
|
|
50
|
-
const scores = new Map();
|
|
51
|
-
for (const c of allCandidates) {
|
|
52
|
-
let score = 0;
|
|
53
|
-
for (let i = 0; i < rankMaps.length; i++) {
|
|
54
|
-
const rank = rankMaps[i].get(c) ?? absentRank;
|
|
55
|
-
score += weights[i] / (k + rank);
|
|
56
|
-
}
|
|
57
|
-
scores.set(c, score);
|
|
58
|
-
}
|
|
59
|
-
return scores;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=rrf.js.map
|
package/dist/scope.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect the current operational scope from environment signals.
|
|
3
|
-
* Returns a scope name string (no prefix), or null if no scope detected.
|
|
4
|
-
* Priority: HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL.
|
|
5
|
-
*
|
|
6
|
-
* Pure env var reads: no I/O, safe to call from hot paths (e.g. UserPromptSubmit hook).
|
|
7
|
-
*/
|
|
8
|
-
export declare function detectScope(): string | null;
|
|
9
|
-
/**
|
|
10
|
-
* Compute scope match between a memory's scope tags and the active scope.
|
|
11
|
-
* Returns: 1 if matching scope, -1 if mismatching scope, 0 if neutral (no scope on either side).
|
|
12
|
-
*/
|
|
13
|
-
export declare function scopeMatch(memoryTags: string[], activeScope: string | null): -1 | 0 | 1;
|
|
14
|
-
//# sourceMappingURL=scope.d.ts.map
|
package/dist/server-detect.d.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export interface ServerInfo {
|
|
2
|
-
/**
|
|
3
|
-
* Pidfile schema version (L3). Absent on pidfiles written before this
|
|
4
|
-
* field existed — detectServer treats a missing `schema` as legacy and
|
|
5
|
-
* still accepts the pidfile.
|
|
6
|
-
*/
|
|
7
|
-
schema?: number;
|
|
8
|
-
pid: number;
|
|
9
|
-
port: number;
|
|
10
|
-
url: string;
|
|
11
|
-
started_at: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Read .hippo/server.pid and return the embedded ServerInfo if a live hippo
|
|
15
|
-
* server is genuinely answering on the recorded url. Returns null on missing,
|
|
16
|
-
* malformed, or stale pidfiles, and best-effort unlinks the file in the
|
|
17
|
-
* stale/malformed cases.
|
|
18
|
-
*
|
|
19
|
-
* Liveness is proven in two steps. `process.kill(pid, 0)` rules out dead
|
|
20
|
-
* pids. But a pid can be reused by an unrelated process, so a GET /health
|
|
21
|
-
* then confirms the process that answers is *this* hippo server: its
|
|
22
|
-
* `started_at` must equal the pidfile's. A mismatch, non-200, malformed
|
|
23
|
-
* body, or timeout all mean the pidfile is stale.
|
|
24
|
-
*
|
|
25
|
-
* The /health probe runs only when a pidfile exists and the pid is live, so
|
|
26
|
-
* the common no-server path stays a single fast file existence check.
|
|
27
|
-
*/
|
|
28
|
-
export declare function detectServer(hippoRoot: string): Promise<ServerInfo | null>;
|
|
29
|
-
/**
|
|
30
|
-
* Atomically write the pidfile. Writes to a process-scoped temp file then
|
|
31
|
-
* renames into place, which is atomic on POSIX and on NTFS via MoveFileEx.
|
|
32
|
-
*
|
|
33
|
-
* `startedAt` is supplied by the caller (`serve()`) rather than generated
|
|
34
|
-
* here, so the pidfile and the server's GET /health response carry the same
|
|
35
|
-
* timestamp — detectServer's liveness probe compares the two for equality.
|
|
36
|
-
*/
|
|
37
|
-
export declare function writePidfile(hippoRoot: string, opts: {
|
|
38
|
-
port: number;
|
|
39
|
-
url: string;
|
|
40
|
-
startedAt: string;
|
|
41
|
-
}): void;
|
|
42
|
-
/**
|
|
43
|
-
* Best-effort pidfile removal. Silent on ENOENT or any other error so the
|
|
44
|
-
* caller can use this in shutdown paths without fear of throwing.
|
|
45
|
-
*
|
|
46
|
-
* Identity-blind: deletes whatever pidfile is on disk. A shutdown path that
|
|
47
|
-
* must not clobber a newer server's pidfile should use removePidfileIfOwned.
|
|
48
|
-
*/
|
|
49
|
-
export declare function removePidfile(hippoRoot: string): void;
|
|
50
|
-
/**
|
|
51
|
-
* Remove the pidfile only if it still describes the caller's own server.
|
|
52
|
-
* Reads and parses the pidfile and unlinks it ONLY when both `pid` and
|
|
53
|
-
* `started_at` match `owner`. A pidfile rewritten by a newer server is left
|
|
54
|
-
* intact, so a shutting-down older server cannot orphan the newer one by
|
|
55
|
-
* deleting its pidfile out from under it.
|
|
56
|
-
*
|
|
57
|
-
* Best-effort and never throws: a missing, unreadable, malformed, or
|
|
58
|
-
* non-object pidfile (including a literal JSON `null`) is "not provably mine"
|
|
59
|
-
* and left alone — detectServer unlinks a malformed pidfile on its next
|
|
60
|
-
* probe, so it does not leak. Returns true iff a matching pidfile was removed.
|
|
61
|
-
*
|
|
62
|
-
* Residual TOCTOU: the pidfile could be rewritten between the read and the
|
|
63
|
-
* unlink. The window is microseconds and the shape is the same read-check-
|
|
64
|
-
* unlink detectServer already uses; this narrows the clobber from an
|
|
65
|
-
* unbounded window (any time between writePidfile and stop) to a negligible
|
|
66
|
-
* one.
|
|
67
|
-
*/
|
|
68
|
-
export declare function removePidfileIfOwned(hippoRoot: string, owner: {
|
|
69
|
-
pid: number;
|
|
70
|
-
startedAt: string;
|
|
71
|
-
}): boolean;
|
|
72
|
-
//# sourceMappingURL=server-detect.d.ts.map
|
package/dist/server-detect.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync, unlinkSync, renameSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { envHealthProbeMs } from './env.js';
|
|
4
|
-
// Pidfile sits directly inside hippoRoot. `hippoRoot` is the `.hippo`
|
|
5
|
-
// directory itself (the same convention used by api.ts / store.ts /
|
|
6
|
-
// openHippoDb), so this resolves to `${hippoRoot}/server.pid`.
|
|
7
|
-
const PIDFILE = 'server.pid';
|
|
8
|
-
/**
|
|
9
|
-
* How long detectServer waits for the `/health` liveness probe before
|
|
10
|
-
* treating the pidfile as stale. Short by design: the probe only fires on
|
|
11
|
-
* the rare path where a pidfile exists and its pid is live, and the target
|
|
12
|
-
* is always loopback, so a healthy server answers well within this bound. HIPPO_HEALTH_PROBE_MS overrides it.
|
|
13
|
-
*/
|
|
14
|
-
const HEALTH_PROBE_TIMEOUT_MS = 300;
|
|
15
|
-
/**
|
|
16
|
-
* Hard cap on the /health response body detectServer will buffer. A real
|
|
17
|
-
* hippo /health payload is well under 1 KB; a larger body means the process
|
|
18
|
-
* answering on the recorded port is not hippo, so the pidfile is stale.
|
|
19
|
-
*/
|
|
20
|
-
const HEALTH_BODY_MAX_BYTES = 64 * 1024;
|
|
21
|
-
/**
|
|
22
|
-
* Loopback hosts the recorded pidfile url is allowed to point at. serve()
|
|
23
|
-
* only binds these (it mirrors LOOPBACK_HOSTS in server.ts); a pidfile url
|
|
24
|
-
* with any other host is malformed or forged and must not be probed.
|
|
25
|
-
*/
|
|
26
|
-
const PIDFILE_LOOPBACK_HOSTS = new Set(['127.0.0.1', '::1', 'localhost']);
|
|
27
|
-
/** False when the pidfile's pid is dead or its url could not be one serve() wrote. */
|
|
28
|
-
function isLiveLoopbackTarget(info) {
|
|
29
|
-
// Probe the process. Sending signal 0 throws if the pid is dead or owned
|
|
30
|
-
// by another user we cannot signal. Either way, treat as stale.
|
|
31
|
-
// Node's process.kill(pid, 0) is implemented on Windows via OpenProcess +
|
|
32
|
-
// GetExitCodeProcess, so this works cross-platform for the dead-pid case.
|
|
33
|
-
try {
|
|
34
|
-
process.kill(info.pid, 0);
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
// The pid is live, but it may have been reused by an unrelated process, and
|
|
40
|
-
// the recorded url is read from a file anyone could forge. serve() only ever
|
|
41
|
-
// binds a loopback host, so a url that is not http on a loopback host and the
|
|
42
|
-
// recorded port is malformed or forged. Reject it before probing: the probe,
|
|
43
|
-
// and the routed request that may follow, can carry HIPPO_API_KEY.
|
|
44
|
-
let probeUrl;
|
|
45
|
-
try {
|
|
46
|
-
probeUrl = new URL(info.url);
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
return (probeUrl.protocol === 'http:' &&
|
|
52
|
-
PIDFILE_LOOPBACK_HOSTS.has(probeUrl.hostname.replace(/^\[(.*)\]$/, '$1')) &&
|
|
53
|
-
probeUrl.port === String(info.port));
|
|
54
|
-
}
|
|
55
|
-
/** The whole body as text, or null once it passes HEALTH_BODY_MAX_BYTES (the stream is then cancelled). */
|
|
56
|
-
async function readCappedBody(body) {
|
|
57
|
-
// Read the body under a hard byte cap. The process answering on info.url
|
|
58
|
-
// may not be hippo (pid reuse is the case this probe guards against), so
|
|
59
|
-
// its response is untrusted: never hand an unbounded stream to a parser.
|
|
60
|
-
const reader = body.getReader();
|
|
61
|
-
const decoder = new TextDecoder();
|
|
62
|
-
let raw = '';
|
|
63
|
-
let received = 0;
|
|
64
|
-
for (;;) {
|
|
65
|
-
const { done, value } = await reader.read();
|
|
66
|
-
if (done)
|
|
67
|
-
break;
|
|
68
|
-
received += value.byteLength;
|
|
69
|
-
if (received > HEALTH_BODY_MAX_BYTES) {
|
|
70
|
-
await reader.cancel();
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
raw += decoder.decode(value, { stream: true });
|
|
74
|
-
}
|
|
75
|
-
raw += decoder.decode();
|
|
76
|
-
return raw;
|
|
77
|
-
}
|
|
78
|
-
/** True when /health on info.url reports the pidfile's started_at; unlinks the pidfile on any definitive mismatch. */
|
|
79
|
-
async function healthMatchesPidfile(hippoRoot, info) {
|
|
80
|
-
// Confirm the process answering on info.url is this hippo server by matching
|
|
81
|
-
// the /health `started_at` against the pidfile. A connection refusal, a
|
|
82
|
-
// non-200, or a malformed body unlink the pidfile as stale. A probe timeout
|
|
83
|
-
// is deliberately left ambiguous: a live but momentarily-busy server (e.g.
|
|
84
|
-
// blocked on a synchronous query) can miss the 300ms window, so a timeout
|
|
85
|
-
// returns null WITHOUT unlinking. The pidfile survives for the next probe.
|
|
86
|
-
try {
|
|
87
|
-
const res = await fetch(`${info.url}/health`, {
|
|
88
|
-
signal: AbortSignal.timeout(envHealthProbeMs() ?? HEALTH_PROBE_TIMEOUT_MS),
|
|
89
|
-
});
|
|
90
|
-
if (!res.ok || !res.body) {
|
|
91
|
-
removePidfile(hippoRoot);
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
const raw = await readCappedBody(res.body);
|
|
95
|
-
if (raw === null) {
|
|
96
|
-
removePidfile(hippoRoot);
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
const body = JSON.parse(raw);
|
|
100
|
-
if (body.started_at !== info.started_at) {
|
|
101
|
-
removePidfile(hippoRoot);
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
// A timeout is ambiguous (the server may be alive but busy), so keep the
|
|
108
|
-
// pidfile. Any other failure (connection refused, malformed body) is
|
|
109
|
-
// definitive: unlink it as stale.
|
|
110
|
-
// SAFETY: err's shape is unknown (catch clause); reading an optional
|
|
111
|
-
// .name property structurally is safe regardless of the object's actual type.
|
|
112
|
-
if (err?.name !== 'TimeoutError') {
|
|
113
|
-
removePidfile(hippoRoot);
|
|
114
|
-
}
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Read .hippo/server.pid and return the embedded ServerInfo if a live hippo
|
|
120
|
-
* server is genuinely answering on the recorded url. Returns null on missing,
|
|
121
|
-
* malformed, or stale pidfiles, and best-effort unlinks the file in the
|
|
122
|
-
* stale/malformed cases.
|
|
123
|
-
*
|
|
124
|
-
* Liveness is proven in two steps. `process.kill(pid, 0)` rules out dead
|
|
125
|
-
* pids. But a pid can be reused by an unrelated process, so a GET /health
|
|
126
|
-
* then confirms the process that answers is *this* hippo server: its
|
|
127
|
-
* `started_at` must equal the pidfile's. A mismatch, non-200, malformed
|
|
128
|
-
* body, or timeout all mean the pidfile is stale.
|
|
129
|
-
*
|
|
130
|
-
* The /health probe runs only when a pidfile exists and the pid is live, so
|
|
131
|
-
* the common no-server path stays a single fast file existence check.
|
|
132
|
-
*/
|
|
133
|
-
export async function detectServer(hippoRoot) {
|
|
134
|
-
const path = join(hippoRoot, PIDFILE);
|
|
135
|
-
if (!existsSync(path))
|
|
136
|
-
return null;
|
|
137
|
-
let info;
|
|
138
|
-
try {
|
|
139
|
-
info = JSON.parse(readFileSync(path, 'utf8'));
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
removePidfile(hippoRoot);
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
if (!isLiveLoopbackTarget(info)) {
|
|
146
|
-
removePidfile(hippoRoot);
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
return (await healthMatchesPidfile(hippoRoot, info)) ? info : null;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Atomically write the pidfile. Writes to a process-scoped temp file then
|
|
153
|
-
* renames into place, which is atomic on POSIX and on NTFS via MoveFileEx.
|
|
154
|
-
*
|
|
155
|
-
* `startedAt` is supplied by the caller (`serve()`) rather than generated
|
|
156
|
-
* here, so the pidfile and the server's GET /health response carry the same
|
|
157
|
-
* timestamp — detectServer's liveness probe compares the two for equality.
|
|
158
|
-
*/
|
|
159
|
-
export function writePidfile(hippoRoot, opts) {
|
|
160
|
-
const path = join(hippoRoot, PIDFILE);
|
|
161
|
-
const tmp = `${path}.tmp.${process.pid}`;
|
|
162
|
-
const info = {
|
|
163
|
-
schema: 1,
|
|
164
|
-
pid: process.pid,
|
|
165
|
-
port: opts.port,
|
|
166
|
-
url: opts.url,
|
|
167
|
-
started_at: opts.startedAt,
|
|
168
|
-
};
|
|
169
|
-
writeFileSync(tmp, JSON.stringify(info));
|
|
170
|
-
renameSync(tmp, path);
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Best-effort pidfile removal. Silent on ENOENT or any other error so the
|
|
174
|
-
* caller can use this in shutdown paths without fear of throwing.
|
|
175
|
-
*
|
|
176
|
-
* Identity-blind: deletes whatever pidfile is on disk. A shutdown path that
|
|
177
|
-
* must not clobber a newer server's pidfile should use removePidfileIfOwned.
|
|
178
|
-
*/
|
|
179
|
-
export function removePidfile(hippoRoot) {
|
|
180
|
-
const path = join(hippoRoot, PIDFILE);
|
|
181
|
-
try {
|
|
182
|
-
unlinkSync(path);
|
|
183
|
-
}
|
|
184
|
-
catch { /* already gone or undeletable; the next detectServer probe re-checks */ }
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Remove the pidfile only if it still describes the caller's own server.
|
|
188
|
-
* Reads and parses the pidfile and unlinks it ONLY when both `pid` and
|
|
189
|
-
* `started_at` match `owner`. A pidfile rewritten by a newer server is left
|
|
190
|
-
* intact, so a shutting-down older server cannot orphan the newer one by
|
|
191
|
-
* deleting its pidfile out from under it.
|
|
192
|
-
*
|
|
193
|
-
* Best-effort and never throws: a missing, unreadable, malformed, or
|
|
194
|
-
* non-object pidfile (including a literal JSON `null`) is "not provably mine"
|
|
195
|
-
* and left alone — detectServer unlinks a malformed pidfile on its next
|
|
196
|
-
* probe, so it does not leak. Returns true iff a matching pidfile was removed.
|
|
197
|
-
*
|
|
198
|
-
* Residual TOCTOU: the pidfile could be rewritten between the read and the
|
|
199
|
-
* unlink. The window is microseconds and the shape is the same read-check-
|
|
200
|
-
* unlink detectServer already uses; this narrows the clobber from an
|
|
201
|
-
* unbounded window (any time between writePidfile and stop) to a negligible
|
|
202
|
-
* one.
|
|
203
|
-
*/
|
|
204
|
-
export function removePidfileIfOwned(hippoRoot, owner) {
|
|
205
|
-
const path = join(hippoRoot, PIDFILE);
|
|
206
|
-
try {
|
|
207
|
-
const info = JSON.parse(readFileSync(path, 'utf8'));
|
|
208
|
-
// A literal JSON `null` parses cleanly but throws on property access;
|
|
209
|
-
// that lands in the catch below, which is the intended "not mine" path.
|
|
210
|
-
if (info.pid !== owner.pid || info.started_at !== owner.startedAt) {
|
|
211
|
-
return false; // a different server owns the pidfile now
|
|
212
|
-
}
|
|
213
|
-
unlinkSync(path);
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
// Missing, unreadable, malformed, or non-object pidfile, or an unlink
|
|
218
|
-
// failure: none is a provable own-removal, so report not-removed.
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=server-detect.js.map
|
package/dist/session-owners.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type Context } from './api/types.js';
|
|
2
|
-
import { type DatabaseSyncLike } from './db.js';
|
|
3
|
-
/** Binds under the write lock and returns the stored owner, which is not `owner` when a concurrent first bind won. */
|
|
4
|
-
export declare function insertBinding(db: DatabaseSyncLike, tenantId: string, sessionId: string, owner: string): string | null;
|
|
5
|
-
/** Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set it aside. */
|
|
6
|
-
export declare function bindSessionOwner(ctx: Context, sessionId: string): void;
|
|
7
|
-
//# sourceMappingURL=session-owners.d.ts.map
|
package/dist/session-owners.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// A session id belongs to the first owner that binds it, so one developer's client cannot write into another's session.
|
|
2
|
-
import { ConflictError } from './api-errors.js';
|
|
3
|
-
import { ownerOrSubject } from './api/types.js';
|
|
4
|
-
import { closeHippoDb, execWithBusyRetry, HOOK_DB_WAIT_MS, openHippoDb, scopedBusyWait } from './db.js';
|
|
5
|
-
import { raiseMinBinary } from './db/meta.js';
|
|
6
|
-
import { assertTenantId } from './tenant.js';
|
|
7
|
-
import { TASK_OWNER_MIN_BINARY } from './version.js';
|
|
8
|
-
/** Bindings older than this are pruned when a new session binds. */
|
|
9
|
-
const BINDING_RETENTION_DAYS = 90;
|
|
10
|
-
function boundOwner(db, tenantId, sessionId) {
|
|
11
|
-
// SAFETY: the SELECT names exactly this one TEXT column.
|
|
12
|
-
const row = db.prepare(`SELECT owner_subject FROM session_owners WHERE tenant_id = ? AND session_id = ?`).get(tenantId, sessionId);
|
|
13
|
-
return row?.owner_subject ?? null;
|
|
14
|
-
}
|
|
15
|
-
/** Binds under the write lock and returns the stored owner, which is not `owner` when a concurrent first bind won. */
|
|
16
|
-
export function insertBinding(db, tenantId, sessionId, owner) {
|
|
17
|
-
execWithBusyRetry(db, 'BEGIN IMMEDIATE', scopedBusyWait() ?? HOOK_DB_WAIT_MS);
|
|
18
|
-
try {
|
|
19
|
-
const result = db.prepare(`INSERT OR IGNORE INTO session_owners(tenant_id, session_id, owner_subject, created_at) VALUES (?, ?, ?, ?)`)
|
|
20
|
-
.run(tenantId, sessionId, owner, new Date().toISOString());
|
|
21
|
-
// An older binary supersedes across owners, so the first binding shuts it out in the same transaction.
|
|
22
|
-
if (Number(result.changes ?? 0) === 1)
|
|
23
|
-
raiseMinBinary(db, TASK_OWNER_MIN_BINARY);
|
|
24
|
-
// Pruned on write, as the failure log is; a pruned session id is a UUID no other caller knows.
|
|
25
|
-
// SHORTCUT: no created_at index, so each first bind scans the table; add one past a few hundred thousand rows.
|
|
26
|
-
db.prepare(`DELETE FROM session_owners WHERE created_at < ?`).run(new Date(Date.now() - BINDING_RETENTION_DAYS * 86_400_000).toISOString());
|
|
27
|
-
db.exec('COMMIT');
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
try {
|
|
31
|
-
db.exec('ROLLBACK');
|
|
32
|
-
}
|
|
33
|
-
catch { /* the insert's error is the one to surface */ }
|
|
34
|
-
throw err;
|
|
35
|
-
}
|
|
36
|
-
// Re-read, since a concurrent first bind may have won the INSERT OR IGNORE.
|
|
37
|
-
return boundOwner(db, tenantId, sessionId);
|
|
38
|
-
}
|
|
39
|
-
/** Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set it aside. */
|
|
40
|
-
export function bindSessionOwner(ctx, sessionId) {
|
|
41
|
-
assertTenantId('bindSessionOwner', ctx.tenantId);
|
|
42
|
-
const owner = ownerOrSubject(ctx.actor);
|
|
43
|
-
const db = openHippoDb(ctx.hippoRoot);
|
|
44
|
-
try {
|
|
45
|
-
// A bound session is the common case after the first prompt, so it must not take the write lock.
|
|
46
|
-
const bound = boundOwner(db, ctx.tenantId, sessionId) ?? insertBinding(db, ctx.tenantId, sessionId, owner);
|
|
47
|
-
if (bound !== owner)
|
|
48
|
-
throw new ConflictError('session id belongs to another caller');
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
closeHippoDb(db);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=session-owners.js.map
|