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
|
@@ -1,56 +1,36 @@
|
|
|
1
1
|
// /v1/decisions routes.
|
|
2
|
-
import {
|
|
3
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
4
|
-
import { NotFoundError } from '../../api-errors.js';
|
|
2
|
+
import { DECISION } from '../../objects/decisions.js';
|
|
3
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
|
+
import { NotFoundError } from '../../core/api-errors.js';
|
|
5
|
+
import { isJsonNumber } from '../../util/json.js';
|
|
5
6
|
import { buildContextWithAuth } from '../auth.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// new (no legacy --supersedes <memory-id> constraint), so it supersedes by
|
|
18
|
-
// table id and never weakens a memory mirror.
|
|
19
|
-
export async function handleCreateDecision({ req, res, opts }) {
|
|
20
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
21
|
-
const body = await parseJsonBody(req, ctx);
|
|
22
|
-
const text = body['text'];
|
|
23
|
-
if (!isJsonString(text) || text.length === 0) {
|
|
24
|
-
throw new HttpError(400, 'text is required (non-empty string)');
|
|
25
|
-
}
|
|
26
|
-
if (text.length > 4096) {
|
|
27
|
-
throw new HttpError(400, 'text exceeds 4096-character cap');
|
|
28
|
-
}
|
|
29
|
-
const contextRaw = body['context'];
|
|
30
|
-
let context;
|
|
31
|
-
if (contextRaw !== undefined && contextRaw !== null) {
|
|
32
|
-
if (!isJsonString(contextRaw)) {
|
|
33
|
-
throw new HttpError(400, 'context must be a string');
|
|
34
|
-
}
|
|
35
|
-
if (contextRaw.length > 4096) {
|
|
36
|
-
throw new HttpError(400, 'context exceeds 4096-character cap');
|
|
37
|
-
}
|
|
38
|
-
context = contextRaw;
|
|
39
|
-
}
|
|
40
|
-
const supRaw = body['supersedesDecisionId'];
|
|
41
|
-
let supersedesDecisionId;
|
|
42
|
-
if (supRaw !== undefined && supRaw !== null) {
|
|
43
|
-
if (!isJsonNumber(supRaw) || !Number.isInteger(supRaw) || supRaw <= 0) {
|
|
44
|
-
throw new HttpError(400, 'supersedesDecisionId must be a positive integer');
|
|
45
|
-
}
|
|
46
|
-
supersedesDecisionId = supRaw;
|
|
7
|
+
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
8
|
+
import { saveFor } from '../../api/objects.js';
|
|
9
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
|
|
10
|
+
const decisionRoutes = { noun: 'decision', field: 'decision', listField: 'decisions', object: DECISION };
|
|
11
|
+
const TEXT = { max: MAX_SHORT_FIELD_LEN, untrimmed: true };
|
|
12
|
+
function supersededId(body) {
|
|
13
|
+
const raw = body['supersedesDecisionId'];
|
|
14
|
+
if (raw === undefined || raw === null)
|
|
15
|
+
return undefined;
|
|
16
|
+
if (!isJsonNumber(raw) || !Number.isInteger(raw) || raw <= 0) {
|
|
17
|
+
throw new HttpError(400, 'supersedesDecisionId must be a positive integer');
|
|
47
18
|
}
|
|
19
|
+
return raw;
|
|
20
|
+
}
|
|
21
|
+
// Routes: /v1/decisions (create, list, show, supersede, close), Bearer-authed and tenant-scoped; status is validated against VALID_DECISION_STATES.
|
|
22
|
+
// The HTTP surface has no legacy --supersedes <memory-id> constraint, so it supersedes by table id and never weakens a memory mirror.
|
|
23
|
+
export async function handleCreateDecision(rr) {
|
|
24
|
+
const { req, res } = rr;
|
|
25
|
+
const ctx = await buildContextWithAuth(req, rr.opts);
|
|
26
|
+
const body = await parseJsonBody(req, ctx);
|
|
27
|
+
const write = {
|
|
28
|
+
decisionText: requiredString(body, 'text', TEXT),
|
|
29
|
+
context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
|
|
30
|
+
supersedesDecisionId: supersededId(body),
|
|
31
|
+
};
|
|
48
32
|
try {
|
|
49
|
-
const decision =
|
|
50
|
-
decisionText: text,
|
|
51
|
-
context,
|
|
52
|
-
supersedesDecisionId,
|
|
53
|
-
}, ctx.actor.subject);
|
|
33
|
+
const decision = await saveFor(ctx, DECISION, write);
|
|
54
34
|
sendJson(res, 201, { decision });
|
|
55
35
|
}
|
|
56
36
|
catch (e) {
|
|
@@ -59,76 +39,26 @@ export async function handleCreateDecision({ req, res, opts }) {
|
|
|
59
39
|
throw new HttpError(409, e.message);
|
|
60
40
|
throw e;
|
|
61
41
|
}
|
|
62
|
-
return;
|
|
63
42
|
}
|
|
64
|
-
export
|
|
65
|
-
|
|
66
|
-
const limit = parseListLimit(query.get('limit'));
|
|
67
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
68
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
69
|
-
let decisions;
|
|
70
|
-
if (status === 'all') {
|
|
71
|
-
decisions = loadDecisions(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
if (!isSetMember(VALID_DECISION_STATES, status)) {
|
|
75
|
-
throw new HttpError(400, `status must be one of: active | superseded | closed | all (got "${status}")`);
|
|
76
|
-
}
|
|
77
|
-
decisions = loadDecisions(opts.hippoRoot, ctx.tenantId, {
|
|
78
|
-
status,
|
|
79
|
-
limit: limit + 1,
|
|
80
|
-
after,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
const page = pageOf(decisions, limit, byCreatedAt);
|
|
84
|
-
sendJson(res, 200, { decisions: page.items, next_cursor: page.nextCursor });
|
|
85
|
-
return;
|
|
43
|
+
export function handleListDecisions(rr) {
|
|
44
|
+
return listRoute(decisionRoutes, rr);
|
|
86
45
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (text.length > 4096) {
|
|
96
|
-
throw new HttpError(400, 'text exceeds 4096-character cap');
|
|
97
|
-
}
|
|
98
|
-
const contextRaw = body['context'];
|
|
99
|
-
let context;
|
|
100
|
-
if (contextRaw !== undefined && contextRaw !== null) {
|
|
101
|
-
if (!isJsonString(contextRaw)) {
|
|
102
|
-
throw new HttpError(400, 'context must be a string');
|
|
103
|
-
}
|
|
104
|
-
if (contextRaw.length > 4096) {
|
|
105
|
-
throw new HttpError(400, 'context exceeds 4096-character cap');
|
|
106
|
-
}
|
|
107
|
-
context = contextRaw;
|
|
108
|
-
}
|
|
109
|
-
const decision = saveDecision(opts.hippoRoot, ctx.tenantId, {
|
|
110
|
-
decisionText: text,
|
|
111
|
-
context,
|
|
46
|
+
// Not on supersedeRoute: this one answers 201 and leaves the missing-row 404 to the store, where the other five answer 200 after their own lookup.
|
|
47
|
+
export async function handleSupersedeDecision(rr, match) {
|
|
48
|
+
const oldId = parseInt(match[1], 10);
|
|
49
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
50
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
51
|
+
const decision = await saveFor(ctx, DECISION, {
|
|
52
|
+
decisionText: requiredString(body, 'text', TEXT),
|
|
53
|
+
context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
|
|
112
54
|
supersedesDecisionId: oldId,
|
|
113
|
-
}
|
|
114
|
-
sendJson(res, 201, { decision });
|
|
115
|
-
return;
|
|
55
|
+
});
|
|
56
|
+
sendJson(rr.res, 201, { decision });
|
|
116
57
|
}
|
|
117
|
-
export
|
|
118
|
-
|
|
119
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
120
|
-
const decision = closeDecision(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
121
|
-
sendJson(res, 200, { decision });
|
|
122
|
-
return;
|
|
58
|
+
export function handleCloseDecision(rr, match) {
|
|
59
|
+
return closeRoute(decisionRoutes, rr, match);
|
|
123
60
|
}
|
|
124
|
-
export
|
|
125
|
-
|
|
126
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
127
|
-
const decision = loadDecisionById(opts.hippoRoot, ctx.tenantId, id);
|
|
128
|
-
if (!decision) {
|
|
129
|
-
throw new HttpError(404, `decision ${id} not found`);
|
|
130
|
-
}
|
|
131
|
-
sendJson(res, 200, { decision });
|
|
132
|
-
return;
|
|
61
|
+
export function handleGetDecision(rr, match) {
|
|
62
|
+
return getRoute(decisionRoutes, rr, match);
|
|
133
63
|
}
|
|
134
64
|
//# sourceMappingURL=decisions.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateIncident(
|
|
3
|
-
export declare function handleListIncidents(
|
|
4
|
-
export declare function handleResolveIncident(
|
|
5
|
-
export declare function handleCloseIncident(
|
|
6
|
-
export declare function handleGetIncident(
|
|
2
|
+
export declare function handleCreateIncident(rr: RouteRequest): Promise<void>;
|
|
3
|
+
export declare function handleListIncidents(rr: RouteRequest): Promise<void>;
|
|
4
|
+
export declare function handleResolveIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=incidents.d.ts.map
|
|
@@ -1,65 +1,43 @@
|
|
|
1
1
|
// /v1/incidents routes.
|
|
2
|
-
import {
|
|
3
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
4
|
-
import { NotFoundError } from '../../api-errors.js';
|
|
2
|
+
import { INCIDENT, openIncident, resolveOpenIncident } from '../../objects/incidents.js';
|
|
3
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
|
+
import { NotFoundError } from '../../core/api-errors.js';
|
|
5
5
|
import { buildContextWithAuth } from '../auth.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
7
|
+
import { isJsonString } from '../../util/json.js';
|
|
8
|
+
import { objectsOf } from '../../api/objects.js';
|
|
9
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
|
|
9
10
|
const MAX_LINKED_MEMORY_IDS = 256;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// VALID_INCIDENT_STATES. DoS caps: text 4096, context 4096, resolutionText
|
|
18
|
-
// 4096. Mirrors /v1/decisions; lifecycle is
|
|
19
|
-
// open->resolved->closed (no supersede), so linkedMemoryIds replaces
|
|
20
|
-
// supersedesDecisionId on create.
|
|
21
|
-
export async function handleCreateIncident({ req, res, opts }) {
|
|
22
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
23
|
-
const body = await parseJsonBody(req, ctx);
|
|
24
|
-
const text = body['text'];
|
|
25
|
-
if (!isJsonString(text) || text.length === 0) {
|
|
26
|
-
throw new HttpError(400, 'text is required (non-empty string)');
|
|
27
|
-
}
|
|
28
|
-
if (text.length > 4096) {
|
|
29
|
-
throw new HttpError(400, 'text exceeds 4096-character cap');
|
|
11
|
+
const incidentRoutes = { noun: 'incident', field: 'incident', listField: 'incidents', object: INCIDENT };
|
|
12
|
+
function linkedMemoryIds(body) {
|
|
13
|
+
const raw = body['linkedMemoryIds'];
|
|
14
|
+
if (raw === undefined || raw === null)
|
|
15
|
+
return undefined;
|
|
16
|
+
if (!Array.isArray(raw)) {
|
|
17
|
+
throw new HttpError(400, 'linkedMemoryIds must be an array of memory ids');
|
|
30
18
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (contextRaw !== undefined && contextRaw !== null) {
|
|
34
|
-
if (!isJsonString(contextRaw)) {
|
|
35
|
-
throw new HttpError(400, 'context must be a string');
|
|
36
|
-
}
|
|
37
|
-
if (contextRaw.length > 4096) {
|
|
38
|
-
throw new HttpError(400, 'context exceeds 4096-character cap');
|
|
39
|
-
}
|
|
40
|
-
context = contextRaw;
|
|
19
|
+
if (raw.length > MAX_LINKED_MEMORY_IDS) {
|
|
20
|
+
throw new HttpError(400, `linkedMemoryIds exceeds ${MAX_LINKED_MEMORY_IDS}-item cap`);
|
|
41
21
|
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!Array.isArray(linkedRaw)) {
|
|
46
|
-
throw new HttpError(400, 'linkedMemoryIds must be an array of memory ids');
|
|
47
|
-
}
|
|
48
|
-
if (linkedRaw.length > MAX_LINKED_MEMORY_IDS) {
|
|
49
|
-
throw new HttpError(400, `linkedMemoryIds exceeds ${MAX_LINKED_MEMORY_IDS}-item cap`);
|
|
50
|
-
}
|
|
51
|
-
const isValidMemoryId = (item) => isJsonString(item) && item.length > 0 && item.length <= 4096;
|
|
52
|
-
if (!linkedRaw.every(isValidMemoryId)) {
|
|
53
|
-
throw new HttpError(400, 'each linkedMemoryIds entry must be a non-empty string <= 4096 chars');
|
|
54
|
-
}
|
|
55
|
-
linkedMemoryIds = linkedRaw;
|
|
22
|
+
const isValidMemoryId = (item) => isJsonString(item) && item.length > 0 && item.length <= MAX_SHORT_FIELD_LEN;
|
|
23
|
+
if (!raw.every(isValidMemoryId)) {
|
|
24
|
+
throw new HttpError(400, `each linkedMemoryIds entry must be a non-empty string <= ${MAX_SHORT_FIELD_LEN} chars`);
|
|
56
25
|
}
|
|
26
|
+
return raw;
|
|
27
|
+
}
|
|
28
|
+
// Routes: /v1/incidents (open, list, show, resolve, close), mirroring /v1/decisions; status is validated against VALID_INCIDENT_STATES.
|
|
29
|
+
// Lifecycle is open->resolved->closed (no supersede), so linkedMemoryIds replaces supersedesDecisionId on create.
|
|
30
|
+
export async function handleCreateIncident(rr) {
|
|
31
|
+
const { req, res, opts } = rr;
|
|
32
|
+
const ctx = await buildContextWithAuth(req, opts);
|
|
33
|
+
const body = await parseJsonBody(req, ctx);
|
|
34
|
+
const write = {
|
|
35
|
+
incidentText: requiredString(body, 'text', { max: MAX_SHORT_FIELD_LEN, untrimmed: true }),
|
|
36
|
+
context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
|
|
37
|
+
linkedMemoryIds: linkedMemoryIds(body),
|
|
38
|
+
};
|
|
57
39
|
try {
|
|
58
|
-
const incident =
|
|
59
|
-
incidentText: text,
|
|
60
|
-
context,
|
|
61
|
-
linkedMemoryIds,
|
|
62
|
-
}, ctx.actor.subject);
|
|
40
|
+
const incident = await openIncident(objectsOf(ctx), opts.hippoRoot, ctx.tenantId, write, ctx.actor.subject);
|
|
63
41
|
sendJson(res, 201, { incident });
|
|
64
42
|
}
|
|
65
43
|
catch (e) {
|
|
@@ -68,61 +46,22 @@ export async function handleCreateIncident({ req, res, opts }) {
|
|
|
68
46
|
throw new HttpError(409, e.message);
|
|
69
47
|
throw e;
|
|
70
48
|
}
|
|
71
|
-
return;
|
|
72
49
|
}
|
|
73
|
-
export
|
|
74
|
-
|
|
75
|
-
const limit = parseListLimit(query.get('limit'));
|
|
76
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
77
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
78
|
-
let incidents;
|
|
79
|
-
if (status === 'all') {
|
|
80
|
-
incidents = loadIncidents(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
if (!isSetMember(VALID_INCIDENT_STATES, status)) {
|
|
84
|
-
throw new HttpError(400, `status must be one of: open | resolved | closed | all (got "${status}")`);
|
|
85
|
-
}
|
|
86
|
-
incidents = loadIncidents(opts.hippoRoot, ctx.tenantId, {
|
|
87
|
-
status,
|
|
88
|
-
limit: limit + 1,
|
|
89
|
-
after,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
const page = pageOf(incidents, limit, byCreatedAt);
|
|
93
|
-
sendJson(res, 200, { incidents: page.items, next_cursor: page.nextCursor });
|
|
94
|
-
return;
|
|
50
|
+
export function handleListIncidents(rr) {
|
|
51
|
+
return listRoute(incidentRoutes, rr);
|
|
95
52
|
}
|
|
96
|
-
export async function handleResolveIncident(
|
|
97
|
-
const
|
|
53
|
+
export async function handleResolveIncident(rr, match) {
|
|
54
|
+
const { req, res, opts } = rr;
|
|
55
|
+
const id = parseInt(match[1], 10);
|
|
98
56
|
const ctx = await buildContextWithAuth(req, opts);
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
if (!isJsonString(resolutionText) || resolutionText.trim().length === 0) {
|
|
102
|
-
throw new HttpError(400, 'resolutionText is required (non-empty string)');
|
|
103
|
-
}
|
|
104
|
-
if (resolutionText.length > 4096) {
|
|
105
|
-
throw new HttpError(400, 'resolutionText exceeds 4096-character cap');
|
|
106
|
-
}
|
|
107
|
-
const incident = resolveIncident(opts.hippoRoot, ctx.tenantId, id, resolutionText, ctx.actor.subject);
|
|
57
|
+
const resolutionText = requiredString(await parseJsonBody(req, ctx), 'resolutionText', { max: MAX_SHORT_FIELD_LEN });
|
|
58
|
+
const incident = await resolveOpenIncident(objectsOf(ctx), ctx.tenantId, id, resolutionText, ctx.actor.subject);
|
|
108
59
|
sendJson(res, 200, { incident });
|
|
109
|
-
return;
|
|
110
60
|
}
|
|
111
|
-
export
|
|
112
|
-
|
|
113
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
114
|
-
const incident = closeIncident(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
115
|
-
sendJson(res, 200, { incident });
|
|
116
|
-
return;
|
|
61
|
+
export function handleCloseIncident(rr, match) {
|
|
62
|
+
return closeRoute(incidentRoutes, rr, match);
|
|
117
63
|
}
|
|
118
|
-
export
|
|
119
|
-
|
|
120
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
121
|
-
const incident = loadIncidentById(opts.hippoRoot, ctx.tenantId, id);
|
|
122
|
-
if (!incident) {
|
|
123
|
-
throw new HttpError(404, `incident ${id} not found`);
|
|
124
|
-
}
|
|
125
|
-
sendJson(res, 200, { incident });
|
|
126
|
-
return;
|
|
64
|
+
export function handleGetIncident(rr, match) {
|
|
65
|
+
return getRoute(incidentRoutes, rr, match);
|
|
127
66
|
}
|
|
128
67
|
//# sourceMappingURL=incidents.js.map
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// Memory write routes: create, graph, archive, supersede, promote, forget, outcome, sleep.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { graphRows } from '../../api/graph.js';
|
|
3
|
+
import { archiveRaw, forget, outcome, outcomeForLastRecall, promote, remember, supersede } from '../../api/index.js';
|
|
4
|
+
import { graphModelOf } from '../../graph/view.js';
|
|
5
|
+
import { MAX_ENTITY_NAME_LEN } from '../../store/graph-rows.js';
|
|
6
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
7
7
|
import { assertCrossTenantAdmin, buildContextWithAuth, isLoopback } from '../auth.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { sleepInChild } from '../sleep-offload.js';
|
|
9
|
+
import { getCallerProject, getString, getStringArray, isSetMember, parseJsonBody, parseListLimit, validateIdSegment } from '../validation.js';
|
|
10
|
+
import { isJsonString, isJsonBoolean } from '../../util/json.js';
|
|
10
11
|
const VALID_KINDS = new Set([
|
|
11
12
|
'raw',
|
|
12
13
|
'distilled',
|
|
@@ -52,12 +53,8 @@ export async function handleGetGraph({ req, res, opts, query }) {
|
|
|
52
53
|
}
|
|
53
54
|
const limit = parseListLimit(query.get('limit'));
|
|
54
55
|
const ctx = await buildContextWithAuth(req, opts);
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
limit,
|
|
58
|
-
canRead: (s) => s === null || canReadScope(ctx.actor, s),
|
|
59
|
-
});
|
|
60
|
-
sendJson(res, 200, model);
|
|
56
|
+
const rows = await graphRows(ctx, { entity: entityRaw ?? undefined, limit });
|
|
57
|
+
sendJson(res, 200, graphModelOf(rows));
|
|
61
58
|
return;
|
|
62
59
|
}
|
|
63
60
|
// /v1/memories/:id/* and DELETE /v1/memories/:id
|
|
@@ -99,12 +96,8 @@ export async function handleForgetMemory({ req, res, opts }, idMatch) {
|
|
|
99
96
|
sendJson(res, 200, result);
|
|
100
97
|
return;
|
|
101
98
|
}
|
|
102
|
-
// POST /v1/outcome
|
|
103
|
-
//
|
|
104
|
-
// the last-recall path (api.outcomeForLastRecall); returned shape is
|
|
105
|
-
// {applied, ids} in that case so callers can disambiguate "no recent
|
|
106
|
-
// recall" from "all ids skipped". Each applied id writes one audit_log
|
|
107
|
-
// row (op='outcome', actor from Bearer).
|
|
99
|
+
// POST /v1/outcome: applies a positive/negative outcome to memory ids; without ids it falls back to the last-recall path (api.outcomeForLastRecall)
|
|
100
|
+
// and returns {applied, ids}, so callers can tell "no recent recall" from "all ids skipped". Each applied id writes one audit_log row (op='outcome').
|
|
108
101
|
export async function handleApplyOutcome({ req, res, opts }) {
|
|
109
102
|
const ctx = await buildContextWithAuth(req, opts);
|
|
110
103
|
const body = await parseJsonBody(req, ctx);
|
|
@@ -122,10 +115,8 @@ export async function handleApplyOutcome({ req, res, opts }) {
|
|
|
122
115
|
if (!idsRaw.every(isNonEmptyId)) {
|
|
123
116
|
throw new HttpError(400, 'ids must be an array of non-empty strings');
|
|
124
117
|
}
|
|
125
|
-
// DoS cap on ids.length
|
|
126
|
-
//
|
|
127
|
-
// to sub-second wall time on SQLite hot path. Cap BEFORE buildContextWithAuth
|
|
128
|
-
// so attack traffic doesn't pay the api-key lookup cost.
|
|
118
|
+
// DoS cap on ids.length (each id costs ~3 DB ops): N=1000 keeps per-request work sub-second on SQLite.
|
|
119
|
+
// Checked BEFORE buildContextWithAuth so attack traffic does not pay the api-key lookup.
|
|
129
120
|
if (idsRaw.length > 1000) {
|
|
130
121
|
throw new HttpError(400, 'ids exceeds 1000-id cap');
|
|
131
122
|
}
|
|
@@ -144,29 +135,16 @@ export async function handleApplyOutcome({ req, res, opts }) {
|
|
|
144
135
|
}
|
|
145
136
|
return;
|
|
146
137
|
}
|
|
147
|
-
// POST /v1/sleep
|
|
148
|
-
//
|
|
149
|
-
// this per-request loopback assertion makes the host-wide semantic fail-
|
|
150
|
-
// closed regardless of any future serve() boot-config change. Body:
|
|
151
|
-
// {dry_run?, no_share?}. Returns SleepResult JSON.
|
|
152
|
-
//
|
|
153
|
-
// Tenant scope (Episode A follow-up tracked in TODOS.md): api.sleep operates
|
|
154
|
-
// on the WHOLE hippoRoot (cross-tenant by design, matching CLI cmdSleep).
|
|
155
|
-
// The loopback-only guard is the trust boundary today. Future non-loopback
|
|
156
|
-
// serving must also zero the cross-tenant counters for other tenants.
|
|
138
|
+
// POST /v1/sleep: host-wide consolidation (consolidate, dedup, audit, share, ambient); api.sleep spans the WHOLE hippoRoot, cross-tenant by design, so the
|
|
139
|
+
// loopback-only guard is the trust boundary; non-loopback serving must also zero cross-tenant counters. Body {dry_run?, no_share?}; returns SleepResult JSON.
|
|
157
140
|
export async function handleSleep({ req, res, opts }) {
|
|
158
|
-
// Defensive per-request loopback guard
|
|
159
|
-
//
|
|
160
|
-
// NAT64 prefixes) flows through without drift. serve()'s boot-time host
|
|
161
|
-
// check is the primary trust boundary; this is belt-and-suspenders.
|
|
141
|
+
// Defensive per-request loopback guard using isLoopback(), so future mapped/IPv6/NAT64 forms flow through without drift;
|
|
142
|
+
// serve()'s boot-time host check is the primary trust boundary.
|
|
162
143
|
if (!isLoopback(req.socket.remoteAddress)) {
|
|
163
144
|
throw new HttpError(403, '/v1/sleep is loopback-only (host-wide consolidation; see CHANGELOG v1.11.4)');
|
|
164
145
|
}
|
|
165
|
-
// Admin-role gate
|
|
166
|
-
//
|
|
167
|
-
// any Bearer-authed caller now carries an explicit role from the api_keys
|
|
168
|
-
// row). When non-loopback serving lands, this gate is the actual auth
|
|
169
|
-
// boundary on host-wide sleep.
|
|
146
|
+
// Admin-role gate, forward-defensive: loopback fallback is admin by default and Bearer callers carry an explicit role from the api_keys row;
|
|
147
|
+
// when non-loopback serving lands, this gate is the real auth boundary on host-wide sleep.
|
|
170
148
|
const sleepCtx = await buildContextWithAuth(req, opts);
|
|
171
149
|
// Sleep consolidates every tenant under hippoRoot, so it is a cross-tenant action.
|
|
172
150
|
assertCrossTenantAdmin(sleepCtx, '/v1/sleep');
|
|
@@ -180,7 +158,7 @@ export async function handleSleep({ req, res, opts }) {
|
|
|
180
158
|
throw new HttpError(400, 'no_share must be a boolean');
|
|
181
159
|
}
|
|
182
160
|
// sleepCtx already built above for the admin-role gate; reuse.
|
|
183
|
-
const result = await
|
|
161
|
+
const result = await sleepInChild(sleepCtx, {
|
|
184
162
|
dryRun: dryRunRaw === true,
|
|
185
163
|
noShare: noShareRaw === true,
|
|
186
164
|
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type JsonValue } from '../../util/json.js';
|
|
2
|
+
import type { ObjectDescriptor, SavableDescriptor } from '../../objects/descriptor.js';
|
|
3
|
+
import type { ObjectByKind, ObjectKind, SavableKind } from '../../store/object-types.js';
|
|
4
|
+
import type { RouteRequest } from '../types.js';
|
|
5
|
+
export interface ObjectRouteConfig<K extends ObjectKind> {
|
|
6
|
+
/** Names the object in the 404 text, e.g. "customer note". */
|
|
7
|
+
readonly noun: string;
|
|
8
|
+
/** Reply field that carries one object, e.g. "note". */
|
|
9
|
+
readonly field: string;
|
|
10
|
+
/** Reply field that carries a page, e.g. "notes". */
|
|
11
|
+
readonly listField: string;
|
|
12
|
+
/** The bad-status reply lists `object.states` in the set's own order. */
|
|
13
|
+
readonly object: ObjectDescriptor<K>;
|
|
14
|
+
/** List query parameter matched against the kind's filter column, e.g. "customer". */
|
|
15
|
+
readonly filterParam?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface VersionedRouteConfig<K extends SavableKind, W> extends ObjectRouteConfig<K> {
|
|
18
|
+
readonly object: SavableDescriptor<K, W>;
|
|
19
|
+
/** Checks the body, then returns the successor's write; split in two so a bad body answers 400 before a missing row answers 404. */
|
|
20
|
+
readonly revise: (body: Record<string, JsonValue>) => (existing: ObjectByKind[K], id: number) => W;
|
|
21
|
+
}
|
|
22
|
+
export interface RequiredStringRule {
|
|
23
|
+
readonly max: number;
|
|
24
|
+
/** The field name is a plural noun, so the replies read "are required" and "exceed". */
|
|
25
|
+
readonly plural?: boolean;
|
|
26
|
+
/** The blank check does not trim, so a value of only spaces passes it. */
|
|
27
|
+
readonly untrimmed?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function requiredString(body: Record<string, JsonValue>, key: string, rule: RequiredStringRule): string;
|
|
30
|
+
export declare function optionalString(body: Record<string, JsonValue>, key: string, max: number): string | undefined;
|
|
31
|
+
export declare function listRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest): Promise<void>;
|
|
32
|
+
export declare function getRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
33
|
+
export declare function closeRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
34
|
+
export declare function supersedeRoute<K extends SavableKind, W>(cfg: VersionedRouteConfig<K, W>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=object-routes.d.ts.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// List, get, close and supersede handlers shared by the typed-object routes; each route file passes one config.
|
|
2
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
3
|
+
import { isJsonString } from '../../util/json.js';
|
|
4
|
+
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
5
|
+
import { closeObject, listObjects, objectById } from '../../objects/lifecycle.js';
|
|
6
|
+
import { buildContextWithAuth } from '../auth.js';
|
|
7
|
+
import { byCreatedAt, pageOf, parseCursor } from '../cursor.js';
|
|
8
|
+
import { isSetMember, parseJsonBody, parseListLimit } from '../validation.js';
|
|
9
|
+
export function requiredString(body, key, rule) {
|
|
10
|
+
const value = body[key];
|
|
11
|
+
if (!isJsonString(value) || (rule.untrimmed ? value : value.trim()).length === 0) {
|
|
12
|
+
throw new HttpError(400, `${key} ${rule.plural ? 'are' : 'is'} required (non-empty string)`);
|
|
13
|
+
}
|
|
14
|
+
if (value.length > rule.max) {
|
|
15
|
+
throw new HttpError(400, `${key} ${rule.plural ? 'exceed' : 'exceeds'} ${rule.max}-character cap`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function optionalString(body, key, max) {
|
|
20
|
+
const value = body[key];
|
|
21
|
+
if (value === undefined || value === null)
|
|
22
|
+
return undefined;
|
|
23
|
+
if (!isJsonString(value))
|
|
24
|
+
throw new HttpError(400, `${key} must be a string`);
|
|
25
|
+
if (value.length > max)
|
|
26
|
+
throw new HttpError(400, `${key} exceeds ${max}-character cap`);
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
async function found(cfg, objects, tenantId, id) {
|
|
30
|
+
const row = await objectById(objects, cfg.object, tenantId, id);
|
|
31
|
+
if (!row)
|
|
32
|
+
throw new HttpError(404, `${cfg.noun} ${id} not found`);
|
|
33
|
+
return row;
|
|
34
|
+
}
|
|
35
|
+
// Limit and cursor are checked before auth and status after it, so a keyless caller gets 400 for the first two and 401 for a bad status.
|
|
36
|
+
export async function listRoute(cfg, rr) {
|
|
37
|
+
const { req, res, opts, query } = rr;
|
|
38
|
+
const status = query.get('status') ?? 'all';
|
|
39
|
+
const filter = cfg.filterParam === undefined ? null : query.get(cfg.filterParam);
|
|
40
|
+
const limit = parseListLimit(query.get('limit'));
|
|
41
|
+
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
42
|
+
const ctx = await buildContextWithAuth(req, opts);
|
|
43
|
+
const listOpts = { limit: limit + 1, after, filter: filter?.trim() || undefined };
|
|
44
|
+
if (status !== 'all') {
|
|
45
|
+
const states = cfg.object.states;
|
|
46
|
+
if (!isSetMember(states, status)) {
|
|
47
|
+
throw new HttpError(400, `status must be one of: ${[...states].join(' | ')} | all (got "${status}")`);
|
|
48
|
+
}
|
|
49
|
+
listOpts.status = status;
|
|
50
|
+
}
|
|
51
|
+
const page = pageOf(await listObjects(objectsOf(ctx), cfg.object, ctx.tenantId, listOpts), limit, byCreatedAt);
|
|
52
|
+
sendJson(res, 200, { [cfg.listField]: page.items, next_cursor: page.nextCursor });
|
|
53
|
+
}
|
|
54
|
+
export async function getRoute(cfg, rr, match) {
|
|
55
|
+
const id = parseInt(match[1], 10);
|
|
56
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
57
|
+
sendJson(rr.res, 200, { [cfg.field]: await found(cfg, objectsOf(ctx), ctx.tenantId, id) });
|
|
58
|
+
}
|
|
59
|
+
export async function closeRoute(cfg, rr, match) {
|
|
60
|
+
const id = parseInt(match[1], 10);
|
|
61
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
62
|
+
sendJson(rr.res, 200, { [cfg.field]: await closeObject(objectsOf(ctx), cfg.object, ctx.tenantId, id, ctx.actor.subject) });
|
|
63
|
+
}
|
|
64
|
+
export async function supersedeRoute(cfg, rr, match) {
|
|
65
|
+
const id = parseInt(match[1], 10);
|
|
66
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
67
|
+
const successor = cfg.revise(await parseJsonBody(rr.req, ctx));
|
|
68
|
+
const existing = await found(cfg, objectsOf(ctx), ctx.tenantId, id);
|
|
69
|
+
const saved = await saveFor(ctx, cfg.object, successor(existing, id));
|
|
70
|
+
sendJson(rr.res, 200, { [cfg.field]: saved });
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=object-routes.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreatePolicy(
|
|
3
|
-
export declare function handleListPolicies(
|
|
4
|
-
export declare function handlePoliciesAsOf(
|
|
5
|
-
export declare function handleSupersedePolicy(
|
|
6
|
-
export declare function handleClosePolicy(
|
|
7
|
-
export declare function handleGetPolicy(
|
|
2
|
+
export declare function handleCreatePolicy(rr: RouteRequest): Promise<void>;
|
|
3
|
+
export declare function handleListPolicies(rr: RouteRequest): Promise<void>;
|
|
4
|
+
export declare function handlePoliciesAsOf(rr: RouteRequest): Promise<void>;
|
|
5
|
+
export declare function handleSupersedePolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleClosePolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
7
|
+
export declare function handleGetPolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=policies.d.ts.map
|