hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateAuthKey({ req, res, opts }: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListAuthKeys({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleRevokeAuthKey({ res, ctx }: AuthedRouteRequest
|
|
5
|
-
export declare function handleListQuarantine({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
6
|
-
export declare function handleApproveQuarantine({ res, ctx }: AuthedRouteRequest
|
|
7
|
-
export declare function handleRejectQuarantine({ res, ctx }: AuthedRouteRequest
|
|
8
|
-
export declare function handleListAudit({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
2
|
+
export declare function handleCreateAuthKey({ req, res, opts }: AuthedRouteRequest<'keyWrites'>): Promise<void>;
|
|
3
|
+
export declare function handleListAuthKeys({ res, ctx, query }: AuthedRouteRequest<'keyWrites'>): Promise<void>;
|
|
4
|
+
export declare function handleRevokeAuthKey({ res, ctx }: AuthedRouteRequest<'keyAudit'>, keyMatch: Record<string, string>): Promise<void>;
|
|
5
|
+
export declare function handleListQuarantine({ res, ctx, query }: AuthedRouteRequest<'quarantine'>): Promise<void>;
|
|
6
|
+
export declare function handleApproveQuarantine({ res, ctx }: AuthedRouteRequest<'quarantine'>, quarantineApproveMatch: Record<string, string>): Promise<void>;
|
|
7
|
+
export declare function handleRejectQuarantine({ res, ctx }: AuthedRouteRequest<'quarantine'>, quarantineRejectMatch: Record<string, string>): Promise<void>;
|
|
8
|
+
export declare function handleListAudit({ res, ctx, query }: AuthedRouteRequest<'auditLog'>): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Admin routes: API keys, quarantine and the audit log.
|
|
2
2
|
import { DEFAULT_LIST_LIMIT } from '../../util/limits.js';
|
|
3
3
|
import { AUDIT_OPS } from '../../store/audit.js';
|
|
4
|
-
import { auditList, authCreate, authListRows, authRevoke, quarantineApprove, quarantineList, quarantineReject } from '../../api/index.js';
|
|
4
|
+
import { auditList, authCreate, authListRows, authRevoke, narrowContext, quarantineApprove, quarantineList, quarantineReject, } from '../../api/index.js';
|
|
5
5
|
import { HttpError, readBody, sendJson } from '../../util/http-util.js';
|
|
6
6
|
import { assertCrossTenantAdmin, recheckContextWithAuth } from '../auth.js';
|
|
7
7
|
import { pageOf, parseCursor, setNextCursorHeader } from '../cursor.js';
|
|
@@ -12,21 +12,28 @@ const VALID_AUDIT_OPS = new Set(AUDIT_OPS);
|
|
|
12
12
|
// ServeOpts.mintBodyDeadlineMs overrides the wait for tests only, so a 408 test need not sit through it.
|
|
13
13
|
const MINT_BODY_MAX_BYTES = 4 * 1024;
|
|
14
14
|
const MINT_BODY_DEADLINE_MS = 10_000;
|
|
15
|
-
// Cap on GET /v1/audit?limit=: large enough to dump a small deployment's audit log unpaginated, small enough that a
|
|
15
|
+
// Cap on GET /v1/audit?limit=: large enough to dump a small deployment's audit log unpaginated, small enough that a
|
|
16
|
+
// client cannot ask for the world.
|
|
16
17
|
const MAX_AUDIT_LIMIT = 10000;
|
|
17
18
|
// GET /v1/auth/keys had no limit, so its default page is the cap: a deployment below 1000 keys sees no change.
|
|
18
19
|
const MAX_AUTH_KEYS_PAGE = 1000;
|
|
19
|
-
// POST /v1/auth/keys: mints a key; plaintext is in the response body (the CLI client, not this layer, carries the
|
|
20
|
+
// POST /v1/auth/keys: mints a key; plaintext is in the response body (the CLI client, not this layer, carries the
|
|
21
|
+
// "store this somewhere safe" warning).
|
|
20
22
|
export async function handleCreateAuthKey({ req, res, opts }) {
|
|
21
|
-
// The dispatch gate authenticated before the body, so an unknown caller costs no read; this recheck runs the resolver
|
|
22
|
-
|
|
23
|
-
const
|
|
23
|
+
// The dispatch gate authenticated before the body, so an unknown caller costs no read; this recheck runs the resolver
|
|
24
|
+
// right before the mint.
|
|
25
|
+
const raw = await readBody(req, {
|
|
26
|
+
maxBytes: MINT_BODY_MAX_BYTES,
|
|
27
|
+
deadlineMs: opts.mintBodyDeadlineMs ?? MINT_BODY_DEADLINE_MS,
|
|
28
|
+
});
|
|
29
|
+
const ctx = narrowContext(await recheckContextWithAuth(req, opts), 'keyWrites');
|
|
24
30
|
const body = parseJsonObjectText(raw);
|
|
25
31
|
const labelRaw = body['label'];
|
|
26
32
|
if (labelRaw !== undefined && !isJsonString(labelRaw)) {
|
|
27
33
|
throw new HttpError(400, 'label must be a string');
|
|
28
34
|
}
|
|
29
|
-
// Optional body.role mirrors the --role CLI flag and is validated strictly: anything but 'admin'|'member' is a 400;
|
|
35
|
+
// Optional body.role mirrors the --role CLI flag and is validated strictly: anything but 'admin'|'member' is a 400;
|
|
36
|
+
// authCreate refuses a member caller
|
|
30
37
|
// with a 403.
|
|
31
38
|
const roleRaw = body['role'];
|
|
32
39
|
let role;
|
|
@@ -45,7 +52,8 @@ export async function handleCreateAuthKey({ req, res, opts }) {
|
|
|
45
52
|
if (noExpiry !== undefined && !isJsonBoolean(noExpiry)) {
|
|
46
53
|
throw new HttpError(400, 'noExpiry must be true or false');
|
|
47
54
|
}
|
|
48
|
-
// Security: any body `tenantId` is IGNORED; the key is bound to the caller's authenticated tenant, or tenant A could
|
|
55
|
+
// Security: any body `tenantId` is IGNORED; the key is bound to the caller's authenticated tenant, or tenant A could
|
|
56
|
+
// mint a key for tenant B (see
|
|
49
57
|
// authCreate).
|
|
50
58
|
const result = await authCreate(ctx, {
|
|
51
59
|
label: labelRaw,
|
|
@@ -56,7 +64,8 @@ export async function handleCreateAuthKey({ req, res, opts }) {
|
|
|
56
64
|
sendJson(res, 200, result);
|
|
57
65
|
return;
|
|
58
66
|
}
|
|
59
|
-
// GET /v1/auth/keys?active=true&limit=&cursor=: lists keys visible to ctx.tenantId; `active` defaults to true,
|
|
67
|
+
// GET /v1/auth/keys?active=true&limit=&cursor=: lists keys visible to ctx.tenantId; `active` defaults to true,
|
|
68
|
+
// ?active=false includes revoked and expired rows.
|
|
60
69
|
export async function handleListAuthKeys({ res, ctx, query }) {
|
|
61
70
|
const activeRaw = query.get('active');
|
|
62
71
|
let active = true;
|
|
@@ -70,12 +79,16 @@ export async function handleListAuthKeys({ res, ctx, query }) {
|
|
|
70
79
|
}
|
|
71
80
|
const limit = parseListLimit(query.get('limit'), MAX_AUTH_KEYS_PAGE, MAX_AUTH_KEYS_PAGE);
|
|
72
81
|
const after = parseCursor(query.get('cursor'), 'integer', 'integer');
|
|
73
|
-
const page = pageOf(await authListRows(ctx, { active, limit: limit + 1, after }), limit, (r) => ({
|
|
82
|
+
const page = pageOf(await authListRows(ctx, { active, limit: limit + 1, after }), limit, (r) => ({
|
|
83
|
+
key: r.rowId,
|
|
84
|
+
id: r.rowId,
|
|
85
|
+
}));
|
|
74
86
|
setNextCursorHeader(res, page.nextCursor);
|
|
75
87
|
sendJson(res, 200, page.items.map((r) => r.key));
|
|
76
88
|
return;
|
|
77
89
|
}
|
|
78
|
-
// DELETE /v1/auth/keys/:keyId revokes: missing or cross-tenant keys are 404 (no leak); a member is 403 on any key but
|
|
90
|
+
// DELETE /v1/auth/keys/:keyId revokes: missing or cross-tenant keys are 404 (no leak); a member is 403 on any key but
|
|
91
|
+
// its own or, via the resolver, those it
|
|
79
92
|
// minted. Returns 200 with the body rather than 204 so the caller sees revokedAt.
|
|
80
93
|
export async function handleRevokeAuthKey({ res, ctx }, keyMatch) {
|
|
81
94
|
validateIdSegment(keyMatch.keyId, 'key id');
|
|
@@ -83,7 +96,8 @@ export async function handleRevokeAuthKey({ res, ctx }, keyMatch) {
|
|
|
83
96
|
sendJson(res, 200, result);
|
|
84
97
|
return;
|
|
85
98
|
}
|
|
86
|
-
// GET /v1/quarantine?status=&limit=&cursor=: quarantine review queue. quarantineList carries no role gate itself, so
|
|
99
|
+
// GET /v1/quarantine?status=&limit=&cursor=: quarantine review queue. quarantineList carries no role gate itself, so
|
|
100
|
+
// its row's admin gate is the check.
|
|
87
101
|
export async function handleListQuarantine({ res, ctx, query }) {
|
|
88
102
|
const statusRaw = query.get('status');
|
|
89
103
|
let status = 'pending';
|
|
@@ -95,7 +109,10 @@ export async function handleListQuarantine({ res, ctx, query }) {
|
|
|
95
109
|
}
|
|
96
110
|
const limit = parseListLimit(query.get('limit'));
|
|
97
111
|
const after = parseCursor(query.get('cursor'), 'string', 'string');
|
|
98
|
-
const page = pageOf(await quarantineList(ctx, { status, limit: limit + 1, after }), limit, (q) => ({
|
|
112
|
+
const page = pageOf(await quarantineList(ctx, { status, limit: limit + 1, after }), limit, (q) => ({
|
|
113
|
+
key: q.quarantinedAt,
|
|
114
|
+
id: q.id,
|
|
115
|
+
}));
|
|
99
116
|
sendJson(res, 200, { quarantine: page.items, next_cursor: page.nextCursor });
|
|
100
117
|
return;
|
|
101
118
|
}
|
|
@@ -113,7 +130,8 @@ export async function handleRejectQuarantine({ res, ctx }, quarantineRejectMatch
|
|
|
113
130
|
sendJson(res, 200, { rejected: quarantineRejectMatch.id });
|
|
114
131
|
return;
|
|
115
132
|
}
|
|
116
|
-
// GET /v1/audit?op=&since=&limit=&cursor=: all three filters are validated at the route boundary so an invalid value is
|
|
133
|
+
// GET /v1/audit?op=&since=&limit=&cursor=: all three filters are validated at the route boundary so an invalid value is
|
|
134
|
+
// a 400 before the DB is hit.
|
|
117
135
|
export async function handleListAudit({ res, ctx, query }) {
|
|
118
136
|
const opRaw = query.get('op');
|
|
119
137
|
let op;
|
|
@@ -148,7 +166,10 @@ export async function handleListAudit({ res, ctx, query }) {
|
|
|
148
166
|
if (crossTenant)
|
|
149
167
|
assertCrossTenantAdmin(ctx, '/v1/audit?tenant= for another tenant');
|
|
150
168
|
const effectiveCtx = crossTenant ? { ...ctx, tenantId: tenantOverride } : ctx;
|
|
151
|
-
const page = pageOf(await auditList(effectiveCtx, { op, since, limit: limit + 1, after }), limit, (e) => ({
|
|
169
|
+
const page = pageOf(await auditList(effectiveCtx, { op, since, limit: limit + 1, after }), limit, (e) => ({
|
|
170
|
+
key: e.ts,
|
|
171
|
+
id: e.id,
|
|
172
|
+
}));
|
|
152
173
|
setNextCursorHeader(res, page.nextCursor);
|
|
153
174
|
sendJson(res, 200, page.items);
|
|
154
175
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateCustomerNote(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListCustomerNotes(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleSupersedeCustomerNote(rr: AuthedRouteRequest
|
|
5
|
-
export declare function handleCloseCustomerNote(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleGetCustomerNote(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreateCustomerNote(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListCustomerNotes(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handleSupersedeCustomerNote(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseCustomerNote(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetCustomerNote(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=customer-notes.d.ts.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// /v1/customer-notes routes.
|
|
2
|
-
import { CUSTOMER_NOTE, MAX_CHANGE_SUMMARY_LEN, MAX_CUSTOMER_LEN } from '../../objects/customer-notes.js';
|
|
2
|
+
import { CUSTOMER_NOTE, MAX_CHANGE_SUMMARY_LEN, MAX_CUSTOMER_LEN, } from '../../objects/customer-notes.js';
|
|
3
3
|
import { sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { parseJsonBody } from '../validation.js';
|
|
5
|
-
import { saveFor } from '../../api/objects.js';
|
|
6
|
-
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute } from './object-routes.js';
|
|
5
|
+
import { saveFor } from '../../api/objects/objects.js';
|
|
6
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
7
7
|
const noteRoutes = {
|
|
8
8
|
noun: 'customer note',
|
|
9
9
|
field: 'note',
|
|
@@ -16,7 +16,8 @@ const noteRoutes = {
|
|
|
16
16
|
return (existing, id) => ({ customer: existing.customer, note, changeSummary, supersedesNoteId: id });
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
|
-
// Routes: customer notes under /v1/customer-notes (create, list, show, supersede, close), mirroring /v1/project-briefs.
|
|
19
|
+
// Routes: customer notes under /v1/customer-notes (create, list, show, supersede, close), mirroring /v1/project-briefs.
|
|
20
|
+
// The store validates and throws;
|
|
20
21
|
// the boundary maps validation -> 400, not-found -> 404, not-active -> 409.
|
|
21
22
|
export async function handleCreateCustomerNote(rr) {
|
|
22
23
|
const { ctx } = rr;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateDecision(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListDecisions(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleSupersedeDecision(rr: AuthedRouteRequest
|
|
5
|
-
export declare function handleCloseDecision(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleGetDecision(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreateDecision(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListDecisions(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handleSupersedeDecision(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseDecision(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetDecision(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=decisions.d.ts.map
|
|
@@ -4,10 +4,17 @@ import { HttpError, sendJson } from '../../util/http-util.js';
|
|
|
4
4
|
import { NotFoundError } from '../../core/api-errors.js';
|
|
5
5
|
import { isJsonNumber } from '../../util/json.js';
|
|
6
6
|
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
7
|
-
import { saveFor } from '../../api/objects.js';
|
|
8
|
-
import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
|
|
9
|
-
const decisionRoutes = {
|
|
7
|
+
import { saveFor } from '../../api/objects/objects.js';
|
|
8
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, } from './object-routes.js';
|
|
9
|
+
const decisionRoutes = {
|
|
10
|
+
noun: 'decision',
|
|
11
|
+
field: 'decision',
|
|
12
|
+
listField: 'decisions',
|
|
13
|
+
object: DECISION,
|
|
14
|
+
};
|
|
10
15
|
const TEXT = { max: MAX_SHORT_FIELD_LEN, untrimmed: true };
|
|
16
|
+
// The HTTP surface has no legacy --supersedes <memory-id> constraint, so it supersedes by table id and never weakens a
|
|
17
|
+
// memory mirror.
|
|
11
18
|
function supersededId(body) {
|
|
12
19
|
const raw = body['supersedesDecisionId'];
|
|
13
20
|
if (raw === undefined || raw === null)
|
|
@@ -17,8 +24,6 @@ function supersededId(body) {
|
|
|
17
24
|
}
|
|
18
25
|
return raw;
|
|
19
26
|
}
|
|
20
|
-
// Routes: /v1/decisions (create, list, show, supersede, close), Bearer-authed and tenant-scoped; status is validated against VALID_DECISION_STATES.
|
|
21
|
-
// The HTTP surface has no legacy --supersedes <memory-id> constraint, so it supersedes by table id and never weakens a memory mirror.
|
|
22
27
|
export async function handleCreateDecision(rr) {
|
|
23
28
|
const { req, res, ctx } = rr;
|
|
24
29
|
const body = await parseJsonBody(req, ctx);
|
|
@@ -41,7 +46,8 @@ export async function handleCreateDecision(rr) {
|
|
|
41
46
|
export function handleListDecisions(rr) {
|
|
42
47
|
return listRoute(decisionRoutes, rr);
|
|
43
48
|
}
|
|
44
|
-
// Not on supersedeRoute: this one answers 201 and leaves the missing-row 404 to the store, where the other five answer
|
|
49
|
+
// Not on supersedeRoute: this one answers 201 and leaves the missing-row 404 to the store, where the other five answer
|
|
50
|
+
// 200 after their own lookup.
|
|
45
51
|
export async function handleSupersedeDecision(rr, match) {
|
|
46
52
|
const oldId = parseInt(match[1], 10);
|
|
47
53
|
const { ctx } = rr;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateIncident(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListIncidents(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleResolveIncident(rr: AuthedRouteRequest
|
|
5
|
-
export declare function handleCloseIncident(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleGetIncident(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreateIncident(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListIncidents(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handleResolveIncident(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseIncident(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetIncident(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=incidents.d.ts.map
|
|
@@ -4,10 +4,15 @@ import { HttpError, sendJson } from '../../util/http-util.js';
|
|
|
4
4
|
import { NotFoundError } from '../../core/api-errors.js';
|
|
5
5
|
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
6
6
|
import { isJsonString } from '../../util/json.js';
|
|
7
|
-
import { objectsOf } from '../../api/objects.js';
|
|
8
|
-
import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
|
|
7
|
+
import { objectsOf } from '../../api/objects/objects.js';
|
|
8
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, } from './object-routes.js';
|
|
9
9
|
const MAX_LINKED_MEMORY_IDS = 256;
|
|
10
|
-
const incidentRoutes = {
|
|
10
|
+
const incidentRoutes = {
|
|
11
|
+
noun: 'incident',
|
|
12
|
+
field: 'incident',
|
|
13
|
+
listField: 'incidents',
|
|
14
|
+
object: INCIDENT,
|
|
15
|
+
};
|
|
11
16
|
function linkedMemoryIds(body) {
|
|
12
17
|
const raw = body['linkedMemoryIds'];
|
|
13
18
|
if (raw === undefined || raw === null)
|
|
@@ -24,7 +29,8 @@ function linkedMemoryIds(body) {
|
|
|
24
29
|
}
|
|
25
30
|
return raw;
|
|
26
31
|
}
|
|
27
|
-
// Routes: /v1/incidents (open, list, show, resolve, close), mirroring /v1/decisions; status is validated against
|
|
32
|
+
// Routes: /v1/incidents (open, list, show, resolve, close), mirroring /v1/decisions; status is validated against
|
|
33
|
+
// VALID_INCIDENT_STATES.
|
|
28
34
|
// Lifecycle is open->resolved->closed (no supersede), so linkedMemoryIds replaces supersedesDecisionId on create.
|
|
29
35
|
export async function handleCreateIncident(rr) {
|
|
30
36
|
const { req, res, opts, ctx } = rr;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateMemory({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleGetGraph({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleArchiveMemory({ req, res, ctx }: AuthedRouteRequest
|
|
5
|
-
export declare function handleSupersedeMemory({ req, res, ctx }: AuthedRouteRequest
|
|
6
|
-
export declare function handlePromoteMemory({ res, ctx }: AuthedRouteRequest
|
|
7
|
-
export declare function handleForgetMemory({ res, ctx }: AuthedRouteRequest
|
|
8
|
-
export declare function handleApplyOutcome({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
|
|
9
|
-
export declare function handleSleep({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
|
|
2
|
+
export declare function handleCreateMemory({ req, res, ctx }: AuthedRouteRequest<'entryWrites'>): Promise<void>;
|
|
3
|
+
export declare function handleGetGraph({ res, ctx, query }: AuthedRouteRequest<'graphReads'>): Promise<void>;
|
|
4
|
+
export declare function handleArchiveMemory({ req, res, ctx }: AuthedRouteRequest<'entryWrites'>, archiveMatch: Record<string, string>): Promise<void>;
|
|
5
|
+
export declare function handleSupersedeMemory({ req, res, ctx }: AuthedRouteRequest<'entryWrites'>, supersedeMatch: Record<string, string>): Promise<void>;
|
|
6
|
+
export declare function handlePromoteMemory({ res, ctx }: AuthedRouteRequest<'localFiles'>, promoteMatch: Record<string, string>): Promise<void>;
|
|
7
|
+
export declare function handleForgetMemory({ res, ctx }: AuthedRouteRequest<'entryWrites'>, idMatch: Record<string, string>): Promise<void>;
|
|
8
|
+
export declare function handleApplyOutcome({ req, res, ctx }: AuthedRouteRequest<'entryWrites'>): Promise<void>;
|
|
9
|
+
export declare function handleSleep({ req, res, ctx }: AuthedRouteRequest<'localFiles'>): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=memories.d.ts.map
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// Memory write routes: create, graph, archive, supersede, promote, forget, outcome, sleep.
|
|
2
|
-
import { graphRows } from '../../api/graph.js';
|
|
2
|
+
import { graphEntityOf, graphRows } from '../../api/objects/graph.js';
|
|
3
3
|
import { archiveRaw, forget, outcome, outcomeForLastRecall, promote, remember, supersede } from '../../api/index.js';
|
|
4
4
|
import { MEMORY_KINDS } from '../../core/memory.js';
|
|
5
5
|
import { graphModelOf } from '../../graph/view.js';
|
|
6
|
-
import { MAX_ENTITY_NAME_LEN } from '../../store/graph-rows.js';
|
|
7
6
|
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
8
7
|
import { sleepInChild } from '../sleep-offload.js';
|
|
9
|
-
import { getCallerProject, getString, getStringArray, isSetMember, parseJsonBody, parseListLimit, validateIdSegment } from '../validation.js';
|
|
8
|
+
import { getCallerProject, getString, getStringArray, isSetMember, parseJsonBody, parseListLimit, validateIdSegment, } from '../validation.js';
|
|
10
9
|
import { isJsonString, isJsonBoolean } from '../../util/json.js';
|
|
11
10
|
const VALID_KINDS = new Set(MEMORY_KINDS);
|
|
12
11
|
// POST /v1/memories
|
|
@@ -39,14 +38,9 @@ export async function handleCreateMemory({ req, res, ctx }) {
|
|
|
39
38
|
}
|
|
40
39
|
// GET /v1/graph?entity=NAME&limit=N — read-only entity/relation graph (tenant-scoped)
|
|
41
40
|
export async function handleGetGraph({ res, ctx, query }) {
|
|
42
|
-
const
|
|
43
|
-
// Cap at the graph entity-name cap (512), not the id-shaped 256, so a valid
|
|
44
|
-
// long decision/policy name remains focusable over HTTP.
|
|
45
|
-
if (entityRaw !== null && entityRaw.length > MAX_ENTITY_NAME_LEN) {
|
|
46
|
-
throw new HttpError(400, `entity exceeds the ${MAX_ENTITY_NAME_LEN}-character cap`);
|
|
47
|
-
}
|
|
41
|
+
const entity = graphEntityOf(query.get('entity'));
|
|
48
42
|
const limit = parseListLimit(query.get('limit'));
|
|
49
|
-
const rows = await graphRows(ctx, { entity
|
|
43
|
+
const rows = await graphRows(ctx, { entity, limit });
|
|
50
44
|
sendJson(res, 200, graphModelOf(rows));
|
|
51
45
|
return;
|
|
52
46
|
}
|
|
@@ -85,8 +79,10 @@ export async function handleForgetMemory({ res, ctx }, idMatch) {
|
|
|
85
79
|
sendJson(res, 200, result);
|
|
86
80
|
return;
|
|
87
81
|
}
|
|
88
|
-
// POST /v1/outcome: applies a positive/negative outcome to memory ids; without ids it falls back to the last-recall
|
|
89
|
-
//
|
|
82
|
+
// POST /v1/outcome: applies a positive/negative outcome to memory ids; without ids it falls back to the last-recall
|
|
83
|
+
// path (api.outcomeForLastRecall)
|
|
84
|
+
// and returns {applied, ids}, so callers can tell "no recent recall" from "all ids skipped". Each applied id writes one
|
|
85
|
+
// audit_log row (op='outcome').
|
|
90
86
|
export async function handleApplyOutcome({ req, res, ctx }) {
|
|
91
87
|
const body = await parseJsonBody(req, ctx);
|
|
92
88
|
const good = body['good'];
|
|
@@ -103,7 +99,8 @@ export async function handleApplyOutcome({ req, res, ctx }) {
|
|
|
103
99
|
if (!idsRaw.every(isNonEmptyId)) {
|
|
104
100
|
throw new HttpError(400, 'ids must be an array of non-empty strings');
|
|
105
101
|
}
|
|
106
|
-
// DoS cap on ids.length (each id costs ~3 DB ops): N=1000 keeps per-request work sub-second on SQLite. Auth runs
|
|
102
|
+
// DoS cap on ids.length (each id costs ~3 DB ops): N=1000 keeps per-request work sub-second on SQLite. Auth runs
|
|
103
|
+
// first, so only a caller with a key
|
|
107
104
|
// reaches it.
|
|
108
105
|
if (idsRaw.length > 1000) {
|
|
109
106
|
throw new HttpError(400, 'ids exceeds 1000-id cap');
|
|
@@ -115,15 +112,13 @@ export async function handleApplyOutcome({ req, res, ctx }) {
|
|
|
115
112
|
sendJson(res, 200, { applied });
|
|
116
113
|
}
|
|
117
114
|
else {
|
|
118
|
-
// The last recall's ids live in hippo.db alone, so a client of another store must send the ids its recall returned.
|
|
119
|
-
if (ctx.store !== undefined && ctx.store.kind !== 'sqlite')
|
|
120
|
-
throw new HttpError(501, 'this store keeps no last recall: send the ids your recall returned');
|
|
121
115
|
const result = await outcomeForLastRecall(ctx, good);
|
|
122
116
|
sendJson(res, 200, result);
|
|
123
117
|
}
|
|
124
118
|
return;
|
|
125
119
|
}
|
|
126
|
-
// POST /v1/sleep: host-wide consolidation (consolidate, dedup, audit, share, ambient); api.sleep spans the WHOLE
|
|
120
|
+
// POST /v1/sleep: host-wide consolidation (consolidate, dedup, audit, share, ambient); api.sleep spans the WHOLE
|
|
121
|
+
// hippoRoot, cross-tenant by design, so the
|
|
127
122
|
// row's host-admin-local gate is the trust boundary. Body {dry_run?, no_share?}; returns SleepResult JSON.
|
|
128
123
|
export async function handleSleep({ req, res, ctx }) {
|
|
129
124
|
const body = await parseJsonBody(req, ctx);
|
|
@@ -16,7 +16,10 @@ export interface ObjectRouteConfig<K extends ObjectKind> {
|
|
|
16
16
|
}
|
|
17
17
|
export interface VersionedRouteConfig<K extends SavableKind, W> extends ObjectRouteConfig<K> {
|
|
18
18
|
readonly object: SavableDescriptor<K, W>;
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Checks the body, then returns the successor's write; split in two so a bad body answers 400 before a missing row
|
|
21
|
+
* answers 404.
|
|
22
|
+
*/
|
|
20
23
|
readonly revise: (body: Record<string, JsonValue>) => (existing: ObjectByKind[K], id: number) => W;
|
|
21
24
|
}
|
|
22
25
|
export interface RequiredStringRule {
|
|
@@ -28,8 +31,8 @@ export interface RequiredStringRule {
|
|
|
28
31
|
}
|
|
29
32
|
export declare function requiredString(body: Record<string, JsonValue>, key: string, rule: RequiredStringRule): string;
|
|
30
33
|
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: AuthedRouteRequest): Promise<void>;
|
|
32
|
-
export declare function getRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest
|
|
33
|
-
export declare function closeRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest
|
|
34
|
-
export declare function supersedeRoute<K extends SavableKind, W>(cfg: VersionedRouteConfig<K, W>, rr: AuthedRouteRequest
|
|
34
|
+
export declare function listRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
35
|
+
export declare function getRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
36
|
+
export declare function closeRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
37
|
+
export declare function supersedeRoute<K extends SavableKind, W>(cfg: VersionedRouteConfig<K, W>, rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
35
38
|
//# sourceMappingURL=object-routes.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// List, get, close and supersede handlers shared by the typed-object routes; each route file passes one config.
|
|
2
2
|
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
3
3
|
import { isJsonString } from '../../util/json.js';
|
|
4
|
-
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
4
|
+
import { objectsOf, saveFor } from '../../api/objects/objects.js';
|
|
5
5
|
import { closeObject, listObjects, objectById } from '../../objects/lifecycle.js';
|
|
6
6
|
import { byCreatedAt, pageOf, parseCursor } from '../cursor.js';
|
|
7
7
|
import { isSetMember, parseJsonBody, parseListLimit } from '../validation.js';
|
|
@@ -56,7 +56,9 @@ export async function getRoute(cfg, rr, match) {
|
|
|
56
56
|
export async function closeRoute(cfg, rr, match) {
|
|
57
57
|
const id = parseInt(match[1], 10);
|
|
58
58
|
const { ctx } = rr;
|
|
59
|
-
sendJson(rr.res, 200, {
|
|
59
|
+
sendJson(rr.res, 200, {
|
|
60
|
+
[cfg.field]: await closeObject(objectsOf(ctx), cfg.object, ctx.tenantId, id, ctx.actor.subject),
|
|
61
|
+
});
|
|
60
62
|
}
|
|
61
63
|
export async function supersedeRoute(cfg, rr, match) {
|
|
62
64
|
const id = parseInt(match[1], 10);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreatePolicy(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListPolicies(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handlePoliciesAsOf(rr: AuthedRouteRequest): Promise<void>;
|
|
5
|
-
export declare function handleSupersedePolicy(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleClosePolicy(rr: AuthedRouteRequest
|
|
7
|
-
export declare function handleGetPolicy(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreatePolicy(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListPolicies(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handlePoliciesAsOf(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
5
|
+
export declare function handleSupersedePolicy(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleClosePolicy(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
|
+
export declare function handleGetPolicy(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=policies.d.ts.map
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import { policiesAsOf, POLICY } from '../../objects/policies.js';
|
|
3
3
|
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
5
|
-
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
5
|
+
import { objectsOf, saveFor } from '../../api/objects/objects.js';
|
|
6
6
|
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
7
|
-
// The date fields get a type and length check only: the store parses the date, and the cap bounds a junk string before
|
|
7
|
+
// The date fields get a type and length check only: the store parses the date, and the cap bounds a junk string before
|
|
8
|
+
// it reaches the Date parser.
|
|
8
9
|
const MAX_DATE_LEN = 64;
|
|
9
10
|
const policyRoutes = {
|
|
10
11
|
noun: 'policy',
|
|
@@ -16,10 +17,16 @@ const policyRoutes = {
|
|
|
16
17
|
const validFrom = optionalString(body, 'validFrom', MAX_DATE_LEN);
|
|
17
18
|
const validTo = optionalString(body, 'validTo', MAX_DATE_LEN);
|
|
18
19
|
const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
|
|
19
|
-
return (existing, id) => ({
|
|
20
|
+
return (existing, id) => ({
|
|
21
|
+
policyName: existing.policyName,
|
|
22
|
+
policyText,
|
|
23
|
+
validFrom,
|
|
24
|
+
validTo,
|
|
25
|
+
changeSummary,
|
|
26
|
+
supersedesPolicyId: id,
|
|
27
|
+
});
|
|
20
28
|
},
|
|
21
29
|
};
|
|
22
|
-
// The as-of route is registered BEFORE /:id so the literal 'asof' is matched first; date errors surface as 400.
|
|
23
30
|
export async function handleCreatePolicy(rr) {
|
|
24
31
|
const { ctx } = rr;
|
|
25
32
|
const body = await parseJsonBody(rr.req, ctx);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreatePrediction({ req, res, ctx, opts }: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListPredictions({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handlePredictionStats({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
|
|
5
|
-
export declare function handleGetPrediction({ res, ctx }: AuthedRouteRequest
|
|
6
|
-
export declare function handleClosePrediction({ req, res, ctx }: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreatePrediction({ req, res, ctx, opts }: AuthedRouteRequest<'predictions'>): Promise<void>;
|
|
3
|
+
export declare function handleListPredictions({ res, ctx, query }: AuthedRouteRequest<'predictions'>): Promise<void>;
|
|
4
|
+
export declare function handlePredictionStats({ res, ctx, query }: AuthedRouteRequest<'predictions'>): Promise<void>;
|
|
5
|
+
export declare function handleGetPrediction({ res, ctx }: AuthedRouteRequest<'predictions'>, predictionByIdMatch: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleClosePrediction({ req, res, ctx }: AuthedRouteRequest<'predictions'>, predictionCloseMatch: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=predictions.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// /v1/predictions routes.
|
|
2
|
-
import { closePrediction, listPredictions, predictionBaserate, predictionById, savePrediction } from '../../api/predictions.js';
|
|
2
|
+
import { closePrediction, listPredictions, predictionBaserate, predictionById, savePrediction, } from '../../api/objects/predictions.js';
|
|
3
3
|
import { loadConfig } from '../../core/config.js';
|
|
4
4
|
import { predictionMirror } from '../../store/predictions.js';
|
|
5
5
|
import { VALID_CLOSURE_STATES } from '../../core/prediction.js';
|
|
@@ -8,7 +8,8 @@ import { MAX_ID_LEN } from '../../util/limits.js';
|
|
|
8
8
|
import { byCreatedAt, pageOf, parseCursor } from '../cursor.js';
|
|
9
9
|
import { isSetMember, MAX_SHORT_FIELD_LEN, parseJsonBody, parseListLimit } from '../validation.js';
|
|
10
10
|
import { isJsonString, isJsonNumber } from '../../util/json.js';
|
|
11
|
-
// Routes: /v1/predictions (create, list, show, close), Bearer-authed and tenant-scoped; closure_state is validated
|
|
11
|
+
// Routes: /v1/predictions (create, list, show, close), Bearer-authed and tenant-scoped; closure_state is validated
|
|
12
|
+
// against VALID_CLOSURE_STATES.
|
|
12
13
|
// DoS caps: claim MAX_SHORT_FIELD_LEN chars, closureNote 2048.
|
|
13
14
|
export async function handleCreatePrediction({ req, res, ctx, opts }) {
|
|
14
15
|
const body = await parseJsonBody(req, ctx);
|
|
@@ -52,7 +53,10 @@ export async function handleCreatePrediction({ req, res, ctx, opts }) {
|
|
|
52
53
|
const prediction = await savePrediction(ctx, { ...claimed, mirror });
|
|
53
54
|
sendJson(res, 201, { prediction });
|
|
54
55
|
}
|
|
55
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Which rows a list reads; a status other than all or open needs a class, as no store reads one closed state across
|
|
58
|
+
* classes.
|
|
59
|
+
*/
|
|
56
60
|
function listFilter(classTag, status) {
|
|
57
61
|
if (status === 'all')
|
|
58
62
|
return { classTag };
|
|
@@ -75,7 +79,8 @@ export async function handleListPredictions({ res, ctx, query }) {
|
|
|
75
79
|
const page = pageOf(predictions, limit, byCreatedAt);
|
|
76
80
|
sendJson(res, 200, { predictions: page.items, next_cursor: page.nextCursor });
|
|
77
81
|
}
|
|
78
|
-
// Reference-class / planning-fallacy detector; registered BEFORE /v1/predictions/:id so dispatch order cannot matter
|
|
82
|
+
// Reference-class / planning-fallacy detector; registered BEFORE /v1/predictions/:id so dispatch order cannot matter
|
|
83
|
+
// ('stats' is not a number, but routing
|
|
79
84
|
// it first is safer).
|
|
80
85
|
export async function handlePredictionStats({ res, ctx, query }) {
|
|
81
86
|
const classTag = query.get('class');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateProcess(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListProcesses(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleSupersedeProcess(rr: AuthedRouteRequest
|
|
5
|
-
export declare function handleCloseProcess(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleGetProcess(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreateProcess(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListProcesses(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handleSupersedeProcess(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
5
|
+
export declare function handleCloseProcess(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleGetProcess(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=processes.d.ts.map
|
|
@@ -3,9 +3,10 @@ import { MAX_PROCESS_STEP_LEN, MAX_PROCESS_STEPS, PROCESS } from '../../objects/
|
|
|
3
3
|
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
5
5
|
import { isJsonString } from '../../util/json.js';
|
|
6
|
-
import { saveFor } from '../../api/objects.js';
|
|
7
|
-
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute } from './object-routes.js';
|
|
8
|
-
// HTTP-boundary validation for an untrusted process `steps` body; saveProcess re-validates and trims, this is the
|
|
6
|
+
import { saveFor } from '../../api/objects/objects.js';
|
|
7
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
8
|
+
// HTTP-boundary validation for an untrusted process `steps` body; saveProcess re-validates and trims, this is the
|
|
9
|
+
// fail-fast 400 gate.
|
|
9
10
|
function validateProcessStepsBody(raw) {
|
|
10
11
|
if (raw === undefined || raw === null)
|
|
11
12
|
return [];
|
|
@@ -41,11 +42,19 @@ const processRoutes = {
|
|
|
41
42
|
}
|
|
42
43
|
const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
|
|
43
44
|
const description = optionalString(body, 'description', MAX_SHORT_FIELD_LEN);
|
|
44
|
-
return (existing, id) => ({
|
|
45
|
+
return (existing, id) => ({
|
|
46
|
+
processName: existing.processName,
|
|
47
|
+
steps,
|
|
48
|
+
description,
|
|
49
|
+
changeSummary,
|
|
50
|
+
supersedesProcessId: id,
|
|
51
|
+
});
|
|
45
52
|
},
|
|
46
53
|
};
|
|
47
|
-
// Routes: /v1/processes (create, list, show, supersede, close), mirroring /v1/decisions; supersede creates a new
|
|
48
|
-
//
|
|
54
|
+
// Routes: /v1/processes (create, list, show, supersede, close), mirroring /v1/decisions; supersede creates a new
|
|
55
|
+
// version that reuses the predecessor's name.
|
|
56
|
+
// DoS caps: processName/description/changeSummary MAX_SHORT_FIELD_LEN, steps MAX_PROCESS_STEPS x MAX_PROCESS_STEP_LEN
|
|
57
|
+
// (validateProcessStepsBody).
|
|
49
58
|
export async function handleCreateProcess(rr) {
|
|
50
59
|
const { ctx } = rr;
|
|
51
60
|
const body = await parseJsonBody(rr.req, ctx);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AuthedRouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateProjectBrief(rr: AuthedRouteRequest): Promise<void>;
|
|
3
|
-
export declare function handleListProjectBriefs(rr: AuthedRouteRequest): Promise<void>;
|
|
4
|
-
export declare function handleRefreshProjectBrief(rr: AuthedRouteRequest): Promise<void>;
|
|
5
|
-
export declare function handleSupersedeProjectBrief(rr: AuthedRouteRequest
|
|
6
|
-
export declare function handleCloseProjectBrief(rr: AuthedRouteRequest
|
|
7
|
-
export declare function handleGetProjectBrief(rr: AuthedRouteRequest
|
|
2
|
+
export declare function handleCreateProjectBrief(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
3
|
+
export declare function handleListProjectBriefs(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
4
|
+
export declare function handleRefreshProjectBrief(rr: AuthedRouteRequest<'objects'>): Promise<void>;
|
|
5
|
+
export declare function handleSupersedeProjectBrief(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleCloseProjectBrief(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
7
|
+
export declare function handleGetProjectBrief(rr: AuthedRouteRequest<'objects'>, match: RegExpMatchArray): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=project-briefs.d.ts.map
|