hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
package/dist/index.js
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hippo public API - re-exports for programmatic use.
|
|
3
3
|
*/
|
|
4
|
-
import { createMemory as createStoreMemory, DEFAULT_HALF_LIFE_DAYS } from './core/memory.js';
|
|
4
|
+
import { createMemory as createStoreMemory, DEFAULT_HALF_LIFE_DAYS, } from './core/memory.js';
|
|
5
|
+
import { sleep as sleepOnStore } from './api/sleep/sleep.js';
|
|
6
|
+
import { withStoreGroups } from './store/sqlite/store.js';
|
|
5
7
|
export { Layer, calculateStrength, resolveConfidence, confidenceFacets, applyOutcome, generateId, computeSchemaFit } from './core/memory.js';
|
|
6
|
-
/** Published signature, so `baseHalfLifeDays` stays optional
|
|
8
|
+
/** Published signature, so `baseHalfLifeDays` stays optional
|
|
9
|
+
* here; hippo's own writers use the strict one in memory.ts. */
|
|
7
10
|
export function createMemory(content, options = {}) {
|
|
8
|
-
return createStoreMemory(content, {
|
|
11
|
+
return createStoreMemory(content, {
|
|
12
|
+
...options,
|
|
13
|
+
emotionalValence: options.emotionalValence ?? options.emotional_valence,
|
|
14
|
+
schemaFit: options.schemaFit ?? options.schema_fit,
|
|
15
|
+
traceOutcome: options.traceOutcome ?? options.trace_outcome,
|
|
16
|
+
sourceSessionId: options.sourceSessionId ?? options.source_session_id,
|
|
17
|
+
validFrom: options.validFrom ?? options.valid_from,
|
|
18
|
+
extractedFrom: options.extractedFrom ?? options.extracted_from,
|
|
19
|
+
dagLevel: options.dagLevel ?? options.dag_level,
|
|
20
|
+
dagParentId: options.dagParentId ?? options.dag_parent_id,
|
|
21
|
+
artifactRef: options.artifactRef ?? options.artifact_ref,
|
|
22
|
+
baseHalfLifeDays: options.baseHalfLifeDays ?? DEFAULT_HALF_LIFE_DAYS,
|
|
23
|
+
});
|
|
9
24
|
}
|
|
10
25
|
export { search } from './search/bm25-search.js';
|
|
11
26
|
export { hybridSearch } from './search/hybrid.js';
|
|
@@ -21,7 +36,7 @@ export { initStore } from './store/open.js';
|
|
|
21
36
|
export { writeEntry } from './store/entry-writes.js';
|
|
22
37
|
export { loadAllEntries, readEntry } from './store/entry-reads.js';
|
|
23
38
|
export { deleteEntry } from './store/delete-and-batch.js';
|
|
24
|
-
export { loadSearchEntries,
|
|
39
|
+
export { loadSearchEntries, loadRecallEntries } from './store/search-rows.js';
|
|
25
40
|
export { loadIndex, rebuildIndex, loadSessionDecayContext } from './store/index-and-stats.js';
|
|
26
41
|
export { saveActiveTaskSnapshot, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, SNAPSHOT_AMBIENT_MAX_AGE_MS, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, } from './store/sessions.js';
|
|
27
42
|
export { listMemoryConflicts, replaceDetectedConflicts, resolveConflict } from './store/conflicts.js';
|
|
@@ -30,9 +45,12 @@ export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardCo
|
|
|
30
45
|
// Feature 5: Session handoff
|
|
31
46
|
export { isHandoffOutcome } from './core/handoff.js';
|
|
32
47
|
// W2a: work-queue cards
|
|
33
|
-
export { isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './core/card.js';
|
|
48
|
+
export { isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS, } from './core/card.js';
|
|
34
49
|
export { consolidate } from './consolidate/sleep.js';
|
|
35
|
-
|
|
50
|
+
/** Published signature, so the Context may carry no store: it then runs on hippo.db under its root. */
|
|
51
|
+
export async function sleep(ctx, opts) {
|
|
52
|
+
return sleepOnStore(withStoreGroups(ctx, 'localFiles'), opts);
|
|
53
|
+
}
|
|
36
54
|
// Announced public in CHANGELOG 1.26.3 but never re-exported; the rest of dedupe.js stays internal.
|
|
37
55
|
export { strengthBucket } from './consolidate/dedupe.js';
|
|
38
56
|
// Feature 1: Embedding search
|
|
@@ -41,7 +59,7 @@ export { cosineSimilarity } from './store/embeddings/index.js';
|
|
|
41
59
|
export { embedMemory, embedAll } from './search/embed-memories.js';
|
|
42
60
|
export { loadEmbeddingIndex, saveEmbeddingIndex } from './store/vector-index.js';
|
|
43
61
|
// Feature 2: Auto-learn from errors
|
|
44
|
-
export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './learn/autolearn.js';
|
|
62
|
+
export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, runWatchedLine, fetchGitLog, } from './learn/autolearn.js';
|
|
45
63
|
// Feature 3: Cross-agent shared memory
|
|
46
64
|
export { getGlobalRoot, initGlobal, promoteToGlobal } from './sharing/global-store.js';
|
|
47
65
|
export { searchBoth, searchBothHybrid } from './sharing/search-both.js';
|
|
@@ -61,5 +79,5 @@ export { computeSalience, } from './core/salience.js';
|
|
|
61
79
|
// Pineal gland: ambient state vector
|
|
62
80
|
export { computeAmbientState, renderAmbientSummary, formatAmbientVector, } from './core/ambient.js';
|
|
63
81
|
export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, } from './store/audit.js';
|
|
64
|
-
export
|
|
82
|
+
export * from './entry/sqlite-handles.js';
|
|
65
83
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/** Auto-learn from errors and git history.
|
|
2
2
|
* Agents learn from failures without explicit hippo remember calls. */
|
|
3
3
|
import { MemoryEntry } from '../core/memory.js';
|
|
4
|
-
/** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; `hippo watch` stores its text and
|
|
4
|
+
/** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; `hippo watch` stores its text and
|
|
5
|
+
* tags through remember. */
|
|
5
6
|
export declare function captureError(exitCode: number, stderr: string, command: string, tenantId?: string): MemoryEntry;
|
|
6
7
|
/** Parse git log output for actionable lessons.
|
|
7
8
|
* Looks for fix:, revert:, bug:, error:, hotfix: commit messages. */
|
|
8
9
|
export declare function extractLessons(gitLog: string, customPatterns?: string[]): string[];
|
|
9
|
-
/** Split parsed lessons into ones worth storing and low-information ones; kept out of `extractLessons` so that
|
|
10
|
+
/** Split parsed lessons into ones worth storing and low-information ones; kept out of `extractLessons` so that
|
|
11
|
+
* published parser's output cannot change.
|
|
10
12
|
* Order is preserved in both arrays, and both hold lessons with secret shapes redacted. */
|
|
11
13
|
export declare function partitionLessons(lessons: string[]): {
|
|
12
14
|
kept: string[];
|
|
13
15
|
dropped: string[];
|
|
14
16
|
};
|
|
15
17
|
/** Check if a substantially similar memory already exists: true if overlap > threshold (default 0.7).
|
|
16
|
-
*
|
|
18
|
+
* `tenantId` applies only on the root-string overload; a pre-loaded MemoryEntry[] is already scoped, so it is
|
|
19
|
+
* ignored there. */
|
|
17
20
|
export declare function deduplicateLesson(hippoRootOrEntries: string | MemoryEntry[], lesson: string, threshold?: number, tenantId?: string): boolean;
|
|
18
21
|
/** A transfer command that has not exited in this long is hung on a prompt or a dead remote. */
|
|
19
22
|
export declare const RUN_WATCHED_DEADLINE_MS: number;
|
|
@@ -23,9 +26,21 @@ export declare class RunWatchedTimeoutError extends Error {
|
|
|
23
26
|
readonly stderr: string;
|
|
24
27
|
constructor(deadlineMs: number, stderr: string);
|
|
25
28
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
export interface RunWatchedOptions {
|
|
30
|
+
/** Join argv with spaces and run it as one shell command line; kept for 2.x callers, new code uses runWatchedLine. */
|
|
31
|
+
shell?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Run argv[0] with the rest as its arguments and no shell, so `;`, `&` and `$()` reach it literally; stderr streams
|
|
34
|
+
* live.
|
|
35
|
+
* Returns: { exitCode, stderr } with only the last 64 KiB of stderr; rejects with RunWatchedTimeoutError past
|
|
36
|
+
* `deadlineMs`. */
|
|
37
|
+
export declare function runWatched(argv: readonly string[], deadlineMs?: number, opts?: RunWatchedOptions): Promise<{
|
|
38
|
+
exitCode: number;
|
|
39
|
+
stderr: string;
|
|
40
|
+
}>;
|
|
41
|
+
/** Run `line` as one shell command line, for text the caller wrote itself (`hippo watch --shell`); same result and
|
|
42
|
+
* deadline as runWatched. */
|
|
43
|
+
export declare function runWatchedLine(line: string, deadlineMs?: number): Promise<{
|
|
29
44
|
exitCode: number;
|
|
30
45
|
stderr: string;
|
|
31
46
|
}>;
|
package/dist/learn/autolearn.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/** Auto-learn from errors and git history.
|
|
2
2
|
* Agents learn from failures without explicit hippo remember calls. */
|
|
3
3
|
import { execFileSync, spawn } from 'child_process';
|
|
4
|
+
import { spawnArgv } from '../util/spawn-argv.js';
|
|
4
5
|
import { createMemory, Layer, DEFAULT_HALF_LIFE_DAYS } from '../core/memory.js';
|
|
5
|
-
import {
|
|
6
|
-
import { textOverlap } from '../util/tokenize.js';
|
|
6
|
+
import { localFilesAt } from './roots.js';
|
|
7
|
+
import { textOverlap, tokenize } from '../util/tokenize.js';
|
|
7
8
|
import { assessAutomaticMemory } from '../core/memory-quality.js';
|
|
8
9
|
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
9
|
-
import { errorMessage, log } from '../util/log.js';
|
|
10
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
10
11
|
const AUTOLEARN_TEXT_CHARS = 500;
|
|
11
12
|
const AUTOLEARN_TAG_CHARS = 30;
|
|
12
|
-
|
|
13
|
+
const MAX_LESSON_CHARS = 500;
|
|
14
|
+
/** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; `hippo watch` stores its text and
|
|
15
|
+
* tags through remember. */
|
|
13
16
|
export function captureError(exitCode, stderr, command, tenantId) {
|
|
14
17
|
// Truncate to first 500 chars to avoid storing megabytes of build logs
|
|
15
18
|
const clean = redactSecretsStrict(stderr);
|
|
16
|
-
const wasTruncated = clean.length >
|
|
19
|
+
const wasTruncated = clean.length > AUTOLEARN_TEXT_CHARS;
|
|
17
20
|
const truncated = clean.slice(0, AUTOLEARN_TEXT_CHARS).trim();
|
|
18
21
|
const suffix = wasTruncated ? ' [truncated]' : '';
|
|
19
22
|
// Strip leading env var assignments (KEY=val or key=val) before the actual command name
|
|
@@ -59,7 +62,7 @@ export function extractLessons(gitLog, customPatterns) {
|
|
|
59
62
|
if (m) {
|
|
60
63
|
// For conventional commits: use group 3 (message after prefix), group 2, or full match
|
|
61
64
|
const lesson = (m[3] ?? m[2] ?? m[0]).trim();
|
|
62
|
-
if (lesson.length > 5 && lesson.length <
|
|
65
|
+
if (lesson.length > 5 && lesson.length < MAX_LESSON_CHARS) {
|
|
63
66
|
lessons.push(lesson);
|
|
64
67
|
}
|
|
65
68
|
break;
|
|
@@ -69,7 +72,8 @@ export function extractLessons(gitLog, customPatterns) {
|
|
|
69
72
|
// Deduplicate exact matches at extraction time
|
|
70
73
|
return [...new Set(lessons)];
|
|
71
74
|
}
|
|
72
|
-
/** Split parsed lessons into ones worth storing and low-information ones; kept out of `extractLessons` so that
|
|
75
|
+
/** Split parsed lessons into ones worth storing and low-information ones; kept out of `extractLessons` so that
|
|
76
|
+
* published parser's output cannot change.
|
|
73
77
|
* Order is preserved in both arrays, and both hold lessons with secret shapes redacted. */
|
|
74
78
|
export function partitionLessons(lessons) {
|
|
75
79
|
const kept = [];
|
|
@@ -84,18 +88,31 @@ export function partitionLessons(lessons) {
|
|
|
84
88
|
}
|
|
85
89
|
return { kept, dropped };
|
|
86
90
|
}
|
|
91
|
+
// Never matches a real tag; the exact textOverlap re-check drops any row the content filter let through.
|
|
92
|
+
const NO_TAG = '~no-such-tag~';
|
|
93
|
+
/** Rows that can pass the overlap test: those sharing a token with the lesson. Falls back to every row when every row
|
|
94
|
+
* can match (no tokens, or a threshold below zero). */
|
|
95
|
+
function candidateEntries(learning, lesson, threshold, tenantId) {
|
|
96
|
+
const tokens = tokenize(lesson);
|
|
97
|
+
if (tokens.length === 0 || threshold < 0) {
|
|
98
|
+
return learning.allEntries(tenantId);
|
|
99
|
+
}
|
|
100
|
+
return learning.entriesMentioning(tokens, NO_TAG, tenantId);
|
|
101
|
+
}
|
|
87
102
|
/** Check if a substantially similar memory already exists: true if overlap > threshold (default 0.7).
|
|
88
|
-
*
|
|
103
|
+
* `tenantId` applies only on the root-string overload; a pre-loaded MemoryEntry[] is already scoped, so it is
|
|
104
|
+
* ignored there. */
|
|
89
105
|
export function deduplicateLesson(hippoRootOrEntries, lesson, threshold = 0.7, tenantId) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
106
|
+
if (Array.isArray(hippoRootOrEntries))
|
|
107
|
+
return overlapsAny(hippoRootOrEntries, lesson, threshold);
|
|
108
|
+
return isDuplicateLesson(localFilesAt(hippoRootOrEntries).learning, lesson, threshold, tenantId);
|
|
109
|
+
}
|
|
110
|
+
/** deduplicateLesson against the memories `learning` holds. */
|
|
111
|
+
function isDuplicateLesson(learning, lesson, threshold = 0.7, tenantId) {
|
|
112
|
+
return overlapsAny(candidateEntries(learning, lesson, threshold, tenantId), lesson, threshold);
|
|
113
|
+
}
|
|
114
|
+
function overlapsAny(entries, lesson, threshold) {
|
|
115
|
+
return entries.some((entry) => textOverlap(lesson, entry.content) > threshold);
|
|
99
116
|
}
|
|
100
117
|
/** The most stderr `runWatched` returns; the terminal still gets all of it. */
|
|
101
118
|
const STDERR_TAIL_BYTES = 64 * 1024;
|
|
@@ -112,20 +129,33 @@ export class RunWatchedTimeoutError extends Error {
|
|
|
112
129
|
this.name = 'RunWatchedTimeoutError';
|
|
113
130
|
}
|
|
114
131
|
}
|
|
115
|
-
/** Run
|
|
116
|
-
*
|
|
117
|
-
|
|
132
|
+
/** Run argv[0] with the rest as its arguments and no shell, so `;`, `&` and `$()` reach it literally; stderr streams
|
|
133
|
+
* live.
|
|
134
|
+
* Returns: { exitCode, stderr } with only the last 64 KiB of stderr; rejects with RunWatchedTimeoutError past
|
|
135
|
+
* `deadlineMs`. */
|
|
136
|
+
export function runWatched(argv, deadlineMs = RUN_WATCHED_DEADLINE_MS, opts = {}) {
|
|
137
|
+
if (opts.shell)
|
|
138
|
+
return runWatchedLine(argv.join(' '), deadlineMs);
|
|
139
|
+
return watchChild(spawnArgv(argv, WATCHED_SPAWN_OPTIONS), deadlineMs);
|
|
140
|
+
}
|
|
141
|
+
/** Run `line` as one shell command line, for text the caller wrote itself (`hippo watch --shell`); same result and
|
|
142
|
+
* deadline as runWatched. */
|
|
143
|
+
export function runWatchedLine(line, deadlineMs = RUN_WATCHED_DEADLINE_MS) {
|
|
144
|
+
return watchChild(spawn(line, { ...WATCHED_SPAWN_OPTIONS, windowsHide: true, shell: true }), deadlineMs);
|
|
145
|
+
}
|
|
146
|
+
const WATCHED_SPAWN_OPTIONS = { stdio: ['inherit', 'inherit', 'pipe'], windowsHide: true };
|
|
147
|
+
function watchChild(child, deadlineMs) {
|
|
118
148
|
return new Promise((resolve, reject) => {
|
|
119
|
-
// Use shell: true so the command string is handled by the shell as-is
|
|
120
|
-
const child = spawn(command, { shell: true, stdio: ['inherit', 'inherit', 'pipe'], windowsHide: true });
|
|
121
149
|
let tail = Buffer.alloc(0);
|
|
122
|
-
child.stderr
|
|
150
|
+
child.stderr?.on('data', (chunk) => {
|
|
123
151
|
tail = Buffer.concat([tail, chunk]);
|
|
124
152
|
if (tail.length > STDERR_TAIL_BYTES)
|
|
125
153
|
tail = tail.subarray(tail.length - STDERR_TAIL_BYTES);
|
|
126
154
|
process.stderr.write(chunk);
|
|
127
155
|
});
|
|
128
|
-
// SHORTCUT: kills the
|
|
156
|
+
// SHORTCUT: kills the direct child only (the shell or cmd.exe when there is one); on Windows a grandchild can
|
|
157
|
+
// outlive it.
|
|
158
|
+
// A process-tree kill is the upgrade path.
|
|
129
159
|
const timer = setTimeout(() => {
|
|
130
160
|
child.kill('SIGKILL');
|
|
131
161
|
reject(new RunWatchedTimeoutError(deadlineMs, tail.toString('utf8')));
|
|
@@ -153,7 +183,8 @@ export function isGitRepo(cwd) {
|
|
|
153
183
|
return raw.trim() === 'true';
|
|
154
184
|
}
|
|
155
185
|
catch (err) {
|
|
156
|
-
|
|
186
|
+
// Asking git about a folder that is no repo is the probe itself, so a failure is the expected answer.
|
|
187
|
+
log.debug(`autolearn: not a git repo: ${errorMessage(err)}`, errorFields(err));
|
|
157
188
|
return false;
|
|
158
189
|
}
|
|
159
190
|
}
|
|
@@ -167,7 +198,7 @@ export function fetchGitLog(cwd, days) {
|
|
|
167
198
|
return raw;
|
|
168
199
|
}
|
|
169
200
|
catch (err) {
|
|
170
|
-
log.
|
|
201
|
+
log.warn(`autolearn: git log unavailable: ${errorMessage(err)}`, errorFields(err));
|
|
171
202
|
return '';
|
|
172
203
|
}
|
|
173
204
|
}
|
|
@@ -17,6 +17,9 @@ export declare function fetchChurnWindowLog(repoRoot: string, sinceIso: string):
|
|
|
17
17
|
export declare function gitGrepPresence(repoRoot: string, patterns: string[], rev: string): Set<string>;
|
|
18
18
|
/** Last commit at or before `beforeIso`, or null when the repo has none. */
|
|
19
19
|
export declare function resolveCommitBefore(repoRoot: string, beforeIso: string): string | null;
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* package.json `scripts` at a revision; {} when the file is absent, null when unparsable. Git failures throw
|
|
22
|
+
* GitReadError.
|
|
23
|
+
*/
|
|
21
24
|
export declare function packageScriptsAt(repoRoot: string, rev: string): Record<string, string> | null;
|
|
22
25
|
//# sourceMappingURL=churn-git.d.ts.map
|
package/dist/learn/churn-git.js
CHANGED
|
@@ -8,14 +8,21 @@ import { errorMessage } from '../util/log.js';
|
|
|
8
8
|
import { isJsonObject, isJsonString } from '../util/json.js';
|
|
9
9
|
// A `git log --name-status` dump can run to tens of MB; default 1MB pipe would truncate it.
|
|
10
10
|
const GIT_MAX_BUFFER = 64 * 1024 * 1024;
|
|
11
|
-
// Longer than the 10 s of one-line git reads because a full log dump on a large repo is slow, yet bounded so a wedged
|
|
11
|
+
// Longer than the 10 s of one-line git reads because a full log dump on a large repo is slow, yet bounded so a wedged
|
|
12
|
+
// git cannot stall sleep.
|
|
12
13
|
const GIT_TIMEOUT_MS = MINUTE_MS;
|
|
13
14
|
/** A real git failure (not git grep's expected exit-1-no-match). Callers abort the whole run on this. */
|
|
14
15
|
export class GitReadError extends Error {
|
|
15
16
|
}
|
|
16
17
|
function runGit(args, repoRoot) {
|
|
17
18
|
try {
|
|
18
|
-
return execFileSync('git', args, {
|
|
19
|
+
return execFileSync('git', args, {
|
|
20
|
+
cwd: repoRoot,
|
|
21
|
+
encoding: 'utf8',
|
|
22
|
+
maxBuffer: GIT_MAX_BUFFER,
|
|
23
|
+
timeout: GIT_TIMEOUT_MS,
|
|
24
|
+
windowsHide: true,
|
|
25
|
+
});
|
|
19
26
|
}
|
|
20
27
|
catch (err) {
|
|
21
28
|
throw new GitReadError(`git ${args.join(' ')} failed: ${errorMessage(err)}`, { cause: err });
|
|
@@ -24,7 +31,13 @@ function runGit(args, repoRoot) {
|
|
|
24
31
|
// git grep exits 1 for "no match" -- a normal empty result, not a failure.
|
|
25
32
|
function runGitGrepOrEmpty(args, repoRoot) {
|
|
26
33
|
try {
|
|
27
|
-
return execFileSync('git', args, {
|
|
34
|
+
return execFileSync('git', args, {
|
|
35
|
+
cwd: repoRoot,
|
|
36
|
+
encoding: 'utf8',
|
|
37
|
+
maxBuffer: GIT_MAX_BUFFER,
|
|
38
|
+
timeout: GIT_TIMEOUT_MS,
|
|
39
|
+
windowsHide: true,
|
|
40
|
+
});
|
|
28
41
|
}
|
|
29
42
|
catch (err) {
|
|
30
43
|
// SAFETY: execFileSync attaches `status` to the thrown Error on a non-zero child exit.
|
|
@@ -44,7 +57,15 @@ export function fetchChurnWindowLog(repoRoot, sinceIso) {
|
|
|
44
57
|
const buffered = new Date(new Date(sinceIso).getTime() - DAY_MS).toISOString();
|
|
45
58
|
const raw = runGit(
|
|
46
59
|
// --first-parent -m: a merge's changes land as one diff against its mainline parent.
|
|
47
|
-
[
|
|
60
|
+
[
|
|
61
|
+
'log',
|
|
62
|
+
'--no-renames',
|
|
63
|
+
'--first-parent',
|
|
64
|
+
'-m',
|
|
65
|
+
`--since=${buffered}`,
|
|
66
|
+
'--pretty=format:%x01%H%x02%cI',
|
|
67
|
+
'--name-status',
|
|
68
|
+
], repoRoot);
|
|
48
69
|
const commits = [];
|
|
49
70
|
let current = null;
|
|
50
71
|
for (const line of raw.split('\n')) {
|
|
@@ -88,7 +109,10 @@ export function resolveCommitBefore(repoRoot, beforeIso) {
|
|
|
88
109
|
const raw = runGit(['rev-list', '-1', '--first-parent', `--before=${beforeIso}`, 'HEAD'], repoRoot).trim();
|
|
89
110
|
return raw === '' ? null : raw;
|
|
90
111
|
}
|
|
91
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* package.json `scripts` at a revision; {} when the file is absent, null when unparsable. Git failures throw
|
|
114
|
+
* GitReadError.
|
|
115
|
+
*/
|
|
92
116
|
export function packageScriptsAt(repoRoot, rev) {
|
|
93
117
|
if (runGit(['ls-tree', '--name-only', rev, '--', 'package.json'], repoRoot).trim() === '')
|
|
94
118
|
return {};
|
package/dist/learn/extract.d.ts
CHANGED
|
@@ -9,7 +9,10 @@ export interface ExtractOptions {
|
|
|
9
9
|
apiKey: string;
|
|
10
10
|
model?: string;
|
|
11
11
|
fetcher?: typeof fetch;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Told why a call produced nothing, so callers can surface it instead of guessing; `failure` is set when the API call
|
|
14
|
+
* itself failed.
|
|
15
|
+
*/
|
|
13
16
|
onError?: (msg: string, failure?: AnthropicMessageFailure) => void;
|
|
14
17
|
}
|
|
15
18
|
export declare function extractFacts(text: string, opts: ExtractOptions): Promise<ExtractedFact[]>;
|
package/dist/learn/extract.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Layer, createMemory } from '../core/memory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { localFilesAt } from './roots.js';
|
|
3
3
|
import { loadConfig } from '../core/config.js';
|
|
4
4
|
import { RejectedValueError } from '../core/api-errors.js';
|
|
5
5
|
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
6
|
-
import { describeMessageFailure, sendAnthropicMessage } from '../util/anthropic-messages.js';
|
|
6
|
+
import { describeMessageFailure, sendAnthropicMessage, } from '../util/anthropic-messages.js';
|
|
7
7
|
import { neverAutoShareTags } from '../sharing/share.js';
|
|
8
8
|
import { errorMessage, log } from '../util/log.js';
|
|
9
9
|
import { isJsonString } from '../util/json.js';
|
|
@@ -58,13 +58,15 @@ function parseExtractedFacts(parsed) {
|
|
|
58
58
|
break;
|
|
59
59
|
if (!item ||
|
|
60
60
|
!isJsonString(item.content) ||
|
|
61
|
-
item.content.length < 3)
|
|
61
|
+
item.content.length < 3) {
|
|
62
62
|
continue;
|
|
63
|
+
}
|
|
63
64
|
const itemTags = item.tags;
|
|
64
65
|
const tags = Array.isArray(itemTags)
|
|
65
66
|
? itemTags.filter((t) => isJsonString(t))
|
|
66
67
|
: [];
|
|
67
|
-
// SAFETY: the isJsonString + validValences.has guard below confirms item.valence is one of the four literal strings
|
|
68
|
+
// SAFETY: the isJsonString + validValences.has guard below confirms item.valence is one of the four literal strings
|
|
69
|
+
// of EmotionalValence.
|
|
68
70
|
const valence = isJsonString(item.valence) && validValences.has(item.valence)
|
|
69
71
|
? item.valence
|
|
70
72
|
: 'neutral';
|
|
@@ -74,13 +76,17 @@ function parseExtractedFacts(parsed) {
|
|
|
74
76
|
}
|
|
75
77
|
const INHERITABLE_PREFIXES = ['conv:', 'session:', 'scope:', 'path:'];
|
|
76
78
|
export function storeExtractedFacts(hippoRoot, source, facts) {
|
|
79
|
+
return storeFacts(localFilesAt(hippoRoot), source, facts);
|
|
80
|
+
}
|
|
81
|
+
/** storeExtractedFacts into the store `files` names. */
|
|
82
|
+
function storeFacts(files, source, facts) {
|
|
77
83
|
const inheritedTags = [
|
|
78
84
|
...source.tags.filter((t) => INHERITABLE_PREFIXES.some((p) => t.startsWith(p))),
|
|
79
85
|
...neverAutoShareTags([source]),
|
|
80
86
|
];
|
|
81
87
|
const entries = [];
|
|
82
88
|
let rejected = 0;
|
|
83
|
-
const baseHalfLifeDays = loadConfig(hippoRoot).defaultHalfLifeDays;
|
|
89
|
+
const baseHalfLifeDays = loadConfig(files.hippoRoot).defaultHalfLifeDays;
|
|
84
90
|
for (const fact of facts) {
|
|
85
91
|
const defect = certainDefect(fact.content);
|
|
86
92
|
if (defect !== null) {
|
|
@@ -88,9 +94,10 @@ export function storeExtractedFacts(hippoRoot, source, facts) {
|
|
|
88
94
|
continue;
|
|
89
95
|
}
|
|
90
96
|
const entry = buildExtractedEntry(fact, source, inheritedTags, baseHalfLifeDays);
|
|
91
|
-
// A refusal is per-VALUE: one rejected fact must not drop the rest of the batch; writeEntry already audited it
|
|
97
|
+
// A refusal is per-VALUE: one rejected fact must not drop the rest of the batch; writeEntry already audited it
|
|
98
|
+
// (reject_refusal), so skip and count.
|
|
92
99
|
try {
|
|
93
|
-
writeEntry(
|
|
100
|
+
files.learning.writeEntry(entry);
|
|
94
101
|
}
|
|
95
102
|
catch (err) {
|
|
96
103
|
if (err instanceof RejectedValueError) {
|
|
@@ -111,14 +118,14 @@ function buildExtractedEntry(fact, source, inheritedTags, baseHalfLifeDays) {
|
|
|
111
118
|
return { ...createMemory(fact.content, {
|
|
112
119
|
layer: Layer.Semantic,
|
|
113
120
|
tags,
|
|
114
|
-
|
|
121
|
+
emotionalValence: fact.valence,
|
|
115
122
|
confidence: 'inferred',
|
|
116
123
|
source: source.source,
|
|
117
|
-
|
|
124
|
+
extractedFrom: source.id,
|
|
118
125
|
scope: source.scope,
|
|
119
126
|
// Without it createMemory stamps 'default', and extracted facts leave
|
|
120
127
|
// the tenant of the episodic memory they were extracted from.
|
|
121
|
-
tenantId: source.
|
|
128
|
+
tenantId: source.tenant_id,
|
|
122
129
|
baseHalfLifeDays,
|
|
123
130
|
}), origin_project: source.origin_project };
|
|
124
131
|
}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Forward-claim detector: a pure regex set plus token extraction deciding whether a recall query carries a
|
|
3
|
+
* forward-prediction phrase.
|
|
4
|
+
* Calibration is HIGH-PRECISION / LOW-RECALL, since cry-wolf noise dominates hint UX;
|
|
5
|
+
* `recall_autodebias_hint_no_class_match` audits are the telemetry.
|
|
6
|
+
*/
|
|
3
7
|
export interface ForwardClaimMatch {
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* The regex match snippet (e.g. "will take"), surfaced in `PlanningFallacyHint.detectedPhrase` so the agent sees WHY
|
|
10
|
+
* the hint appeared.
|
|
11
|
+
*/
|
|
5
12
|
phrase: string;
|
|
6
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Lower-cased non-stop-word tokens (len >= 3) from the FULL query, not just the match; the class resolver scores them
|
|
15
|
+
* against class_tag tokens.
|
|
16
|
+
*/
|
|
7
17
|
classQueryTokens: string[];
|
|
8
18
|
}
|
|
9
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Detect whether a recall query carries a forward-prediction phrase; returns the first-match phrase plus
|
|
21
|
+
* class-resolution tokens, else null.
|
|
10
22
|
* Token extraction runs only on a match, so non-forward queries pay nothing beyond the regex gate. */
|
|
11
23
|
export declare function detectForwardClaim(queryText: string): ForwardClaimMatch | null;
|
|
12
24
|
//# sourceMappingURL=forward-claim-detector.d.ts.map
|
|
@@ -1,19 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Forward-claim detector: a pure regex set plus token extraction deciding whether a recall query carries a
|
|
3
|
+
* forward-prediction phrase.
|
|
4
|
+
* Calibration is HIGH-PRECISION / LOW-RECALL, since cry-wolf noise dominates hint UX;
|
|
5
|
+
* `recall_autodebias_hint_no_class_match` audits are the telemetry.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Each pattern is deliberately narrow (add one only on audit evidence); word boundaries are mandatory so `ETA` never
|
|
9
|
+
* matches inside `BETAtesting`.
|
|
10
|
+
*/
|
|
11
|
+
// Shared duration suffix: needs a digit + unit (`<N> unit`, `a/an unit`, `one unit`) so 'will take ownership' and 'ship
|
|
12
|
+
// in Docker' do not match.
|
|
13
|
+
const DURATION_TAIL = String.raw `(?:about|around|~|≈)?\s*(?:\d+|a|an|one)\s*` +
|
|
14
|
+
String.raw `(?:day|week|month|hour|hr|min(?:ute)?|sec(?:ond)?)s?\b`;
|
|
6
15
|
const FORWARD_CLAIM_PATTERNS = [
|
|
7
|
-
// Verb + duration tail: requires `<verb> take <N> <unit>`, because a bare `will take` matched `who will take
|
|
16
|
+
// Verb + duration tail: requires `<verb> take <N> <unit>`, because a bare `will take` matched `who will take
|
|
17
|
+
// ownership of auth?`.
|
|
8
18
|
new RegExp(String.raw `\b(?:will|should|gonna|going\s+to)\s+take\s+${DURATION_TAIL}`, 'i'),
|
|
9
|
-
// Ship + by/in + duration-or-day: a bare `ship in` matched `how does this ship in Docker?`, so a duration tail or
|
|
19
|
+
// Ship + by/in + duration-or-day: a bare `ship in` matched `how does this ship in Docker?`, so a duration tail or
|
|
20
|
+
// literal day-of-week is required.
|
|
10
21
|
new RegExp(String.raw `\bship(?:ping|s)?\s+(?:by|in)\s+(?:(?:about|around)\s+)?(?:next\s+)?` +
|
|
11
22
|
String.raw `(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
|
|
12
23
|
/\bestimate(?:d)?\s+(?:at\s+)?(?:~|≈|about|around)?\s*\d+/i,
|
|
13
24
|
/\b(?:by|in|within)\s+(?:about|around|~)?\s*\d+\s*(?:day|week|month|hour)s?\b/i,
|
|
14
25
|
/\bETA\s*(?:is|:)?\s*\d+/i,
|
|
15
26
|
/\b(?:by|before)\s+next\s+(?:week|month|sprint|monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i,
|
|
16
|
-
// Standalone tilde duration ('~3 days for migration'): the lookbehind asserts start-of-string or whitespace because
|
|
27
|
+
// Standalone tilde duration ('~3 days for migration'): the lookbehind asserts start-of-string or whitespace because
|
|
28
|
+
// `\b` before `~` needs a word char
|
|
17
29
|
// and /\b~/ would only match 'foo~3 days', silently missing the real cases.
|
|
18
30
|
/(?<=^|\s)~\s*\d+\s*(?:day|week|month|hour)s?\b/i,
|
|
19
31
|
// Should + verb + duration tail. Same tightening as the leading 'will
|
|
@@ -21,22 +33,29 @@ const FORWARD_CLAIM_PATTERNS = [
|
|
|
21
33
|
new RegExp(String.raw `\bshould\s+(?:be|ship|finish|complete|land)\s+(?:by|in|within)\s+(?:(?:about|around)\s+)?(?:next\s+)?` +
|
|
22
34
|
String.raw `(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
|
|
23
35
|
];
|
|
24
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Pronouns, function words and modal verbs the regex set already gates on; dropped before class resolution so overlap
|
|
38
|
+
* comes from domain tokens.
|
|
39
|
+
*/
|
|
25
40
|
const STOP_WORDS = new Set([
|
|
26
41
|
'the', 'a', 'an', 'and', 'or', 'but', 'for', 'to', 'in', 'on', 'at', 'of',
|
|
27
42
|
'by', 'with', 'my', 'your', 'our', 'their', 'its', 'it', 'this', 'that',
|
|
28
43
|
'these', 'those', 'will', 'should', 'can', 'i', 'we', 'they', 'he', 'she',
|
|
29
44
|
'is', 'be', 'was', 'are', 'were', 'has', 'have', 'had', 'do', 'does', 'did',
|
|
30
45
|
'from', 'as', 'so', 'than', 'then',
|
|
31
|
-
// Verbs inside FORWARD_CLAIM_PATTERNS gate the regex but are no signal for class resolution; listing them keeps them
|
|
46
|
+
// Verbs inside FORWARD_CLAIM_PATTERNS gate the regex but are no signal for class resolution; listing them keeps them
|
|
47
|
+
// out of the classQueryTokens overlap.
|
|
32
48
|
'take', 'taken', 'takes', 'ship', 'ships', 'finish', 'complete', 'land',
|
|
33
49
|
'eta', 'estimate', 'estimated', 'next', 'about', 'around',
|
|
34
|
-
// Every forward-claim phrase contains a duration unit by design; letting it through would let a class tag containing
|
|
50
|
+
// Every forward-claim phrase contains a duration unit by design; letting it through would let a class tag containing
|
|
51
|
+
// 'days' win or tie on the unit.
|
|
35
52
|
'day', 'days', 'week', 'weeks', 'month', 'months',
|
|
36
53
|
'hour', 'hours', 'hr', 'hrs',
|
|
37
54
|
'min', 'mins', 'minute', 'minutes', 'sec', 'secs', 'second', 'seconds',
|
|
38
55
|
]);
|
|
39
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Detect whether a recall query carries a forward-prediction phrase; returns the first-match phrase plus
|
|
58
|
+
* class-resolution tokens, else null.
|
|
40
59
|
* Token extraction runs only on a match, so non-forward queries pay nothing beyond the regex gate. */
|
|
41
60
|
export function detectForwardClaim(queryText) {
|
|
42
61
|
if (!queryText)
|
|
@@ -51,12 +70,12 @@ export function detectForwardClaim(queryText) {
|
|
|
51
70
|
return null;
|
|
52
71
|
}
|
|
53
72
|
function extractClassQueryTokens(queryText) {
|
|
54
|
-
return queryText
|
|
73
|
+
return (queryText
|
|
55
74
|
.toLowerCase()
|
|
56
75
|
// Strip everything that's not alphanum or whitespace or hyphen / underscore.
|
|
57
76
|
.replace(/[^a-z0-9\s_-]/g, ' ')
|
|
58
|
-
// Split on whitespace, hyphen and underscore
|
|
77
|
+
// Split on whitespace, hyphen and underscore, matching the class-tag split in resolveClassFromTokens.
|
|
59
78
|
.split(/[\s_-]+/)
|
|
60
|
-
.filter((t) => t.length >= 3 && !STOP_WORDS.has(t) && !/^\d+$/.test(t));
|
|
79
|
+
.filter((t) => t.length >= 3 && !STOP_WORDS.has(t) && !/^\d+$/.test(t)));
|
|
61
80
|
}
|
|
62
81
|
//# sourceMappingURL=forward-claim-detector.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StoreWith } from '../store/index.js';
|
|
1
2
|
import { type MemoryEntry } from '../core/memory.js';
|
|
2
3
|
export interface InvalidationTarget {
|
|
3
4
|
from: string;
|
|
@@ -23,18 +24,23 @@ export interface InvalidationOptions {
|
|
|
23
24
|
/** Extract what was replaced/removed from a commit message.
|
|
24
25
|
* Returns null if the commit isn't a breaking/migration change. */
|
|
25
26
|
export declare function extractInvalidationTarget(message: string): InvalidationTarget | null;
|
|
26
|
-
/** Find memories that reference the invalidated pattern and weaken them (halve half_life_days, confidence 'stale', add
|
|
27
|
-
*
|
|
27
|
+
/** Find memories that reference the invalidated pattern and weaken them (halve half_life_days, confidence 'stale', add
|
|
28
|
+
* 'invalidated' tag; pinned are skipped).
|
|
29
|
+
* Tag matching is EXACT: the FULL pattern must equal a tag, so a pattern merely containing a common tag word cannot
|
|
30
|
+
* mass-weaken every memory with that tag. */
|
|
28
31
|
export declare function invalidateMatching(hippoRoot: string, target: InvalidationTarget, tenantId?: string, options?: InvalidationOptions): InvalidationResult;
|
|
29
|
-
/** invalidateMatching for a batch: matches against `live`, the caller's list of the tenant's rows, and keeps it
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
+
/** invalidateMatching for a batch: matches against `live`, the caller's list of the tenant's rows, and keeps it
|
|
33
|
+
* current.
|
|
34
|
+
* Each match is read again before it is weakened, so a row another writer changed since the list was read is never
|
|
35
|
+
* written back stale. */
|
|
36
|
+
export declare function invalidateMatchingAmong(store: StoreWith<'lessonWrites'>, live: MemoryEntry[], target: InvalidationTarget, tenantId?: string): Promise<InvalidationResult>;
|
|
32
37
|
export interface ChurnRefs {
|
|
33
38
|
paths: string[];
|
|
34
39
|
symbols: string[];
|
|
35
40
|
scripts: string[];
|
|
36
41
|
}
|
|
37
|
-
/** Pure syntactic extraction; repo-aware resolution (trackedness, path relativization) happens only in
|
|
42
|
+
/** Pure syntactic extraction; repo-aware resolution (trackedness, path relativization) happens only in
|
|
43
|
+
* detectChurnStale. */
|
|
38
44
|
export declare function extractChurnRefs(content: string): ChurnRefs;
|
|
39
45
|
export interface DetectChurnStaleOptions {
|
|
40
46
|
tenantId: string;
|