hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -1,137 +1,58 @@
|
|
|
1
1
|
// /v1/project-briefs routes.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { briefFromReceipts, MAX_CHANGE_SUMMARY_LEN, 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
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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;
|
|
5
|
+
import { parseJsonBody } from '../validation.js';
|
|
6
|
+
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
7
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
8
|
+
const briefRoutes = {
|
|
9
|
+
noun: 'project brief',
|
|
10
|
+
field: 'brief',
|
|
11
|
+
listField: 'briefs',
|
|
12
|
+
object: PROJECT_BRIEF,
|
|
13
|
+
filterParam: 'repo',
|
|
14
|
+
revise: (body) => {
|
|
15
|
+
const summary = requiredString(body, 'summary', { max: 8192 });
|
|
16
|
+
const changeSummary = optionalString(body, 'changeSummary', MAX_CHANGE_SUMMARY_LEN);
|
|
17
|
+
return (existing, id) => ({ repo: existing.repo, summary, changeSummary, supersedesBriefId: id });
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
// Routes: /v1/project-briefs (create, list, refresh, show, supersede, close), mirroring /v1/skills; /refresh is ordered before /:id.
|
|
21
|
+
// The store validates and throws; the boundary maps validation -> 400, not-found -> 404, not-active -> 409.
|
|
22
|
+
export async function handleCreateProjectBrief(rr) {
|
|
23
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
24
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
25
|
+
const brief = await saveFor(ctx, PROJECT_BRIEF, {
|
|
26
|
+
repo: requiredString(body, 'repo', { max: MAX_REPO_LEN }),
|
|
27
|
+
summary: requiredString(body, 'summary', { max: 8192 }),
|
|
28
|
+
});
|
|
29
|
+
sendJson(rr.res, 201, { brief });
|
|
41
30
|
}
|
|
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;
|
|
31
|
+
export function handleListProjectBriefs(rr) {
|
|
32
|
+
return listRoute(briefRoutes, rr);
|
|
62
33
|
}
|
|
63
34
|
// The refresh op: must precede the /:id routes (literal 'refresh' is non-numeric
|
|
64
35
|
// so the /(\d+)/ routes would not match it, but order it first).
|
|
65
|
-
export async function handleRefreshProjectBrief(
|
|
36
|
+
export async function handleRefreshProjectBrief(rr) {
|
|
37
|
+
const { req, res, opts } = rr;
|
|
66
38
|
const ctx = await buildContextWithAuth(req, opts);
|
|
67
39
|
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);
|
|
40
|
+
const repo = requiredString(body, 'repo', { max: MAX_REPO_LEN });
|
|
41
|
+
if (body['dryRun'] === true) {
|
|
42
|
+
const { markdown, receiptCount } = await briefFromReceipts(objectsOf(ctx), ctx.tenantId, repo);
|
|
78
43
|
sendJson(res, 200, { markdown, receiptCount });
|
|
79
44
|
return;
|
|
80
45
|
}
|
|
81
|
-
const brief =
|
|
46
|
+
const brief = await refreshedBrief(objectsOf(ctx), { hippoRoot: opts.hippoRoot, tenantId: ctx.tenantId, actor: ctx.actor.subject }, repo);
|
|
82
47
|
sendJson(res, 200, { brief });
|
|
83
|
-
return;
|
|
84
48
|
}
|
|
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;
|
|
49
|
+
export function handleSupersedeProjectBrief(rr, match) {
|
|
50
|
+
return supersedeRoute(briefRoutes, rr, match);
|
|
119
51
|
}
|
|
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;
|
|
52
|
+
export function handleCloseProjectBrief(rr, match) {
|
|
53
|
+
return closeRoute(briefRoutes, rr, match);
|
|
126
54
|
}
|
|
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;
|
|
55
|
+
export function handleGetProjectBrief(rr, match) {
|
|
56
|
+
return getRoute(briefRoutes, rr, match);
|
|
136
57
|
}
|
|
137
58
|
//# sourceMappingURL=project-briefs.js.map
|
|
@@ -1,53 +1,34 @@
|
|
|
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 {
|
|
7
|
-
import {
|
|
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 { assemble, drillDown, getContext, recordTokens, retrieve } from '../../api/index.js';
|
|
7
|
+
import { RECALL_RECORDING } from '../../api/recall-finish.js';
|
|
9
8
|
import { httpParams, parseContextRequest, parseRecallRequest } from '../../api/recall-request.js';
|
|
10
|
-
import {
|
|
11
|
-
import { HttpError, sendJson } from '../../http-util.js';
|
|
9
|
+
import { resetSessionRings } from '../../api/recall-record.js';
|
|
10
|
+
import { HttpError, sendJson } from '../../util/http-util.js';
|
|
12
11
|
import { buildContextWithAuth } from '../auth.js';
|
|
13
|
-
import { validateIdSegment } from '../validation.js';
|
|
12
|
+
import { MAX_LIST_LIMIT, parseListLimit, validateIdSegment } from '../validation.js';
|
|
14
13
|
/** Test-only: reset the HTTP recall rings. Call from beforeEach. */
|
|
15
14
|
export function __resetSessionRecallHistoryHttp() {
|
|
16
15
|
resetSessionRings('http');
|
|
17
16
|
}
|
|
18
|
-
// HTTP threads the ring through opts.recallHistory, so the hint retrieve() returns is the one the caller sees.
|
|
19
|
-
function recallHistoryFor(ctx, sessionId) {
|
|
20
|
-
return sessionId && biasHintEnabled('anchoring') ? peekSessionRing('http', ctx.tenantId, sessionId) : undefined;
|
|
21
|
-
}
|
|
22
17
|
// GET /v1/memories?q=...&limit=...&mode=...&scope=...&include_continuity=1
|
|
23
18
|
export async function handleRecallMemories({ req, res, opts, query }) {
|
|
24
19
|
const { opts: recallOpts, limit, mode, explain } = parseRecallRequest(httpParams(query));
|
|
25
|
-
const { query: q, includeContinuity, sessionId } = recallOpts;
|
|
26
20
|
const ctx = await buildContextWithAuth(req, opts);
|
|
27
|
-
const
|
|
28
|
-
// Written first in the recall's own write, so a recall that fails leaves no row.
|
|
29
|
-
const leadingAudit = sessionId ? [] : anchorSkippedRows({ tenantId: ctx.tenantId, actor: ctx.actor.subject }, q);
|
|
30
|
-
const result = await retrieve(ctx, { ...recallOpts, limit, mode, explain, recallHistory, leadingAudit });
|
|
31
|
-
// The ring is created only after recall succeeds, so a 400 cannot LRU-evict a live session.
|
|
32
|
-
const ring = sessionRing('http', ctx.tenantId, sessionId);
|
|
33
|
-
if (ring)
|
|
34
|
-
noteRecall(ring, q, result.results[0]?.id ?? null, result.anchoringHint?.memoryId);
|
|
35
|
-
// Each recall surface counts its own hits; api.recall is no chokepoint,
|
|
36
|
-
// since the CLI never calls it and MCP shows the user a different band.
|
|
37
|
-
await storeFor(ctx).bumpRecallStats(result.results.length);
|
|
21
|
+
const result = await retrieve(ctx, { ...recallOpts, limit, mode, explain, recordAs: RECALL_RECORDING.http });
|
|
38
22
|
// Continuity payloads should never be cached. The caller is asking for
|
|
39
23
|
// session-state-aware data; intermediaries must not reuse it across users.
|
|
40
|
-
if (includeContinuity) {
|
|
24
|
+
if (recallOpts.includeContinuity) {
|
|
41
25
|
res.setHeader('Cache-Control', 'no-store');
|
|
42
26
|
}
|
|
43
|
-
await recordTokens(ctx, 'http_recall', { items: result.results.length, tokens: result.tokens + (result.continuityTokens ?? 0), sessionId: sessionId ?? null });
|
|
44
27
|
sendJson(res, 200, result);
|
|
45
28
|
return;
|
|
46
29
|
}
|
|
47
|
-
// GET /v1/sessions/:id/assemble?budget=N&freshTail=N&summarizeOlder=0|1
|
|
48
|
-
//
|
|
49
|
-
// with fresh-tail raws + summary substitutions + bio-aware budget fit.
|
|
50
|
-
// Tenant scope from Bearer; default-deny on private rows.
|
|
30
|
+
// GET /v1/sessions/:id/assemble?budget=N&freshTail=N&summarizeOlder=0|1: ordered AssembledContextItem[] (fresh-tail raws, summary substitutions, bio-aware
|
|
31
|
+
// budget fit). Tenant scope from the Bearer; default-deny on private rows.
|
|
51
32
|
export async function handleAssembleSession({ req, res, opts, query }, assembleMatch) {
|
|
52
33
|
validateIdSegment(assembleMatch.id, 'session id');
|
|
53
34
|
const budgetRaw = query.get('budget');
|
|
@@ -78,17 +59,13 @@ export async function handleAssembleSession({ req, res, opts, query }, assembleM
|
|
|
78
59
|
assembleExtra.summarizeOlder = summarizeOlder;
|
|
79
60
|
if (scope !== undefined)
|
|
80
61
|
assembleExtra.scope = scope;
|
|
81
|
-
const result = assemble(ctx, assembleMatch.id, { ...assembleExtra, cost: assembleCost(assembleMatch.id) });
|
|
62
|
+
const result = await assemble(ctx, assembleMatch.id, { ...assembleExtra, cost: assembleCost(assembleMatch.id) });
|
|
82
63
|
await recordTokens(ctx, 'http_assemble', { items: result.items.length, tokens: result.tokens, sessionId: assembleMatch.id });
|
|
83
64
|
sendJson(res, 200, result);
|
|
84
65
|
return;
|
|
85
66
|
}
|
|
86
|
-
// GET /v1/recall/drill/:id?limit=N&budget=N
|
|
87
|
-
//
|
|
88
|
-
// place of overflowed children (RecallResultItem.isSummary === true), the
|
|
89
|
-
// caller drills into the summary id to recover the originals. Tenant
|
|
90
|
-
// scoped via Bearer; default-deny on private scopes for both summary
|
|
91
|
-
// and children.
|
|
67
|
+
// GET /v1/recall/drill/:id?limit=N&budget=N: companion to /v1/memories; the caller drills into a level-2 summary (RecallResultItem.isSummary) to recover the
|
|
68
|
+
// originals. Tenant-scoped via Bearer; default-deny on private scopes for the summary and its children.
|
|
92
69
|
export async function handleDrillRecall({ req, res, opts, query }, drillMatch) {
|
|
93
70
|
validateIdSegment(drillMatch.id, 'summary id');
|
|
94
71
|
const limitRaw = query.get('limit');
|
|
@@ -96,6 +73,9 @@ export async function handleDrillRecall({ req, res, opts, query }, drillMatch) {
|
|
|
96
73
|
if (limit !== undefined && (!Number.isFinite(limit) || limit <= 0)) {
|
|
97
74
|
throw new HttpError(400, 'limit must be a positive number');
|
|
98
75
|
}
|
|
76
|
+
// Past the list ceiling the shared parser refuses, so the reply is the one every other list route gives.
|
|
77
|
+
if (limit !== undefined && limit > MAX_LIST_LIMIT)
|
|
78
|
+
parseListLimit(limitRaw);
|
|
99
79
|
const budgetRaw = query.get('budget');
|
|
100
80
|
const budget = budgetRaw === null ? undefined : Number(budgetRaw);
|
|
101
81
|
if (budget !== undefined && (!Number.isFinite(budget) || budget <= 0)) {
|
|
@@ -120,7 +100,7 @@ export async function handleDrillRecall({ req, res, opts, query }, drillMatch) {
|
|
|
120
100
|
drillExtra.budget = budget;
|
|
121
101
|
if (depth !== undefined)
|
|
122
102
|
drillExtra.depth = depth;
|
|
123
|
-
const result = drillDown(ctx, drillMatch.id, { ...drillExtra, cost: drillCost });
|
|
103
|
+
const result = await drillDown(ctx, drillMatch.id, { ...drillExtra, cost: drillCost });
|
|
124
104
|
if ('failure' in result) {
|
|
125
105
|
// Leaf id maps to 422 (caller-actionable). Other cases stay
|
|
126
106
|
// as 404 to avoid leaking cross-tenant existence or scope grants.
|
|
@@ -143,11 +123,8 @@ function contextReader(hippoRoot, query) {
|
|
|
143
123
|
assertCallerProject({ name, aliases });
|
|
144
124
|
return { name, legacyName: name, aliases };
|
|
145
125
|
}
|
|
146
|
-
// GET /v1/context
|
|
147
|
-
//
|
|
148
|
-
// + recentEvents). No server-side rendering; clients render. Tenant-scoped
|
|
149
|
-
// via the Bearer. Pinned-only + '*' fallback skip the recall audit emit
|
|
150
|
-
// (matches cmdContext); real-query hybrid search emits one 'recall' row.
|
|
126
|
+
// GET /v1/context: a budget-bounded ContextResult JSON, rendered by clients, not the server; tenant-scoped via the Bearer.
|
|
127
|
+
// Pinned-only and '*' fallback skip the recall audit emit (as cmdContext does); a real-query hybrid search emits one 'recall' row.
|
|
151
128
|
export async function handleGetContext({ req, res, opts, query }) {
|
|
152
129
|
const parsed = parseContextRequest(httpParams(query));
|
|
153
130
|
const ctx = await buildContextWithAuth(req, opts);
|
|
@@ -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,151 +1,53 @@
|
|
|
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
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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;
|
|
5
|
+
import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
|
|
6
|
+
import { objectsOf, saveFor } from '../../api/objects.js';
|
|
7
|
+
import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
|
|
8
|
+
const INSTRUCTIONS = { max: 8192, plural: true };
|
|
9
|
+
const skillRoutes = {
|
|
10
|
+
noun: 'skill',
|
|
11
|
+
field: 'skill',
|
|
12
|
+
listField: 'skills',
|
|
13
|
+
object: SKILL,
|
|
14
|
+
revise: (body) => {
|
|
15
|
+
const instructions = requiredString(body, 'instructions', INSTRUCTIONS);
|
|
16
|
+
const trigger = optionalString(body, 'trigger', 1024);
|
|
17
|
+
const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
|
|
18
|
+
return (existing, id) => ({ skillName: existing.skillName, instructions, trigger, changeSummary, supersedesSkillId: id });
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
// Routes: /v1/skills (create, list, export, show, supersede, close), mirroring /v1/processes; "executable" means exportable instruction (no code exec).
|
|
22
|
+
// GET /v1/skills/export renders ACTIVE skills as a markdown block for AGENTS.md or CLAUDE.md and is ordered before /:id.
|
|
23
|
+
export async function handleCreateSkill(rr) {
|
|
24
|
+
const ctx = await buildContextWithAuth(rr.req, rr.opts);
|
|
25
|
+
const body = await parseJsonBody(rr.req, ctx);
|
|
26
|
+
const skill = await saveFor(ctx, SKILL, {
|
|
27
|
+
skillName: requiredString(body, 'skillName', { max: MAX_SKILL_NAME_LEN }),
|
|
28
|
+
instructions: requiredString(body, 'instructions', INSTRUCTIONS),
|
|
29
|
+
trigger: optionalString(body, 'trigger', 1024),
|
|
30
|
+
});
|
|
31
|
+
sendJson(rr.res, 201, { skill });
|
|
55
32
|
}
|
|
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;
|
|
33
|
+
export function handleListSkills(rr) {
|
|
34
|
+
return listRoute(skillRoutes, rr);
|
|
78
35
|
}
|
|
79
36
|
// The export renderer: must precede the /:id GET (literal 'export' is
|
|
80
37
|
// non-numeric so the /(\d+)/ route would not match it, but order it first).
|
|
81
|
-
export async function handleExportSkills(
|
|
38
|
+
export async function handleExportSkills(rr) {
|
|
39
|
+
const { req, res, opts } = rr;
|
|
82
40
|
const ctx = await buildContextWithAuth(req, opts);
|
|
83
|
-
const markdown =
|
|
41
|
+
const markdown = await skillsMarkdown(objectsOf(ctx), ctx.tenantId);
|
|
84
42
|
sendJson(res, 200, { markdown });
|
|
85
|
-
return;
|
|
86
43
|
}
|
|
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;
|
|
44
|
+
export function handleSupersedeSkill(rr, match) {
|
|
45
|
+
return supersedeRoute(skillRoutes, rr, match);
|
|
133
46
|
}
|
|
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;
|
|
47
|
+
export function handleCloseSkill(rr, match) {
|
|
48
|
+
return closeRoute(skillRoutes, rr, match);
|
|
140
49
|
}
|
|
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;
|
|
50
|
+
export function handleGetSkill(rr, match) {
|
|
51
|
+
return getRoute(skillRoutes, rr, match);
|
|
150
52
|
}
|
|
151
53
|
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface ServerInfo {
|
|
2
|
+
/** Pidfile schema version; absent on pidfiles written before the field existed, which detectServer treats as legacy and still accepts. */
|
|
3
|
+
schema?: number;
|
|
4
|
+
pid: number;
|
|
5
|
+
port: number;
|
|
6
|
+
url: string;
|
|
7
|
+
started_at: string;
|
|
8
|
+
}
|
|
9
|
+
/** Returns the pidfile's ServerInfo if a live hippo server answers on the recorded url, else null (best-effort unlinking of missing/stale/malformed pidfiles).
|
|
10
|
+
* `process.kill(pid, 0)` rules out dead pids; GET /health must then return the pidfile's `started_at` (pids get reused). Probes only if the pid is live. */
|
|
11
|
+
export declare function detectServer(hippoRoot: string): Promise<ServerInfo | null>;
|
|
12
|
+
/** Atomically writes the pidfile (process-scoped temp file, then rename; atomic on POSIX and NTFS). `startedAt` comes from the caller (`serve()`) so the
|
|
13
|
+
* pidfile and GET /health carry the same timestamp, which detectServer's liveness probe compares. */
|
|
14
|
+
export declare function writePidfile(hippoRoot: string, opts: {
|
|
15
|
+
port: number;
|
|
16
|
+
url: string;
|
|
17
|
+
startedAt: string;
|
|
18
|
+
}): void;
|
|
19
|
+
/** Best-effort pidfile removal, silent on any error so shutdown paths can call it. Identity-blind: a shutdown that must not clobber a newer server's pidfile
|
|
20
|
+
* uses removePidfileIfOwned. */
|
|
21
|
+
export declare function removePidfile(hippoRoot: string): void;
|
|
22
|
+
/** Removes the pidfile ONLY when both `pid` and `started_at` match `owner`, so an older shutting-down server cannot orphan a newer one; never throws.
|
|
23
|
+
* Anything unreadable or malformed is "not provably mine" and left alone (detectServer unlinks it). Returns true iff removed. */
|
|
24
|
+
export declare function removePidfileIfOwned(hippoRoot: string, owner: {
|
|
25
|
+
pid: number;
|
|
26
|
+
startedAt: string;
|
|
27
|
+
}): boolean;
|
|
28
|
+
//# sourceMappingURL=server-detect.d.ts.map
|