hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/core/config.js
CHANGED
|
@@ -5,8 +5,8 @@ import * as fs from 'fs';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { DEFAULT_PHYSICS_CONFIG, mergePhysicsConfig } from './physics-config.js';
|
|
7
7
|
import { DEFAULT_HALF_LIFE_DAYS } from './memory.js';
|
|
8
|
-
import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from './search-types.js';
|
|
9
|
-
import { errorCode, errorMessage, log } from '../util/log.js';
|
|
8
|
+
import { DEFAULT_LOCAL_BUMP, DEFAULT_MMR_LAMBDA, DEFAULT_RECALL_BUDGET } from './search-types.js';
|
|
9
|
+
import { errorCode, errorMessage, log, errorFields } from '../util/log.js';
|
|
10
10
|
import { isJsonObject } from '../util/json.js';
|
|
11
11
|
export const DEFAULT_CONFIG = {
|
|
12
12
|
defaultHalfLifeDays: DEFAULT_HALF_LIFE_DAYS,
|
|
@@ -35,7 +35,7 @@ export const DEFAULT_CONFIG = {
|
|
|
35
35
|
physics: { ...DEFAULT_PHYSICS_CONFIG },
|
|
36
36
|
mmr: {
|
|
37
37
|
enabled: true,
|
|
38
|
-
lambda:
|
|
38
|
+
lambda: DEFAULT_MMR_LAMBDA,
|
|
39
39
|
},
|
|
40
40
|
search: {
|
|
41
41
|
localBump: DEFAULT_LOCAL_BUMP,
|
|
@@ -158,7 +158,8 @@ function memoryValueOverride(raw) {
|
|
|
158
158
|
return memoryValueRaw !== undefined && isJsonObject(memoryValueRaw) ? memoryValueRaw : {};
|
|
159
159
|
}
|
|
160
160
|
function dormantSettings(raw) {
|
|
161
|
-
// Same rule as memoryValue above: a malformed value never silently changes what sleep does; anything but a real
|
|
161
|
+
// Same rule as memoryValue above: a malformed value never silently changes what sleep does; anything but a real
|
|
162
|
+
// object / boolean / number
|
|
162
163
|
// warns and falls back to the default, which keeps faded memories.
|
|
163
164
|
const dormantRaw = raw.dormant;
|
|
164
165
|
if (dormantRaw !== undefined && !isJsonObject(dormantRaw)) {
|
|
@@ -200,7 +201,8 @@ function churnStalenessEnabled(raw) {
|
|
|
200
201
|
return enabled;
|
|
201
202
|
}
|
|
202
203
|
function defaultHalfLifeDays(raw) {
|
|
203
|
-
// Every writer starts a memory on this, and a zero or negative half-life scores zero strength, so sleep would retire
|
|
204
|
+
// Every writer starts a memory on this, and a zero or negative half-life scores zero strength, so sleep would retire
|
|
205
|
+
// it.
|
|
204
206
|
const days = raw.defaultHalfLifeDays ?? DEFAULT_CONFIG.defaultHalfLifeDays;
|
|
205
207
|
if (!Number.isFinite(days) || days <= 0) {
|
|
206
208
|
log.warn(`config.json's "defaultHalfLifeDays" must be a number of days above 0 ` +
|
|
@@ -218,7 +220,8 @@ function sharedStoreFlag(raw) {
|
|
|
218
220
|
return false;
|
|
219
221
|
}
|
|
220
222
|
export function loadConfig(hippoRoot) {
|
|
221
|
-
// A caller that names no folder, as an add-on serving another store does, gets the defaults, never the working
|
|
223
|
+
// A caller that names no folder, as an add-on serving another store does, gets the defaults, never the working
|
|
224
|
+
// folder's config.json.
|
|
222
225
|
if (hippoRoot === '')
|
|
223
226
|
return { ...DEFAULT_CONFIG };
|
|
224
227
|
const configPath = path.join(hippoRoot, 'config.json');
|
|
@@ -236,7 +239,8 @@ export function loadConfig(hippoRoot) {
|
|
|
236
239
|
const PARSED_CONFIGS_MAX = 64;
|
|
237
240
|
// Each path's parsed config with the stamp of the file it came from, so an unchanged file costs one stat and no parse.
|
|
238
241
|
const parsedConfigs = new Map();
|
|
239
|
-
/** A file's mtime and size, which an edit changes; null when it is missing or cannot be reached, as existsSync
|
|
242
|
+
/** A file's mtime and size, which an edit changes; null when it is missing or cannot be reached, as existsSync
|
|
243
|
+
* answers false. */
|
|
240
244
|
function fileStamp(file) {
|
|
241
245
|
try {
|
|
242
246
|
const stat = fs.statSync(file, { throwIfNoEntry: false });
|
|
@@ -245,14 +249,17 @@ function fileStamp(file) {
|
|
|
245
249
|
catch (err) {
|
|
246
250
|
const code = errorCode(err);
|
|
247
251
|
const message = `config: ${file} could not be reached, read as missing: ${errorMessage(err)}`;
|
|
248
|
-
if (code === 'EACCES' || code === 'EPERM')
|
|
249
|
-
log.warnThenDebug(`config-unreachable:${file}:${code}`, message, { path: file, code });
|
|
252
|
+
if (code === 'EACCES' || code === 'EPERM') {
|
|
253
|
+
log.warnThenDebug(`config-unreachable:${file}:${code}`, message, { path: file, code, ...errorFields(err) });
|
|
254
|
+
}
|
|
255
|
+
// Any other refusal (ENOTDIR, ELOOP) means the path is simply not there, so only a permission refusal is told.
|
|
250
256
|
else
|
|
251
|
-
log.debug(message);
|
|
257
|
+
log.debug(message, errorFields(err));
|
|
252
258
|
return null;
|
|
253
259
|
}
|
|
254
260
|
}
|
|
255
|
-
/** A config.json that exists must load: running on defaults would silently drop the user's settings, such as
|
|
261
|
+
/** A config.json that exists must load: running on defaults would silently drop the user's settings, such as
|
|
262
|
+
* `sharedStore`. */
|
|
256
263
|
function readConfigFile(configPath) {
|
|
257
264
|
let raw;
|
|
258
265
|
try {
|
|
@@ -318,20 +325,23 @@ function configOverDefaults(raw) {
|
|
|
318
325
|
const sharedStoreRoots = new Set();
|
|
319
326
|
// The stamp of each config.json last read as not shared: an unchanged file is not parsed again.
|
|
320
327
|
const notSharedStamps = new Map();
|
|
321
|
-
/** The folder as isGlobalStoreRoot compares it (realpath, case-folded on Windows); its helper sits behind an import
|
|
328
|
+
/** The folder as isGlobalStoreRoot compares it (realpath, case-folded on Windows); its helper sits behind an import
|
|
329
|
+
* cycle. */
|
|
322
330
|
function sharedStoreKey(hippoRoot) {
|
|
323
331
|
let real;
|
|
324
332
|
try {
|
|
325
333
|
real = fs.realpathSync.native(hippoRoot);
|
|
326
334
|
}
|
|
327
335
|
catch (err) {
|
|
328
|
-
|
|
336
|
+
// A folder that does not exist yet has no real path, so the resolved one stands in.
|
|
337
|
+
log.debug(`sharedStore: realpath fell back to resolve for ${hippoRoot}: ${errorMessage(err)}`, errorFields(err));
|
|
329
338
|
real = path.resolve(hippoRoot);
|
|
330
339
|
}
|
|
331
340
|
return process.platform === 'win32' ? real.toLowerCase() : real;
|
|
332
341
|
}
|
|
333
342
|
/** True when the store's config.json sets `"sharedStore": true`. Once true, a root stays true for this process,
|
|
334
|
-
*
|
|
343
|
+
* so a broken edit while a server runs cannot turn it off. Reads only this key, so loadConfig's warnings stay
|
|
344
|
+
* loadConfig's. */
|
|
335
345
|
export function isSharedStore(hippoRoot) {
|
|
336
346
|
const key = sharedStoreKey(hippoRoot);
|
|
337
347
|
if (sharedStoreRoots.has(key))
|
package/dist/core/cosine.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Cosine over any indexable vectors (a Float32 view scores as its number[] copy); 0 for empty, mismatched or zero-norm
|
|
3
|
+
* input.
|
|
4
|
+
*/
|
|
2
5
|
export declare function cosineOf(a: ArrayLike<number>, b: ArrayLike<number>): number;
|
|
3
6
|
//# sourceMappingURL=cosine.d.ts.map
|
package/dist/core/cosine.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Cosine over any indexable vectors (a Float32 view scores as its number[] copy); 0 for empty, mismatched or zero-norm
|
|
3
|
+
* input.
|
|
4
|
+
*/
|
|
2
5
|
export function cosineOf(a, b) {
|
|
3
6
|
if (a.length === 0 || b.length === 0 || a.length !== b.length)
|
|
4
7
|
return 0;
|
package/dist/core/handoff.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers: a handoff captures a session's state so a successor session or another agent can
|
|
3
|
+
* pick up where it left off.
|
|
4
|
+
*/
|
|
2
5
|
/** Terminal state of a handoff's session, denormalized from its `session_complete` event. */
|
|
3
6
|
export type HandoffOutcome = 'success' | 'failure' | 'partial';
|
|
4
7
|
/** Best-effort evidence of repo state at handoff time; null fields mean collection failed or was skipped. */
|
|
@@ -6,7 +9,9 @@ export interface HandoffEvidence {
|
|
|
6
9
|
gitRef?: string | null;
|
|
7
10
|
dirtyTree?: boolean | null;
|
|
8
11
|
testStatus?: 'pass' | 'fail' | 'unknown' | null;
|
|
9
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* 'transcript' when hippo read the handoff off the session's transcript at session end; a later exit may replace it.
|
|
14
|
+
*/
|
|
10
15
|
derivedFrom?: 'transcript';
|
|
11
16
|
}
|
|
12
17
|
/** Narrows an unvalidated value (e.g. CLI input or event content) to a HandoffOutcome. */
|
package/dist/core/handoff.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers: a handoff captures a session's state so a successor session or another agent can
|
|
3
|
+
* pick up where it left off.
|
|
4
|
+
*/
|
|
2
5
|
import { isJsonString } from '../util/json.js';
|
|
3
6
|
import { warnDamagedColumn } from '../util/stored-json.js';
|
|
4
7
|
/** Narrows an unvalidated value (e.g. CLI input or event content) to a HandoffOutcome. */
|
package/dist/core/markdown.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_TENANT_ID } from '../util/env.js';
|
|
2
|
-
import { FALLBACK_HALF_LIFE_DAYS, DEFAULT_SCHEMA_FIT } from './memory.js';
|
|
2
|
+
import { FALLBACK_HALF_LIFE_DAYS, DEFAULT_SCHEMA_FIT, } from './memory.js';
|
|
3
3
|
import { dumpFrontmatter, parseFrontmatter } from '../util/yaml.js';
|
|
4
4
|
/** The fields every mirror file carries; serializeEntry adds the optional ones. */
|
|
5
5
|
function entryFrontmatter(entry) {
|
|
@@ -51,7 +51,8 @@ export function serializeEntry(entry) {
|
|
|
51
51
|
if (entry.origin_project !== undefined) {
|
|
52
52
|
frontmatter['origin_project'] = entry.origin_project;
|
|
53
53
|
}
|
|
54
|
-
// Spread into a fresh literal: dumpFrontmatter's Record<string, YamlValue> needs an index signature, which the named
|
|
54
|
+
// Spread into a fresh literal: dumpFrontmatter's Record<string, YamlValue> needs an index signature, which the named
|
|
55
|
+
// interface does not structurally provide.
|
|
55
56
|
const fm = dumpFrontmatter({ ...frontmatter });
|
|
56
57
|
return `${fm}\n\n${entry.content}\n`;
|
|
57
58
|
}
|
|
@@ -60,8 +61,8 @@ export function deserializeEntry(raw) {
|
|
|
60
61
|
const { data, content } = parseFrontmatter(raw);
|
|
61
62
|
if (!data['id'] || !data['layer'])
|
|
62
63
|
return null;
|
|
63
|
-
// SAFETY: each `as X` narrows a raw YAML field to a MemoryEntry union member; frontmatter is only written by
|
|
64
|
-
// so out-of-range values mean hand-edited files, which this parser may accept (permissive parse).
|
|
64
|
+
// SAFETY: each `as X` narrows a raw YAML field to a MemoryEntry union member; frontmatter is only written by
|
|
65
|
+
// serializeEntry, so out-of-range values mean hand-edited files, which this parser may accept (permissive parse).
|
|
65
66
|
return {
|
|
66
67
|
id: String(data['id']),
|
|
67
68
|
created: String(data['created'] ?? new Date().toISOString()),
|
|
@@ -84,24 +85,28 @@ export function deserializeEntry(raw) {
|
|
|
84
85
|
parents: normalizeStringArray(data['parents']),
|
|
85
86
|
starred: Boolean(data['starred'] ?? false),
|
|
86
87
|
trace_outcome: data['trace_outcome'] ?? null,
|
|
87
|
-
source_session_id: data['source_session_id']
|
|
88
|
-
? null
|
|
89
|
-
: String(data['source_session_id']),
|
|
88
|
+
source_session_id: nullableString(data['source_session_id']),
|
|
90
89
|
valid_from: data['valid_from'] ? String(data['valid_from']) : String(data['created'] ?? new Date().toISOString()),
|
|
91
|
-
superseded_by: data['superseded_by']
|
|
92
|
-
? null
|
|
93
|
-
: String(data['superseded_by']),
|
|
90
|
+
superseded_by: nullableString(data['superseded_by']),
|
|
94
91
|
extracted_from: data['extracted_from'] ?? null,
|
|
95
92
|
dag_level: Number(data['dag_level'] ?? 0),
|
|
96
93
|
dag_parent_id: data['dag_parent_id'] ?? null,
|
|
97
|
-
kind:
|
|
98
|
-
scope:
|
|
99
|
-
owner:
|
|
100
|
-
artifact_ref:
|
|
101
|
-
tenant_id: data['tenant_id']
|
|
102
|
-
origin_project:
|
|
94
|
+
kind: data['kind'] ?? 'distilled',
|
|
95
|
+
scope: nullableString(data['scope']),
|
|
96
|
+
owner: nullableString(data['owner']),
|
|
97
|
+
artifact_ref: nullableString(data['artifact_ref']),
|
|
98
|
+
tenant_id: nullableString(data['tenant_id']) ?? DEFAULT_TENANT_ID,
|
|
99
|
+
origin_project: originProjectOf(data),
|
|
103
100
|
};
|
|
104
101
|
}
|
|
102
|
+
function originProjectOf(data) {
|
|
103
|
+
if (!('origin_project' in data))
|
|
104
|
+
return undefined;
|
|
105
|
+
return data['origin_project'] === null ? null : String(data['origin_project']);
|
|
106
|
+
}
|
|
107
|
+
function nullableString(value) {
|
|
108
|
+
return value === null || value === undefined ? null : String(value);
|
|
109
|
+
}
|
|
105
110
|
function normalizeStringArray(value) {
|
|
106
111
|
if (!Array.isArray(value))
|
|
107
112
|
return [];
|
|
@@ -3,7 +3,8 @@ import { canAutoDelete } from './memory.js';
|
|
|
3
3
|
import { automaticDefect, hasNoSpecificity, isFragment, isReleaseCommitNoise, substantiveWordCount, } from './memory-quality.js';
|
|
4
4
|
export function auditMemory(entry, backsObject = false) {
|
|
5
5
|
const issue = classifyMemory(entry);
|
|
6
|
-
// Error means "auto-remove"; a pinned, raw, kept-for-good or object-backing row is never auto-removed, so it can only
|
|
6
|
+
// Error means "auto-remove"; a pinned, raw, kept-for-good or object-backing row is never auto-removed, so it can only
|
|
7
|
+
// warn.
|
|
7
8
|
if (issue?.severity === 'error' && (!canAutoDelete(entry) || backsObject)) {
|
|
8
9
|
const why = entry.pinned ? 'pinned' : entry.kind === 'raw' ? 'raw' : backsObject ? 'backs an object' : 'keep rule';
|
|
9
10
|
return { ...issue, severity: 'warning', reason: `${issue.reason} (${why}, kept)` };
|
|
@@ -26,10 +27,20 @@ function classifyMemory(entry) {
|
|
|
26
27
|
}
|
|
27
28
|
const substantive = substantiveWordCount(content);
|
|
28
29
|
if (substantive < 2) {
|
|
29
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
memoryId: entry.id,
|
|
32
|
+
content,
|
|
33
|
+
severity: 'warning',
|
|
34
|
+
reason: `only ${substantive} substantive word(s) — too vague`,
|
|
35
|
+
};
|
|
30
36
|
}
|
|
31
37
|
if (content.length < 40 && hasNoSpecificity(content)) {
|
|
32
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
memoryId: entry.id,
|
|
40
|
+
content,
|
|
41
|
+
severity: 'warning',
|
|
42
|
+
reason: 'no specific details (names, paths, numbers, code)',
|
|
43
|
+
};
|
|
33
44
|
}
|
|
34
45
|
const reason = automaticDefect(entry);
|
|
35
46
|
if (reason !== null) {
|
|
@@ -19,11 +19,20 @@ export declare function isCertainReason(reason: AutomaticMemoryDefect | null): b
|
|
|
19
19
|
export declare function certainDefect(content: string): AutomaticMemoryDefect | null;
|
|
20
20
|
export declare const BUNDLE_HEADER: RegExp;
|
|
21
21
|
type Provenance = Pick<MemoryEntry, 'source' | 'confidence' | 'content' | 'extracted_from' | 'dag_level' | 'tags'>;
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* A row hippo wrote that no person vouched for: hippo's writers
|
|
24
|
+
* stamp observed or inferred, a person's edit or restore verified.
|
|
25
|
+
*/
|
|
23
26
|
export declare function isAutomaticEntry(entry: Provenance): boolean;
|
|
24
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* The audit's check: a person's row is never judged, and a bundle is flagged only when every part is, as reuse and
|
|
29
|
+
* recent context judge it.
|
|
30
|
+
*/
|
|
25
31
|
export declare function automaticDefect(entry: Provenance): AutomaticMemoryDefect | null;
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Whether sleep may derive from a row or share it: a person's text and watch failures always, hippo's own text only
|
|
34
|
+
* without a certain defect.
|
|
35
|
+
*/
|
|
27
36
|
export declare function isReusable(entry: Provenance): boolean;
|
|
28
37
|
/** The person floor's fragment test, on trimmed text. */
|
|
29
38
|
export declare function isFragment(text: string): boolean;
|
|
@@ -25,6 +25,9 @@ export function isReleaseCommitNoise(text) {
|
|
|
25
25
|
|| /^(?:Merge branch|Merge pull request)\b/i.test(text)
|
|
26
26
|
|| /^WIP\b/i.test(text);
|
|
27
27
|
}
|
|
28
|
+
const NOT_FILLER_WORD = String.raw `(?!(?:the|that|this|it|them|those|these|one|other|something)\b)\S+`;
|
|
29
|
+
const PREFER_TARGET = new RegExp(String.raw `^(?:prefer|use|avoid|never use|don't use)\s+` + NOT_FILLER_WORD, 'i');
|
|
30
|
+
const ALWAYS_NEVER_TARGET = new RegExp(String.raw `\b(?:never|always|must)\s+` + NOT_FILLER_WORD, 'i');
|
|
28
31
|
/** Short preferences and rules carry a useful relationship even without a path or number. */
|
|
29
32
|
export function hasNoSpecificity(text) {
|
|
30
33
|
const domainAcronyms = (text.match(/\b[A-Z]{2,6}\b/g) ?? []).filter(a => !CHAT_ACRONYMS.test(a));
|
|
@@ -32,14 +35,18 @@ export function hasNoSpecificity(text) {
|
|
|
32
35
|
return false;
|
|
33
36
|
if (domainAcronyms.length > 0 && /[a-z]/.test(text))
|
|
34
37
|
return false;
|
|
35
|
-
if (
|
|
38
|
+
if (PREFER_TARGET.test(text))
|
|
36
39
|
return false;
|
|
37
|
-
if (
|
|
40
|
+
if (ALWAYS_NEVER_TARGET.test(text))
|
|
38
41
|
return false;
|
|
39
42
|
return text.split(/\s+/).length < 8 && /^[\w\s,.'"-]+$/.test(text);
|
|
40
43
|
}
|
|
41
44
|
const RELATION_WORD = /\b(?:when|if|unless|because|since|after|before|until|while|so|instead)\b/i;
|
|
42
45
|
const RULE_WORD = /\b(?:never|always|must|don't|do not|make sure|ensure|prefer|avoid)\b/i;
|
|
46
|
+
const VERSION_BUMP = new RegExp(String.raw `^(?:bump|increment|increase|update|set)\s+(?:(?:ios|android|app)\s+)?` +
|
|
47
|
+
String.raw `(?:build(?:\s+number)?|version|release)\s+(?:to\s+)?(?:v?\d|#\d)`, 'i');
|
|
48
|
+
const DEPLOY_ACTION = new RegExp(String.raw `^(?:deploy(?:ed|ing)?|ship(?:ped|ping)?|release(?:d|ing)?)\s+(?:the\s+)?` +
|
|
49
|
+
String.raw `(?:build|release|version|v?\d)\s*(?:v?\d|#\d|\.\d)`, 'i');
|
|
43
50
|
function isRoutineReleaseActivity(text) {
|
|
44
51
|
if (isReleaseCommitNoise(text))
|
|
45
52
|
return true;
|
|
@@ -47,14 +54,15 @@ function isRoutineReleaseActivity(text) {
|
|
|
47
54
|
if (RELATION_WORD.test(text) || RULE_WORD.test(text))
|
|
48
55
|
return false;
|
|
49
56
|
const subject = text.replace(/^(?:chore|ci|build)(?:\([^)]*\))?:\s*/i, '');
|
|
50
|
-
if (
|
|
57
|
+
if (VERSION_BUMP.test(subject))
|
|
51
58
|
return true;
|
|
52
|
-
return
|
|
53
|
-
|
|
59
|
+
return (DEPLOY_ACTION.test(subject) ||
|
|
60
|
+
/^(?:deployment|release|build)\s+(?:succeeded|completed|finished)\b/i.test(subject));
|
|
54
61
|
}
|
|
55
62
|
const bareText = (text) => text.replace(/[.!?,;:\s]+$/, '');
|
|
56
63
|
// These endings close whole sentences too ("the branch you push to"), so they are only a possible cut.
|
|
57
|
-
const POSSIBLE_CUT_ENDING =
|
|
64
|
+
const POSSIBLE_CUT_ENDING = new RegExp(String.raw `\b(?:needs to|depends on|requires|while|with|without|into|for|of|by|to|is|are|was|were|` +
|
|
65
|
+
String.raw `must|should|could|would|might)$`, 'i');
|
|
58
66
|
/** A short leading condition with no rule word, comma or "then": "If the build fails". */
|
|
59
67
|
function isBareCondition(bare) {
|
|
60
68
|
return !/[,;]|\bthen\b/i.test(bare) && !RULE_WORD.test(bare) && bare.split(/\s+/).length <= 6;
|
|
@@ -64,9 +72,12 @@ function isDanglingAssertion(text) {
|
|
|
64
72
|
// Only a lowercase start is a cut: "To rebuild the index, run ..." opens an instruction.
|
|
65
73
|
if (/^(?:to|and|for)\s/.test(bare) && bare.length < 50)
|
|
66
74
|
return true;
|
|
67
|
-
// Prepositions, modals and "is" can end a whole sentence ("the
|
|
68
|
-
|
|
75
|
+
// Prepositions, modals and "is" can end a whole sentence ("the
|
|
76
|
+
// branch it merges into"), so only cut-off endings count.
|
|
77
|
+
if (/\b(?:to be|has been|will be|instead of|rather than|such as|than|because|if|unless|when|until|and|or|but)$/i.test(bare) ||
|
|
78
|
+
/\b(?:the|a|an)$/.test(bare)) {
|
|
69
79
|
return true;
|
|
80
|
+
}
|
|
70
81
|
return /^(?:if|unless|when|while|until)\b/.test(bare) && isBareCondition(bare);
|
|
71
82
|
}
|
|
72
83
|
/** A capitalised short condition may carry its rule with no comma: "When CI fails we retry once". */
|
|
@@ -74,19 +85,25 @@ function isPossibleFragment(text) {
|
|
|
74
85
|
const bare = bareText(text);
|
|
75
86
|
return POSSIBLE_CUT_ENDING.test(bare) || (/^(?:If|Unless|When|While|Until)\b/.test(bare) && isBareCondition(bare));
|
|
76
87
|
}
|
|
77
|
-
const OUTCOME_LEAD =
|
|
78
|
-
|
|
88
|
+
const OUTCOME_LEAD = new RegExp(String.raw `^(?:succeeds?|succeeded|fails?|failed|passes|passed|completed|done|successful|success|` +
|
|
89
|
+
String.raw `returned|returns|inserted|updated|deleted)\b`, 'i');
|
|
90
|
+
const OUTCOME_DETAIL = new RegExp(String.raw `\b(?:for|on|in|at|to|from|with|without|by|after|before|under|is|are|was|were|be|been|` +
|
|
91
|
+
String.raw `will|can|must|should|never|always)\b`, 'i');
|
|
79
92
|
function isSubjectlessOutcome(text) {
|
|
80
93
|
const lead = OUTCOME_LEAD.exec(text);
|
|
81
94
|
if (lead === null || RELATION_WORD.test(text))
|
|
82
95
|
return false;
|
|
83
|
-
// "Returns 404 for unknown ids" and "Deleted rows must stay
|
|
96
|
+
// "Returns 404 for unknown ids" and "Deleted rows must stay
|
|
97
|
+
// deleted" say when or what; "returned 3 matching rows" does not.
|
|
84
98
|
return !OUTCOME_DETAIL.test(text.slice(lead[0].length).replace(/\([^)]*\)/g, ' '));
|
|
85
99
|
}
|
|
86
|
-
|
|
100
|
+
// `(?:.*\S)?` ends the quoted command on a non-space, so it and `\s+` never share a run of spaces (no ReDoS).
|
|
101
|
+
const OUTPUT_LINE = new RegExp(String.raw `^(?:\$\s|>\s|(?:stdout|stderr|exit code):|Command\s+['"](?:.*\S)?\s+failed\b|` +
|
|
102
|
+
String.raw `Traceback\b|npm\s+(?:ERR|WARN)\b|error\s+TS\d+\b)`, 'i');
|
|
87
103
|
const STACK_FRAME = /^at\s+\S.*:\d+(?::\d+)?\)?$/;
|
|
88
104
|
const ERROR_LEAD = /^(?:[\w.$]+Error|[\w.$]+Exception):\s/;
|
|
89
|
-
// Log lines say "after" and "while" too, so only a rule word frees
|
|
105
|
+
// Log lines say "after" and "while" too, so only a rule word frees
|
|
106
|
+
// a timestamp or level lead: a dated freeze saying never merge.
|
|
90
107
|
const LOG_LEADS = [
|
|
91
108
|
/^\d{4}-\d{2}-\d{2}[T ][\d:.]+(?:Z|[+-][\d:]+)?\s+(?:\[?\w+\]?\s+)?/,
|
|
92
109
|
/^\[(?:info|warn|error|debug)\]/i,
|
|
@@ -129,7 +146,12 @@ export function assessAutomaticMemory(content) {
|
|
|
129
146
|
return { accepted: reason === null || reason === 'possible-fragment', reason };
|
|
130
147
|
}
|
|
131
148
|
/** Reasons the heuristics can get wrong: repair only lists them for review and derivation still admits them. */
|
|
132
|
-
const UNCERTAIN_REASONS = new Set([
|
|
149
|
+
const UNCERTAIN_REASONS = new Set([
|
|
150
|
+
'too-short',
|
|
151
|
+
'possible-fragment',
|
|
152
|
+
'too-vague',
|
|
153
|
+
'no-specificity',
|
|
154
|
+
]);
|
|
133
155
|
export function isCertainReason(reason) {
|
|
134
156
|
return reason !== null && !UNCERTAIN_REASONS.has(reason);
|
|
135
157
|
}
|
|
@@ -138,13 +160,18 @@ export function certainDefect(content) {
|
|
|
138
160
|
const { reason } = assessAutomaticMemory(content);
|
|
139
161
|
return isCertainReason(reason) ? reason : null;
|
|
140
162
|
}
|
|
141
|
-
// Watch failures ('autolearn') and tool failures keep a fixed
|
|
163
|
+
// Watch failures ('autolearn') and tool failures keep a fixed
|
|
164
|
+
// "Command 'x' failed" format by design, so they are not judged.
|
|
142
165
|
const AUTOMATIC_SOURCES = new Set(['capture', 'git-learn', 'git', 'consolidation']);
|
|
143
|
-
// Promote and share rewrite the source but keep the tags, so the writer's tag still marks a copy; elsewhere a person
|
|
166
|
+
// Promote and share rewrite the source but keep the tags, so the writer's tag still marks a copy; elsewhere a person
|
|
167
|
+
// may set it.
|
|
144
168
|
const AUTOMATIC_TAGS = new Set(['captured', COMPACTION_MEMORY_TAG, 'git-learned']);
|
|
145
169
|
const COPY_SOURCE = /^(?:promoted|shared):/;
|
|
146
170
|
export const BUNDLE_HEADER = /^\[Consolidated(?: from| pattern from) \d+ related memor(?:y|ies)(?:, newest first)?\]\n\n/;
|
|
147
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* A row hippo wrote that no person vouched for: hippo's writers
|
|
173
|
+
* stamp observed or inferred, a person's edit or restore verified.
|
|
174
|
+
*/
|
|
148
175
|
export function isAutomaticEntry(entry) {
|
|
149
176
|
if (entry.confidence !== 'observed' && entry.confidence !== 'inferred')
|
|
150
177
|
return false;
|
|
@@ -152,7 +179,9 @@ export function isAutomaticEntry(entry) {
|
|
|
152
179
|
|| (COPY_SOURCE.test(entry.source) && entry.tags.some((tag) => AUTOMATIC_TAGS.has(tag)))
|
|
153
180
|
|| entry.extracted_from !== null || entry.dag_level >= 1 || BUNDLE_HEADER.test(entry.content);
|
|
154
181
|
}
|
|
155
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* A bundle's parts are other rows' words, possibly a person's, so a bundle is sure to be junk only when every part is.
|
|
184
|
+
*/
|
|
156
185
|
function bundleParts(entry) {
|
|
157
186
|
return BUNDLE_HEADER.test(entry.content) ? heldTexts({ content: entry.content, source: 'consolidation' }) : [];
|
|
158
187
|
}
|
|
@@ -160,7 +189,10 @@ function hasCertainDefect(entry) {
|
|
|
160
189
|
const parts = bundleParts(entry);
|
|
161
190
|
return (parts.length > 0 ? parts : [entry.content]).every((text) => certainDefect(text) !== null);
|
|
162
191
|
}
|
|
163
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* The audit's check: a person's row is never judged, and a bundle is flagged only when every part is, as reuse and
|
|
194
|
+
* recent context judge it.
|
|
195
|
+
*/
|
|
164
196
|
export function automaticDefect(entry) {
|
|
165
197
|
if (!isAutomaticEntry(entry))
|
|
166
198
|
return null;
|
|
@@ -168,7 +200,10 @@ export function automaticDefect(entry) {
|
|
|
168
200
|
const reasons = (parts.length > 0 ? parts : [entry.content.trim()]).map((text) => assessAutomaticMemory(text).reason);
|
|
169
201
|
return reasons.every((reason) => reason !== null) ? reasons[0] ?? null : null;
|
|
170
202
|
}
|
|
171
|
-
/**
|
|
203
|
+
/**
|
|
204
|
+
* Whether sleep may derive from a row or share it: a person's text and watch failures always, hippo's own text only
|
|
205
|
+
* without a certain defect.
|
|
206
|
+
*/
|
|
172
207
|
export function isReusable(entry) {
|
|
173
208
|
return !isAutomaticEntry(entry) || !hasCertainDefect(entry);
|
|
174
209
|
}
|
|
@@ -182,8 +217,9 @@ export function isContentWorthStoring(content) {
|
|
|
182
217
|
}
|
|
183
218
|
/** Recent-context floor: rows hippo wrote meet the automatic check, a person's rows only the older, looser floor. */
|
|
184
219
|
export function isWorthSurfacing(entry) {
|
|
185
|
-
if (isAutomaticEntry(entry))
|
|
220
|
+
if (isAutomaticEntry(entry)) {
|
|
186
221
|
return bundleParts(entry).length > 0 ? !hasCertainDefect(entry) : isContentWorthStoring(entry.content);
|
|
222
|
+
}
|
|
187
223
|
const text = entry.content.trim();
|
|
188
224
|
return text.length >= 10 && !isReleaseCommitNoise(text) && !isFragment(text)
|
|
189
225
|
&& substantiveWordCount(text) >= 2 && !(text.length < 40 && hasNoSpecificity(text));
|