hippo-memory 1.68.0 → 1.70.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 -3
- 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 +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.d.ts +3 -1
- package/dist/agent-memories/copilot.js +5 -4
- package/dist/agent-memories/files.js +3 -2
- 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/report.d.ts +1 -1
- package/dist/agent-memories/report.js +1 -1
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +1 -1
- package/dist/agent-memories/sync.js +24 -33
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +2 -2
- package/dist/api/assemble.js +42 -32
- package/dist/api/audit.d.ts +4 -7
- package/dist/api/audit.js +6 -20
- package/dist/api/auth.d.ts +5 -18
- package/dist/api/auth.js +44 -194
- 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} +2 -2
- package/dist/{availability.js → api/availability.js} +12 -29
- 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 +14 -4
- package/dist/api/context-select.js +50 -60
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +113 -85
- package/dist/api/dormant.d.ts +3 -3
- package/dist/api/dormant.js +38 -107
- package/dist/api/drill-down.d.ts +2 -2
- package/dist/api/drill-down.js +37 -65
- package/dist/api/forget.d.ts +4 -13
- package/dist/api/forget.js +13 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/index.d.ts +26 -0
- package/dist/api/index.js +29 -0
- package/dist/api/instruction-detect.js +74 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +20 -0
- package/dist/api/ledger-db.js +79 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +36 -0
- package/dist/api/outcome.d.ts +9 -46
- package/dist/api/outcome.js +15 -57
- 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/promote.d.ts +7 -18
- package/dist/api/promote.js +30 -152
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
- package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +112 -0
- package/dist/{recall-history.js → api/recall-history.js} +30 -25
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
- 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 +41 -16
- package/dist/api/recall.d.ts +1 -1
- package/dist/api/recall.js +39 -37
- package/dist/api/remember.d.ts +12 -13
- package/dist/api/remember.js +38 -27
- 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 -7
- package/dist/api/sleep-run.js +63 -75
- package/dist/api/sleep.d.ts +1 -1
- package/dist/api/tokens.d.ts +2 -2
- package/dist/api/tokens.js +9 -21
- package/dist/api/types.d.ts +2 -2
- package/dist/api/types.js +1 -1
- 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 +1 -1
- package/dist/capture/command.js +54 -41
- 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 +4 -1
- package/dist/capture/compact.js +59 -22
- 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} +48 -94
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
- package/dist/capture/copilot-transcript.d.ts +3 -0
- package/dist/capture/copilot-transcript.js +9 -2
- 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} +1 -5
- package/dist/{session-digest.js → capture/session-digest.js} +17 -23
- 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.d.ts +13 -0
- package/dist/capture/session-worker.js +196 -0
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.js +68 -74
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
- package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +77 -72
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +18 -20
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +59 -181
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +25 -23
- package/dist/{client.d.ts → cli/client.d.ts} +1 -1
- package/dist/{client.js → cli/client.js} +1 -1
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +39 -0
- package/dist/cli/context.d.ts +2 -13
- package/dist/cli/context.js +41 -71
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +109 -99
- package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
- package/dist/cli/curate.d.ts +9 -9
- package/dist/cli/curate.js +177 -149
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +46 -34
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +108 -218
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +43 -31
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +35 -19
- package/dist/cli/flag-values.d.ts +25 -0
- package/dist/cli/flag-values.js +103 -0
- package/dist/cli/flags.d.ts +303 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +39 -34
- package/dist/cli/hook-runtime.d.ts +49 -0
- package/dist/cli/hook-runtime.js +155 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +151 -118
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +110 -0
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +9 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +31 -27
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +65 -0
- package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
- package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +77 -280
- package/dist/cli/print.d.ts +18 -0
- package/dist/cli/print.js +85 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -49
- package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +101 -150
- package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
- package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
- package/dist/cli/remember.d.ts +1 -3
- package/dist/cli/remember.js +124 -103
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
- package/dist/{scheduler.js → cli/scheduler.js} +13 -7
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +34 -4
- package/dist/cli/session-hooks.d.ts +4 -4
- package/dist/cli/session-hooks.js +265 -191
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +111 -45
- package/dist/cli/shared.d.ts +5 -95
- package/dist/cli/shared.js +18 -369
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +31 -55
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +2 -8
- package/dist/cli/sleep.js +20 -76
- package/dist/cli/status.d.ts +3 -3
- package/dist/cli/status.js +39 -41
- package/dist/{stdin.js → cli/stdin.js} +6 -6
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +68 -42
- package/dist/cli/usage.js +8 -3
- package/dist/cli.d.ts +289 -5
- package/dist/cli.js +184 -117
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +1 -1
- package/dist/connectors/github/backfill.js +29 -66
- package/dist/connectors/github/cli-impl.js +59 -74
- package/dist/connectors/github/deletion.d.ts +5 -6
- package/dist/connectors/github/deletion.js +18 -52
- package/dist/connectors/github/dlq.d.ts +7 -61
- package/dist/connectors/github/dlq.js +19 -119
- package/dist/connectors/github/ingest.d.ts +2 -31
- package/dist/connectors/github/ingest.js +20 -82
- package/dist/connectors/github/octokit-client.d.ts +1 -1
- package/dist/connectors/github/octokit-client.js +2 -1
- package/dist/connectors/github/tenant-routing.d.ts +2 -2
- package/dist/connectors/github/tenant-routing.js +10 -36
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/types.d.ts +1 -1
- package/dist/connectors/github/types.js +15 -18
- package/dist/connectors/github/webhook.d.ts +3 -2
- package/dist/connectors/github/webhook.js +84 -87
- package/dist/connectors/slack/backfill.d.ts +1 -1
- package/dist/connectors/slack/backfill.js +5 -29
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -48
- package/dist/connectors/slack/dlq.d.ts +7 -49
- package/dist/connectors/slack/dlq.js +25 -118
- package/dist/connectors/slack/ingest.d.ts +5 -18
- package/dist/connectors/slack/ingest.js +27 -90
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.js +13 -14
- package/dist/connectors/slack/transform.d.ts +1 -1
- package/dist/connectors/slack/types.d.ts +1 -1
- package/dist/connectors/slack/types.js +3 -12
- package/dist/connectors/slack/web-client.js +2 -2
- package/dist/connectors/slack/webhook.d.ts +3 -2
- package/dist/connectors/slack/webhook.js +75 -82
- package/dist/connectors/slack/workspaces.d.ts +4 -17
- package/dist/connectors/slack/workspaces.js +4 -34
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +4 -4
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
- package/dist/{dag.js → consolidate/dag.js} +60 -81
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +28 -22
- package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
- package/dist/consolidate/flush-units.d.ts +2 -2
- package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
- package/dist/consolidate/half-life-migration.js +106 -0
- package/dist/consolidate/llm-passes.js +8 -8
- package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
- package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
- package/dist/consolidate/merge.js +57 -54
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
- package/dist/consolidate/physics-pass.js +46 -46
- package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
- package/dist/{replay.js → consolidate/replay.js} +2 -2
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +1 -1
- package/dist/consolidate/sleep.js +64 -134
- package/dist/{trace.js → consolidate/trace.js} +4 -6
- package/dist/consolidate/traces.js +34 -29
- package/dist/{ablation.js → core/ablation.js} +1 -1
- 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.js → core/ambient.js} +12 -10
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/core/capture-contract.js +149 -0
- package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
- package/dist/{compare.js → core/compare.js} +10 -3
- package/dist/{config.d.ts → core/config.d.ts} +6 -6
- package/dist/{config.js → core/config.js} +99 -72
- package/dist/core/handoff.js +87 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
- package/dist/{memory.d.ts → core/memory.d.ts} +19 -5
- package/dist/{memory.js → core/memory.js} +117 -82
- package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
- package/dist/{physics.js → core/physics.js} +2 -1
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
- package/dist/{project-identity.js → core/project-identity.js} +5 -17
- package/dist/{project-remote.js → core/project-remote.js} +4 -4
- package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +5 -0
- package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -1
- package/dist/{salience.js → core/salience.js} +35 -20
- 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} +5 -5
- 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} +9 -9
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
- package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +18 -1
- package/dist/db/busy.js +74 -9
- package/dist/db/connect.d.ts +10 -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 +25 -30
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -35
- package/dist/db/migrations/v16.js +29 -26
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v20.js +4 -2
- package/dist/db/migrations/v22.js +39 -36
- package/dist/db/migrations/v24.js +27 -22
- package/dist/db/migrations/v29.js +37 -32
- package/dist/db/migrations/v31.js +36 -31
- package/dist/db/migrations/v35.js +1 -1
- package/dist/db/migrations/v39.js +1 -1
- package/dist/db/migrations/v40.js +15 -14
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +1 -1
- package/dist/db/migrations/v45.js +1 -1
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +1 -1
- 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/v52.js +1 -1
- package/dist/db/open.d.ts +9 -1
- package/dist/db/open.js +21 -4
- package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
- package/dist/{physics-state.js → db/physics-state.js} +9 -16
- package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
- 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} +4 -2
- package/dist/{vector-store.js → db/vector-store.js} +76 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +105 -136
- 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 +3 -3
- package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
- package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
- package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
- package/dist/{eval.js → eval/eval.js} +29 -22
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
- package/dist/{judgment.js → eval/judgment.js} +4 -9
- package/dist/extensions/openclaw-plugin/index.js +1 -2
- 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} +6 -6
- package/dist/{graph-extract.js → graph/extract.js} +37 -52
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
- package/dist/{graph-recall.js → graph/recall.js} +55 -36
- package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
- package/dist/{graph-stream.js → graph/stream.js} +9 -7
- package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
- package/dist/{graph-view.js → graph/view.js} +127 -167
- 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 +14 -15
- package/dist/hooks/copilot.d.ts +48 -13
- package/dist/hooks/copilot.js +124 -39
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +3 -1
- package/dist/hooks/json-hooks.js +40 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +7 -5
- package/dist/hooks/shared.js +19 -8
- package/dist/importers/core.d.ts +2 -6
- package/dist/importers/core.js +41 -39
- package/dist/importers/markdown-parse.d.ts +1 -10
- package/dist/importers/markdown-parse.js +2 -19
- package/dist/importers/markdown.js +2 -1
- package/dist/importers/sources.js +50 -46
- package/dist/importers/vault.js +71 -92
- package/dist/index.d.ts +22 -22
- package/dist/index.js +21 -21
- package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
- package/dist/{autolearn.js → learn/autolearn.js} +13 -11
- 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 +125 -0
- package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
- package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
- package/dist/{invalidation.js → learn/invalidation.js} +83 -99
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +37 -60
- 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.d.ts +2 -2
- package/dist/mcp/memory-tools.js +12 -31
- package/dist/mcp/protocol.d.ts +6 -10
- package/dist/mcp/protocol.js +8 -14
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +68 -50
- package/dist/mcp/request.js +65 -63
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session-state.d.ts +1 -2
- package/dist/mcp/session-state.js +2 -2
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.js +69 -31
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +2 -2
- package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
- package/dist/objects/customer-notes.js +112 -0
- package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
- package/dist/objects/decisions.js +101 -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/{incidents.d.ts → objects/incidents.d.ts} +17 -44
- package/dist/objects/incidents.js +130 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
- package/dist/objects/policies.js +189 -0
- package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
- package/dist/objects/processes.js +146 -0
- package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
- package/dist/objects/project-briefs.js +255 -0
- package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
- package/dist/objects/skills.js +156 -0
- package/dist/postinstall.js +4 -2
- package/dist/predictions/planning-fallacy.d.ts +4 -76
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +27 -47
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +15 -23
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +30 -49
- package/dist/rerankers/llm.d.ts +2 -4
- package/dist/rerankers/llm.js +33 -50
- package/dist/rerankers/outage-warning.d.ts +7 -0
- package/dist/rerankers/outage-warning.js +31 -0
- package/dist/rerankers/remote.d.ts +3 -0
- package/dist/rerankers/remote.js +23 -0
- package/dist/rerankers/types.d.ts +1 -1
- 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 -1
- package/dist/search/boosts.js +34 -13
- 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/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +4 -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} +7 -5
- package/dist/{path-context.js → search/path-context.js} +3 -1
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +15 -15
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +3 -3
- package/dist/search/vector.js +17 -11
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/auth.js +26 -18
- package/dist/server/boot.d.ts +24 -0
- package/dist/server/boot.js +465 -0
- package/dist/server/client-ip.d.ts +5 -1
- package/dist/server/client-ip.js +18 -6
- 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/key-check-bounds.d.ts +8 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.js +1 -1
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +34 -24
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +10 -4
- package/dist/server/request.js +63 -12
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +209 -0
- package/dist/server/routes/admin.js +13 -8
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +32 -97
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +42 -105
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +42 -95
- package/dist/server/routes/memories.js +21 -20
- package/dist/server/routes/object-routes.d.ts +40 -0
- package/dist/server/routes/object-routes.js +80 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +40 -124
- package/dist/server/routes/predictions.js +29 -45
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +38 -118
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +38 -110
- package/dist/server/routes/recall.js +14 -12
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +37 -125
- package/dist/{server-detect.js → server/server-detect.js} +3 -2
- 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 +70 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +27 -8
- package/dist/server/validation.d.ts +3 -4
- package/dist/server/validation.js +6 -11
- package/dist/server.d.ts +41 -50
- package/dist/server.js +26 -560
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
- package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
- package/dist/{scope.js → sharing/scope.js} +1 -1
- package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
- package/dist/{shared.js → sharing/shared.js} +100 -77
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +10 -10
- package/dist/store/audit-event.d.ts +12 -6
- package/dist/store/audit-event.js +6 -5
- package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
- package/dist/{audit.js → store/audit.js} +91 -6
- package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
- package/dist/{auth.js → store/auth.js} +100 -92
- package/dist/store/candidates.d.ts +23 -12
- package/dist/store/candidates.js +87 -35
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
- package/dist/{card-detail.js → store/card-detail.js} +1 -1
- package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
- package/dist/{store-cards.js → store/cards.js} +85 -146
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +22 -5
- package/dist/store/conflicts.js +160 -109
- 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 +92 -0
- package/dist/store/delete-and-batch.d.ts +20 -24
- package/dist/store/delete-and-batch.js +64 -40
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
- 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 +51 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
- package/dist/{dormant.js → store/dormant.js} +151 -6
- package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
- package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
- package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
- package/dist/store/entry-reads.d.ts +46 -7
- package/dist/store/entry-reads.js +120 -21
- package/dist/store/entry-row.d.ts +8 -2
- package/dist/store/entry-row.js +28 -8
- package/dist/store/entry-writes.d.ts +33 -4
- package/dist/store/entry-writes.js +108 -26
- 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/{goals.d.ts → store/goals.d.ts} +6 -46
- package/dist/{goals.js → store/goals.js} +45 -94
- package/dist/store/graph-queue.d.ts +29 -0
- package/dist/store/graph-queue.js +101 -0
- package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
- package/dist/{graph/read.js → store/graph-reads.js} +63 -115
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
- package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
- package/dist/store/graph-view-rows.d.ts +12 -0
- package/dist/store/graph-view-rows.js +67 -0
- package/dist/store/graph-writes.d.ts +58 -0
- package/dist/store/graph-writes.js +256 -0
- package/dist/store/half-life.d.ts +34 -0
- package/dist/store/half-life.js +77 -0
- package/dist/store/handoffs.d.ts +6 -3
- package/dist/store/handoffs.js +70 -31
- package/dist/store/index-and-stats.d.ts +8 -1
- package/dist/store/index-and-stats.js +51 -48
- 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 +1 -1
- package/dist/store/markdown.js +4 -3
- package/dist/store/mirrors.d.ts +5 -7
- package/dist/store/mirrors.js +39 -25
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +8 -4
- package/dist/store/open.js +34 -23
- package/dist/store/planning-fallacy-evidence.d.ts +42 -0
- package/dist/store/planning-fallacy-evidence.js +81 -0
- package/dist/store/port.d.ts +646 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
- package/dist/{predictions/store.js → store/predictions.js} +52 -67
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +5 -3
- package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
- package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
- package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +162 -0
- package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
- package/dist/{rejection.js → store/rejection.js} +3 -2
- package/dist/store/rows.d.ts +2 -3
- package/dist/store/rows.js +18 -11
- package/dist/store/search-rows.d.ts +15 -4
- package/dist/store/search-rows.js +43 -36
- package/dist/store/sessions.d.ts +18 -2
- package/dist/store/sessions.js +83 -46
- 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/sqlite/entry-writes-group.js +170 -0
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +59 -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 +28 -0
- package/dist/store/sqlite/executor.js +286 -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 +38 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +218 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +314 -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 +26 -0
- package/dist/store/sqlite/store.js +295 -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 +124 -0
- package/dist/store/sqlite/worker-ops.js +82 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +76 -0
- package/dist/store/summaries.d.ts +2 -11
- package/dist/store/summaries.js +17 -44
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/store/tenant-lookup.d.ts +1 -1
- package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
- package/dist/{tenant.js → store/tenant.js} +1 -1
- 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} +2 -9
- package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
- 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 +26 -0
- package/dist/store/vector-writes.d.ts +10 -3
- package/dist/store/vector-writes.js +35 -5
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
- package/dist/{working-memory.js → store/working-memory.js} +39 -41
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +13 -33
- 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 +67 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +46 -0
- package/dist/util/atomic-write.d.ts +3 -0
- package/dist/util/atomic-write.js +107 -0
- package/dist/util/crash-handlers.d.ts +5 -0
- package/dist/util/crash-handlers.js +30 -0
- package/dist/{env.d.ts → util/env.d.ts} +17 -2
- package/dist/{env.js → util/env.js} +22 -2
- package/dist/util/home-path.js +67 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
- package/dist/{http-retry.js → util/http-retry.js} +38 -7
- 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} +5 -2
- package/dist/{log.js → util/log.js} +12 -3
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +27 -0
- package/dist/util/request-scope.js +47 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
- 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 +18 -0
- package/dist/util/token-text.js +23 -0
- package/dist/{version.d.ts → util/version.d.ts} +1 -1
- package/dist/{version.js → util/version.js} +1 -1
- package/extensions/openclaw-plugin/index.ts +1 -5
- 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/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/capture-contract.js +0 -49
- 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/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.js +0 -326
- package/dist/extract.js +0 -133
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- 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/policies.js +0 -434
- package/dist/processes.js +0 -371
- package/dist/project-briefs.js +0 -523
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/skills.js +0 -367
- package/dist/store-port.d.ts +0 -191
- package/dist/store-port.js +0 -166
- /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/{recall-history.d.ts → api/recall-history.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/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
- /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
- /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
- /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
- /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
- /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
- /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +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/{trace.d.ts → consolidate/trace.d.ts} +0 -0
- /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
- /package/dist/{ambient.d.ts → core/ambient.d.ts} +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/{card.d.ts → core/card.d.ts} +0 -0
- /package/dist/{card.js → core/card.js} +0 -0
- /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
- /package/dist/{physics-config.js → core/physics-config.js} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{salience.d.ts → core/salience.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.d.ts → dashboard/dashboard-types.d.ts} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
- /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
- /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
- /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
- /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
- /package/dist/{rrf.js → search/rrf.js} +0 -0
- /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
- /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
- /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
- /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
- /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
- /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
- /package/dist/{yaml.js → store/yaml.js} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{home-path.d.ts → util/home-path.d.ts} +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/{secret-detect.d.ts → util/secret-detect.d.ts} +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/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
- /package/dist/{transcript-tail.js → util/transcript-tail.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,13 +1,13 @@
|
|
|
1
1
|
// /v1/processes routes.
|
|
2
|
-
import {
|
|
3
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
2
|
+
import { 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 {
|
|
5
|
+
import { parseJsonBody } from '../validation.js';
|
|
6
|
+
import { isJsonString } from '../../util/json.js';
|
|
7
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, saveFor, supersedeRoute } from './object-routes.js';
|
|
8
8
|
// HTTP-boundary validation for a process `steps` body (untrusted). Returns the
|
|
9
9
|
// step strings (saveProcess re-validates + trims, this is the fail-fast 400
|
|
10
|
-
// gate). Caps mirror src/processes.ts MAX_PROCESS_STEPS / MAX_PROCESS_STEP_LEN.
|
|
10
|
+
// gate). Caps mirror src/objects/processes.ts MAX_PROCESS_STEPS / MAX_PROCESS_STEP_LEN.
|
|
11
11
|
function validateProcessStepsBody(raw) {
|
|
12
12
|
if (raw === undefined || raw === null)
|
|
13
13
|
return [];
|
|
@@ -31,6 +31,21 @@ function validateProcessStepsBody(raw) {
|
|
|
31
31
|
// SAFETY: every item in raw was confirmed to be a string in the loop above.
|
|
32
32
|
return raw;
|
|
33
33
|
}
|
|
34
|
+
const processRoutes = {
|
|
35
|
+
noun: 'process',
|
|
36
|
+
field: 'process',
|
|
37
|
+
listField: 'processes',
|
|
38
|
+
object: PROCESS,
|
|
39
|
+
revise: (body) => {
|
|
40
|
+
const steps = validateProcessStepsBody(body['steps']);
|
|
41
|
+
if (steps.length === 0) {
|
|
42
|
+
throw new HttpError(400, 'steps is required (at least one step) for a supersession');
|
|
43
|
+
}
|
|
44
|
+
const changeSummary = optionalString(body, 'changeSummary', 4096);
|
|
45
|
+
const description = optionalString(body, 'description', 4096);
|
|
46
|
+
return (existing, id) => ({ processName: existing.processName, steps, description, changeSummary, supersedesProcessId: id });
|
|
47
|
+
},
|
|
48
|
+
};
|
|
34
49
|
// ── processes (first-class object) ──
|
|
35
50
|
//
|
|
36
51
|
// 5 routes: POST /v1/processes (new; body processName + steps[] + description),
|
|
@@ -42,121 +57,26 @@ function validateProcessStepsBody(raw) {
|
|
|
42
57
|
// caps: processName/description/changeSummary 4096, steps 200x2000
|
|
43
58
|
// (validateProcessStepsBody). Mirrors /v1/decisions; the delta lifecycle is the
|
|
44
59
|
// decision supersede path.
|
|
45
|
-
export async function handleCreateProcess(
|
|
46
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
47
|
-
const body = await parseJsonBody(req, ctx);
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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');
|
|
61
|
-
}
|
|
62
|
-
if (descriptionRaw.length > 4096) {
|
|
63
|
-
throw new HttpError(400, 'description exceeds 4096-character cap');
|
|
64
|
-
}
|
|
65
|
-
description = descriptionRaw;
|
|
66
|
-
}
|
|
67
|
-
const process = saveProcess(opts.hippoRoot, ctx.tenantId, {
|
|
68
|
-
processName,
|
|
69
|
-
steps,
|
|
70
|
-
description,
|
|
71
|
-
}, ctx.actor.subject);
|
|
72
|
-
sendJson(res, 201, { process });
|
|
73
|
-
return;
|
|
60
|
+
export async function handleCreateProcess(rr) {
|
|
61
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
62
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
63
|
+
const process = await saveFor(rr, PROCESS, ctx.tenantId, ctx.actor.subject, {
|
|
64
|
+
processName: requiredString(body, 'processName', { max: 4096 }),
|
|
65
|
+
steps: validateProcessStepsBody(body['steps']),
|
|
66
|
+
description: optionalString(body, 'description', 4096),
|
|
67
|
+
});
|
|
68
|
+
sendJson(rr.res, 201, { process });
|
|
74
69
|
}
|
|
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;
|
|
70
|
+
export function handleListProcesses(rr) {
|
|
71
|
+
return listRoute(processRoutes, rr);
|
|
97
72
|
}
|
|
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;
|
|
73
|
+
export function handleSupersedeProcess(rr, match) {
|
|
74
|
+
return supersedeRoute(processRoutes, rr, match);
|
|
144
75
|
}
|
|
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;
|
|
76
|
+
export function handleCloseProcess(rr, match) {
|
|
77
|
+
return closeRoute(processRoutes, rr, match);
|
|
151
78
|
}
|
|
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;
|
|
79
|
+
export function handleGetProcess(rr, match) {
|
|
80
|
+
return getRoute(processRoutes, rr, match);
|
|
161
81
|
}
|
|
162
82
|
//# 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
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
// /v1/project-briefs routes.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { briefFromReceipts, MAX_REPO_LEN, PROJECT_BRIEF, refreshedBrief } from '../../objects/project-briefs.js';
|
|
3
|
+
import { sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { buildContextWithAuth } from '../auth.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { parseJsonBody } from '../validation.js';
|
|
6
|
+
import { closeRoute, getRoute, listRoute, objectsOf, optionalString, requiredString, saveFor, supersedeRoute } from './object-routes.js';
|
|
7
|
+
const briefRoutes = {
|
|
8
|
+
noun: 'project brief',
|
|
9
|
+
field: 'brief',
|
|
10
|
+
listField: 'briefs',
|
|
11
|
+
object: PROJECT_BRIEF,
|
|
12
|
+
filterParam: 'repo',
|
|
13
|
+
revise: (body) => {
|
|
14
|
+
const summary = requiredString(body, 'summary', { max: 8192 });
|
|
15
|
+
const changeSummary = optionalString(body, 'changeSummary', 4096);
|
|
16
|
+
return (existing, id) => ({ repo: existing.repo, summary, changeSummary, supersedesBriefId: id });
|
|
17
|
+
},
|
|
18
|
+
};
|
|
8
19
|
// ── project_brief routes ──
|
|
9
20
|
//
|
|
10
21
|
// 6 routes: POST /v1/project-briefs (new; body repo + summary), GET
|
|
@@ -15,123 +26,40 @@ import { isJsonString } from '../../json.js';
|
|
|
15
26
|
// POST /v1/project-briefs/:id/close. DoS caps: repo 256, summary 8192,
|
|
16
27
|
// changeSummary 4096. The store validates + throws; the boundary maps validation
|
|
17
28
|
// -> 400, not-found -> 404, not-active -> 409. Mirrors /v1/skills.
|
|
18
|
-
export async function handleCreateProjectBrief(
|
|
19
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
20
|
-
const body = await parseJsonBody(req, ctx);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
throw new HttpError(400, `repo exceeds ${MAX_REPO_LEN}-character cap`);
|
|
27
|
-
}
|
|
28
|
-
const summary = body['summary'];
|
|
29
|
-
if (!isJsonString(summary) || summary.trim().length === 0) {
|
|
30
|
-
throw new HttpError(400, 'summary is required (non-empty string)');
|
|
31
|
-
}
|
|
32
|
-
if (summary.length > 8192) {
|
|
33
|
-
throw new HttpError(400, 'summary exceeds 8192-character cap');
|
|
34
|
-
}
|
|
35
|
-
const brief = saveProjectBrief(opts.hippoRoot, ctx.tenantId, {
|
|
36
|
-
repo,
|
|
37
|
-
summary,
|
|
38
|
-
}, ctx.actor.subject);
|
|
39
|
-
sendJson(res, 201, { brief });
|
|
40
|
-
return;
|
|
29
|
+
export async function handleCreateProjectBrief(rr) {
|
|
30
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
31
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
32
|
+
const brief = await saveFor(rr, PROJECT_BRIEF, ctx.tenantId, ctx.actor.subject, {
|
|
33
|
+
repo: requiredString(body, 'repo', { max: MAX_REPO_LEN }),
|
|
34
|
+
summary: requiredString(body, 'summary', { max: 8192 }),
|
|
35
|
+
});
|
|
36
|
+
sendJson(rr.res, 201, { brief });
|
|
41
37
|
}
|
|
42
|
-
export
|
|
43
|
-
|
|
44
|
-
const repoFilter = query.get('repo');
|
|
45
|
-
const limit = parseListLimit(query.get('limit'));
|
|
46
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
47
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
48
|
-
const listOpts = { limit: limit + 1, after };
|
|
49
|
-
if (repoFilter !== null && repoFilter.trim().length > 0) {
|
|
50
|
-
listOpts.repo = repoFilter.trim();
|
|
51
|
-
}
|
|
52
|
-
if (status !== 'all') {
|
|
53
|
-
if (!isSetMember(VALID_BRIEF_STATES, status)) {
|
|
54
|
-
throw new HttpError(400, `status must be one of: active | superseded | closed | all (got "${status}")`);
|
|
55
|
-
}
|
|
56
|
-
listOpts.status = status;
|
|
57
|
-
}
|
|
58
|
-
const briefs = loadProjectBriefs(opts.hippoRoot, ctx.tenantId, listOpts);
|
|
59
|
-
const page = pageOf(briefs, limit, byCreatedAt);
|
|
60
|
-
sendJson(res, 200, { briefs: page.items, next_cursor: page.nextCursor });
|
|
61
|
-
return;
|
|
38
|
+
export function handleListProjectBriefs(rr) {
|
|
39
|
+
return listRoute(briefRoutes, rr);
|
|
62
40
|
}
|
|
63
41
|
// The refresh op: must precede the /:id routes (literal 'refresh' is non-numeric
|
|
64
42
|
// so the /(\d+)/ routes would not match it, but order it first).
|
|
65
|
-
export async function handleRefreshProjectBrief(
|
|
43
|
+
export async function handleRefreshProjectBrief(rr) {
|
|
44
|
+
const { req, res, opts } = rr;
|
|
66
45
|
const ctx = await buildContextWithAuth(req, opts);
|
|
67
46
|
const body = await parseJsonBody(req, ctx);
|
|
68
|
-
const repo = body
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
if (repo.length > MAX_REPO_LEN) {
|
|
73
|
-
throw new HttpError(400, `repo exceeds ${MAX_REPO_LEN}-character cap`);
|
|
74
|
-
}
|
|
75
|
-
const dryRun = body['dryRun'] === true;
|
|
76
|
-
if (dryRun) {
|
|
77
|
-
const { markdown, receiptCount } = assembleBriefFromReceipts(opts.hippoRoot, ctx.tenantId, repo);
|
|
47
|
+
const repo = requiredString(body, 'repo', { max: MAX_REPO_LEN });
|
|
48
|
+
if (body['dryRun'] === true) {
|
|
49
|
+
const { markdown, receiptCount } = await briefFromReceipts(objectsOf(rr), ctx.tenantId, repo);
|
|
78
50
|
sendJson(res, 200, { markdown, receiptCount });
|
|
79
51
|
return;
|
|
80
52
|
}
|
|
81
|
-
const brief =
|
|
53
|
+
const brief = await refreshedBrief(objectsOf(rr), { hippoRoot: opts.hippoRoot, tenantId: ctx.tenantId, actor: ctx.actor.subject }, repo);
|
|
82
54
|
sendJson(res, 200, { brief });
|
|
83
|
-
return;
|
|
84
55
|
}
|
|
85
|
-
export
|
|
86
|
-
|
|
87
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
88
|
-
const body = await parseJsonBody(req, ctx);
|
|
89
|
-
const summary = body['summary'];
|
|
90
|
-
if (!isJsonString(summary) || summary.trim().length === 0) {
|
|
91
|
-
throw new HttpError(400, 'summary is required (non-empty string)');
|
|
92
|
-
}
|
|
93
|
-
if (summary.length > 8192) {
|
|
94
|
-
throw new HttpError(400, 'summary exceeds 8192-character cap');
|
|
95
|
-
}
|
|
96
|
-
const changeRaw = body['changeSummary'];
|
|
97
|
-
let changeSummary;
|
|
98
|
-
if (changeRaw !== undefined && changeRaw !== null) {
|
|
99
|
-
if (!isJsonString(changeRaw)) {
|
|
100
|
-
throw new HttpError(400, 'changeSummary must be a string');
|
|
101
|
-
}
|
|
102
|
-
if (changeRaw.length > 4096) {
|
|
103
|
-
throw new HttpError(400, 'changeSummary exceeds 4096-character cap');
|
|
104
|
-
}
|
|
105
|
-
changeSummary = changeRaw;
|
|
106
|
-
}
|
|
107
|
-
const existing = loadProjectBriefById(opts.hippoRoot, ctx.tenantId, id);
|
|
108
|
-
if (!existing) {
|
|
109
|
-
throw new HttpError(404, `project brief ${id} not found`);
|
|
110
|
-
}
|
|
111
|
-
const brief = saveProjectBrief(opts.hippoRoot, ctx.tenantId, {
|
|
112
|
-
repo: existing.repo,
|
|
113
|
-
summary,
|
|
114
|
-
changeSummary,
|
|
115
|
-
supersedesBriefId: id,
|
|
116
|
-
}, ctx.actor.subject);
|
|
117
|
-
sendJson(res, 200, { brief });
|
|
118
|
-
return;
|
|
56
|
+
export function handleSupersedeProjectBrief(rr, match) {
|
|
57
|
+
return supersedeRoute(briefRoutes, rr, match);
|
|
119
58
|
}
|
|
120
|
-
export
|
|
121
|
-
|
|
122
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
123
|
-
const brief = closeProjectBrief(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
124
|
-
sendJson(res, 200, { brief });
|
|
125
|
-
return;
|
|
59
|
+
export function handleCloseProjectBrief(rr, match) {
|
|
60
|
+
return closeRoute(briefRoutes, rr, match);
|
|
126
61
|
}
|
|
127
|
-
export
|
|
128
|
-
|
|
129
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
130
|
-
const brief = loadProjectBriefById(opts.hippoRoot, ctx.tenantId, id);
|
|
131
|
-
if (!brief) {
|
|
132
|
-
throw new HttpError(404, `project brief ${id} not found`);
|
|
133
|
-
}
|
|
134
|
-
sendJson(res, 200, { brief });
|
|
135
|
-
return;
|
|
62
|
+
export function handleGetProjectBrief(rr, match) {
|
|
63
|
+
return getRoute(briefRoutes, rr, match);
|
|
136
64
|
}
|
|
137
65
|
//# sourceMappingURL=project-briefs.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// Recall routes: /v1/memories search, assemble, drill and /v1/context.
|
|
2
2
|
import { dirname, resolve } from 'node:path';
|
|
3
|
-
import { assertCallerProject, resolveProjectIdentity } from '../../project-identity.js';
|
|
4
|
-
import { isSharedStore } from '../../config.js';
|
|
5
|
-
import { assembleCost, contextCost, drillCost } from '../../context-render.js';
|
|
6
|
-
import { storeFor } from '../../store
|
|
7
|
-
import { biasHintEnabled } from '../../recall-history.js';
|
|
8
|
-
import { assemble, drillDown, getContext, recordTokens, retrieve } from '../../api.js';
|
|
3
|
+
import { assertCallerProject, resolveProjectIdentity } from '../../core/project-identity.js';
|
|
4
|
+
import { isSharedStore } from '../../core/config.js';
|
|
5
|
+
import { assembleCost, contextCost, drillCost } from '../../api/context-render.js';
|
|
6
|
+
import { storeFor } from '../../store/index.js';
|
|
7
|
+
import { biasHintEnabled } from '../../api/recall-history.js';
|
|
8
|
+
import { assemble, drillDown, getContext, recordTokens, retrieve } from '../../api/index.js';
|
|
9
9
|
import { httpParams, parseContextRequest, parseRecallRequest } from '../../api/recall-request.js';
|
|
10
10
|
import { anchorSkippedRows, noteRecall, peekSessionRing, resetSessionRings, sessionRing } from '../../api/recall-record.js';
|
|
11
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
11
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
12
12
|
import { buildContextWithAuth } from '../auth.js';
|
|
13
|
-
import { validateIdSegment } from '../validation.js';
|
|
13
|
+
import { MAX_LIST_LIMIT, parseListLimit, validateIdSegment } from '../validation.js';
|
|
14
14
|
/** Test-only: reset the HTTP recall rings. Call from beforeEach. */
|
|
15
15
|
export function __resetSessionRecallHistoryHttp() {
|
|
16
16
|
resetSessionRings('http');
|
|
@@ -32,8 +32,7 @@ export async function handleRecallMemories({ req, res, opts, query }) {
|
|
|
32
32
|
const ring = sessionRing('http', ctx.tenantId, sessionId);
|
|
33
33
|
if (ring)
|
|
34
34
|
noteRecall(ring, q, result.results[0]?.id ?? null, result.anchoringHint?.memoryId);
|
|
35
|
-
//
|
|
36
|
-
// since the CLI never calls it and MCP shows the user a different band.
|
|
35
|
+
// HTTP counts the rows it returns here; `retrieve` cannot count for every ranker, since MCP shows a different band and counts none.
|
|
37
36
|
await storeFor(ctx).bumpRecallStats(result.results.length);
|
|
38
37
|
// Continuity payloads should never be cached. The caller is asking for
|
|
39
38
|
// session-state-aware data; intermediaries must not reuse it across users.
|
|
@@ -78,7 +77,7 @@ export async function handleAssembleSession({ req, res, opts, query }, assembleM
|
|
|
78
77
|
assembleExtra.summarizeOlder = summarizeOlder;
|
|
79
78
|
if (scope !== undefined)
|
|
80
79
|
assembleExtra.scope = scope;
|
|
81
|
-
const result = assemble(ctx, assembleMatch.id, { ...assembleExtra, cost: assembleCost(assembleMatch.id) });
|
|
80
|
+
const result = await assemble(ctx, assembleMatch.id, { ...assembleExtra, cost: assembleCost(assembleMatch.id) });
|
|
82
81
|
await recordTokens(ctx, 'http_assemble', { items: result.items.length, tokens: result.tokens, sessionId: assembleMatch.id });
|
|
83
82
|
sendJson(res, 200, result);
|
|
84
83
|
return;
|
|
@@ -96,6 +95,9 @@ export async function handleDrillRecall({ req, res, opts, query }, drillMatch) {
|
|
|
96
95
|
if (limit !== undefined && (!Number.isFinite(limit) || limit <= 0)) {
|
|
97
96
|
throw new HttpError(400, 'limit must be a positive number');
|
|
98
97
|
}
|
|
98
|
+
// Past the list ceiling the shared parser refuses, so the reply is the one every other list route gives.
|
|
99
|
+
if (limit !== undefined && limit > MAX_LIST_LIMIT)
|
|
100
|
+
parseListLimit(limitRaw);
|
|
99
101
|
const budgetRaw = query.get('budget');
|
|
100
102
|
const budget = budgetRaw === null ? undefined : Number(budgetRaw);
|
|
101
103
|
if (budget !== undefined && (!Number.isFinite(budget) || budget <= 0)) {
|
|
@@ -120,7 +122,7 @@ export async function handleDrillRecall({ req, res, opts, query }, drillMatch) {
|
|
|
120
122
|
drillExtra.budget = budget;
|
|
121
123
|
if (depth !== undefined)
|
|
122
124
|
drillExtra.depth = depth;
|
|
123
|
-
const result = drillDown(ctx, drillMatch.id, { ...drillExtra, cost: drillCost });
|
|
125
|
+
const result = await drillDown(ctx, drillMatch.id, { ...drillExtra, cost: drillCost });
|
|
124
126
|
if ('failure' in result) {
|
|
125
127
|
// Leaf id maps to 422 (caller-actionable). Other cases stay
|
|
126
128
|
// as 404 to avoid leaking cross-tenant existence or scope grants.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RouteRequest } from '../types.js';
|
|
2
|
-
export declare function handleCreateSkill(
|
|
3
|
-
export declare function handleListSkills(
|
|
4
|
-
export declare function handleExportSkills(
|
|
5
|
-
export declare function handleSupersedeSkill(
|
|
6
|
-
export declare function handleCloseSkill(
|
|
7
|
-
export declare function handleGetSkill(
|
|
2
|
+
export declare function handleCreateSkill(rr: RouteRequest): Promise<void>;
|
|
3
|
+
export declare function handleListSkills(rr: RouteRequest): Promise<void>;
|
|
4
|
+
export declare function handleExportSkills(rr: RouteRequest): Promise<void>;
|
|
5
|
+
export declare function handleSupersedeSkill(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
6
|
+
export declare function handleCloseSkill(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
7
|
+
export declare function handleGetSkill(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
// /v1/skills routes.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { MAX_SKILL_NAME_LEN, SKILL, skillsMarkdown } from '../../objects/skills.js';
|
|
3
|
+
import { sendJson } from '../../util/http-util.js';
|
|
4
4
|
import { buildContextWithAuth } from '../auth.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { parseJsonBody } from '../validation.js';
|
|
6
|
+
import { closeRoute, getRoute, listRoute, objectsOf, optionalString, requiredString, saveFor, supersedeRoute } from './object-routes.js';
|
|
7
|
+
const INSTRUCTIONS = { max: 8192, plural: true };
|
|
8
|
+
const skillRoutes = {
|
|
9
|
+
noun: 'skill',
|
|
10
|
+
field: 'skill',
|
|
11
|
+
listField: 'skills',
|
|
12
|
+
object: SKILL,
|
|
13
|
+
revise: (body) => {
|
|
14
|
+
const instructions = requiredString(body, 'instructions', INSTRUCTIONS);
|
|
15
|
+
const trigger = optionalString(body, 'trigger', 1024);
|
|
16
|
+
const changeSummary = optionalString(body, 'changeSummary', 4096);
|
|
17
|
+
return (existing, id) => ({ skillName: existing.skillName, instructions, trigger, changeSummary, supersedesSkillId: id });
|
|
18
|
+
},
|
|
19
|
+
};
|
|
8
20
|
// ── skills (first-class object, executable/exportable) ──
|
|
9
21
|
//
|
|
10
22
|
// 6 routes: POST /v1/skills (new; body skillName + instructions + trigger?),
|
|
@@ -17,135 +29,35 @@ import { isJsonString } from '../../json.js';
|
|
|
17
29
|
// validates + throws; the boundary maps validation -> 400, not-found -> 404,
|
|
18
30
|
// not-active -> 409. Mirrors /v1/processes; "executable" = exportable
|
|
19
31
|
// instruction (no code exec).
|
|
20
|
-
export async function handleCreateSkill(
|
|
21
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
22
|
-
const body = await parseJsonBody(req, ctx);
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
const instructions = body['instructions'];
|
|
31
|
-
if (!isJsonString(instructions) || instructions.trim().length === 0) {
|
|
32
|
-
throw new HttpError(400, 'instructions are required (non-empty string)');
|
|
33
|
-
}
|
|
34
|
-
if (instructions.length > 8192) {
|
|
35
|
-
throw new HttpError(400, 'instructions exceed 8192-character cap');
|
|
36
|
-
}
|
|
37
|
-
const triggerRaw = body['trigger'];
|
|
38
|
-
let trigger;
|
|
39
|
-
if (triggerRaw !== undefined && triggerRaw !== null) {
|
|
40
|
-
if (!isJsonString(triggerRaw)) {
|
|
41
|
-
throw new HttpError(400, 'trigger must be a string');
|
|
42
|
-
}
|
|
43
|
-
if (triggerRaw.length > 1024) {
|
|
44
|
-
throw new HttpError(400, 'trigger exceeds 1024-character cap');
|
|
45
|
-
}
|
|
46
|
-
trigger = triggerRaw;
|
|
47
|
-
}
|
|
48
|
-
const skill = saveSkill(opts.hippoRoot, ctx.tenantId, {
|
|
49
|
-
skillName,
|
|
50
|
-
instructions,
|
|
51
|
-
trigger,
|
|
52
|
-
}, ctx.actor.subject);
|
|
53
|
-
sendJson(res, 201, { skill });
|
|
54
|
-
return;
|
|
32
|
+
export async function handleCreateSkill(rr) {
|
|
33
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
34
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
35
|
+
const skill = await saveFor(rr, SKILL, ctx.tenantId, ctx.actor.subject, {
|
|
36
|
+
skillName: requiredString(body, 'skillName', { max: MAX_SKILL_NAME_LEN }),
|
|
37
|
+
instructions: requiredString(body, 'instructions', INSTRUCTIONS),
|
|
38
|
+
trigger: optionalString(body, 'trigger', 1024),
|
|
39
|
+
});
|
|
40
|
+
sendJson(rr.res, 201, { skill });
|
|
55
41
|
}
|
|
56
|
-
export
|
|
57
|
-
|
|
58
|
-
const limit = parseListLimit(query.get('limit'));
|
|
59
|
-
const after = parseCursor(query.get('cursor'), 'string', 'integer');
|
|
60
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
61
|
-
let skills;
|
|
62
|
-
if (status === 'all') {
|
|
63
|
-
skills = loadSkills(opts.hippoRoot, ctx.tenantId, { limit: limit + 1, after });
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
if (!isSetMember(VALID_SKILL_STATES, status)) {
|
|
67
|
-
throw new HttpError(400, `status must be one of: active | superseded | closed | all (got "${status}")`);
|
|
68
|
-
}
|
|
69
|
-
skills = loadSkills(opts.hippoRoot, ctx.tenantId, {
|
|
70
|
-
status,
|
|
71
|
-
limit: limit + 1,
|
|
72
|
-
after,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
const page = pageOf(skills, limit, byCreatedAt);
|
|
76
|
-
sendJson(res, 200, { skills: page.items, next_cursor: page.nextCursor });
|
|
77
|
-
return;
|
|
42
|
+
export function handleListSkills(rr) {
|
|
43
|
+
return listRoute(skillRoutes, rr);
|
|
78
44
|
}
|
|
79
45
|
// The export renderer: must precede the /:id GET (literal 'export' is
|
|
80
46
|
// non-numeric so the /(\d+)/ route would not match it, but order it first).
|
|
81
|
-
export async function handleExportSkills(
|
|
47
|
+
export async function handleExportSkills(rr) {
|
|
48
|
+
const { req, res, opts } = rr;
|
|
82
49
|
const ctx = await buildContextWithAuth(req, opts);
|
|
83
|
-
const markdown =
|
|
50
|
+
const markdown = await skillsMarkdown(objectsOf(rr), ctx.tenantId);
|
|
84
51
|
sendJson(res, 200, { markdown });
|
|
85
52
|
return;
|
|
86
53
|
}
|
|
87
|
-
export
|
|
88
|
-
|
|
89
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
90
|
-
const body = await parseJsonBody(req, ctx);
|
|
91
|
-
const instructions = body['instructions'];
|
|
92
|
-
if (!isJsonString(instructions) || instructions.trim().length === 0) {
|
|
93
|
-
throw new HttpError(400, 'instructions are required (non-empty string)');
|
|
94
|
-
}
|
|
95
|
-
if (instructions.length > 8192) {
|
|
96
|
-
throw new HttpError(400, 'instructions exceed 8192-character cap');
|
|
97
|
-
}
|
|
98
|
-
const triggerRaw = body['trigger'];
|
|
99
|
-
let trigger;
|
|
100
|
-
if (triggerRaw !== undefined && triggerRaw !== null) {
|
|
101
|
-
if (!isJsonString(triggerRaw)) {
|
|
102
|
-
throw new HttpError(400, 'trigger must be a string');
|
|
103
|
-
}
|
|
104
|
-
if (triggerRaw.length > 1024) {
|
|
105
|
-
throw new HttpError(400, 'trigger exceeds 1024-character cap');
|
|
106
|
-
}
|
|
107
|
-
trigger = triggerRaw;
|
|
108
|
-
}
|
|
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 = loadSkillById(opts.hippoRoot, ctx.tenantId, id);
|
|
121
|
-
if (!existing) {
|
|
122
|
-
throw new HttpError(404, `skill ${id} not found`);
|
|
123
|
-
}
|
|
124
|
-
const skill = saveSkill(opts.hippoRoot, ctx.tenantId, {
|
|
125
|
-
skillName: existing.skillName,
|
|
126
|
-
instructions,
|
|
127
|
-
trigger,
|
|
128
|
-
changeSummary,
|
|
129
|
-
supersedesSkillId: id,
|
|
130
|
-
}, ctx.actor.subject);
|
|
131
|
-
sendJson(res, 200, { skill });
|
|
132
|
-
return;
|
|
54
|
+
export function handleSupersedeSkill(rr, match) {
|
|
55
|
+
return supersedeRoute(skillRoutes, rr, match);
|
|
133
56
|
}
|
|
134
|
-
export
|
|
135
|
-
|
|
136
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
137
|
-
const skill = closeSkill(opts.hippoRoot, ctx.tenantId, id, ctx.actor.subject);
|
|
138
|
-
sendJson(res, 200, { skill });
|
|
139
|
-
return;
|
|
57
|
+
export function handleCloseSkill(rr, match) {
|
|
58
|
+
return closeRoute(skillRoutes, rr, match);
|
|
140
59
|
}
|
|
141
|
-
export
|
|
142
|
-
|
|
143
|
-
const ctx = await buildContextWithAuth(req, opts);
|
|
144
|
-
const skill = loadSkillById(opts.hippoRoot, ctx.tenantId, id);
|
|
145
|
-
if (!skill) {
|
|
146
|
-
throw new HttpError(404, `skill ${id} not found`);
|
|
147
|
-
}
|
|
148
|
-
sendJson(res, 200, { skill });
|
|
149
|
-
return;
|
|
60
|
+
export function handleGetSkill(rr, match) {
|
|
61
|
+
return getRoute(skillRoutes, rr, match);
|
|
150
62
|
}
|
|
151
63
|
//# sourceMappingURL=skills.js.map
|