hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// What a PostToolUseFailure payload says, read with no store, so a hook with no store sends the same reading the local log keeps.
|
|
2
|
-
import { redactSecretsStrict } from '../secret-detect.js';
|
|
3
|
-
import { scrubForSharing } from '
|
|
4
|
-
import { blockHash } from '../token-
|
|
5
|
-
import { truncateCodePointSafe } from '../transcript-tail.js';
|
|
2
|
+
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
3
|
+
import { scrubForSharing } from './share-scrub.js';
|
|
4
|
+
import { blockHash } from '../util/token-text.js';
|
|
5
|
+
import { truncateCodePointSafe } from '../util/transcript-tail.js';
|
|
6
|
+
import { isJsonObjectLiteral } from '../util/json.js';
|
|
7
|
+
const COMMAND_HEAD_WORDS = 2;
|
|
6
8
|
/** The longest lesson text a reading gives, so a check of a sent one imports it instead of copying it. */
|
|
7
9
|
export const FAILURE_TEXT_MAX_CHARS = 200;
|
|
8
10
|
/** The user, a permission prompt or a hook said no: routine, not a lesson. */
|
|
@@ -20,12 +22,9 @@ const SHELL_TOOLS = new Set(['Bash', 'bash', 'powershell', 'run_in_terminal']);
|
|
|
20
22
|
function isString(v) {
|
|
21
23
|
return v !== undefined && v !== null && v.constructor === String;
|
|
22
24
|
}
|
|
23
|
-
function isObject(v) {
|
|
24
|
-
return v !== undefined && v !== null && !Array.isArray(v) && v.constructor === Object;
|
|
25
|
-
}
|
|
26
25
|
/** A non-blank string field of the payload, or null. */
|
|
27
26
|
export function payloadString(payload, key) {
|
|
28
|
-
if (!
|
|
27
|
+
if (!isJsonObjectLiteral(payload))
|
|
29
28
|
return null;
|
|
30
29
|
const value = payload[key];
|
|
31
30
|
return isString(value) && value.trim() !== '' ? value : null;
|
|
@@ -40,9 +39,9 @@ export function failureHash(text) {
|
|
|
40
39
|
}
|
|
41
40
|
/** The memory text for a failure payload, or why it is not stored; a routine skip keeps its text for the log. `scrub` runs before the cap, as a mask can be longer than what it hides. Pure. */
|
|
42
41
|
export function lessonFromFailure(payload, scrub = (text) => text) {
|
|
43
|
-
if (!
|
|
42
|
+
if (!isJsonObjectLiteral(payload))
|
|
44
43
|
return { skip: 'skipped-invalid', text: null, detail: null };
|
|
45
|
-
// SAFETY:
|
|
44
|
+
// SAFETY: isJsonObjectLiteral narrowed payload to a plain JSON object; the fields read are all optional.
|
|
46
45
|
const p = payload;
|
|
47
46
|
if (p.is_interrupt === true)
|
|
48
47
|
return { skip: 'skipped-interrupt', text: null, detail: null };
|
|
@@ -51,8 +50,8 @@ export function lessonFromFailure(payload, scrub = (text) => text) {
|
|
|
51
50
|
const tool = isString(p.tool_name) ? p.tool_name : 'tool';
|
|
52
51
|
const error = redactSecretsStrict(p.error.replace(/\s+/g, ' ').trim());
|
|
53
52
|
const text = truncateCodePointSafe(scrub(`${tool}: ${error}`), FAILURE_TEXT_MAX_CHARS);
|
|
54
|
-
const command =
|
|
55
|
-
const head = command.trim().split(/\s+/).slice(0,
|
|
53
|
+
const command = isJsonObjectLiteral(p.tool_input) && isString(p.tool_input['command']) ? p.tool_input['command'].replace(LEADING_CD, '') : '';
|
|
54
|
+
const head = command.trim().split(/\s+/).slice(0, COMMAND_HEAD_WORDS).join(' ');
|
|
56
55
|
const detail = `${tool}${head ? ` ${head}` : ''}: ${error}`;
|
|
57
56
|
const routine = (rule) => ({ skip: 'skipped-routine', rule, text, detail });
|
|
58
57
|
if (DECLINED.test(error))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HandoffEvidence } from '
|
|
1
|
+
import type { HandoffEvidence } from '../core/handoff.js';
|
|
2
2
|
export declare function collectHandoffEvidence(cwd: string, testStatus: HandoffEvidence['testStatus'], options?: {
|
|
3
3
|
timeoutMs?: number;
|
|
4
4
|
}): HandoffEvidence;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// A handoff's git evidence, read with no store, so a hook with no store can send it with the session's end.
|
|
2
2
|
import { execFileSync } from 'child_process';
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 2000;
|
|
3
4
|
// Best-effort git state; a missing git, non-repo cwd, or a call past timeoutMs (each call, default 2 s)
|
|
4
5
|
// yields null fields rather than throw, so a hook with a hard deadline can cap a slow repo.
|
|
5
6
|
export function collectHandoffEvidence(cwd, testStatus, options = {}) {
|
|
6
|
-
const timeoutMs = options.timeoutMs ??
|
|
7
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
7
8
|
let gitRef = null;
|
|
8
9
|
try {
|
|
9
10
|
gitRef = execFileSync('git', ['rev-parse', 'HEAD'], {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Context } from '../api/types.js';
|
|
2
|
-
import type { CallerProject } from '../prompt-hook.js';
|
|
2
|
+
import type { CallerProject } from '../api/prompt-hook.js';
|
|
3
3
|
import { type WorkingState } from './working-state.js';
|
|
4
4
|
export interface CallerPreCompactRequest {
|
|
5
5
|
readonly sessionId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { markSnapshotSaved, PRE_COMPACT_INSTRUCTION, startCompaction } from '
|
|
2
|
-
import { errorMessage, log } from '../log.js';
|
|
1
|
+
import { markSnapshotSaved, PRE_COMPACT_INSTRUCTION, startCompaction } from './compaction-record.js';
|
|
2
|
+
import { errorMessage, log } from '../util/log.js';
|
|
3
3
|
import { loadActiveTaskSnapshot, saveActiveTaskSnapshot } from '../store/sessions.js';
|
|
4
4
|
import { assertTrigger, bindCaller, callerInHoldout, checkedWorkingState, withCallerDb } from './caller-session.js';
|
|
5
5
|
import { mergeWorkingState } from './working-state.js';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { type SessionTurn } from './
|
|
2
|
-
import { type MemoryEntry } from './memory.js';
|
|
3
|
-
export declare const SESSION_DIGEST_TAG = "session-digest";
|
|
1
|
+
import { type SessionTurn } from './transcript.js';
|
|
4
2
|
/** Five-word runs are stock phrases; six in a row is a copied clause. */
|
|
5
3
|
export declare const ECHO_WINDOW = 6;
|
|
6
4
|
/** Five sentences of about 150 chars leave room for the Changed line inside the total cap. */
|
|
@@ -32,7 +30,7 @@ export declare function readSessionTranscript(transcriptPath: string, log: (mess
|
|
|
32
30
|
/** The transcript, read once and scanned, or null with the reason logged. */
|
|
33
31
|
export declare function readSessionScan(transcriptPath: string, log: (message: string) => void): SessionScan | null;
|
|
34
32
|
/** Test-only seam, the scheduler's pattern: lets a test prove a network path never reaches the probe. Null restores it. */
|
|
35
|
-
export declare function
|
|
33
|
+
export declare function _setDigestExistsProbeForTests(probe: ((p: string) => boolean) | null): void;
|
|
36
34
|
/** The store root is realpath'd; transcript paths are not, and a deleted file has no realpath of its own. Null for a network path. */
|
|
37
35
|
export declare function realFsPath(p: string): string | null;
|
|
38
36
|
/** Repo-relative with forward slashes, '' for the root itself, null outside the repo or when the path cannot be resolved. */
|
|
@@ -54,8 +52,6 @@ export interface DigestDraft {
|
|
|
54
52
|
}
|
|
55
53
|
/** The digest text, or null when nothing survives the filters. Sentences print in reply order. */
|
|
56
54
|
export declare function buildSessionDigest(sources: DigestSources): DigestDraft | null;
|
|
57
|
-
/** Facts extracted from a digest and DAG summaries over one inherit its tag, but they are not the digest itself. */
|
|
58
|
-
export declare function isSessionDigestRow(entry: Pick<MemoryEntry, 'source' | 'tags' | 'extracted_from'>): boolean;
|
|
59
55
|
/** Same session, same row: a second worker for one session updates the digest instead of adding one. */
|
|
60
56
|
export declare function sessionDigestId(tenantId: string, key: string): string;
|
|
61
57
|
export interface SessionDigestOptions {
|
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
import { createHash } from 'crypto';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
|
-
import { collectSessionTurns } from './
|
|
6
|
-
import { isObjectLike, isStringValue } from '
|
|
5
|
+
import { collectSessionTurns } from './transcript.js';
|
|
6
|
+
import { isObjectLike, isStringValue } from '../core/capture-contract.js';
|
|
7
7
|
import { PATCH_SUCCESS_LINE, patchPaths, shellPatch } from './codex-patch.js';
|
|
8
|
-
import { loadConfig } from '
|
|
9
|
-
import { USER_SEGMENT } from '
|
|
10
|
-
import { errorMessage } from '
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
|
|
8
|
+
import { loadConfig } from '../core/config.js';
|
|
9
|
+
import { USER_SEGMENT } from '../util/home-path.js';
|
|
10
|
+
import { errorMessage } from '../util/log.js';
|
|
11
|
+
import { SESSION_DIGEST_TAG } from '../core/session-digest-row.js';
|
|
12
|
+
import { createMemory, Layer } from '../core/memory.js';
|
|
13
|
+
import { RejectedValueError } from '../store/rejection.js';
|
|
14
|
+
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
15
|
+
import { isInitialized } from '../store/open.js';
|
|
16
|
+
import { writeEntry } from '../store/entry-writes.js';
|
|
17
|
+
import { loadLiveContentsBySourceAndTag } from '../store/entry-reads.js';
|
|
18
|
+
import { SNAPSHOT_AMBIENT_MAX_AGE_MS } from '../store/sessions.js';
|
|
19
|
+
import { loadLatestHandoff } from '../store/handoffs.js';
|
|
20
|
+
import { isSyntheticMessage } from '../store/token-ledger.js';
|
|
21
|
+
import { readOpenTranscriptTail } from '../util/transcript-tail.js';
|
|
22
22
|
/** Five-word runs are stock phrases; six in a row is a copied clause. */
|
|
23
23
|
export const ECHO_WINDOW = 6;
|
|
24
24
|
/** Five sentences of about 150 chars leave room for the Changed line inside the total cap. */
|
|
@@ -228,11 +228,17 @@ export function scanSessionTranscript(jsonl) {
|
|
|
228
228
|
};
|
|
229
229
|
}
|
|
230
230
|
export function readSessionTranscript(transcriptPath, log) {
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
231
|
+
const fd = fs.openSync(transcriptPath, 'r');
|
|
232
|
+
try {
|
|
233
|
+
const size = fs.fstatSync(fd).size;
|
|
234
|
+
if (size <= READ_CAP_BYTES)
|
|
235
|
+
return fs.readFileSync(fd, 'utf8');
|
|
236
|
+
log(`digest: transcript is ${size} bytes, reading its last ${READ_CAP_BYTES}`);
|
|
237
|
+
return readOpenTranscriptTail(fd, size, READ_CAP_BYTES);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
fs.closeSync(fd);
|
|
241
|
+
}
|
|
236
242
|
}
|
|
237
243
|
/** The transcript, read once and scanned, or null with the reason logged. */
|
|
238
244
|
export function readSessionScan(transcriptPath, log) {
|
|
@@ -246,7 +252,7 @@ export function readSessionScan(transcriptPath, log) {
|
|
|
246
252
|
}
|
|
247
253
|
let existsProbe = fs.existsSync;
|
|
248
254
|
/** Test-only seam, the scheduler's pattern: lets a test prove a network path never reaches the probe. Null restores it. */
|
|
249
|
-
export function
|
|
255
|
+
export function _setDigestExistsProbeForTests(probe) {
|
|
250
256
|
existsProbe = probe ?? fs.existsSync;
|
|
251
257
|
}
|
|
252
258
|
/** A \\host or //host path would make existsSync open an SMB connection to a host named in transcript text. */
|
|
@@ -430,19 +436,13 @@ export function buildSessionDigest(sources) {
|
|
|
430
436
|
return content ? { content, sentences: kept.length, files: files.length } : null;
|
|
431
437
|
}
|
|
432
438
|
}
|
|
433
|
-
/** Facts extracted from a digest and DAG summaries over one inherit its tag, but they are not the digest itself. */
|
|
434
|
-
export function isSessionDigestRow(entry) {
|
|
435
|
-
return entry.source === SESSION_DIGEST_TAG && entry.tags.includes(SESSION_DIGEST_TAG) && !entry.extracted_from;
|
|
436
|
-
}
|
|
437
439
|
/** Same session, same row: a second worker for one session updates the digest instead of adding one. */
|
|
438
440
|
export function sessionDigestId(tenantId, key) {
|
|
439
441
|
return `mem_${createHash('sha256').update(`${SESSION_DIGEST_TAG}\n${tenantId}\n${key}`).digest('hex').slice(0, 12)}`;
|
|
440
442
|
}
|
|
441
443
|
/** What hippo could have injected into the session: any live digest (prompt recall reaches old ones) and the ambient handoff, never this session's own. */
|
|
442
444
|
function injectedTexts(hippoRoot, opts) {
|
|
443
|
-
const digests =
|
|
444
|
-
.filter((e) => isSessionDigestRow(e) && !e.superseded_by && e.source_session_id !== opts.key)
|
|
445
|
-
.map((e) => e.content);
|
|
445
|
+
const digests = loadLiveContentsBySourceAndTag(hippoRoot, opts.tenantId, SESSION_DIGEST_TAG, SESSION_DIGEST_TAG, opts.key);
|
|
446
446
|
const handoff = loadLatestHandoff(hippoRoot, opts.tenantId, undefined, {
|
|
447
447
|
unfinishedOnly: true,
|
|
448
448
|
maxAgeMs: SNAPSHOT_AMBIENT_MAX_AGE_MS,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Context } from '../api/types.js';
|
|
2
|
-
import type { HandoffEvidence } from '../handoff.js';
|
|
3
|
-
import type { CallerProject } from '../prompt-hook.js';
|
|
2
|
+
import type { HandoffEvidence } from '../core/handoff.js';
|
|
3
|
+
import type { CallerProject } from '../api/prompt-hook.js';
|
|
4
4
|
import type { WorkingState } from './working-state.js';
|
|
5
5
|
export type CallerEvidence = Pick<HandoffEvidence, 'gitRef' | 'dirtyTree' | 'testStatus'>;
|
|
6
6
|
export interface CallerSessionEndRequest {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SessionEnd for a caller on another machine: the owner's handoff, then the owner's snapshot for the session closed, both under its tenant and project.
|
|
2
|
-
import { BadRequestError } from '../api-errors.js';
|
|
2
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
3
3
|
import { writeSessionEndHandoff } from '../store/handoffs.js';
|
|
4
4
|
import { closeTaskSnapshotsForSession } from '../store/sessions.js';
|
|
5
5
|
import { bindCaller, checkedWorkingState } from './caller-session.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Context } from '../api/types.js';
|
|
2
|
-
import { type CallerProject } from '../prompt-hook.js';
|
|
2
|
+
import { type CallerProject } from '../api/prompt-hook.js';
|
|
3
3
|
import { type CaptureTally } from './command.js';
|
|
4
4
|
export interface SessionCaptureRequest {
|
|
5
5
|
readonly sessionId: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// `hippo capture --last-session` for a caller whose transcript was read on another machine: its project names the rows, never the store's folder.
|
|
2
|
-
import { BadRequestError } from '../api-errors.js';
|
|
3
|
-
import { assertCallerIds } from '../prompt-hook.js';
|
|
4
|
-
import { assertCallerProject, projectNames } from '../project-identity.js';
|
|
5
|
-
import { longestWord, storedTextKeys } from '../same-text.js';
|
|
6
|
-
import { scrubForSharing } from '
|
|
2
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
3
|
+
import { assertCallerIds } from '../api/prompt-hook.js';
|
|
4
|
+
import { assertCallerProject, projectNames } from '../core/project-identity.js';
|
|
5
|
+
import { longestWord, storedTextKeys } from '../util/same-text.js';
|
|
6
|
+
import { scrubForSharing } from './share-scrub.js';
|
|
7
7
|
import { loadTextsHoldingWords } from '../store/candidates.js';
|
|
8
8
|
import { captureExtractedItems } from './command.js';
|
|
9
9
|
import { extractFromTexts } from './extract.js';
|
|
@@ -4,9 +4,10 @@ import * as fs from 'fs';
|
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import { createHash } from 'node:crypto';
|
|
6
6
|
import { homeDir } from '../hooks/shared.js';
|
|
7
|
-
import { errorMessage } from '../log.js';
|
|
8
|
-
import { isObjectLike, isStringValue } from '../capture-contract.js';
|
|
7
|
+
import { errorMessage, log as logger } from '../util/log.js';
|
|
8
|
+
import { isObjectLike, isStringValue } from '../core/capture-contract.js';
|
|
9
9
|
import { SESSION_ID_RE } from './copilot-transcript.js';
|
|
10
|
+
import { FINGERPRINT_HEX_CHARS } from '../util/token-text.js';
|
|
10
11
|
/** Null for a missing id or one that could climb out of the sessions folder. */
|
|
11
12
|
function sessionStateFiles(sessionId) {
|
|
12
13
|
if (sessionId === null || !SESSION_ID_RE.test(sessionId))
|
|
@@ -73,8 +74,9 @@ function releaseSessionLock(lock) {
|
|
|
73
74
|
try {
|
|
74
75
|
fs.rmSync(lock, { force: true });
|
|
75
76
|
}
|
|
76
|
-
catch {
|
|
77
|
+
catch (err) {
|
|
77
78
|
// A lock left behind names this pid, which is dead once the worker exits, so the next taker clears it.
|
|
79
|
+
logger.debug(`session lock not removed: ${errorMessage(err)}`);
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
/** False when the sessions folder cannot be written, so the caller runs unlocked as before. */
|
|
@@ -133,7 +135,7 @@ export async function runSessionWorker(sessionId, mode, work) {
|
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
function turnKey(turn) {
|
|
136
|
-
return createHash('sha256').update(`${turn.role}\n${turn.text}`).digest('hex').slice(0,
|
|
138
|
+
return createHash('sha256').update(`${turn.role}\n${turn.text}`).digest('hex').slice(0, FINGERPRINT_HEX_CHARS);
|
|
137
139
|
}
|
|
138
140
|
/** The cursor position after `turns`: how many there were and a hash of the last. */
|
|
139
141
|
export function turnPosition(turns) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The scrub for transcript text that leaves the machine it was typed on.
|
|
2
|
-
import { maskHomePaths } from '
|
|
3
|
-
import { maskEmails, redactSecretsStrict } from '
|
|
2
|
+
import { maskHomePaths } from '../util/home-path.js';
|
|
3
|
+
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
4
4
|
/** Secrets first, then emails, then home paths: a home-path mask could split a secret so that no pattern matches it. */
|
|
5
5
|
export function scrubForSharing(text) {
|
|
6
6
|
return maskHomePaths(maskEmails(redactSecretsStrict(text)));
|
|
@@ -28,16 +28,8 @@ export declare function sessionTail(turns: readonly SessionTurn[]): {
|
|
|
28
28
|
assistants: string[];
|
|
29
29
|
};
|
|
30
30
|
export declare function summariseSessionTurns(turns: readonly SessionTurn[]): string;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* Priority, where the first source present is the only one tried:
|
|
35
|
-
* 1. Explicit `transcriptPath` option (from `--transcript <path>`)
|
|
36
|
-
* 2. Stdin JSON payload (Claude Code / OpenCode SessionEnd hook shape)
|
|
37
|
-
* 3. Most recent `.jsonl` under `<claude config dir>/projects/<any>/` (`~/.claude` unless CLAUDE_CONFIG_DIR is set), only when the caller passes `mayScan` (only the caller knows it is not a hook) and there is no path and no stdin text, because this scan spans every project on the box
|
|
38
|
-
*
|
|
39
|
-
* Returns null when nothing resolves, a named transcript or payload whose file is missing included. Never throws.
|
|
40
|
-
*/
|
|
31
|
+
/** Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest `.jsonl` in the Claude config dir.
|
|
32
|
+
* The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never throws. */
|
|
41
33
|
export declare function resolveLastSessionTranscript(explicit: string | undefined, stdinText: string | undefined, opts: {
|
|
42
34
|
mayScan: boolean;
|
|
43
35
|
}): string | null;
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { envHomeDir, processEnv } from '../env.js';
|
|
1
|
+
import { envHomeDir, processEnv } from '../util/env.js';
|
|
2
2
|
import { claudeConfigDir } from '../hooks/shared.js';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
|
-
import { isObjectLike, isStringValue } from '../capture-contract.js';
|
|
5
|
+
import { isObjectLike, isStringValue, readSessionEnd } from '../core/capture-contract.js';
|
|
6
6
|
import { copilotTurn } from './copilot-transcript.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* thinking
|
|
11
|
-
* turns through `sessionTail`, one text per turn.
|
|
12
|
-
*
|
|
13
|
-
* Exported for tests.
|
|
14
|
-
*/
|
|
7
|
+
const RECENT_USER_TURNS = 20;
|
|
8
|
+
const RECENT_ASSISTANT_TURNS = 10;
|
|
9
|
+
/** Build a compact text summary from a Claude Code / OpenCode / Copilot JSONL transcript: plain user messages and the final assistant text chunk,
|
|
10
|
+
* without thinking, tool_use and tool_result noise. Exported for tests. */
|
|
15
11
|
/** Leading markers of the command lines Claude Code writes with type 'user'. */
|
|
16
12
|
const CLAUDE_CODE_COMMAND_PREFIXES = ['<local-command-', '<command-name>', '<command-message>', '<command-args>'];
|
|
17
13
|
function isNonHumanUserLine(entry, content) {
|
|
@@ -54,69 +50,69 @@ export function collectSessionTurns(jsonl, visit) {
|
|
|
54
50
|
if (!isObjectLike(entry) || !('type' in entry))
|
|
55
51
|
continue;
|
|
56
52
|
visit?.(entry);
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
turns.push(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
turns.push({ role: 'assistant', text: chunks.join('\n') });
|
|
85
|
-
}
|
|
53
|
+
const turn = copilotTurn(entry) ?? claudeCodeTurn(entry) ?? codexTurn(entry);
|
|
54
|
+
if (turn !== null)
|
|
55
|
+
turns.push(turn);
|
|
56
|
+
}
|
|
57
|
+
return turns;
|
|
58
|
+
}
|
|
59
|
+
/** The turn a Claude Code `user` or `assistant` line carries; null for any other line or one with no human or reply text. */
|
|
60
|
+
function claudeCodeTurn(entry) {
|
|
61
|
+
if (entry.type !== 'user' && entry.type !== 'assistant')
|
|
62
|
+
return null;
|
|
63
|
+
const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
|
|
64
|
+
if (!message)
|
|
65
|
+
return null;
|
|
66
|
+
const content = 'content' in message ? message.content : undefined;
|
|
67
|
+
if (entry.type === 'user') {
|
|
68
|
+
const text = humanUserText(entry, message);
|
|
69
|
+
return text ? { role: 'user', text } : null;
|
|
70
|
+
}
|
|
71
|
+
if (!Array.isArray(content))
|
|
72
|
+
return null;
|
|
73
|
+
// Keep assistant text blocks; drop thinking + tool_use
|
|
74
|
+
const chunks = [];
|
|
75
|
+
for (const block of content) {
|
|
76
|
+
if (isObjectLike(block)) {
|
|
77
|
+
const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
|
|
78
|
+
if (isStringValue(blockText) && blockText.trim()) {
|
|
79
|
+
chunks.push(blockText.trim());
|
|
86
80
|
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return chunks.length > 0 ? { role: 'assistant', text: chunks.join('\n') } : null;
|
|
84
|
+
}
|
|
85
|
+
// Codex rollout transcript shape: response_item -> payload.message
|
|
86
|
+
function codexTurn(entry) {
|
|
87
|
+
if (entry.type !== 'response_item')
|
|
88
|
+
return null;
|
|
89
|
+
const payload = 'payload' in entry && isObjectLike(entry.payload) ? entry.payload : undefined;
|
|
90
|
+
if (!payload || !('type' in payload) || payload.type !== 'message')
|
|
91
|
+
return null;
|
|
92
|
+
const role = 'role' in payload ? payload.role : undefined;
|
|
93
|
+
const content = 'content' in payload ? payload.content : undefined;
|
|
94
|
+
if (!Array.isArray(content))
|
|
95
|
+
return null;
|
|
96
|
+
const chunks = [];
|
|
97
|
+
for (const block of content) {
|
|
98
|
+
if (!isObjectLike(block))
|
|
87
99
|
continue;
|
|
100
|
+
const blockType = 'type' in block ? block.type : undefined;
|
|
101
|
+
const blockText = 'text' in block ? block.text : undefined;
|
|
102
|
+
if (role === 'user' && blockType === 'input_text' && isStringValue(blockText) && blockText.trim()) {
|
|
103
|
+
chunks.push(blockText.trim());
|
|
88
104
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const payload = 'payload' in entry && isObjectLike(entry.payload) ? entry.payload : undefined;
|
|
92
|
-
if (!payload || !('type' in payload) || payload.type !== 'message')
|
|
93
|
-
continue;
|
|
94
|
-
const role = 'role' in payload ? payload.role : undefined;
|
|
95
|
-
const content = 'content' in payload ? payload.content : undefined;
|
|
96
|
-
if (!Array.isArray(content))
|
|
97
|
-
continue;
|
|
98
|
-
const chunks = [];
|
|
99
|
-
for (const block of content) {
|
|
100
|
-
if (!isObjectLike(block))
|
|
101
|
-
continue;
|
|
102
|
-
const blockType = 'type' in block ? block.type : undefined;
|
|
103
|
-
const blockText = 'text' in block ? block.text : undefined;
|
|
104
|
-
if (role === 'user' && blockType === 'input_text' && isStringValue(blockText) && blockText.trim()) {
|
|
105
|
-
chunks.push(blockText.trim());
|
|
106
|
-
}
|
|
107
|
-
if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
|
|
108
|
-
chunks.push(blockText.trim());
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (chunks.length === 0)
|
|
112
|
-
continue;
|
|
113
|
-
if (role === 'user')
|
|
114
|
-
turns.push({ role: 'user', text: chunks.join('\n') });
|
|
115
|
-
if (role === 'assistant')
|
|
116
|
-
turns.push({ role: 'assistant', text: chunks.join('\n') });
|
|
105
|
+
if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
|
|
106
|
+
chunks.push(blockText.trim());
|
|
117
107
|
}
|
|
118
108
|
}
|
|
119
|
-
|
|
109
|
+
if (chunks.length === 0)
|
|
110
|
+
return null;
|
|
111
|
+
if (role === 'user')
|
|
112
|
+
return { role: 'user', text: chunks.join('\n') };
|
|
113
|
+
if (role === 'assistant')
|
|
114
|
+
return { role: 'assistant', text: chunks.join('\n') };
|
|
115
|
+
return null;
|
|
120
116
|
}
|
|
121
117
|
export function summariseTranscript(jsonl) {
|
|
122
118
|
return summariseSessionTurns(collectSessionTurns(jsonl));
|
|
@@ -124,8 +120,8 @@ export function summariseTranscript(jsonl) {
|
|
|
124
120
|
/** The last 20 user turns and last 10 replies: session-end is about what was decided near the end, not at the start. */
|
|
125
121
|
export function sessionTail(turns) {
|
|
126
122
|
return {
|
|
127
|
-
users: turns.filter((t) => t.role === 'user').map((t) => t.text).slice(-
|
|
128
|
-
assistants: turns.filter((t) => t.role === 'assistant').map((t) => t.text).slice(-
|
|
123
|
+
users: turns.filter((t) => t.role === 'user').map((t) => t.text).slice(-RECENT_USER_TURNS),
|
|
124
|
+
assistants: turns.filter((t) => t.role === 'assistant').map((t) => t.text).slice(-RECENT_ASSISTANT_TURNS),
|
|
129
125
|
};
|
|
130
126
|
}
|
|
131
127
|
export function summariseSessionTurns(turns) {
|
|
@@ -143,32 +139,16 @@ export function summariseSessionTurns(turns) {
|
|
|
143
139
|
tailAssistants.join('\n\n'),
|
|
144
140
|
].join('\n');
|
|
145
141
|
}
|
|
146
|
-
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* Priority, where the first source present is the only one tried:
|
|
150
|
-
* 1. Explicit `transcriptPath` option (from `--transcript <path>`)
|
|
151
|
-
* 2. Stdin JSON payload (Claude Code / OpenCode SessionEnd hook shape)
|
|
152
|
-
* 3. Most recent `.jsonl` under `<claude config dir>/projects/<any>/` (`~/.claude` unless CLAUDE_CONFIG_DIR is set), only when the caller passes `mayScan` (only the caller knows it is not a hook) and there is no path and no stdin text, because this scan spans every project on the box
|
|
153
|
-
*
|
|
154
|
-
* Returns null when nothing resolves, a named transcript or payload whose file is missing included. Never throws.
|
|
155
|
-
*/
|
|
142
|
+
/** Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest `.jsonl` in the Claude config dir.
|
|
143
|
+
* The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never throws. */
|
|
156
144
|
export function resolveLastSessionTranscript(explicit, stdinText, opts) {
|
|
157
145
|
if (explicit)
|
|
158
146
|
return fs.existsSync(explicit) ? explicit : null;
|
|
159
147
|
if (stdinText && stdinText.trim() !== '') {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (isStringValue(tp) && fs.existsSync(tp))
|
|
165
|
-
return tp;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
// not JSON, but still a payload, so no scan
|
|
170
|
-
}
|
|
171
|
-
return null;
|
|
148
|
+
const receipt = readSessionEnd(stdinText, false);
|
|
149
|
+
// A refused payload is still a payload, so no scan.
|
|
150
|
+
const tp = receipt.status === 'received' ? receipt.input.transcriptPath : null;
|
|
151
|
+
return tp !== null && fs.existsSync(tp) ? tp : null;
|
|
172
152
|
}
|
|
173
153
|
if (!opts.mayScan)
|
|
174
154
|
return null;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { TaskSnapshot } from '../store/rows.js';
|
|
2
|
-
export declare const PRE_COMPACT_TASK_CAP = 200;
|
|
3
|
-
export declare const PRE_COMPACT_SUMMARY_CAP = 2000;
|
|
4
|
-
export declare const PRE_COMPACT_NEXT_STEP_CAP = 500;
|
|
5
2
|
/** The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these instead of copying them. */
|
|
6
3
|
export declare const WORKING_STATE_CAPS: {
|
|
7
4
|
readonly task: 200;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// A session's working state read from its transcript tail, with no store in the imports, so a hook with no store can derive it.
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import { maskEmails, redactSecretsStrict } from '../secret-detect.js';
|
|
4
|
-
import { isObjectLike, isStringValue } from '../capture-contract.js';
|
|
5
|
-
import { errorMessage } from '../log.js';
|
|
6
|
-
import { PRE_COMPACT_TAIL_BYTES, readTranscriptTail, truncateCodePointSafe } from '../transcript-tail.js';
|
|
3
|
+
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
4
|
+
import { isObjectLike, isStringValue } from '../core/capture-contract.js';
|
|
5
|
+
import { errorMessage } from '../util/log.js';
|
|
6
|
+
import { PRE_COMPACT_TAIL_BYTES, readTranscriptTail, truncateCodePointSafe } from '../util/transcript-tail.js';
|
|
7
7
|
import { humanUserText, summariseTranscript } from './transcript.js';
|
|
8
8
|
import { copilotTurn } from './copilot-transcript.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const PRE_COMPACT_TASK_CAP = 200;
|
|
10
|
+
const PRE_COMPACT_SUMMARY_CAP = 2000;
|
|
11
|
+
const PRE_COMPACT_NEXT_STEP_CAP = 500;
|
|
12
12
|
const TRIM_MARKER = '[...earlier turns trimmed]\n';
|
|
13
13
|
/** The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these instead of copying them. */
|
|
14
14
|
export const WORKING_STATE_CAPS = {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { adminActor } from '../api/index.js';
|
|
2
|
+
// The one place the CLI names its audit actor; root is a parameter because some verbs target the global store.
|
|
3
|
+
export function cliApiContext(hippoRoot, tenantId) {
|
|
4
|
+
return { hippoRoot, tenantId, actor: adminActor('cli') };
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=api-context.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Audit log retention pruning: opt-in per tenant because retention floors (HIPAA, SOX, GDPR) apply.
|
|
2
|
+
* The audit_prune row is written after the DELETE, so a call never prunes its own record. */
|
|
3
|
+
export interface PruneAuditOpts {
|
|
4
|
+
/** Cutoff in days. Rows with `ts < (now - N days)` are deleted. */
|
|
5
|
+
olderThanDays: number;
|
|
6
|
+
/** Tenant scope. Required: prune is always tenant-scoped. */
|
|
7
|
+
tenantId: string;
|
|
8
|
+
/** When true, count matching rows but do NOT delete. Default false. */
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
/** Actor recording the prune in the audit trail. Default 'cli'. */
|
|
11
|
+
actor?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PruneAuditResult {
|
|
14
|
+
/** ISO timestamp of the cutoff. Rows with ts strictly less than this were deleted. */
|
|
15
|
+
cutoff: string;
|
|
16
|
+
/** Number of audit_log rows deleted (or that would be deleted, if dryRun). */
|
|
17
|
+
count: number;
|
|
18
|
+
/** Echo back whether this was a dry run. */
|
|
19
|
+
dryRun: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Cutoff ISO timestamp for N days ago; exported so tests can pin "now" without mocking Date. */
|
|
22
|
+
export declare function computeCutoff(days: number, now?: Date): string;
|
|
23
|
+
/** Delete audit_log rows older than `olderThanDays` for `tenantId`, emitting an `audit_prune` event.
|
|
24
|
+
* Throws on non-positive days or a missing tenantId. */
|
|
25
|
+
export declare function pruneAuditLog(hippoRoot: string, opts: PruneAuditOpts): PruneAuditResult;
|
|
26
|
+
/** Parse `--older-than`: bare integer days (`30`) or with a `d` suffix (`30d`); throws on any other format. */
|
|
27
|
+
export declare function parseOlderThanFlag(raw: string): number;
|
|
28
|
+
//# sourceMappingURL=audit-prune.d.ts.map
|