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,152 +1,60 @@
|
|
|
1
1
|
// /v1/policies routes.
|
|
2
|
-
import {
|
|
3
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
2
|
+
import { policiesAsOf, POLICY } from '../../objects/policies.js';
|
|
3
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { buildContextWithAuth } from '../auth.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
5
|
+
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
6
|
+
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
7
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
8
|
+
// The date fields get a type and length check only: the store parses the date, and the cap bounds a junk string before it reaches the Date parser.
|
|
9
|
+
const MAX_DATE_LEN = 64;
|
|
10
|
+
const policyRoutes = {
|
|
11
|
+
noun: 'policy',
|
|
12
|
+
field: 'policy',
|
|
13
|
+
listField: 'policies',
|
|
14
|
+
object: POLICY,
|
|
15
|
+
revise: (body) => {
|
|
16
|
+
const policyText = requiredString(body, 'policyText', { max: MAX_SHORT_FIELD_LEN });
|
|
17
|
+
const validFrom = optionalString(body, 'validFrom', MAX_DATE_LEN);
|
|
18
|
+
const validTo = optionalString(body, 'validTo', MAX_DATE_LEN);
|
|
19
|
+
const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
|
|
20
|
+
return (existing, id) => ({ policyName: existing.policyName, policyText, validFrom, validTo, changeSummary, supersedesPolicyId: id });
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
// The as-of route is registered BEFORE /:id so the literal 'asof' is matched first; date errors surface as 400.
|
|
24
|
+
export async function handleCreatePolicy(rr) {
|
|
25
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
26
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
27
|
+
const policy = await saveFor(ctx, POLICY, {
|
|
28
|
+
policyName: requiredString(body, 'policyName', { max: MAX_SHORT_FIELD_LEN }),
|
|
29
|
+
policyText: requiredString(body, 'policyText', { max: MAX_SHORT_FIELD_LEN }),
|
|
30
|
+
validFrom: optionalString(body, 'validFrom', MAX_DATE_LEN),
|
|
31
|
+
validTo: optionalString(body, 'validTo', MAX_DATE_LEN),
|
|
32
|
+
});
|
|
33
|
+
sendJson(rr.res, 201, { policy });
|
|
22
34
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// 6 routes: POST /v1/policies (new; processName-style body policyName +
|
|
26
|
-
// policyText + validFrom? + validTo?), GET /v1/policies (list, status filter),
|
|
27
|
-
// GET /v1/policies/asof (date + optional name; the bi-temporal as-of query;
|
|
28
|
-
// placed BEFORE the /:id GET so the literal 'asof' is matched first), GET
|
|
29
|
-
// /v1/policies/:id, POST /v1/policies/:id/supersede, POST /v1/policies/:id/close.
|
|
30
|
-
// Date inputs are normalized + range-validated in the store; an invalid/inverted
|
|
31
|
-
// date throws -> 400. DoS caps: policyName/policyText/changeSummary 4096.
|
|
32
|
-
export async function handleCreatePolicy({ req, res, opts }) {
|
|
33
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
34
|
-
const body = await parseJsonBody(req, ctx);
|
|
35
|
-
const policyName = body['policyName'];
|
|
36
|
-
if (!isJsonString(policyName) || policyName.trim().length === 0) {
|
|
37
|
-
throw new HttpError(400, 'policyName is required (non-empty string)');
|
|
38
|
-
}
|
|
39
|
-
if (policyName.length > 4096) {
|
|
40
|
-
throw new HttpError(400, 'policyName exceeds 4096-character cap');
|
|
41
|
-
}
|
|
42
|
-
const policyText = body['policyText'];
|
|
43
|
-
if (!isJsonString(policyText) || policyText.trim().length === 0) {
|
|
44
|
-
throw new HttpError(400, 'policyText is required (non-empty string)');
|
|
45
|
-
}
|
|
46
|
-
if (policyText.length > 4096) {
|
|
47
|
-
throw new HttpError(400, 'policyText exceeds 4096-character cap');
|
|
48
|
-
}
|
|
49
|
-
const validFrom = optionalDateField(body['validFrom'], 'validFrom');
|
|
50
|
-
const validTo = optionalDateField(body['validTo'], 'validTo');
|
|
51
|
-
const policy = savePolicy(opts.hippoRoot, ctx.tenantId, {
|
|
52
|
-
policyName,
|
|
53
|
-
policyText,
|
|
54
|
-
validFrom,
|
|
55
|
-
validTo,
|
|
56
|
-
}, ctx.actor.subject);
|
|
57
|
-
sendJson(res, 201, { policy });
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
export async function handleListPolicies({ req, res, opts, query }) {
|
|
61
|
-
const status = query.get('status') ?? 'all';
|
|
62
|
-
const limit = parseListLimit(query.get('limit'));
|
|
63
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
64
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
65
|
-
let policies;
|
|
66
|
-
if (status === 'all') {
|
|
67
|
-
policies = loadPolicies(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
if (!isSetMember(VALID_POLICY_STATES, status)) {
|
|
71
|
-
throw new HttpError(400, `status must be one of: active | superseded | closed | all (got "${status}")`);
|
|
72
|
-
}
|
|
73
|
-
policies = loadPolicies(opts.hippoRoot, ctx.tenantId, {
|
|
74
|
-
status,
|
|
75
|
-
limit: limit + 1,
|
|
76
|
-
after,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
const page = pageOf(policies, limit, byCreatedAt);
|
|
80
|
-
sendJson(res, 200, { policies: page.items, next_cursor: page.nextCursor });
|
|
81
|
-
return;
|
|
35
|
+
export function handleListPolicies(rr) {
|
|
36
|
+
return listRoute(policyRoutes, rr);
|
|
82
37
|
}
|
|
83
38
|
// The as-of query: must precede the /:id GET (literal 'asof' is non-numeric so
|
|
84
39
|
// the /(\d+)/ route would not match it, but order it first for clarity).
|
|
85
|
-
export async function handlePoliciesAsOf(
|
|
40
|
+
export async function handlePoliciesAsOf(rr) {
|
|
41
|
+
const { req, res, opts, query } = rr;
|
|
86
42
|
const date = query.get('date');
|
|
87
43
|
if (date === null || date.length === 0) {
|
|
88
44
|
throw new HttpError(400, 'date is required (ISO-8601 valid-time)');
|
|
89
45
|
}
|
|
90
46
|
const name = query.get('name') ?? undefined;
|
|
91
47
|
const ctx = await buildContextWithAuth(req, opts);
|
|
92
|
-
const policies =
|
|
48
|
+
const policies = await policiesAsOf(objectsOf(ctx), ctx.tenantId, date, { name });
|
|
93
49
|
sendJson(res, 200, { policies });
|
|
94
|
-
return;
|
|
95
50
|
}
|
|
96
|
-
export
|
|
97
|
-
|
|
98
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
99
|
-
const body = await parseJsonBody(req, ctx);
|
|
100
|
-
const policyText = body['policyText'];
|
|
101
|
-
if (!isJsonString(policyText) || policyText.trim().length === 0) {
|
|
102
|
-
throw new HttpError(400, 'policyText is required (non-empty string)');
|
|
103
|
-
}
|
|
104
|
-
if (policyText.length > 4096) {
|
|
105
|
-
throw new HttpError(400, 'policyText exceeds 4096-character cap');
|
|
106
|
-
}
|
|
107
|
-
const validFrom = optionalDateField(body['validFrom'], 'validFrom');
|
|
108
|
-
const validTo = optionalDateField(body['validTo'], 'validTo');
|
|
109
|
-
const changeRaw = body['changeSummary'];
|
|
110
|
-
let changeSummary;
|
|
111
|
-
if (changeRaw !== undefined && changeRaw !== null) {
|
|
112
|
-
if (!isJsonString(changeRaw)) {
|
|
113
|
-
throw new HttpError(400, 'changeSummary must be a string');
|
|
114
|
-
}
|
|
115
|
-
if (changeRaw.length > 4096) {
|
|
116
|
-
throw new HttpError(400, 'changeSummary exceeds 4096-character cap');
|
|
117
|
-
}
|
|
118
|
-
changeSummary = changeRaw;
|
|
119
|
-
}
|
|
120
|
-
const existing = loadPolicyById(opts.hippoRoot, ctx.tenantId, id);
|
|
121
|
-
if (!existing) {
|
|
122
|
-
throw new HttpError(404, `policy ${id} not found`);
|
|
123
|
-
}
|
|
124
|
-
const policy = savePolicy(opts.hippoRoot, ctx.tenantId, {
|
|
125
|
-
policyName: existing.policyName,
|
|
126
|
-
policyText,
|
|
127
|
-
validFrom,
|
|
128
|
-
validTo,
|
|
129
|
-
changeSummary,
|
|
130
|
-
supersedesPolicyId: id,
|
|
131
|
-
}, ctx.actor.subject);
|
|
132
|
-
sendJson(res, 200, { policy });
|
|
133
|
-
return;
|
|
51
|
+
export function handleSupersedePolicy(rr, match) {
|
|
52
|
+
return supersedeRoute(policyRoutes, rr, match);
|
|
134
53
|
}
|
|
135
|
-
export
|
|
136
|
-
|
|
137
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
138
|
-
const policy = closePolicy(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
139
|
-
sendJson(res, 200, { policy });
|
|
140
|
-
return;
|
|
54
|
+
export function handleClosePolicy(rr, match) {
|
|
55
|
+
return closeRoute(policyRoutes, rr, match);
|
|
141
56
|
}
|
|
142
|
-
export
|
|
143
|
-
|
|
144
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
145
|
-
const policy = loadPolicyById(opts.hippoRoot, ctx.tenantId, id);
|
|
146
|
-
if (!policy) {
|
|
147
|
-
throw new HttpError(404, `policy ${id} not found`);
|
|
148
|
-
}
|
|
149
|
-
sendJson(res, 200, { policy });
|
|
150
|
-
return;
|
|
57
|
+
export function handleGetPolicy(rr, match) {
|
|
58
|
+
return getRoute(policyRoutes, rr, match);
|
|
151
59
|
}
|
|
152
60
|
//# sourceMappingURL=policies.js.map
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
// /v1/predictions routes.
|
|
2
|
-
import { closePrediction,
|
|
3
|
-
import {
|
|
2
|
+
import { closePrediction, listPredictions, predictionBaserate, predictionById, savePrediction } from '../../api/predictions.js';
|
|
3
|
+
import { loadConfig } from '../../core/config.js';
|
|
4
|
+
import { predictionMirror, VALID_CLOSURE_STATES } from '../../store/predictions.js';
|
|
5
|
+
import { HttpError, MAX_ID_LEN, sendJson } from '../../util/http-util.js';
|
|
4
6
|
import { buildContextWithAuth } from '../auth.js';
|
|
5
7
|
import { byCreatedAt, pageOf, parseCursor } from '../cursor.js';
|
|
6
|
-
import {
|
|
7
|
-
import { isJsonString } from '../../json.js';
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
// 4 routes: POST /v1/predictions (create), GET /v1/predictions (list),
|
|
11
|
-
// GET /v1/predictions/:id (show), POST /v1/predictions/:id/close (close).
|
|
12
|
-
// All Bearer-authed + tenant-scoped via buildContextWithAuth. closure_state
|
|
13
|
-
// validated against VALID_CLOSURE_STATES (3 states). DoS caps on claim
|
|
14
|
-
// (4096 chars) + closureNote (2048 chars).
|
|
8
|
+
import { isSetMember, MAX_SHORT_FIELD_LEN, parseJsonBody, parseListLimit } from '../validation.js';
|
|
9
|
+
import { isJsonString, isJsonNumber } from '../../util/json.js';
|
|
10
|
+
// Routes: /v1/predictions (create, list, show, close), Bearer-authed and tenant-scoped; closure_state is validated against VALID_CLOSURE_STATES.
|
|
11
|
+
// DoS caps: claim MAX_SHORT_FIELD_LEN chars, closureNote 2048.
|
|
15
12
|
export async function handleCreatePrediction({ req, res, opts }) {
|
|
16
13
|
const ctx = await buildContextWithAuth(req, opts);
|
|
17
14
|
const body = await parseJsonBody(req, ctx);
|
|
@@ -19,8 +16,8 @@ export async function handleCreatePrediction({ req, res, opts }) {
|
|
|
19
16
|
if (!isJsonString(claim) || claim.length === 0) {
|
|
20
17
|
throw new HttpError(400, 'claim is required (non-empty string)');
|
|
21
18
|
}
|
|
22
|
-
if (claim.length >
|
|
23
|
-
throw new HttpError(400,
|
|
19
|
+
if (claim.length > MAX_SHORT_FIELD_LEN) {
|
|
20
|
+
throw new HttpError(400, `claim exceeds ${MAX_SHORT_FIELD_LEN}-character cap`);
|
|
24
21
|
}
|
|
25
22
|
const classTag = body['classTag'];
|
|
26
23
|
if (!isJsonString(classTag) || classTag.length === 0) {
|
|
@@ -50,56 +47,37 @@ export async function handleCreatePrediction({ req, res, opts }) {
|
|
|
50
47
|
}
|
|
51
48
|
targetDateValue = targetDate;
|
|
52
49
|
}
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
estimateValue,
|
|
57
|
-
estimateUnit,
|
|
58
|
-
targetDate: targetDateValue,
|
|
59
|
-
}, ctx.actor.subject);
|
|
50
|
+
const claimed = { classTag, claimText: claim, estimateValue, estimateUnit, targetDate: targetDateValue };
|
|
51
|
+
const mirror = predictionMirror(ctx.tenantId, claimed, loadConfig(opts.hippoRoot).defaultHalfLifeDays);
|
|
52
|
+
const prediction = await savePrediction(ctx, { ...claimed, mirror });
|
|
60
53
|
sendJson(res, 201, { prediction });
|
|
61
|
-
|
|
54
|
+
}
|
|
55
|
+
/** Which rows a list reads; a status other than all or open needs a class, as no store reads one closed state across classes. */
|
|
56
|
+
function listFilter(classTag, status) {
|
|
57
|
+
if (status === 'all')
|
|
58
|
+
return { classTag };
|
|
59
|
+
if (status === 'open')
|
|
60
|
+
return { classTag, closureState: 'open' };
|
|
61
|
+
if (!isSetMember(VALID_CLOSURE_STATES, status)) {
|
|
62
|
+
throw new HttpError(400, `status must be one of: open | closed | closed-unknown | all (got "${status}")`);
|
|
63
|
+
}
|
|
64
|
+
if (!classTag) {
|
|
65
|
+
throw new HttpError(400, 'status filter (non-open) requires class param');
|
|
66
|
+
}
|
|
67
|
+
return { classTag, closureState: status };
|
|
62
68
|
}
|
|
63
69
|
export async function handleListPredictions({ req, res, opts, query }) {
|
|
64
|
-
const classTag = query.get('class')
|
|
70
|
+
const classTag = query.get('class') || undefined;
|
|
65
71
|
const status = query.get('status') ?? 'all';
|
|
66
72
|
const limit = parseListLimit(query.get('limit'));
|
|
67
73
|
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
68
74
|
const ctx = await buildContextWithAuth(req, opts);
|
|
69
|
-
|
|
70
|
-
if (status === 'all') {
|
|
71
|
-
predictions = classTag
|
|
72
|
-
? loadPredictionsByClass(opts.hippoRoot, ctx.tenantId, classTag, { limit: limit + 1, after })
|
|
73
|
-
: loadAllPredictions(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
74
|
-
}
|
|
75
|
-
else if (status === 'open') {
|
|
76
|
-
predictions = loadOpenPredictions(opts.hippoRoot, ctx.tenantId, {
|
|
77
|
-
classTag: classTag || undefined,
|
|
78
|
-
limit: limit + 1,
|
|
79
|
-
after,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
if (!isSetMember(VALID_CLOSURE_STATES, status)) {
|
|
84
|
-
throw new HttpError(400, `status must be one of: open | closed | closed-unknown | all (got "${status}")`);
|
|
85
|
-
}
|
|
86
|
-
if (!classTag) {
|
|
87
|
-
throw new HttpError(400, 'status filter (non-open) requires class param');
|
|
88
|
-
}
|
|
89
|
-
predictions = loadPredictionsByClass(opts.hippoRoot, ctx.tenantId, classTag, {
|
|
90
|
-
closureState: status,
|
|
91
|
-
limit: limit + 1,
|
|
92
|
-
after,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
75
|
+
const predictions = await listPredictions(ctx, { ...listFilter(classTag, status), limit: limit + 1, after });
|
|
95
76
|
const page = pageOf(predictions, limit, byCreatedAt);
|
|
96
77
|
sendJson(res, 200, { predictions: page.items, next_cursor: page.nextCursor });
|
|
97
|
-
return;
|
|
98
78
|
}
|
|
99
|
-
// Reference-class / planning-fallacy detector
|
|
100
|
-
//
|
|
101
|
-
// is not a number — the :id regex requires \d+ so they don't conflict,
|
|
102
|
-
// but routing this first avoids the dispatch order risk.
|
|
79
|
+
// Reference-class / planning-fallacy detector; registered BEFORE /v1/predictions/:id so dispatch order cannot matter ('stats' is not a number, but routing
|
|
80
|
+
// it first is safer).
|
|
103
81
|
export async function handlePredictionStats({ req, res, opts, query }) {
|
|
104
82
|
const classTag = query.get('class');
|
|
105
83
|
if (!classTag || classTag.length === 0) {
|
|
@@ -109,19 +87,17 @@ export async function handlePredictionStats({ req, res, opts, query }) {
|
|
|
109
87
|
throw new HttpError(400, `class exceeds ${MAX_ID_LEN}-character cap`);
|
|
110
88
|
}
|
|
111
89
|
const ctx = await buildContextWithAuth(req, opts);
|
|
112
|
-
const baserate =
|
|
90
|
+
const baserate = await predictionBaserate(ctx, classTag);
|
|
113
91
|
sendJson(res, 200, { baserate });
|
|
114
|
-
return;
|
|
115
92
|
}
|
|
116
93
|
export async function handleGetPrediction({ req, res, opts }, predictionByIdMatch) {
|
|
117
94
|
const id = parseInt(predictionByIdMatch[1], 10);
|
|
118
95
|
const ctx = await buildContextWithAuth(req, opts);
|
|
119
|
-
const prediction =
|
|
96
|
+
const prediction = await predictionById(ctx, id);
|
|
120
97
|
if (!prediction) {
|
|
121
98
|
throw new HttpError(404, `prediction ${id} not found`);
|
|
122
99
|
}
|
|
123
100
|
sendJson(res, 200, { prediction });
|
|
124
|
-
return;
|
|
125
101
|
}
|
|
126
102
|
export async function handleClosePrediction({ req, res, opts }, predictionCloseMatch) {
|
|
127
103
|
const id = parseInt(predictionCloseMatch[1], 10);
|
|
@@ -150,12 +126,8 @@ export async function handleClosePrediction({ req, res, opts }, predictionCloseM
|
|
|
150
126
|
}
|
|
151
127
|
closureNote = note;
|
|
152
128
|
}
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
actualValue,
|
|
156
|
-
closureNote,
|
|
157
|
-
}, ctx.actor.subject);
|
|
129
|
+
const close = { closureState: state, actualValue, closureNote };
|
|
130
|
+
const prediction = await closePrediction(ctx, id, close);
|
|
158
131
|
sendJson(res, 200, { prediction });
|
|
159
|
-
return;
|
|
160
132
|
}
|
|
161
133
|
//# sourceMappingURL=predictions.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateProcess(
|
|
3
|
-
export declare function handleListProcesses(
|
|
4
|
-
export declare function handleSupersedeProcess(
|
|
5
|
-
export declare function handleCloseProcess(
|
|
6
|
-
export declare function handleGetProcess(
|
|
2
|
+
export declare function handleCreateProcess(rr: RouteRequest): Promise<void>;
|
|
3
|
+
export declare function handleListProcesses(rr: RouteRequest): Promise<void>;
|
|
4
|
+
export declare function handleSupersedeProcess(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseProcess(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetProcess(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=processes.d.ts.map
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
// /v1/processes routes.
|
|
2
|
-
import {
|
|
3
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
2
|
+
import { MAX_PROCESS_STEP_LEN, MAX_PROCESS_STEPS, PROCESS } from '../../objects/processes.js';
|
|
3
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { buildContextWithAuth } from '../auth.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
// gate). Caps mirror src/processes.ts MAX_PROCESS_STEPS / MAX_PROCESS_STEP_LEN.
|
|
5
|
+
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
6
|
+
import { isJsonString } from '../../util/json.js';
|
|
7
|
+
import { saveFor } from '../../api/objects.js';
|
|
8
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute } from './object-routes.js';
|
|
9
|
+
// HTTP-boundary validation for an untrusted process `steps` body; saveProcess re-validates and trims, this is the fail-fast 400 gate.
|
|
11
10
|
function validateProcessStepsBody(raw) {
|
|
12
11
|
if (raw === undefined || raw === null)
|
|
13
12
|
return [];
|
|
14
13
|
if (!Array.isArray(raw)) {
|
|
15
14
|
throw new HttpError(400, 'steps must be an array of strings');
|
|
16
15
|
}
|
|
17
|
-
if (raw.length >
|
|
18
|
-
throw new HttpError(400,
|
|
16
|
+
if (raw.length > MAX_PROCESS_STEPS) {
|
|
17
|
+
throw new HttpError(400, `steps exceeds ${MAX_PROCESS_STEPS}-step cap`);
|
|
19
18
|
}
|
|
20
19
|
for (const item of raw) {
|
|
21
20
|
if (!isJsonString(item)) {
|
|
@@ -24,139 +23,50 @@ function validateProcessStepsBody(raw) {
|
|
|
24
23
|
if (item.trim().length === 0) {
|
|
25
24
|
throw new HttpError(400, 'a step is empty');
|
|
26
25
|
}
|
|
27
|
-
if (item.length >
|
|
28
|
-
throw new HttpError(400,
|
|
26
|
+
if (item.length > MAX_PROCESS_STEP_LEN) {
|
|
27
|
+
throw new HttpError(400, `a step exceeds the ${MAX_PROCESS_STEP_LEN}-character cap`);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
// SAFETY: every item in raw was confirmed to be a string in the loop above.
|
|
32
31
|
return raw;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
// (validateProcessStepsBody). Mirrors /v1/decisions; the delta lifecycle is the
|
|
44
|
-
// decision supersede path.
|
|
45
|
-
export async function handleCreateProcess({ req, res, opts }) {
|
|
46
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
47
|
-
const body = await parseJsonBody(req, ctx);
|
|
48
|
-
const processName = body['processName'];
|
|
49
|
-
if (!isJsonString(processName) || processName.trim().length === 0) {
|
|
50
|
-
throw new HttpError(400, 'processName is required (non-empty string)');
|
|
51
|
-
}
|
|
52
|
-
if (processName.length > 4096) {
|
|
53
|
-
throw new HttpError(400, 'processName exceeds 4096-character cap');
|
|
54
|
-
}
|
|
55
|
-
const steps = validateProcessStepsBody(body['steps']);
|
|
56
|
-
const descriptionRaw = body['description'];
|
|
57
|
-
let description;
|
|
58
|
-
if (descriptionRaw !== undefined && descriptionRaw !== null) {
|
|
59
|
-
if (!isJsonString(descriptionRaw)) {
|
|
60
|
-
throw new HttpError(400, 'description must be a string');
|
|
33
|
+
const processRoutes = {
|
|
34
|
+
noun: 'process',
|
|
35
|
+
field: 'process',
|
|
36
|
+
listField: 'processes',
|
|
37
|
+
object: PROCESS,
|
|
38
|
+
revise: (body) => {
|
|
39
|
+
const steps = validateProcessStepsBody(body['steps']);
|
|
40
|
+
if (steps.length === 0) {
|
|
41
|
+
throw new HttpError(400, 'steps is required (at least one step) for a supersession');
|
|
61
42
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
43
|
+
const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
|
|
44
|
+
const description = optionalString(body, 'description', MAX_SHORT_FIELD_LEN);
|
|
45
|
+
return (existing, id) => ({ processName: existing.processName, steps, description, changeSummary, supersedesProcessId: id });
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
// Routes: /v1/processes (create, list, show, supersede, close), mirroring /v1/decisions; supersede creates a new version that reuses the predecessor's name.
|
|
49
|
+
// DoS caps: processName/description/changeSummary MAX_SHORT_FIELD_LEN, steps MAX_PROCESS_STEPS x MAX_PROCESS_STEP_LEN (validateProcessStepsBody).
|
|
50
|
+
export async function handleCreateProcess(rr) {
|
|
51
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
52
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
53
|
+
const process = await saveFor(ctx, PROCESS, {
|
|
54
|
+
processName: requiredString(body, 'processName', { max: MAX_SHORT_FIELD_LEN }),
|
|
55
|
+
steps: validateProcessStepsBody(body['steps']),
|
|
56
|
+
description: optionalString(body, 'description', MAX_SHORT_FIELD_LEN),
|
|
57
|
+
});
|
|
58
|
+
sendJson(rr.res, 201, { process });
|
|
74
59
|
}
|
|
75
|
-
export
|
|
76
|
-
|
|
77
|
-
const limit = parseListLimit(query.get('limit'));
|
|
78
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
79
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
80
|
-
let processes;
|
|
81
|
-
if (status === 'all') {
|
|
82
|
-
processes = loadProcesses(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
if (!isSetMember(VALID_PROCESS_STATES, status)) {
|
|
86
|
-
throw new HttpError(400, `status must be one of: active | superseded | closed | all (got "${status}")`);
|
|
87
|
-
}
|
|
88
|
-
processes = loadProcesses(opts.hippoRoot, ctx.tenantId, {
|
|
89
|
-
status,
|
|
90
|
-
limit: limit + 1,
|
|
91
|
-
after,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
const page = pageOf(processes, limit, byCreatedAt);
|
|
95
|
-
sendJson(res, 200, { processes: page.items, next_cursor: page.nextCursor });
|
|
96
|
-
return;
|
|
60
|
+
export function handleListProcesses(rr) {
|
|
61
|
+
return listRoute(processRoutes, rr);
|
|
97
62
|
}
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
101
|
-
const body = await parseJsonBody(req, ctx);
|
|
102
|
-
const steps = validateProcessStepsBody(body['steps']);
|
|
103
|
-
if (steps.length === 0) {
|
|
104
|
-
throw new HttpError(400, 'steps is required (at least one step) for a supersession');
|
|
105
|
-
}
|
|
106
|
-
const changeRaw = body['changeSummary'];
|
|
107
|
-
let changeSummary;
|
|
108
|
-
if (changeRaw !== undefined && changeRaw !== null) {
|
|
109
|
-
if (!isJsonString(changeRaw)) {
|
|
110
|
-
throw new HttpError(400, 'changeSummary must be a string');
|
|
111
|
-
}
|
|
112
|
-
if (changeRaw.length > 4096) {
|
|
113
|
-
throw new HttpError(400, 'changeSummary exceeds 4096-character cap');
|
|
114
|
-
}
|
|
115
|
-
changeSummary = changeRaw;
|
|
116
|
-
}
|
|
117
|
-
const descRaw = body['description'];
|
|
118
|
-
let description;
|
|
119
|
-
if (descRaw !== undefined && descRaw !== null) {
|
|
120
|
-
if (!isJsonString(descRaw)) {
|
|
121
|
-
throw new HttpError(400, 'description must be a string');
|
|
122
|
-
}
|
|
123
|
-
if (descRaw.length > 4096) {
|
|
124
|
-
throw new HttpError(400, 'description exceeds 4096-character cap');
|
|
125
|
-
}
|
|
126
|
-
description = descRaw;
|
|
127
|
-
}
|
|
128
|
-
// A supersession is a new version of the SAME process: reuse the
|
|
129
|
-
// predecessor's name. 404 if the target does not exist; saveProcess's
|
|
130
|
-
// in-SAVEPOINT preflight is the authoritative active-state check (409).
|
|
131
|
-
const existing = loadProcessById(opts.hippoRoot, ctx.tenantId, id);
|
|
132
|
-
if (!existing) {
|
|
133
|
-
throw new HttpError(404, `process ${id} not found`);
|
|
134
|
-
}
|
|
135
|
-
const process = saveProcess(opts.hippoRoot, ctx.tenantId, {
|
|
136
|
-
processName: existing.processName,
|
|
137
|
-
steps,
|
|
138
|
-
description,
|
|
139
|
-
changeSummary,
|
|
140
|
-
supersedesProcessId: id,
|
|
141
|
-
}, ctx.actor.subject);
|
|
142
|
-
sendJson(res, 200, { process });
|
|
143
|
-
return;
|
|
63
|
+
export function handleSupersedeProcess(rr, match) {
|
|
64
|
+
return supersedeRoute(processRoutes, rr, match);
|
|
144
65
|
}
|
|
145
|
-
export
|
|
146
|
-
|
|
147
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
148
|
-
const process = closeProcess(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
149
|
-
sendJson(res, 200, { process });
|
|
150
|
-
return;
|
|
66
|
+
export function handleCloseProcess(rr, match) {
|
|
67
|
+
return closeRoute(processRoutes, rr, match);
|
|
151
68
|
}
|
|
152
|
-
export
|
|
153
|
-
|
|
154
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
155
|
-
const process = loadProcessById(opts.hippoRoot, ctx.tenantId, id);
|
|
156
|
-
if (!process) {
|
|
157
|
-
throw new HttpError(404, `process ${id} not found`);
|
|
158
|
-
}
|
|
159
|
-
sendJson(res, 200, { process });
|
|
160
|
-
return;
|
|
69
|
+
export function handleGetProcess(rr, match) {
|
|
70
|
+
return getRoute(processRoutes, rr, match);
|
|
161
71
|
}
|
|
162
72
|
//# sourceMappingURL=processes.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateProjectBrief(
|
|
3
|
-
export declare function handleListProjectBriefs(
|
|
4
|
-
export declare function handleRefreshProjectBrief(
|
|
5
|
-
export declare function handleSupersedeProjectBrief(
|
|
6
|
-
export declare function handleCloseProjectBrief(
|
|
7
|
-
export declare function handleGetProjectBrief(
|
|
2
|
+
export declare function handleCreateProjectBrief(rr: RouteRequest): Promise<void>;
|
|
3
|
+
export declare function handleListProjectBriefs(rr: RouteRequest): Promise<void>;
|
|
4
|
+
export declare function handleRefreshProjectBrief(rr: RouteRequest): Promise<void>;
|
|
5
|
+
export declare function handleSupersedeProjectBrief(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleCloseProjectBrief(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
7
|
+
export declare function handleGetProjectBrief(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=project-briefs.d.ts.map
|