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
package/dist/cli.js
CHANGED
|
@@ -1,81 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Commands:
|
|
6
|
-
* hippo init [--global]
|
|
7
|
-
* hippo remember <text> [--tag <t>] [--error] [--pin] [--global]
|
|
8
|
-
* hippo recall <query> [--budget <n>] [--json] [--why]
|
|
9
|
-
* hippo sleep [--dry-run]
|
|
10
|
-
* hippo status
|
|
11
|
-
* hippo outcome --good | --bad [--id <id>]
|
|
12
|
-
* hippo conflicts [--status <status>] [--json]
|
|
13
|
-
* hippo snapshot <save|show|clear>
|
|
14
|
-
* hippo session <log|show|latest|resume|complete>
|
|
15
|
-
* hippo handoff <create|latest|show>
|
|
16
|
-
* hippo card <create|show|list|claim|heartbeat|block|review|complete|reclaim|comment>
|
|
17
|
-
* hippo current <show>
|
|
18
|
-
* hippo forget <id> [--archive --reason "<why>"]
|
|
19
|
-
* hippo reject <id>|--value "<text>" --reason "<why>"
|
|
20
|
-
* hippo rejections
|
|
21
|
-
* hippo unreject <digest-prefix>
|
|
22
|
-
* hippo dormant [<query>] [--limit <n>] [--json] | restore <id> | forget <id>
|
|
23
|
-
* hippo projects [--json] | merge <from> <into> [--apply] | repair [--apply]
|
|
24
|
-
* hippo tokens [--days <n>] [--json] [--global]
|
|
25
|
-
* hippo doctor [--json]
|
|
26
|
-
* hippo inspect <id>
|
|
27
|
-
* hippo embed [--status]
|
|
28
|
-
* hippo watch "<command>"
|
|
29
|
-
* hippo learn --git [--days <n>] [--repos <paths>]
|
|
30
|
-
* hippo daily-runner
|
|
31
|
-
* hippo promote <id>
|
|
32
|
-
* hippo sync
|
|
33
|
-
* hippo decide "<decision>" [--context "<why>"] [--supersedes <id>]
|
|
34
|
-
* hippo wm <push|read|clear|flush>
|
|
35
|
-
*/
|
|
36
|
-
import { envSkipAutoIntegrations } from './env.js';
|
|
2
|
+
// Hippo CLI entry point: parses argv and dispatches each verb through the table below.
|
|
3
|
+
// `hippo help` prints the verb list from that table, so no list is kept here.
|
|
4
|
+
import { envSkipAutoIntegrations } from './util/env.js';
|
|
37
5
|
import * as path from 'path';
|
|
38
6
|
import * as fs from 'fs';
|
|
39
7
|
import { fileURLToPath } from 'node:url';
|
|
40
8
|
import { repairCodexWrapperIfInstalled } from './hooks/codex-wrapper.js';
|
|
41
9
|
import { getHippoRoot } from './store/open.js';
|
|
42
|
-
import {
|
|
10
|
+
import { resolveTenantId } from './store/tenant.js';
|
|
11
|
+
import { handleGitHub, printGitHubBackfillUsage } from './cli/github.js';
|
|
43
12
|
import { printError } from './cli/output.js';
|
|
13
|
+
import { errorFields, errorMessage, isLevelEnabled, log } from './util/log.js';
|
|
44
14
|
import { isStoreBusy, STORE_BUSY_MESSAGE } from './db/busy.js';
|
|
15
|
+
import { boolFlag, flagIsTrue, isBooleanFlag, isStringFlag } from './cli/flag-values.js';
|
|
45
16
|
import { VERB_USAGE, USAGE_HEADER, USAGE_EXAMPLES, printAuditPruneUsage, printSlackBackfillUsage, printSlackWorkspacesUsage } from './cli/usage.js';
|
|
46
|
-
|
|
17
|
+
import { VERB_FLAGS, flagKind, isKnownFlag, undeclaredFlags } from './cli/flags.js';
|
|
18
|
+
import { CliExit } from './cli/exit.js';
|
|
47
19
|
// Helpers
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
// Every switch the CLI reads. A value on one reads as on under Boolean() (`--fix=false` would fix)
|
|
50
|
-
// and as off under === true (`--pin=true` would not pin), so parseArgs and main() refuse one.
|
|
51
|
-
// tests/cli-parse-flag-equals.test.ts fails when a switch read is missing from this set.
|
|
52
|
-
export const BOOLEAN_FLAGS = new Set([
|
|
53
|
-
'agents', 'all', 'all-tenants', 'apply', 'archive', 'auto', 'bad', 'bootstrap', 'classic', 'churn', 'continuity',
|
|
54
|
-
'cross-project', 'dry-run', 'equal-sources', 'error', 'evc-adaptive', 'extract',
|
|
55
|
-
'filter-conflicts', 'fix', 'force', 'forget', 'git', 'global', 'good', 'graph-stream',
|
|
56
|
-
'help', 'include-logs', 'include-superseded', 'inferred', 'json', 'last-session', 'multihop', 'no-hooks',
|
|
57
|
-
'no-learn', 'no-mmr', 'no-propagate', 'no-schedule', 'no-share', 'no-summarize-older',
|
|
58
|
-
'observed', 'open', 'physics', 'pin', 'pinned-only', 'reject-loser', 'rerank-utility',
|
|
59
|
-
'reset-physics', 'save-baseline', 'show-cases', 'stats', 'stdin',
|
|
60
|
-
'strict', 'suite', 'turn', 'value-aware', 'verified', 'version', 'why',
|
|
61
|
-
]);
|
|
62
|
-
// Every flag some command reads. Anything else is a typo that no command would act on.
|
|
63
|
-
export const KNOWN_FLAGS = new Set([
|
|
64
|
-
...BOOLEAN_FLAGS,
|
|
65
|
-
'actual', 'artifact', 'artifact-ref', 'as-of', 'author', 'baseline', 'body', 'budget', 'card-id',
|
|
66
|
-
'change', 'channel', 'chatgpt', 'class', 'claude', 'codex-home', 'compare', 'constraint', 'content',
|
|
67
|
-
'context', 'contract', 'cursor', 'customer', 'days', 'depends-on', 'depth', 'description',
|
|
68
|
-
'embedding-weight', 'entity', 'estimate', 'file', 'format', 'framing', 'fresh-tail', 'from', 'goal',
|
|
69
|
-
'graph-hops', 'graph-seeds', 'history-path', 'hops', 'host', 'id', 'importance', 'include-recent',
|
|
70
|
-
'instructions', 'keep', 'kind', 'label', 'layer', 'level', 'limit', 'link', 'local-bump', 'log-file',
|
|
71
|
-
'markdown', 'max', 'max-cases', 'max-neighbors', 'min-mrr', 'min-results', 'min-score', 'mmr-lambda',
|
|
72
|
-
'model', 'name', 'next', 'next-step', 'note', 'older-than', 'op', 'out', 'outcome', 'owner', 'parent',
|
|
73
|
-
'path', 'policy', 'port', 'reason', 'repo', 'repos', 'reranker', 'reranker-top-k', 'resolution',
|
|
74
|
-
'role', 'run', 'runtime', 'salience-threshold', 'scan', 'scope', 'session', 'session-id', 'since',
|
|
75
|
-
'source', 'start-offset', 'started-at', 'state', 'status', 'step', 'steps', 'success', 'summary',
|
|
76
|
-
'supersedes', 'tag', 'target', 'target-runtime', 'task', 'team', 'tenant', 'tenant-id', 'tests',
|
|
77
|
-
'text', 'threshold', 'title', 'to', 'transcript', 'trigger', 'type', 'unit', 'value', 'vault',
|
|
78
|
-
]);
|
|
79
20
|
// Commands that delete or hide memories: an unknown flag here stops the run instead of being ignored.
|
|
80
21
|
const DESTRUCTIVE_COMMANDS = new Set([
|
|
81
22
|
'audit', 'dedup', 'forget', 'invalidate', 'projects', 'reject', 'resolve', 'sleep', 'supersede',
|
|
@@ -88,17 +29,13 @@ const DRY_RUN_COMMANDS = new Set([
|
|
|
88
29
|
function dryRunRefusal(command, args, flags) {
|
|
89
30
|
const isBrief = command === 'brief' || command === 'project-brief';
|
|
90
31
|
const onlyForm = command === 'share' ? 'share --auto' : isBrief ? `${command} refresh` : null;
|
|
91
|
-
const honoured = command === 'share' ? args[0] === '--auto' ||
|
|
32
|
+
const honoured = command === 'share' ? args[0] === '--auto' || boolFlag(flags, 'auto')
|
|
92
33
|
: isBrief ? args[0] === 'refresh' : DRY_RUN_COMMANDS.has(command);
|
|
93
34
|
if (honoured)
|
|
94
35
|
return null;
|
|
95
36
|
const where = onlyForm ? ` outside \`hippo ${onlyForm}\`` : '';
|
|
96
37
|
return `hippo ${command} has no --dry-run${where}, so it would run for real. Nothing was changed.`;
|
|
97
38
|
}
|
|
98
|
-
// Shared by both the separated and glued (`=`) forms so the list can't drift.
|
|
99
|
-
function isRepeatableFlag(key) {
|
|
100
|
-
return key === 'tag' || key === 'artifact' || key === 'link' || key === 'step' || key === 'constraint' || key === 'depends-on';
|
|
101
|
-
}
|
|
102
39
|
function pushRepeatableFlag(flags, key, value) {
|
|
103
40
|
if (Array.isArray(flags[key])) {
|
|
104
41
|
// SAFETY: Array.isArray just confirmed flags[key] is an array; the union has no other array member.
|
|
@@ -108,10 +45,43 @@ function pushRepeatableFlag(flags, key, value) {
|
|
|
108
45
|
flags[key] = [value];
|
|
109
46
|
}
|
|
110
47
|
}
|
|
48
|
+
function setGluedFlag(flags, key, value, kind) {
|
|
49
|
+
// Glued form has no following token to swallow, so a switch gets its
|
|
50
|
+
// own branch here instead of the swallow-avoidance short-circuit in setSeparatedFlag.
|
|
51
|
+
if (kind === 'switch') {
|
|
52
|
+
flags[key] = value;
|
|
53
|
+
}
|
|
54
|
+
else if (kind === 'list') {
|
|
55
|
+
if (value !== '')
|
|
56
|
+
pushRepeatableFlag(flags, key, value);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
flags[key] = value === '' ? true : value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Returns how many tokens the flag consumed: its own, plus `next` when that is its value. */
|
|
63
|
+
function setSeparatedFlag(flags, key, next, kind) {
|
|
64
|
+
if (kind === 'switch' && (next === 'true' || next === 'false')) {
|
|
65
|
+
// Kept as a value so main() rejects it, instead of `--pin true` pinning the text "... true".
|
|
66
|
+
flags[key] = next;
|
|
67
|
+
return 2;
|
|
68
|
+
}
|
|
69
|
+
if (!next || next.startsWith('--') || kind === 'switch') {
|
|
70
|
+
// Boolean flag
|
|
71
|
+
flags[key] = true;
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
if (kind === 'list')
|
|
75
|
+
pushRepeatableFlag(flags, key, next);
|
|
76
|
+
else
|
|
77
|
+
flags[key] = next;
|
|
78
|
+
return 2;
|
|
79
|
+
}
|
|
111
80
|
export function parseArgs(argv) {
|
|
112
81
|
const [, , command = '', ...rest] = argv;
|
|
113
82
|
const args = [];
|
|
114
83
|
const flags = {};
|
|
84
|
+
const declared = COMMAND_INDEX.get(command)?.flags;
|
|
115
85
|
let i = 0;
|
|
116
86
|
while (i < rest.length) {
|
|
117
87
|
const part = rest[i];
|
|
@@ -121,43 +91,13 @@ export function parseArgs(argv) {
|
|
|
121
91
|
}
|
|
122
92
|
if (part.startsWith('--')) {
|
|
123
93
|
const eqIdx = part.indexOf('=');
|
|
94
|
+
const key = part.slice(2, eqIdx > 2 ? eqIdx : undefined);
|
|
124
95
|
if (eqIdx > 2) {
|
|
125
|
-
|
|
126
|
-
// own branch here instead of the swallow-avoidance short-circuit below.
|
|
127
|
-
const key = part.slice(2, eqIdx);
|
|
128
|
-
const value = part.slice(eqIdx + 1);
|
|
129
|
-
if (BOOLEAN_FLAGS.has(key)) {
|
|
130
|
-
flags[key] = value;
|
|
131
|
-
}
|
|
132
|
-
else if (isRepeatableFlag(key)) {
|
|
133
|
-
if (value !== '')
|
|
134
|
-
pushRepeatableFlag(flags, key, value);
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
flags[key] = value === '' ? true : value;
|
|
138
|
-
}
|
|
96
|
+
setGluedFlag(flags, key, part.slice(eqIdx + 1), flagKind(declared, key));
|
|
139
97
|
i++;
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
const key = part.slice(2);
|
|
143
|
-
const next = rest[i + 1];
|
|
144
|
-
if (BOOLEAN_FLAGS.has(key) && (next === 'true' || next === 'false')) {
|
|
145
|
-
// Kept as a value so main() rejects it, instead of `--pin true` pinning the text "... true".
|
|
146
|
-
flags[key] = next;
|
|
147
|
-
i += 2;
|
|
148
|
-
}
|
|
149
|
-
else if (!next || next.startsWith('--') || BOOLEAN_FLAGS.has(key)) {
|
|
150
|
-
// Boolean flag
|
|
151
|
-
flags[key] = true;
|
|
152
|
-
i++;
|
|
153
|
-
}
|
|
154
|
-
else if (isRepeatableFlag(key)) {
|
|
155
|
-
pushRepeatableFlag(flags, key, next);
|
|
156
|
-
i += 2;
|
|
157
98
|
}
|
|
158
99
|
else {
|
|
159
|
-
flags[
|
|
160
|
-
i += 2;
|
|
100
|
+
i += setSeparatedFlag(flags, key, rest[i + 1], flagKind(declared, key));
|
|
161
101
|
}
|
|
162
102
|
}
|
|
163
103
|
else if (part === '-h') {
|
|
@@ -178,358 +118,290 @@ export function shouldAutoRepairCodexWrapper(currentCommand, flags) {
|
|
|
178
118
|
if (!['context', 'remember', 'recall', 'sleep', 'capture', 'outcome', 'status', 'init'].includes(currentCommand)) {
|
|
179
119
|
return false;
|
|
180
120
|
}
|
|
181
|
-
if (currentCommand === 'init' && flags
|
|
121
|
+
if (currentCommand === 'init' && flagIsTrue(flags, 'no-hooks'))
|
|
182
122
|
return false;
|
|
183
123
|
return true;
|
|
184
124
|
}
|
|
185
|
-
// Repair-only:
|
|
186
|
-
//
|
|
187
|
-
// shim). Never first-installs — silently swapping the codex binary on routine
|
|
188
|
-
// commands is a consent violation and reads as binary hijacking to
|
|
189
|
-
// supply-chain scanners.
|
|
125
|
+
// Repair-only: never first-installs, because silently swapping the codex binary on routine commands
|
|
126
|
+
// is a consent violation and reads as binary hijacking to supply-chain scanners.
|
|
190
127
|
function maybeRepairCodexWrapper(currentCommand, flags) {
|
|
191
128
|
if (!shouldAutoRepairCodexWrapper(currentCommand, flags))
|
|
192
129
|
return;
|
|
193
130
|
try {
|
|
194
131
|
repairCodexWrapperIfInstalled();
|
|
195
132
|
}
|
|
196
|
-
catch {
|
|
197
|
-
|
|
133
|
+
catch (err) {
|
|
134
|
+
log.debug(`codex wrapper not repaired: ${errorMessage(err)}`);
|
|
198
135
|
}
|
|
199
136
|
}
|
|
200
|
-
|
|
201
|
-
|
|
137
|
+
// A verb's entry is handle<Verb>(ctx); cmd<Name> is a typed function below an entry, never called from this table.
|
|
138
|
+
/** Every verb main() dispatches, keyed by name; a verb without a VERB_FLAGS entry, or the reverse, fails to compile. */
|
|
139
|
+
export const VERB_HANDLERS = {
|
|
202
140
|
init: {
|
|
203
|
-
run: async (
|
|
204
|
-
usage: VERB_USAGE.init,
|
|
141
|
+
run: async (c) => { (await import('./cli/init.js')).handleInit(c); },
|
|
205
142
|
},
|
|
206
143
|
remember: {
|
|
207
144
|
run: async (c) => { await (await import('./cli/remember.js')).handleRemember(c); },
|
|
208
|
-
usage: VERB_USAGE.remember,
|
|
209
145
|
},
|
|
210
146
|
recall: {
|
|
211
147
|
run: async (c) => { await (await import('./cli/recall.js')).handleRecall(c); },
|
|
212
148
|
scoped: true,
|
|
213
|
-
usage: VERB_USAGE.recall,
|
|
214
149
|
},
|
|
215
150
|
drill: {
|
|
216
151
|
run: async (c) => { await (await import('./cli/dag.js')).handleDrill(c); },
|
|
217
152
|
scoped: true,
|
|
218
|
-
usage: VERB_USAGE.drill,
|
|
219
153
|
},
|
|
220
154
|
assemble: {
|
|
221
155
|
run: async (c) => { await (await import('./cli/dag.js')).handleAssemble(c); },
|
|
222
156
|
scoped: true,
|
|
223
|
-
usage: VERB_USAGE.assemble,
|
|
224
157
|
},
|
|
225
158
|
supersede: {
|
|
226
159
|
run: async (c) => { await (await import('./cli/remember.js')).handleSupersede(c); },
|
|
227
|
-
usage: VERB_USAGE.supersede,
|
|
228
160
|
},
|
|
229
161
|
explain: {
|
|
230
162
|
run: async (c) => { await (await import('./cli/explain.js')).handleExplain(c); },
|
|
231
163
|
scoped: true,
|
|
232
|
-
usage: VERB_USAGE.explain,
|
|
233
164
|
},
|
|
234
165
|
eval: {
|
|
235
166
|
run: async (c) => { await (await import('./cli/eval.js')).handleEval(c); },
|
|
236
|
-
usage: VERB_USAGE.eval,
|
|
237
167
|
},
|
|
238
168
|
trace: {
|
|
239
169
|
run: async (c) => { await (await import('./cli/remember.js')).handleTrace(c); },
|
|
240
|
-
usage: VERB_USAGE.trace,
|
|
241
170
|
},
|
|
242
171
|
refine: {
|
|
243
|
-
run: async (
|
|
244
|
-
usage: VERB_USAGE.refine,
|
|
172
|
+
run: async (c) => { await (await import('./cli/maintenance.js')).handleRefine(c); },
|
|
245
173
|
},
|
|
246
174
|
sleep: {
|
|
247
|
-
run: async (
|
|
175
|
+
run: async (c) => { await (await import('./cli/sleep.js')).handleSleep(c); },
|
|
248
176
|
scoped: true,
|
|
249
|
-
usage: VERB_USAGE.sleep,
|
|
250
177
|
},
|
|
251
178
|
'last-sleep': {
|
|
252
|
-
run: async (
|
|
253
|
-
usage: VERB_USAGE['last-sleep'],
|
|
179
|
+
run: async (c) => { (await import('./cli/last-sleep.js')).handleLastSleep(c); },
|
|
254
180
|
},
|
|
255
181
|
'session-end': {
|
|
256
|
-
run: async (
|
|
257
|
-
usage: VERB_USAGE['session-end'],
|
|
182
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleSessionEnd(c); },
|
|
258
183
|
},
|
|
259
184
|
'__session-end-worker': {
|
|
260
|
-
run: async (
|
|
261
|
-
usage: [],
|
|
185
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleSessionEndWorker(c); },
|
|
262
186
|
},
|
|
263
187
|
'pre-compact': {
|
|
264
188
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handlePreCompact(c); },
|
|
265
|
-
usage: VERB_USAGE['pre-compact'],
|
|
266
189
|
},
|
|
267
190
|
'post-compact': {
|
|
268
191
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handlePostCompact(c); },
|
|
269
|
-
usage: VERB_USAGE['post-compact'],
|
|
270
192
|
},
|
|
271
193
|
'capture-error': {
|
|
272
194
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCaptureError(c); },
|
|
273
|
-
usage: VERB_USAGE['capture-error'],
|
|
274
195
|
},
|
|
275
196
|
'compact-resume': {
|
|
276
197
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCompactResume(c); },
|
|
277
|
-
usage: VERB_USAGE['compact-resume'],
|
|
278
198
|
},
|
|
279
199
|
'codex-run': {
|
|
280
|
-
run: async (
|
|
281
|
-
usage: VERB_USAGE['codex-run'],
|
|
200
|
+
run: async (c) => { (await import('./cli/session-hooks.js')).handleCodexRun(c); },
|
|
282
201
|
},
|
|
283
202
|
'__codex-session-end-worker': {
|
|
284
|
-
run: async (
|
|
285
|
-
usage: [],
|
|
203
|
+
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCodexSessionEndWorker(c); },
|
|
286
204
|
},
|
|
287
205
|
dedup: {
|
|
288
|
-
run: async (
|
|
289
|
-
usage: VERB_USAGE.dedup,
|
|
206
|
+
run: async (c) => { (await import('./cli/maintenance.js')).handleDedup(c); },
|
|
290
207
|
},
|
|
291
208
|
dag: {
|
|
292
|
-
run: async (
|
|
293
|
-
usage: VERB_USAGE.dag,
|
|
209
|
+
run: async (c) => { (await import('./cli/dag.js')).handleDag(c); },
|
|
294
210
|
},
|
|
295
211
|
auth: {
|
|
296
|
-
run: async (
|
|
212
|
+
run: async (c) => { (await import('./cli/auth.js')).handleAuth(c); },
|
|
297
213
|
scoped: true,
|
|
298
|
-
usage: VERB_USAGE.auth,
|
|
299
214
|
},
|
|
300
215
|
goal: {
|
|
301
|
-
run: async (
|
|
216
|
+
run: async (c) => { (await import('./cli/goals.js')).handleGoal(c); },
|
|
302
217
|
scoped: true,
|
|
303
|
-
usage: VERB_USAGE.goal,
|
|
304
218
|
},
|
|
305
219
|
slack: {
|
|
306
|
-
run: async (
|
|
307
|
-
usage: VERB_USAGE.slack,
|
|
220
|
+
run: async (c) => { await (await import('./cli/slack.js')).handleSlack(c); },
|
|
308
221
|
},
|
|
309
222
|
github: {
|
|
310
|
-
run: async (
|
|
311
|
-
usage: VERB_USAGE.github,
|
|
223
|
+
run: async (c) => { await handleGitHub(c); },
|
|
312
224
|
},
|
|
313
225
|
audit: {
|
|
314
226
|
run: async (c) => { await (await import('./cli/audit.js')).handleAudit(c); },
|
|
315
227
|
scoped: true,
|
|
316
|
-
usage: VERB_USAGE.audit,
|
|
317
228
|
},
|
|
318
229
|
'correction-latency': {
|
|
319
230
|
run: async (c) => { await (await import('./cli/status.js')).handleCorrectionLatency(c); },
|
|
320
|
-
usage: VERB_USAGE['correction-latency'],
|
|
321
231
|
},
|
|
322
232
|
provenance: {
|
|
323
233
|
run: async (c) => { await (await import('./cli/status.js')).handleProvenance(c); },
|
|
324
|
-
usage: VERB_USAGE.provenance,
|
|
325
234
|
},
|
|
326
235
|
status: {
|
|
327
|
-
run: async (
|
|
328
|
-
usage: VERB_USAGE.status,
|
|
236
|
+
run: async (c) => { (await import('./cli/status.js')).handleStatus(c); },
|
|
329
237
|
},
|
|
330
238
|
outcome: {
|
|
331
|
-
run: async (
|
|
239
|
+
run: async (c) => { (await import('./cli/curate.js')).handleOutcome(c); },
|
|
332
240
|
scoped: true,
|
|
333
|
-
usage: VERB_USAGE.outcome,
|
|
334
241
|
},
|
|
335
242
|
conflicts: {
|
|
336
|
-
run: async (
|
|
337
|
-
usage: VERB_USAGE.conflicts,
|
|
243
|
+
run: async (c) => { (await import('./cli/curate.js')).handleConflicts(c); },
|
|
338
244
|
},
|
|
339
245
|
resolve: {
|
|
340
|
-
run: async (
|
|
341
|
-
usage: VERB_USAGE.resolve,
|
|
246
|
+
run: async (c) => { await (await import('./cli/curate.js')).handleResolve(c); },
|
|
342
247
|
},
|
|
343
248
|
reject: {
|
|
344
|
-
run: async (
|
|
345
|
-
usage: VERB_USAGE.reject,
|
|
249
|
+
run: async (c) => { (await import('./cli/curate.js')).handleReject(c); },
|
|
346
250
|
},
|
|
347
251
|
rejections: {
|
|
348
|
-
run: async (
|
|
349
|
-
usage: VERB_USAGE.rejections,
|
|
252
|
+
run: async (c) => { (await import('./cli/curate.js')).handleRejections(c); },
|
|
350
253
|
},
|
|
351
254
|
unreject: {
|
|
352
|
-
run: async (
|
|
353
|
-
usage: VERB_USAGE.unreject,
|
|
255
|
+
run: async (c) => { (await import('./cli/curate.js')).handleUnreject(c); },
|
|
354
256
|
},
|
|
355
257
|
dormant: {
|
|
356
|
-
run: async (
|
|
258
|
+
run: async (c) => { (await import('./cli/curate.js')).handleDormant(c); },
|
|
357
259
|
scoped: true,
|
|
358
|
-
usage: VERB_USAGE.dormant,
|
|
359
260
|
},
|
|
360
261
|
projects: {
|
|
361
|
-
run: async (
|
|
362
|
-
usage: VERB_USAGE.projects,
|
|
262
|
+
run: async (c) => { (await import('./cli/projects.js')).handleProjects(c); },
|
|
363
263
|
},
|
|
364
264
|
quarantine: {
|
|
365
|
-
run: async (
|
|
265
|
+
run: async (c) => { await (await import('./cli/curate.js')).handleQuarantine(c); },
|
|
366
266
|
scoped: true,
|
|
367
|
-
usage: VERB_USAGE.quarantine,
|
|
368
267
|
},
|
|
369
268
|
tokens: {
|
|
370
|
-
run: async (
|
|
269
|
+
run: async (c) => { (await import('./cli/status.js')).handleTokens(c); },
|
|
371
270
|
scoped: true,
|
|
372
|
-
usage: VERB_USAGE.tokens,
|
|
373
271
|
},
|
|
374
272
|
failures: {
|
|
375
|
-
run: async (
|
|
273
|
+
run: async (c) => { (await import('./cli/status.js')).handleFailures(c); },
|
|
376
274
|
scoped: true,
|
|
377
|
-
usage: VERB_USAGE.failures,
|
|
378
275
|
},
|
|
379
276
|
doctor: {
|
|
380
277
|
run: async (c) => { await (await import('./cli/status.js')).handleDoctor(c); },
|
|
381
|
-
usage: VERB_USAGE.doctor,
|
|
382
278
|
},
|
|
383
279
|
'support-bundle': {
|
|
384
280
|
run: async (c) => { await (await import('./cli/status.js')).handleSupportBundle(c); },
|
|
385
|
-
usage: VERB_USAGE['support-bundle'],
|
|
386
281
|
},
|
|
387
282
|
snapshot: {
|
|
388
|
-
run: async (
|
|
389
|
-
usage: VERB_USAGE.snapshot,
|
|
283
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleSnapshot(c); },
|
|
390
284
|
},
|
|
391
285
|
session: {
|
|
392
|
-
run: async (
|
|
393
|
-
usage: VERB_USAGE.session,
|
|
286
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleSession(c); },
|
|
394
287
|
},
|
|
395
288
|
handoff: {
|
|
396
|
-
run: async (
|
|
397
|
-
usage: VERB_USAGE.handoff,
|
|
289
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleHandoff(c); },
|
|
398
290
|
},
|
|
399
291
|
card: {
|
|
400
|
-
run: async (
|
|
401
|
-
usage: VERB_USAGE.card,
|
|
292
|
+
run: async (c) => { (await import('./cli/card.js')).handleCard(c); },
|
|
402
293
|
},
|
|
403
294
|
predict: {
|
|
404
|
-
run: async (
|
|
405
|
-
usage: VERB_USAGE.predict,
|
|
295
|
+
run: async (c) => { (await import('./cli/decisions.js')).handlePredict(c); },
|
|
406
296
|
},
|
|
407
297
|
current: {
|
|
408
|
-
run: async (
|
|
409
|
-
usage: VERB_USAGE.current,
|
|
298
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleCurrent(c); },
|
|
410
299
|
},
|
|
411
300
|
forget: {
|
|
412
301
|
run: async (c) => { await (await import('./cli/curate.js')).handleForget(c); },
|
|
413
302
|
scoped: true,
|
|
414
|
-
usage: VERB_USAGE.forget,
|
|
415
303
|
},
|
|
416
304
|
inspect: {
|
|
417
305
|
run: async (c) => { await (await import('./cli/status.js')).handleInspect(c); },
|
|
418
|
-
usage: VERB_USAGE.inspect,
|
|
419
306
|
},
|
|
420
307
|
context: {
|
|
421
308
|
run: async (c) => { await (await import('./cli/context.js')).handleContext(c); },
|
|
422
|
-
usage: VERB_USAGE.context,
|
|
423
309
|
},
|
|
424
310
|
hook: {
|
|
425
|
-
run: async (
|
|
426
|
-
usage: VERB_USAGE.hook,
|
|
311
|
+
run: async (c) => { (await import('./cli/setup.js')).handleHook(c); },
|
|
427
312
|
},
|
|
428
313
|
setup: {
|
|
429
|
-
run: async (
|
|
430
|
-
usage: VERB_USAGE.setup,
|
|
314
|
+
run: async (c) => { (await import('./cli/setup.js')).handleSetup(c); },
|
|
431
315
|
},
|
|
432
316
|
'daily-runner': {
|
|
433
|
-
run: async () => { (await import('./cli/setup.js')).
|
|
434
|
-
usage: VERB_USAGE['daily-runner'],
|
|
317
|
+
run: async (c) => { (await import('./cli/setup.js')).handleDailyRunner(c); },
|
|
435
318
|
},
|
|
436
319
|
embed: {
|
|
437
|
-
run: async (
|
|
438
|
-
usage: VERB_USAGE.embed,
|
|
320
|
+
run: async (c) => { await (await import('./cli/maintenance.js')).handleEmbed(c); },
|
|
439
321
|
},
|
|
440
322
|
watch: {
|
|
441
323
|
run: async (c) => { await (await import('./cli/transfer.js')).handleWatch(c); },
|
|
442
|
-
usage: VERB_USAGE.watch,
|
|
443
324
|
},
|
|
444
325
|
learn: {
|
|
445
|
-
run: async (
|
|
326
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleLearn(c); },
|
|
446
327
|
scoped: true,
|
|
447
|
-
usage: VERB_USAGE.learn,
|
|
448
328
|
},
|
|
449
329
|
promote: {
|
|
450
330
|
run: async (c) => { await (await import('./cli/transfer.js')).handlePromote(c); },
|
|
451
331
|
scoped: true,
|
|
452
|
-
usage: VERB_USAGE.promote,
|
|
453
332
|
},
|
|
454
333
|
sync: {
|
|
455
|
-
run: async (
|
|
456
|
-
usage: VERB_USAGE.sync,
|
|
334
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleSync(c); },
|
|
457
335
|
},
|
|
458
336
|
share: {
|
|
459
337
|
run: async (c) => { await (await import('./cli/transfer.js')).handleShare(c); },
|
|
460
|
-
usage: VERB_USAGE.share,
|
|
461
338
|
},
|
|
462
339
|
peers: {
|
|
463
340
|
run: async (c) => { await (await import('./cli/transfer.js')).handlePeers(c); },
|
|
464
|
-
usage: VERB_USAGE.peers,
|
|
465
341
|
},
|
|
466
342
|
import: {
|
|
467
|
-
run: async (
|
|
468
|
-
usage: VERB_USAGE.import,
|
|
343
|
+
run: async (c) => { (await import('./cli/transfer.js')).handleImport(c); },
|
|
469
344
|
},
|
|
470
345
|
export: {
|
|
471
346
|
run: async (c) => { await (await import('./cli/transfer.js')).handleExport(c); },
|
|
472
|
-
usage: VERB_USAGE.export,
|
|
473
347
|
},
|
|
474
348
|
capture: {
|
|
475
349
|
run: async (c) => { await (await import('./cli/session-hooks.js')).handleCapture(c); },
|
|
476
|
-
usage: VERB_USAGE.capture,
|
|
477
350
|
},
|
|
478
351
|
dashboard: {
|
|
479
352
|
run: async (c) => { await (await import('./cli/serve.js')).handleDashboard(c); },
|
|
480
|
-
usage: VERB_USAGE.dashboard,
|
|
481
353
|
},
|
|
482
354
|
wm: {
|
|
483
|
-
run: async (
|
|
484
|
-
usage: VERB_USAGE.wm,
|
|
355
|
+
run: async (c) => { (await import('./cli/continuity.js')).handleWm(c); },
|
|
485
356
|
},
|
|
486
357
|
mcp: {
|
|
487
358
|
run: async () => { await (await import('./cli/serve.js')).handleMcp(); },
|
|
488
|
-
usage: VERB_USAGE.mcp,
|
|
489
359
|
},
|
|
490
360
|
serve: {
|
|
491
361
|
run: async (c) => { await (await import('./cli/serve.js')).handleServe(c); },
|
|
492
|
-
usage: VERB_USAGE.serve,
|
|
493
362
|
},
|
|
494
363
|
invalidate: {
|
|
495
364
|
run: async (c) => { await (await import('./cli/curate.js')).handleInvalidate(c); },
|
|
496
|
-
usage: VERB_USAGE.invalidate,
|
|
497
365
|
},
|
|
498
366
|
decide: {
|
|
499
|
-
run: async (
|
|
500
|
-
usage: VERB_USAGE.decide,
|
|
367
|
+
run: async (c) => { await (await import('./cli/decisions.js')).handleDecide(c); },
|
|
501
368
|
},
|
|
502
369
|
incident: {
|
|
503
|
-
run: async (
|
|
504
|
-
usage: VERB_USAGE.incident,
|
|
370
|
+
run: async (c) => { (await import('./cli/decisions.js')).handleIncident(c); },
|
|
505
371
|
},
|
|
506
372
|
process: {
|
|
507
|
-
run: async (
|
|
508
|
-
usage: VERB_USAGE.process,
|
|
373
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handleProcess(c); },
|
|
509
374
|
},
|
|
510
375
|
policy: {
|
|
511
|
-
run: async (
|
|
512
|
-
usage: VERB_USAGE.policy,
|
|
376
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handlePolicy(c); },
|
|
513
377
|
},
|
|
514
378
|
skill: {
|
|
515
|
-
run: async (
|
|
516
|
-
usage: VERB_USAGE.skill,
|
|
379
|
+
run: async (c) => { (await import('./cli/playbooks.js')).handleSkill(c); },
|
|
517
380
|
},
|
|
518
381
|
brief: {
|
|
519
|
-
run: async (
|
|
382
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleProjectBrief(c); },
|
|
520
383
|
aliases: ['project-brief'],
|
|
521
|
-
usage: VERB_USAGE.brief,
|
|
522
384
|
},
|
|
523
385
|
note: {
|
|
524
|
-
run: async (
|
|
386
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleCustomerNote(c); },
|
|
525
387
|
aliases: ['customer-note'],
|
|
526
|
-
usage: VERB_USAGE.note,
|
|
527
388
|
},
|
|
528
389
|
graph: {
|
|
529
|
-
run: async (
|
|
530
|
-
usage: VERB_USAGE.graph,
|
|
390
|
+
run: async (c) => { (await import('./cli/briefs.js')).handleGraph(c); },
|
|
531
391
|
},
|
|
532
392
|
};
|
|
393
|
+
const USAGE_BLOCKS = VERB_USAGE;
|
|
394
|
+
const FLAGS_BY_VERB = VERB_FLAGS;
|
|
395
|
+
function buildCommands() {
|
|
396
|
+
const specs = Object.entries(VERB_HANDLERS).map(([verb, handler]) => {
|
|
397
|
+
const spec = { ...handler, usage: USAGE_BLOCKS[verb] ?? [], flags: FLAGS_BY_VERB[verb] };
|
|
398
|
+
return [verb, spec];
|
|
399
|
+
});
|
|
400
|
+
// SAFETY: VERB_HANDLERS is checked above to have exactly the VerbName keys, so every key is present.
|
|
401
|
+
return Object.fromEntries(specs);
|
|
402
|
+
}
|
|
403
|
+
/** Every verb's handler, aliases, help blocks and flags, keyed by name. */
|
|
404
|
+
export const COMMANDS = buildCommands();
|
|
533
405
|
const COMMAND_INDEX = new Map(Object.entries(COMMANDS).flatMap(([verb, spec]) => [verb, ...(spec.aliases ?? [])].map((name) => [name, spec])));
|
|
534
406
|
// The full listing order; a verb listed twice prints its next help block.
|
|
535
407
|
const USAGE_ORDER = [
|
|
@@ -565,7 +437,7 @@ const SUBCOMMAND_USAGE = new Map([
|
|
|
565
437
|
['audit prune', printAuditPruneUsage],
|
|
566
438
|
['slack backfill', printSlackBackfillUsage],
|
|
567
439
|
['slack workspaces', printSlackWorkspacesUsage],
|
|
568
|
-
['github backfill',
|
|
440
|
+
['github backfill', printGitHubBackfillUsage],
|
|
569
441
|
]);
|
|
570
442
|
function printHelp(command, args) {
|
|
571
443
|
const printSubcommandUsage = SUBCOMMAND_USAGE.get(`${command} ${args[0] ?? ''}`);
|
|
@@ -574,79 +446,90 @@ function printHelp(command, args) {
|
|
|
574
446
|
else
|
|
575
447
|
console.log(verbUsage(command) ?? usageText());
|
|
576
448
|
}
|
|
577
|
-
// ---------------------------------------------------------------------------
|
|
578
449
|
// Entry point
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}
|
|
593
|
-
// Before every other step, so help never opens a store, installs a hook or starts a server.
|
|
594
|
-
if (Object.hasOwn(flags, 'help')) {
|
|
595
|
-
printHelp(command, args);
|
|
596
|
-
return;
|
|
597
|
-
}
|
|
598
|
-
maybeRepairCodexWrapper(command, flags);
|
|
599
|
-
/** A value-less --scope parses as boolean true, which consumers coerced to the scope 'true' or dropped;
|
|
600
|
-
* reject it once here so every command, thin-client relays included, sees only a non-empty string. */
|
|
601
|
-
if ('scope' in flags && (typeof flags['scope'] !== 'string' || !flags['scope'].trim())) {
|
|
450
|
+
function printVersion() {
|
|
451
|
+
const __filename_local = fileURLToPath(import.meta.url);
|
|
452
|
+
const __dirname_local = path.dirname(__filename_local);
|
|
453
|
+
const pkgJson = fs.readFileSync(path.join(__dirname_local, '..', 'package.json'), 'utf-8');
|
|
454
|
+
// SAFETY: package.json ships with the build, and npm refuses to pack a package without a string version.
|
|
455
|
+
const { version } = JSON.parse(pkgJson);
|
|
456
|
+
console.log(version);
|
|
457
|
+
throw new CliExit(0);
|
|
458
|
+
}
|
|
459
|
+
/** A value-less --scope parses as boolean true, which consumers coerced to the scope 'true' or dropped;
|
|
460
|
+
* reject it once here so every command, thin-client relays included, sees only a non-empty string. */
|
|
461
|
+
function rejectEmptyScope(flags) {
|
|
462
|
+
if ('scope' in flags && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
|
|
602
463
|
printError('--scope requires a non-empty value (e.g. --scope slack:private:C1).');
|
|
603
|
-
|
|
464
|
+
throw new CliExit(1);
|
|
604
465
|
}
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
for (const key of NUMERIC_FLAGS) {
|
|
612
|
-
const raw = flags[key];
|
|
613
|
-
if (raw === undefined)
|
|
466
|
+
}
|
|
467
|
+
// parseArgs stores a value-less flag as boolean true, and NaN then survives every
|
|
468
|
+
// downstream guard because each comparison against it is false.
|
|
469
|
+
function rejectNonNumericFlags(flags, declared) {
|
|
470
|
+
for (const [key, raw] of Object.entries(flags)) {
|
|
471
|
+
if (flagKind(declared, key) !== 'number')
|
|
614
472
|
continue;
|
|
615
|
-
if (
|
|
473
|
+
if (!isStringFlag(raw) || !raw.trim() || !Number.isFinite(Number(raw))) {
|
|
616
474
|
printError(`--${key} requires a numeric value.`);
|
|
617
|
-
|
|
475
|
+
throw new CliExit(1);
|
|
618
476
|
}
|
|
619
477
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
478
|
+
}
|
|
479
|
+
// Reject rather than coerce: consumers read --dry-run both as Boolean() and === true,
|
|
480
|
+
// so no single coercion of an inline value would be correct for every one of them.
|
|
481
|
+
function rejectValuedSwitches(flags, declared) {
|
|
482
|
+
for (const [key, raw] of Object.entries(flags)) {
|
|
483
|
+
if (flagKind(declared, key) === 'switch' && !isBooleanFlag(raw)) {
|
|
624
484
|
printError(`--${key} takes no value`);
|
|
625
|
-
|
|
485
|
+
throw new CliExit(1);
|
|
626
486
|
}
|
|
627
487
|
}
|
|
488
|
+
}
|
|
489
|
+
function checkUnknownFlags(command, flags, declared) {
|
|
628
490
|
// card checks its flags per subcommand, with a stricter message.
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
printError(`hippo: ignoring unknown flag ${names}. A later release will reject it.`);
|
|
491
|
+
if (command === 'card')
|
|
492
|
+
return;
|
|
493
|
+
const flagNames = (keys) => keys.map((key) => `--${key}`).join(', ');
|
|
494
|
+
const unknown = Object.keys(flags).filter((key) => !isKnownFlag(key));
|
|
495
|
+
if (unknown.length > 0 && DESTRUCTIVE_COMMANDS.has(command)) {
|
|
496
|
+
printError(`Unknown flag ${flagNames(unknown)} for hippo ${command}. Nothing was changed.`);
|
|
497
|
+
throw new CliExit(2);
|
|
637
498
|
}
|
|
499
|
+
// main() refuses --dry-run by name on a verb without one, so that flag is not also called ignored.
|
|
500
|
+
const ignored = declared ? undeclaredFlags(declared, Object.keys(flags)).filter((key) => key !== 'dry-run') : unknown;
|
|
501
|
+
if (ignored.length > 0)
|
|
502
|
+
printError(`hippo: ignoring unknown flag ${flagNames(ignored)}. A later release will reject it.`);
|
|
503
|
+
}
|
|
504
|
+
async function main(command, args, flags, hippoRoot) {
|
|
505
|
+
if (command === '--version' || command === '-v' || flags['version'])
|
|
506
|
+
printVersion();
|
|
507
|
+
if (command === '' || command === 'help' || command === '--help' || command === '-h') {
|
|
508
|
+
printUsage();
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
// Before every other step, so help never opens a store, installs a hook or starts a server.
|
|
512
|
+
if (Object.hasOwn(flags, 'help')) {
|
|
513
|
+
printHelp(command, args);
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
const spec = COMMAND_INDEX.get(command);
|
|
517
|
+
maybeRepairCodexWrapper(command, flags);
|
|
518
|
+
rejectEmptyScope(flags);
|
|
519
|
+
rejectNonNumericFlags(flags, spec?.flags);
|
|
520
|
+
rejectValuedSwitches(flags, spec?.flags);
|
|
521
|
+
checkUnknownFlags(command, flags, spec?.flags);
|
|
638
522
|
const refusal = Object.hasOwn(flags, 'dry-run') ? dryRunRefusal(command, args, flags) : null;
|
|
639
523
|
if (refusal) {
|
|
640
524
|
printError(refusal);
|
|
641
|
-
|
|
525
|
+
throw new CliExit(2);
|
|
642
526
|
}
|
|
643
|
-
const spec = COMMAND_INDEX.get(command);
|
|
644
527
|
if (!spec) {
|
|
645
528
|
printError(`Unknown command: ${command}`);
|
|
646
529
|
printUsage();
|
|
647
|
-
|
|
530
|
+
throw new CliExit(1);
|
|
648
531
|
}
|
|
649
|
-
const run = () => spec.run({ hippoRoot, args, flags });
|
|
532
|
+
const run = () => spec.run({ hippoRoot, tenantId: resolveTenantId({}), args, flags });
|
|
650
533
|
await (spec.scoped ? (await import('./db/request-stores.js')).runWithRequestStores(run) : run());
|
|
651
534
|
}
|
|
652
535
|
export async function runCli(argv = process.argv) {
|
|
@@ -655,7 +538,15 @@ export async function runCli(argv = process.argv) {
|
|
|
655
538
|
await main(command, args, flags, getHippoRoot(process.cwd()));
|
|
656
539
|
}
|
|
657
540
|
catch (err) {
|
|
541
|
+
// The verb printed its own message before it threw, so this branch adds no line.
|
|
542
|
+
if (err instanceof CliExit)
|
|
543
|
+
process.exit(err.code);
|
|
658
544
|
printError('Error:', isStoreBusy(err) ? STORE_BUSY_MESSAGE : err instanceof Error ? err.message : err);
|
|
545
|
+
// The message alone rarely says where it came from; debug is the level that asks for the rest.
|
|
546
|
+
if (isLevelEnabled('debug')) {
|
|
547
|
+
const { errorClass, stack } = errorFields(err);
|
|
548
|
+
printError(` thrown as ${errorClass}${stack ? `\n${stack}` : ''}`);
|
|
549
|
+
}
|
|
659
550
|
process.exit(1);
|
|
660
551
|
}
|
|
661
552
|
}
|