hippo-memory 1.68.0 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- 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 +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.d.ts +3 -1
- package/dist/agent-memories/copilot.js +5 -4
- package/dist/agent-memories/files.js +3 -2
- 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/report.d.ts +1 -1
- package/dist/agent-memories/report.js +1 -1
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +1 -1
- package/dist/agent-memories/sync.js +24 -33
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +2 -2
- package/dist/api/assemble.js +42 -32
- package/dist/api/audit.d.ts +4 -7
- package/dist/api/audit.js +6 -20
- package/dist/api/auth.d.ts +5 -18
- package/dist/api/auth.js +44 -194
- 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} +2 -2
- package/dist/{availability.js → api/availability.js} +12 -29
- 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 +14 -4
- package/dist/api/context-select.js +50 -60
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +113 -85
- package/dist/api/dormant.d.ts +3 -3
- package/dist/api/dormant.js +38 -107
- package/dist/api/drill-down.d.ts +2 -2
- package/dist/api/drill-down.js +37 -65
- package/dist/api/forget.d.ts +4 -13
- package/dist/api/forget.js +13 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/index.d.ts +26 -0
- package/dist/api/index.js +29 -0
- package/dist/api/instruction-detect.js +74 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +20 -0
- package/dist/api/ledger-db.js +79 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +36 -0
- package/dist/api/outcome.d.ts +9 -46
- package/dist/api/outcome.js +15 -57
- 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/promote.d.ts +7 -18
- package/dist/api/promote.js +30 -152
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
- package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +112 -0
- package/dist/{recall-history.js → api/recall-history.js} +30 -25
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
- 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 +41 -16
- package/dist/api/recall.d.ts +1 -1
- package/dist/api/recall.js +39 -37
- package/dist/api/remember.d.ts +12 -13
- package/dist/api/remember.js +38 -27
- 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 -7
- package/dist/api/sleep-run.js +63 -75
- package/dist/api/sleep.d.ts +1 -1
- package/dist/api/tokens.d.ts +2 -2
- package/dist/api/tokens.js +9 -21
- package/dist/api/types.d.ts +2 -2
- package/dist/api/types.js +1 -1
- 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 +1 -1
- package/dist/capture/command.js +54 -41
- 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 +4 -1
- package/dist/capture/compact.js +59 -22
- 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} +48 -94
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
- package/dist/capture/copilot-transcript.d.ts +3 -0
- package/dist/capture/copilot-transcript.js +9 -2
- 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} +1 -5
- package/dist/{session-digest.js → capture/session-digest.js} +17 -23
- 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.d.ts +13 -0
- package/dist/capture/session-worker.js +196 -0
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.js +68 -74
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
- package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +77 -72
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +18 -20
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +59 -181
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +25 -23
- package/dist/{client.d.ts → cli/client.d.ts} +1 -1
- package/dist/{client.js → cli/client.js} +1 -1
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +39 -0
- package/dist/cli/context.d.ts +2 -13
- package/dist/cli/context.js +41 -71
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +109 -99
- package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
- package/dist/cli/curate.d.ts +9 -9
- package/dist/cli/curate.js +177 -149
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +46 -34
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +108 -218
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +43 -31
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +35 -19
- package/dist/cli/flag-values.d.ts +25 -0
- package/dist/cli/flag-values.js +103 -0
- package/dist/cli/flags.d.ts +303 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +39 -34
- package/dist/cli/hook-runtime.d.ts +49 -0
- package/dist/cli/hook-runtime.js +155 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +151 -118
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +110 -0
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +9 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +31 -27
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +65 -0
- package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
- package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +77 -280
- package/dist/cli/print.d.ts +18 -0
- package/dist/cli/print.js +85 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -49
- package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +101 -150
- package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
- package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
- package/dist/cli/remember.d.ts +1 -3
- package/dist/cli/remember.js +124 -103
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
- package/dist/{scheduler.js → cli/scheduler.js} +13 -7
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +34 -4
- package/dist/cli/session-hooks.d.ts +4 -4
- package/dist/cli/session-hooks.js +265 -191
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +111 -45
- package/dist/cli/shared.d.ts +5 -95
- package/dist/cli/shared.js +18 -369
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +31 -55
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +2 -8
- package/dist/cli/sleep.js +20 -76
- package/dist/cli/status.d.ts +3 -3
- package/dist/cli/status.js +39 -41
- package/dist/{stdin.js → cli/stdin.js} +6 -6
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +68 -42
- package/dist/cli/usage.js +8 -3
- package/dist/cli.d.ts +289 -5
- package/dist/cli.js +184 -117
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +1 -1
- package/dist/connectors/github/backfill.js +29 -66
- package/dist/connectors/github/cli-impl.js +59 -74
- package/dist/connectors/github/deletion.d.ts +5 -6
- package/dist/connectors/github/deletion.js +18 -52
- package/dist/connectors/github/dlq.d.ts +7 -61
- package/dist/connectors/github/dlq.js +19 -119
- package/dist/connectors/github/ingest.d.ts +2 -31
- package/dist/connectors/github/ingest.js +20 -82
- package/dist/connectors/github/octokit-client.d.ts +1 -1
- package/dist/connectors/github/octokit-client.js +2 -1
- package/dist/connectors/github/tenant-routing.d.ts +2 -2
- package/dist/connectors/github/tenant-routing.js +10 -36
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/types.d.ts +1 -1
- package/dist/connectors/github/types.js +15 -18
- package/dist/connectors/github/webhook.d.ts +3 -2
- package/dist/connectors/github/webhook.js +84 -87
- package/dist/connectors/slack/backfill.d.ts +1 -1
- package/dist/connectors/slack/backfill.js +5 -29
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -48
- package/dist/connectors/slack/dlq.d.ts +7 -49
- package/dist/connectors/slack/dlq.js +25 -118
- package/dist/connectors/slack/ingest.d.ts +5 -18
- package/dist/connectors/slack/ingest.js +27 -90
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.js +13 -14
- package/dist/connectors/slack/transform.d.ts +1 -1
- package/dist/connectors/slack/types.d.ts +1 -1
- package/dist/connectors/slack/types.js +3 -12
- package/dist/connectors/slack/web-client.js +2 -2
- package/dist/connectors/slack/webhook.d.ts +3 -2
- package/dist/connectors/slack/webhook.js +75 -82
- package/dist/connectors/slack/workspaces.d.ts +4 -17
- package/dist/connectors/slack/workspaces.js +4 -34
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +4 -4
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
- package/dist/{dag.js → consolidate/dag.js} +60 -81
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +28 -22
- package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
- package/dist/consolidate/flush-units.d.ts +2 -2
- package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
- package/dist/consolidate/half-life-migration.js +106 -0
- package/dist/consolidate/llm-passes.js +8 -8
- package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
- package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
- package/dist/consolidate/merge.js +57 -54
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
- package/dist/consolidate/physics-pass.js +46 -46
- package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
- package/dist/{replay.js → consolidate/replay.js} +2 -2
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +1 -1
- package/dist/consolidate/sleep.js +64 -134
- package/dist/{trace.js → consolidate/trace.js} +4 -6
- package/dist/consolidate/traces.js +34 -29
- package/dist/{ablation.js → core/ablation.js} +1 -1
- 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.js → core/ambient.js} +12 -10
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/core/capture-contract.js +149 -0
- package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
- package/dist/{compare.js → core/compare.js} +10 -3
- package/dist/{config.d.ts → core/config.d.ts} +6 -6
- package/dist/{config.js → core/config.js} +99 -72
- package/dist/core/handoff.js +87 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
- package/dist/{memory.d.ts → core/memory.d.ts} +19 -5
- package/dist/{memory.js → core/memory.js} +117 -82
- package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
- package/dist/{physics.js → core/physics.js} +2 -1
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
- package/dist/{project-identity.js → core/project-identity.js} +5 -17
- package/dist/{project-remote.js → core/project-remote.js} +4 -4
- package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +5 -0
- package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -1
- package/dist/{salience.js → core/salience.js} +35 -20
- 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} +5 -5
- 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} +9 -9
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
- package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +18 -1
- package/dist/db/busy.js +74 -9
- package/dist/db/connect.d.ts +10 -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 +25 -30
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -35
- package/dist/db/migrations/v16.js +29 -26
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v20.js +4 -2
- package/dist/db/migrations/v22.js +39 -36
- package/dist/db/migrations/v24.js +27 -22
- package/dist/db/migrations/v29.js +37 -32
- package/dist/db/migrations/v31.js +36 -31
- package/dist/db/migrations/v35.js +1 -1
- package/dist/db/migrations/v39.js +1 -1
- package/dist/db/migrations/v40.js +15 -14
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +1 -1
- package/dist/db/migrations/v45.js +1 -1
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +1 -1
- 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/v52.js +1 -1
- package/dist/db/open.d.ts +9 -1
- package/dist/db/open.js +21 -4
- package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
- package/dist/{physics-state.js → db/physics-state.js} +9 -16
- package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
- 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} +4 -2
- package/dist/{vector-store.js → db/vector-store.js} +76 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +105 -136
- 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 +3 -3
- package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
- package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
- package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
- package/dist/{eval.js → eval/eval.js} +29 -22
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
- package/dist/{judgment.js → eval/judgment.js} +4 -9
- package/dist/extensions/openclaw-plugin/index.js +1 -2
- 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} +6 -6
- package/dist/{graph-extract.js → graph/extract.js} +37 -52
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
- package/dist/{graph-recall.js → graph/recall.js} +55 -36
- package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
- package/dist/{graph-stream.js → graph/stream.js} +9 -7
- package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
- package/dist/{graph-view.js → graph/view.js} +127 -167
- 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 +14 -15
- package/dist/hooks/copilot.d.ts +48 -13
- package/dist/hooks/copilot.js +124 -39
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +3 -1
- package/dist/hooks/json-hooks.js +40 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +7 -5
- package/dist/hooks/shared.js +19 -8
- package/dist/importers/core.d.ts +2 -6
- package/dist/importers/core.js +41 -39
- package/dist/importers/markdown-parse.d.ts +1 -10
- package/dist/importers/markdown-parse.js +2 -19
- package/dist/importers/markdown.js +2 -1
- package/dist/importers/sources.js +50 -46
- package/dist/importers/vault.js +71 -92
- package/dist/index.d.ts +22 -22
- package/dist/index.js +21 -21
- package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
- package/dist/{autolearn.js → learn/autolearn.js} +13 -11
- 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 +125 -0
- package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
- package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
- package/dist/{invalidation.js → learn/invalidation.js} +83 -99
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +37 -60
- 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.d.ts +2 -2
- package/dist/mcp/memory-tools.js +12 -31
- package/dist/mcp/protocol.d.ts +6 -10
- package/dist/mcp/protocol.js +8 -14
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +68 -50
- package/dist/mcp/request.js +65 -63
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session-state.d.ts +1 -2
- package/dist/mcp/session-state.js +2 -2
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.js +69 -31
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +2 -2
- package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
- package/dist/objects/customer-notes.js +112 -0
- package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
- package/dist/objects/decisions.js +101 -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/{incidents.d.ts → objects/incidents.d.ts} +17 -44
- package/dist/objects/incidents.js +130 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
- package/dist/objects/policies.js +189 -0
- package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
- package/dist/objects/processes.js +146 -0
- package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
- package/dist/objects/project-briefs.js +255 -0
- package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
- package/dist/objects/skills.js +156 -0
- package/dist/postinstall.js +4 -2
- package/dist/predictions/planning-fallacy.d.ts +4 -76
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +27 -47
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +15 -23
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +30 -49
- package/dist/rerankers/llm.d.ts +2 -4
- package/dist/rerankers/llm.js +33 -50
- package/dist/rerankers/outage-warning.d.ts +7 -0
- package/dist/rerankers/outage-warning.js +31 -0
- package/dist/rerankers/remote.d.ts +3 -0
- package/dist/rerankers/remote.js +23 -0
- package/dist/rerankers/types.d.ts +1 -1
- 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 -1
- package/dist/search/boosts.js +34 -13
- 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/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +4 -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} +7 -5
- package/dist/{path-context.js → search/path-context.js} +3 -1
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +15 -15
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +3 -3
- package/dist/search/vector.js +17 -11
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/auth.js +26 -18
- package/dist/server/boot.d.ts +24 -0
- package/dist/server/boot.js +465 -0
- package/dist/server/client-ip.d.ts +5 -1
- package/dist/server/client-ip.js +18 -6
- 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/key-check-bounds.d.ts +8 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.js +1 -1
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +34 -24
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +10 -4
- package/dist/server/request.js +63 -12
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +209 -0
- package/dist/server/routes/admin.js +13 -8
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +32 -97
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +42 -105
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +42 -95
- package/dist/server/routes/memories.js +21 -20
- package/dist/server/routes/object-routes.d.ts +40 -0
- package/dist/server/routes/object-routes.js +80 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +40 -124
- package/dist/server/routes/predictions.js +29 -45
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +38 -118
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +38 -110
- package/dist/server/routes/recall.js +14 -12
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +37 -125
- package/dist/{server-detect.js → server/server-detect.js} +3 -2
- 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 +70 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +27 -8
- package/dist/server/validation.d.ts +3 -4
- package/dist/server/validation.js +6 -11
- package/dist/server.d.ts +41 -50
- package/dist/server.js +26 -560
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
- package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
- package/dist/{scope.js → sharing/scope.js} +1 -1
- package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
- package/dist/{shared.js → sharing/shared.js} +100 -77
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +10 -10
- package/dist/store/audit-event.d.ts +12 -6
- package/dist/store/audit-event.js +6 -5
- package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
- package/dist/{audit.js → store/audit.js} +91 -6
- package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
- package/dist/{auth.js → store/auth.js} +100 -92
- package/dist/store/candidates.d.ts +23 -12
- package/dist/store/candidates.js +87 -35
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
- package/dist/{card-detail.js → store/card-detail.js} +1 -1
- package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
- package/dist/{store-cards.js → store/cards.js} +85 -146
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +22 -5
- package/dist/store/conflicts.js +160 -109
- 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 +92 -0
- package/dist/store/delete-and-batch.d.ts +20 -24
- package/dist/store/delete-and-batch.js +64 -40
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
- 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 +51 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
- package/dist/{dormant.js → store/dormant.js} +151 -6
- package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
- package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
- package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
- package/dist/store/entry-reads.d.ts +46 -7
- package/dist/store/entry-reads.js +120 -21
- package/dist/store/entry-row.d.ts +8 -2
- package/dist/store/entry-row.js +28 -8
- package/dist/store/entry-writes.d.ts +33 -4
- package/dist/store/entry-writes.js +108 -26
- 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/{goals.d.ts → store/goals.d.ts} +6 -46
- package/dist/{goals.js → store/goals.js} +45 -94
- package/dist/store/graph-queue.d.ts +29 -0
- package/dist/store/graph-queue.js +101 -0
- package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
- package/dist/{graph/read.js → store/graph-reads.js} +63 -115
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
- package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
- package/dist/store/graph-view-rows.d.ts +12 -0
- package/dist/store/graph-view-rows.js +67 -0
- package/dist/store/graph-writes.d.ts +58 -0
- package/dist/store/graph-writes.js +256 -0
- package/dist/store/half-life.d.ts +34 -0
- package/dist/store/half-life.js +77 -0
- package/dist/store/handoffs.d.ts +6 -3
- package/dist/store/handoffs.js +70 -31
- package/dist/store/index-and-stats.d.ts +8 -1
- package/dist/store/index-and-stats.js +51 -48
- 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 +1 -1
- package/dist/store/markdown.js +4 -3
- package/dist/store/mirrors.d.ts +5 -7
- package/dist/store/mirrors.js +39 -25
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +8 -4
- package/dist/store/open.js +34 -23
- package/dist/store/planning-fallacy-evidence.d.ts +42 -0
- package/dist/store/planning-fallacy-evidence.js +81 -0
- package/dist/store/port.d.ts +646 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
- package/dist/{predictions/store.js → store/predictions.js} +52 -67
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +5 -3
- package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
- package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
- package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +162 -0
- package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
- package/dist/{rejection.js → store/rejection.js} +3 -2
- package/dist/store/rows.d.ts +2 -3
- package/dist/store/rows.js +18 -11
- package/dist/store/search-rows.d.ts +15 -4
- package/dist/store/search-rows.js +43 -36
- package/dist/store/sessions.d.ts +18 -2
- package/dist/store/sessions.js +83 -46
- 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/sqlite/entry-writes-group.js +170 -0
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +59 -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 +28 -0
- package/dist/store/sqlite/executor.js +286 -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 +38 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +218 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +314 -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 +26 -0
- package/dist/store/sqlite/store.js +295 -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 +124 -0
- package/dist/store/sqlite/worker-ops.js +82 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +76 -0
- package/dist/store/summaries.d.ts +2 -11
- package/dist/store/summaries.js +17 -44
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/store/tenant-lookup.d.ts +1 -1
- package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
- package/dist/{tenant.js → store/tenant.js} +1 -1
- 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} +2 -9
- package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
- 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 +26 -0
- package/dist/store/vector-writes.d.ts +10 -3
- package/dist/store/vector-writes.js +35 -5
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
- package/dist/{working-memory.js → store/working-memory.js} +39 -41
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +13 -33
- 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 +67 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +46 -0
- package/dist/util/atomic-write.d.ts +3 -0
- package/dist/util/atomic-write.js +107 -0
- package/dist/util/crash-handlers.d.ts +5 -0
- package/dist/util/crash-handlers.js +30 -0
- package/dist/{env.d.ts → util/env.d.ts} +17 -2
- package/dist/{env.js → util/env.js} +22 -2
- package/dist/util/home-path.js +67 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
- package/dist/{http-retry.js → util/http-retry.js} +38 -7
- 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} +5 -2
- package/dist/{log.js → util/log.js} +12 -3
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +27 -0
- package/dist/util/request-scope.js +47 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
- 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 +18 -0
- package/dist/util/token-text.js +23 -0
- package/dist/{version.d.ts → util/version.d.ts} +1 -1
- package/dist/{version.js → util/version.js} +1 -1
- package/extensions/openclaw-plugin/index.ts +1 -5
- 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/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/capture-contract.js +0 -49
- 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/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.js +0 -326
- package/dist/extract.js +0 -133
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- 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/policies.js +0 -434
- package/dist/processes.js +0 -371
- package/dist/project-briefs.js +0 -523
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/skills.js +0 -367
- package/dist/store-port.d.ts +0 -191
- package/dist/store-port.js +0 -166
- /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/{recall-history.d.ts → api/recall-history.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/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
- /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
- /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
- /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
- /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
- /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
- /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +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/{trace.d.ts → consolidate/trace.d.ts} +0 -0
- /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
- /package/dist/{ambient.d.ts → core/ambient.d.ts} +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/{card.d.ts → core/card.d.ts} +0 -0
- /package/dist/{card.js → core/card.js} +0 -0
- /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
- /package/dist/{physics-config.js → core/physics-config.js} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{salience.d.ts → core/salience.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.d.ts → dashboard/dashboard-types.d.ts} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
- /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
- /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
- /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
- /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
- /package/dist/{rrf.js → search/rrf.js} +0 -0
- /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
- /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
- /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
- /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
- /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
- /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
- /package/dist/{yaml.js → store/yaml.js} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{home-path.d.ts → util/home-path.d.ts} +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/{secret-detect.d.ts → util/secret-detect.d.ts} +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/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
- /package/dist/{transcript-tail.js → util/transcript-tail.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/briefs.js
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
// First-class object verbs for project briefs and customer notes, plus the entity graph.
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import { spawn } from 'child_process';
|
|
4
|
-
import { extractPathTags } from '../path-context.js';
|
|
5
|
-
import * as briefsModule from '../project-briefs.js';
|
|
6
|
-
import * as customerNotesModule from '../customer-notes.js';
|
|
7
|
-
import { extractGraph } from '../graph
|
|
8
|
-
import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT } from '../graph
|
|
9
|
-
import { resolveTenantId } from '../tenant.js';
|
|
4
|
+
import { extractPathTags } from '../search/path-context.js';
|
|
5
|
+
import * as briefsModule from '../objects/project-briefs.js';
|
|
6
|
+
import * as customerNotesModule from '../objects/customer-notes.js';
|
|
7
|
+
import { extractGraph } from '../graph/extract.js';
|
|
8
|
+
import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT } from '../graph/view.js';
|
|
9
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
10
|
+
import { errorMessage, log } from '../util/log.js';
|
|
10
11
|
import { printError } from './output.js';
|
|
12
|
+
import { nonEmptyStringFlag, boolFlag, stringFlag } from './flag-values.js';
|
|
11
13
|
import { requireInit } from './shared.js';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!/^\d+$/.test(s) || id <= 0) {
|
|
16
|
-
printError(`Invalid brief id: "${idRaw}" (expected a positive integer).`);
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
return id;
|
|
20
|
-
}
|
|
14
|
+
import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
|
|
15
|
+
const BRIEF = { cmd: 'brief', noun: 'Project brief', idLabel: 'brief' };
|
|
16
|
+
const NOTE = { cmd: 'note', noun: 'Customer note', idLabel: 'note' };
|
|
21
17
|
function printBriefRow(b) {
|
|
22
18
|
console.log(`#${b.id} [${b.status}] v${b.version} repo="${b.repo}" memory=${b.memoryId ?? '-'}`);
|
|
23
19
|
if (b.changeSummary)
|
|
@@ -31,38 +27,14 @@ function briefUsage() {
|
|
|
31
27
|
printError(' hippo brief close <id>');
|
|
32
28
|
printError(' hippo brief refresh "<repo>" [--dry-run] (auto-assemble the brief from the repo\'s receipts)');
|
|
33
29
|
}
|
|
34
|
-
function parseListLimit(flags) {
|
|
35
|
-
const limitRaw = flags['limit'];
|
|
36
|
-
const limit = limitRaw !== undefined ? parseInt(String(limitRaw), 10) : 100;
|
|
37
|
-
if (!Number.isFinite(limit) || limit <= 0) {
|
|
38
|
-
printError(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
return limit;
|
|
42
|
-
}
|
|
43
30
|
function briefList(hippoRoot, tenantId, flags) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (!briefsModule.VALID_BRIEF_STATES.has(status)) {
|
|
52
|
-
printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
opts.status = status;
|
|
56
|
-
}
|
|
57
|
-
const results = briefsModule.loadProjectBriefs(hippoRoot, tenantId, opts);
|
|
58
|
-
if (results.length === 0) {
|
|
59
|
-
console.log('No project briefs.');
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
console.log(`Found ${results.length} project briefs:
|
|
63
|
-
`);
|
|
64
|
-
for (const b of results)
|
|
65
|
-
printBriefRow(b);
|
|
31
|
+
const repo = stringFlag(flags, 'repo')?.trim() || undefined;
|
|
32
|
+
listObjects(flags, {
|
|
33
|
+
plural: 'project briefs',
|
|
34
|
+
states: briefsModule.VALID_BRIEF_STATES,
|
|
35
|
+
load: (opts) => briefsModule.loadProjectBriefs(hippoRoot, tenantId, { ...opts, repo }),
|
|
36
|
+
printRow: printBriefRow,
|
|
37
|
+
});
|
|
66
38
|
}
|
|
67
39
|
function briefRefresh(hippoRoot, tenantId, args, flags) {
|
|
68
40
|
const repoRaw = args[1];
|
|
@@ -70,7 +42,7 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
|
|
|
70
42
|
printError('Usage: hippo brief refresh "<repo>" [--dry-run]');
|
|
71
43
|
process.exit(1);
|
|
72
44
|
}
|
|
73
|
-
const dryRun =
|
|
45
|
+
const dryRun = boolFlag(flags, 'dry-run');
|
|
74
46
|
try {
|
|
75
47
|
if (dryRun) {
|
|
76
48
|
const { markdown, receiptCount } = briefsModule.assembleBriefFromReceipts(hippoRoot, tenantId, repoRaw);
|
|
@@ -86,62 +58,33 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
|
|
|
86
58
|
console.log(` memory: ${created.memoryId}`);
|
|
87
59
|
}
|
|
88
60
|
catch (e) {
|
|
89
|
-
printError(e
|
|
61
|
+
printError(errorMessage(e));
|
|
90
62
|
process.exit(1);
|
|
91
63
|
}
|
|
92
64
|
}
|
|
93
65
|
function briefGet(hippoRoot, tenantId, args) {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
printError('Usage: hippo brief get <id>');
|
|
97
|
-
process.exit(1);
|
|
98
|
-
}
|
|
99
|
-
const id = parsePositiveBriefId(idRaw);
|
|
100
|
-
const b = briefsModule.loadProjectBriefById(hippoRoot, tenantId, id);
|
|
101
|
-
if (!b) {
|
|
102
|
-
printError(`Project brief ${id} not found.`);
|
|
103
|
-
process.exit(1);
|
|
104
|
-
}
|
|
66
|
+
const id = idArgOrExit(args, 'Usage: hippo brief get <id>', BRIEF.idLabel);
|
|
67
|
+
const b = foundOrExit(briefsModule.loadProjectBriefById(hippoRoot, tenantId, id), BRIEF.noun, id);
|
|
105
68
|
console.log(`Project brief #${b.id}`);
|
|
106
69
|
console.log(` repo: ${b.repo}`);
|
|
107
70
|
console.log(` status: ${b.status}`);
|
|
108
71
|
console.log(` version: ${b.version}`);
|
|
109
72
|
console.log(` summary: ${b.summary}`);
|
|
110
|
-
|
|
111
|
-
console.log(` change_summary: ${b.changeSummary}`);
|
|
112
|
-
if (b.supersededBy !== null)
|
|
113
|
-
console.log(` superseded_by: #${b.supersededBy}`);
|
|
114
|
-
if (b.supersededAt)
|
|
115
|
-
console.log(` superseded_at: ${b.supersededAt}`);
|
|
116
|
-
if (b.closedAt)
|
|
117
|
-
console.log(` closed_at: ${b.closedAt}`);
|
|
118
|
-
if (b.memoryId)
|
|
119
|
-
console.log(` memory: ${b.memoryId}`);
|
|
120
|
-
console.log(` created: ${b.createdAt}`);
|
|
73
|
+
printLifecycleTail(b);
|
|
121
74
|
}
|
|
122
75
|
function briefSupersede(hippoRoot, tenantId, args, flags) {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
process.exit(1);
|
|
127
|
-
}
|
|
128
|
-
const id = parsePositiveBriefId(idRaw);
|
|
129
|
-
const summaryRaw = flags['summary'];
|
|
130
|
-
if (typeof summaryRaw !== 'string' || !summaryRaw.trim()) {
|
|
76
|
+
const id = idArgOrExit(args, 'Usage: hippo brief supersede <id> --summary "<text>" [--change "<summary>"]', BRIEF.idLabel);
|
|
77
|
+
const summaryRaw = stringFlag(flags, 'summary');
|
|
78
|
+
if (!summaryRaw?.trim()) {
|
|
131
79
|
printError('hippo brief supersede requires --summary "<text>" for the new version.');
|
|
132
80
|
process.exit(1);
|
|
133
81
|
}
|
|
134
|
-
const existing = briefsModule.loadProjectBriefById(hippoRoot, tenantId, id);
|
|
135
|
-
if (!existing) {
|
|
136
|
-
printError(`Project brief ${id} not found.`);
|
|
137
|
-
process.exit(1);
|
|
138
|
-
}
|
|
139
|
-
const changeRaw = flags['change'];
|
|
82
|
+
const existing = foundOrExit(briefsModule.loadProjectBriefById(hippoRoot, tenantId, id), BRIEF.noun, id);
|
|
140
83
|
try {
|
|
141
84
|
const created = briefsModule.saveProjectBrief(hippoRoot, tenantId, {
|
|
142
85
|
repo: existing.repo,
|
|
143
86
|
summary: summaryRaw,
|
|
144
|
-
changeSummary:
|
|
87
|
+
changeSummary: nonEmptyStringFlag(flags, 'change'),
|
|
145
88
|
supersedesBriefId: id,
|
|
146
89
|
extraTags: extractPathTags(process.cwd()),
|
|
147
90
|
});
|
|
@@ -150,27 +93,20 @@ function briefSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
150
93
|
console.log(` memory: ${created.memoryId}`);
|
|
151
94
|
}
|
|
152
95
|
catch (e) {
|
|
153
|
-
printError(e
|
|
96
|
+
printError(errorMessage(e));
|
|
154
97
|
process.exit(1);
|
|
155
98
|
}
|
|
156
99
|
}
|
|
157
100
|
function briefClose(hippoRoot, tenantId, args) {
|
|
158
|
-
|
|
159
|
-
if (!idRaw) {
|
|
160
|
-
printError('Usage: hippo brief close <id>');
|
|
161
|
-
process.exit(1);
|
|
162
|
-
}
|
|
163
|
-
const id = parsePositiveBriefId(idRaw);
|
|
164
|
-
const closed = briefsModule.closeProjectBrief(hippoRoot, tenantId, id);
|
|
165
|
-
console.log(`Project brief #${closed.id} closed.`);
|
|
101
|
+
closeObject(args, BRIEF, (id) => briefsModule.closeProjectBrief(hippoRoot, tenantId, id));
|
|
166
102
|
}
|
|
167
103
|
function briefCreate(hippoRoot, tenantId, args, flags) {
|
|
168
104
|
const subcommand = args[0] ?? '';
|
|
169
105
|
// Default subcommand: new (create). Accept both `brief new "<repo>"` and the
|
|
170
106
|
// bare `brief "<repo>"` form: for the `new` keyword the repo is args[1].
|
|
171
107
|
const repo = subcommand === 'new' ? (args[1] ?? '') : subcommand;
|
|
172
|
-
const summaryRaw = flags
|
|
173
|
-
if (!repo ||
|
|
108
|
+
const summaryRaw = stringFlag(flags, 'summary');
|
|
109
|
+
if (!repo || !summaryRaw?.trim()) {
|
|
174
110
|
briefUsage();
|
|
175
111
|
process.exit(1);
|
|
176
112
|
}
|
|
@@ -185,7 +121,7 @@ function briefCreate(hippoRoot, tenantId, args, flags) {
|
|
|
185
121
|
console.log(` memory: ${created.memoryId}`);
|
|
186
122
|
}
|
|
187
123
|
catch (e) {
|
|
188
|
-
printError(e
|
|
124
|
+
printError(errorMessage(e));
|
|
189
125
|
process.exit(1);
|
|
190
126
|
}
|
|
191
127
|
}
|
|
@@ -205,15 +141,6 @@ export function cmdProjectBrief(hippoRoot, args, flags) {
|
|
|
205
141
|
return briefClose(hippoRoot, tenantId, args);
|
|
206
142
|
briefCreate(hippoRoot, tenantId, args, flags);
|
|
207
143
|
}
|
|
208
|
-
function parsePositiveNoteId(idRaw) {
|
|
209
|
-
const s = String(idRaw ?? '').trim();
|
|
210
|
-
const id = parseInt(s, 10);
|
|
211
|
-
if (!/^\d+$/.test(s) || id <= 0) {
|
|
212
|
-
printError(`Invalid note id: "${idRaw}" (expected a positive integer).`);
|
|
213
|
-
process.exit(1);
|
|
214
|
-
}
|
|
215
|
-
return id;
|
|
216
|
-
}
|
|
217
144
|
function printNoteRow(n) {
|
|
218
145
|
console.log(`#${n.id} [${n.status}] v${n.version} customer="${n.customer}" memory=${n.memoryId ?? '-'}`);
|
|
219
146
|
if (n.changeSummary)
|
|
@@ -282,12 +209,13 @@ function openInBrowser(out) {
|
|
|
282
209
|
child.on('error', () => { });
|
|
283
210
|
child.unref();
|
|
284
211
|
}
|
|
285
|
-
catch {
|
|
286
|
-
|
|
212
|
+
catch (err) {
|
|
213
|
+
// The file is written and its path printed above, so a browser that will not start costs nothing.
|
|
214
|
+
log.debug(`browser not opened: ${errorMessage(err)}`);
|
|
287
215
|
}
|
|
288
216
|
}
|
|
289
217
|
function graphView(hippoRoot, tenantId, entity, flags) {
|
|
290
|
-
const format =
|
|
218
|
+
const format = stringFlag(flags, 'format') ?? 'html';
|
|
291
219
|
if (format !== 'html' && format !== 'canvas') {
|
|
292
220
|
printError("graph view: --format must be 'html' or 'canvas'");
|
|
293
221
|
process.exit(1);
|
|
@@ -295,7 +223,7 @@ function graphView(hippoRoot, tenantId, entity, flags) {
|
|
|
295
223
|
const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
|
|
296
224
|
const content = format === 'canvas' ? renderGraphCanvas(model) : renderGraphHtml(model);
|
|
297
225
|
const defaultOut = format === 'canvas' ? 'hippo-graph.canvas' : 'hippo-graph.html';
|
|
298
|
-
const out =
|
|
226
|
+
const out = stringFlag(flags, 'out') ?? defaultOut;
|
|
299
227
|
fs.writeFileSync(out, content, 'utf8');
|
|
300
228
|
console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${model.truncated ? ' (truncated)' : ''}`);
|
|
301
229
|
if (flags['open'] && format === 'html')
|
|
@@ -307,7 +235,7 @@ export function cmdGraph(hippoRoot, args, flags) {
|
|
|
307
235
|
const subcommand = args[0] ?? '';
|
|
308
236
|
if (subcommand === 'extract')
|
|
309
237
|
return graphExtract(hippoRoot, tenantId);
|
|
310
|
-
const entity =
|
|
238
|
+
const entity = stringFlag(flags, 'entity');
|
|
311
239
|
if (subcommand === 'show')
|
|
312
240
|
return graphShow(hippoRoot, tenantId, entity, flags);
|
|
313
241
|
if (subcommand === 'view')
|
|
@@ -319,80 +247,37 @@ export function cmdGraph(hippoRoot, args, flags) {
|
|
|
319
247
|
process.exit(1);
|
|
320
248
|
}
|
|
321
249
|
function noteList(hippoRoot, tenantId, flags) {
|
|
322
|
-
const
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
if (!customerNotesModule.VALID_NOTE_STATES.has(status)) {
|
|
330
|
-
printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
|
|
331
|
-
process.exit(1);
|
|
332
|
-
}
|
|
333
|
-
opts.status = status;
|
|
334
|
-
}
|
|
335
|
-
const results = customerNotesModule.loadCustomerNotes(hippoRoot, tenantId, opts);
|
|
336
|
-
if (results.length === 0) {
|
|
337
|
-
console.log('No customer notes.');
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
console.log(`Found ${results.length} customer notes:\n`);
|
|
341
|
-
for (const n of results)
|
|
342
|
-
printNoteRow(n);
|
|
250
|
+
const customer = stringFlag(flags, 'customer')?.trim() || undefined;
|
|
251
|
+
listObjects(flags, {
|
|
252
|
+
plural: 'customer notes',
|
|
253
|
+
states: customerNotesModule.VALID_NOTE_STATES,
|
|
254
|
+
load: (opts) => customerNotesModule.loadCustomerNotes(hippoRoot, tenantId, { ...opts, customer }),
|
|
255
|
+
printRow: printNoteRow,
|
|
256
|
+
});
|
|
343
257
|
}
|
|
344
258
|
function noteGet(hippoRoot, tenantId, args) {
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
printError('Usage: hippo note get <id>');
|
|
348
|
-
process.exit(1);
|
|
349
|
-
}
|
|
350
|
-
const id = parsePositiveNoteId(idRaw);
|
|
351
|
-
const n = customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id);
|
|
352
|
-
if (!n) {
|
|
353
|
-
printError(`Customer note ${id} not found.`);
|
|
354
|
-
process.exit(1);
|
|
355
|
-
}
|
|
259
|
+
const id = idArgOrExit(args, 'Usage: hippo note get <id>', NOTE.idLabel);
|
|
260
|
+
const n = foundOrExit(customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id), NOTE.noun, id);
|
|
356
261
|
console.log(`Customer note #${n.id}`);
|
|
357
262
|
console.log(` customer: ${n.customer}`);
|
|
358
263
|
console.log(` status: ${n.status}`);
|
|
359
264
|
console.log(` version: ${n.version}`);
|
|
360
265
|
console.log(` note: ${n.note}`);
|
|
361
|
-
|
|
362
|
-
console.log(` change_summary: ${n.changeSummary}`);
|
|
363
|
-
if (n.supersededBy !== null)
|
|
364
|
-
console.log(` superseded_by: #${n.supersededBy}`);
|
|
365
|
-
if (n.supersededAt)
|
|
366
|
-
console.log(` superseded_at: ${n.supersededAt}`);
|
|
367
|
-
if (n.closedAt)
|
|
368
|
-
console.log(` closed_at: ${n.closedAt}`);
|
|
369
|
-
if (n.memoryId)
|
|
370
|
-
console.log(` memory: ${n.memoryId}`);
|
|
371
|
-
console.log(` created: ${n.createdAt}`);
|
|
266
|
+
printLifecycleTail(n);
|
|
372
267
|
}
|
|
373
268
|
function noteSupersede(hippoRoot, tenantId, args, flags) {
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
process.exit(1);
|
|
378
|
-
}
|
|
379
|
-
const id = parsePositiveNoteId(idRaw);
|
|
380
|
-
const textRaw = flags['text'];
|
|
381
|
-
if (typeof textRaw !== 'string' || !textRaw.trim()) {
|
|
269
|
+
const id = idArgOrExit(args, 'Usage: hippo note supersede <id> --text "<note>" [--change "<summary>"]', NOTE.idLabel);
|
|
270
|
+
const textRaw = stringFlag(flags, 'text');
|
|
271
|
+
if (!textRaw?.trim()) {
|
|
382
272
|
printError('hippo note supersede requires --text "<note>" for the new version.');
|
|
383
273
|
process.exit(1);
|
|
384
274
|
}
|
|
385
|
-
const existing = customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id);
|
|
386
|
-
if (!existing) {
|
|
387
|
-
printError(`Customer note ${id} not found.`);
|
|
388
|
-
process.exit(1);
|
|
389
|
-
}
|
|
390
|
-
const changeRaw = flags['change'];
|
|
275
|
+
const existing = foundOrExit(customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id), NOTE.noun, id);
|
|
391
276
|
try {
|
|
392
277
|
const created = customerNotesModule.saveCustomerNote(hippoRoot, tenantId, {
|
|
393
278
|
customer: existing.customer,
|
|
394
279
|
note: textRaw,
|
|
395
|
-
changeSummary:
|
|
280
|
+
changeSummary: nonEmptyStringFlag(flags, 'change'),
|
|
396
281
|
supersedesNoteId: id,
|
|
397
282
|
extraTags: extractPathTags(process.cwd()),
|
|
398
283
|
});
|
|
@@ -401,19 +286,12 @@ function noteSupersede(hippoRoot, tenantId, args, flags) {
|
|
|
401
286
|
console.log(` memory: ${created.memoryId}`);
|
|
402
287
|
}
|
|
403
288
|
catch (e) {
|
|
404
|
-
printError(e
|
|
289
|
+
printError(errorMessage(e));
|
|
405
290
|
process.exit(1);
|
|
406
291
|
}
|
|
407
292
|
}
|
|
408
293
|
function noteClose(hippoRoot, tenantId, args) {
|
|
409
|
-
|
|
410
|
-
if (!idRaw) {
|
|
411
|
-
printError('Usage: hippo note close <id>');
|
|
412
|
-
process.exit(1);
|
|
413
|
-
}
|
|
414
|
-
const id = parsePositiveNoteId(idRaw);
|
|
415
|
-
const closed = customerNotesModule.closeCustomerNote(hippoRoot, tenantId, id);
|
|
416
|
-
console.log(`Customer note #${closed.id} closed.`);
|
|
294
|
+
closeObject(args, NOTE, (id) => customerNotesModule.closeCustomerNote(hippoRoot, tenantId, id));
|
|
417
295
|
}
|
|
418
296
|
export function cmdCustomerNote(hippoRoot, args, flags) {
|
|
419
297
|
requireInit(hippoRoot);
|
|
@@ -430,8 +308,8 @@ export function cmdCustomerNote(hippoRoot, args, flags) {
|
|
|
430
308
|
// Default subcommand: new (create). Accept both `note new "<customer>"` and the
|
|
431
309
|
// bare `note "<customer>"` form: for the `new` keyword the customer is args[1].
|
|
432
310
|
const customer = subcommand === 'new' ? (args[1] ?? '') : subcommand;
|
|
433
|
-
const textRaw = flags
|
|
434
|
-
if (!customer ||
|
|
311
|
+
const textRaw = stringFlag(flags, 'text');
|
|
312
|
+
if (!customer || !textRaw?.trim()) {
|
|
435
313
|
noteUsage();
|
|
436
314
|
process.exit(1);
|
|
437
315
|
}
|
|
@@ -446,7 +324,7 @@ export function cmdCustomerNote(hippoRoot, args, flags) {
|
|
|
446
324
|
console.log(` memory: ${created.memoryId}`);
|
|
447
325
|
}
|
|
448
326
|
catch (e) {
|
|
449
|
-
printError(e
|
|
327
|
+
printError(errorMessage(e));
|
|
450
328
|
process.exit(1);
|
|
451
329
|
}
|
|
452
330
|
}
|
package/dist/cli/card.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CliFlags } from './flag-values.js';
|
|
1
2
|
/** Runs `hippo card <subcommand>`: rejects flags the subcommand never reads, then hands off to its handler. */
|
|
2
|
-
export declare function cmdCard(hippoRoot: string, args: string[], flags:
|
|
3
|
+
export declare function cmdCard(hippoRoot: string, args: string[], flags: CliFlags): void;
|
|
3
4
|
//# sourceMappingURL=card.d.ts.map
|
package/dist/cli/card.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// The `hippo card` verb (the agent work board); main() loads it lazily from the command table.
|
|
2
|
-
import { createCard, loadCard, listCards, loadCardRuns, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, } from '../store
|
|
3
|
-
import { isHandoffOutcome } from '../handoff.js';
|
|
4
|
-
import { isCardStatus } from '../card.js';
|
|
5
|
-
import { loadCardDetail } from '../card-detail.js';
|
|
6
|
-
import { resolveTenantId } from '../tenant.js';
|
|
2
|
+
import { createCard, loadCard, listCards, loadCardRuns, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, } from '../store/cards.js';
|
|
3
|
+
import { isHandoffOutcome } from '../core/handoff.js';
|
|
4
|
+
import { isCardStatus } from '../core/card.js';
|
|
5
|
+
import { loadCardDetail } from '../store/card-detail.js';
|
|
6
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
7
7
|
import { printError } from './output.js';
|
|
8
|
-
import {
|
|
8
|
+
import { stringFlagOrExit } from './flag-values.js';
|
|
9
|
+
import { requireInit } from './shared.js';
|
|
10
|
+
import { errorMessage } from '../util/log.js';
|
|
9
11
|
// Mirrors ARCHIVE_REASON_REQUIRED so the block message can't drift from its usage line.
|
|
10
12
|
const CARD_BLOCK_REASON_REQUIRED = 'hippo card block <id> requires --reason "<why>" (recorded as a comment).';
|
|
11
13
|
function printCard(detail) {
|
|
@@ -51,7 +53,7 @@ function printCard(detail) {
|
|
|
51
53
|
}
|
|
52
54
|
// A too-large --run would silently round to a different id (mirrors parsePositiveIncidentId).
|
|
53
55
|
function cardRunFlag(flags) {
|
|
54
|
-
const raw =
|
|
56
|
+
const raw = stringFlagOrExit(flags, 'run');
|
|
55
57
|
if (raw === undefined)
|
|
56
58
|
return undefined;
|
|
57
59
|
const n = Number(raw);
|
|
@@ -101,14 +103,14 @@ export function cmdCard(hippoRoot, args, flags) {
|
|
|
101
103
|
CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
|
|
102
104
|
}
|
|
103
105
|
function cardCreate(hippoRoot, tenantId, _args, flags) {
|
|
104
|
-
const title =
|
|
106
|
+
const title = stringFlagOrExit(flags, 'title') ?? '';
|
|
105
107
|
if (!title) {
|
|
106
108
|
printError('Usage: hippo card create --title "..." [--repo <name>] [--contract <text>] [--budget <n>] [--depends-on <id>...]');
|
|
107
109
|
process.exit(1);
|
|
108
110
|
}
|
|
109
|
-
const repo =
|
|
110
|
-
const contract =
|
|
111
|
-
const budgetRaw =
|
|
111
|
+
const repo = stringFlagOrExit(flags, 'repo') || undefined;
|
|
112
|
+
const contract = stringFlagOrExit(flags, 'contract') || undefined;
|
|
113
|
+
const budgetRaw = stringFlagOrExit(flags, 'budget');
|
|
112
114
|
let budget;
|
|
113
115
|
if (budgetRaw !== undefined) {
|
|
114
116
|
if (!/^\d+$/.test(budgetRaw)) {
|
|
@@ -128,7 +130,7 @@ function cardCreate(hippoRoot, tenantId, _args, flags) {
|
|
|
128
130
|
card = createCard(hippoRoot, tenantId, { title, repo, contract, budget, dependsOn });
|
|
129
131
|
}
|
|
130
132
|
catch (error) {
|
|
131
|
-
printError(
|
|
133
|
+
printError(errorMessage(error));
|
|
132
134
|
process.exit(1);
|
|
133
135
|
}
|
|
134
136
|
console.log(`Created card ${card.id} (status: ${card.status})`);
|
|
@@ -151,7 +153,7 @@ function cardShow(hippoRoot, tenantId, args, flags) {
|
|
|
151
153
|
printCard(detail);
|
|
152
154
|
}
|
|
153
155
|
function cardList(hippoRoot, tenantId, _args, flags) {
|
|
154
|
-
const status =
|
|
156
|
+
const status = stringFlagOrExit(flags, 'status');
|
|
155
157
|
if (status !== undefined && !isCardStatus(status)) {
|
|
156
158
|
printError(`Invalid status: "${status}".`);
|
|
157
159
|
process.exit(1);
|
|
@@ -171,18 +173,18 @@ function cardList(hippoRoot, tenantId, _args, flags) {
|
|
|
171
173
|
}
|
|
172
174
|
function cardClaim(hippoRoot, tenantId, args, flags) {
|
|
173
175
|
const id = args[1];
|
|
174
|
-
const runtime =
|
|
176
|
+
const runtime = stringFlagOrExit(flags, 'runtime') ?? '';
|
|
175
177
|
if (!id || !runtime) {
|
|
176
178
|
printError('Usage: hippo card claim <id> --runtime <name> [--session <id>]');
|
|
177
179
|
process.exit(1);
|
|
178
180
|
}
|
|
179
|
-
const sessionId =
|
|
181
|
+
const sessionId = stringFlagOrExit(flags, 'session') || undefined;
|
|
180
182
|
let card;
|
|
181
183
|
try {
|
|
182
184
|
card = claimCard(hippoRoot, tenantId, id, runtime, sessionId);
|
|
183
185
|
}
|
|
184
186
|
catch (error) {
|
|
185
|
-
printError(
|
|
187
|
+
printError(errorMessage(error));
|
|
186
188
|
process.exit(1);
|
|
187
189
|
}
|
|
188
190
|
if (!card) {
|
|
@@ -203,7 +205,7 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
|
|
|
203
205
|
card = heartbeatCard(hippoRoot, tenantId, id, runId);
|
|
204
206
|
}
|
|
205
207
|
catch (error) {
|
|
206
|
-
printError(
|
|
208
|
+
printError(errorMessage(error));
|
|
207
209
|
process.exit(1);
|
|
208
210
|
}
|
|
209
211
|
if (!card) {
|
|
@@ -214,7 +216,7 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
|
|
|
214
216
|
}
|
|
215
217
|
function cardBlock(hippoRoot, tenantId, args, flags) {
|
|
216
218
|
const id = args[1];
|
|
217
|
-
const reason =
|
|
219
|
+
const reason = stringFlagOrExit(flags, 'reason') ?? '';
|
|
218
220
|
if (!id || !reason) {
|
|
219
221
|
printError(CARD_BLOCK_REASON_REQUIRED);
|
|
220
222
|
process.exit(1);
|
|
@@ -225,7 +227,7 @@ function cardBlock(hippoRoot, tenantId, args, flags) {
|
|
|
225
227
|
card = blockCard(hippoRoot, tenantId, id, reason, runId);
|
|
226
228
|
}
|
|
227
229
|
catch (error) {
|
|
228
|
-
printError(
|
|
230
|
+
printError(errorMessage(error));
|
|
229
231
|
process.exit(1);
|
|
230
232
|
}
|
|
231
233
|
if (!card) {
|
|
@@ -247,7 +249,7 @@ function cardReview(hippoRoot, tenantId, args, flags) {
|
|
|
247
249
|
card = reviewCard(hippoRoot, tenantId, id, runId);
|
|
248
250
|
}
|
|
249
251
|
catch (error) {
|
|
250
|
-
printError(
|
|
252
|
+
printError(errorMessage(error));
|
|
251
253
|
process.exit(1);
|
|
252
254
|
}
|
|
253
255
|
if (!card) {
|
|
@@ -270,7 +272,7 @@ function cardComplete(hippoRoot, tenantId, args, flags) {
|
|
|
270
272
|
result = completeCard(hippoRoot, tenantId, id, outcomeRaw, runId);
|
|
271
273
|
}
|
|
272
274
|
catch (error) {
|
|
273
|
-
printError(
|
|
275
|
+
printError(errorMessage(error));
|
|
274
276
|
process.exit(1);
|
|
275
277
|
}
|
|
276
278
|
if (!result) {
|
|
@@ -309,12 +311,12 @@ function cardComment(hippoRoot, tenantId, args, flags) {
|
|
|
309
311
|
printError(`No card found with id ${id}.`);
|
|
310
312
|
process.exit(1);
|
|
311
313
|
}
|
|
312
|
-
const body =
|
|
314
|
+
const body = stringFlagOrExit(flags, 'body') ?? '';
|
|
313
315
|
if (!body) {
|
|
314
316
|
printError('Usage: hippo card comment <id> --body "..." [--author <name>]');
|
|
315
317
|
process.exit(1);
|
|
316
318
|
}
|
|
317
|
-
const author =
|
|
319
|
+
const author = stringFlagOrExit(flags, 'author') || 'cli';
|
|
318
320
|
const comment = addCardComment(hippoRoot, tenantId, id, author, body);
|
|
319
321
|
console.log(`Added comment ${comment.id} to card ${id}`);
|
|
320
322
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Network errors (ECONNREFUSED on a stale pidfile, etc.) propagate as the
|
|
14
14
|
* native fetch failure so the caller can detect them and self-heal.
|
|
15
15
|
*/
|
|
16
|
-
import type { RememberOpts, RememberResult } from '
|
|
16
|
+
import type { RememberOpts, RememberResult } from '../api/index.js';
|
|
17
17
|
/** An error the server answered with, not one the transport raised. The
|
|
18
18
|
* refused-connection classifier sniffs message text, and a server message
|
|
19
19
|
* quotes the caller's own id or content back verbatim. */
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Network errors (ECONNREFUSED on a stale pidfile, etc.) propagate as the
|
|
14
14
|
* native fetch failure so the caller can detect them and self-heal.
|
|
15
15
|
*/
|
|
16
|
-
import { fetchWithRetry } from '
|
|
16
|
+
import { fetchWithRetry } from '../util/http-retry.js';
|
|
17
17
|
/** A write the local server has not answered in this long is stuck; the caller treats it as delivery-unknown. */
|
|
18
18
|
const SERVER_TIMEOUT_MS = 30_000;
|
|
19
19
|
/** Five tries at the server's 1 s Retry-After keeps the roughly 5 s wait the CLI had before the server answered busy with 503. */
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface CompactResumePayload {
|
|
2
|
+
suppressOutput: boolean;
|
|
3
|
+
payloadSessionId: string | null;
|
|
4
|
+
boundary: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
|
|
7
|
+
export declare function readCompactResumePayload(stdinText: string | undefined, stdinTimedOut: boolean): CompactResumePayload;
|
|
8
|
+
//# sourceMappingURL=compact-resume-payload.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// The payload gate for `hippo compact-resume`.
|
|
2
|
+
import { isSubagentPayload } from '../store/token-ledger.js';
|
|
3
|
+
/** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
|
|
4
|
+
export function readCompactResumePayload(stdinText, stdinTimedOut) {
|
|
5
|
+
// An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with any other source stays silent.
|
|
6
|
+
const nonEmptyStdin = !!stdinText && stdinText.trim() !== '';
|
|
7
|
+
// Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the print path.
|
|
8
|
+
let suppressOutput = stdinTimedOut && !nonEmptyStdin;
|
|
9
|
+
let payloadSessionId = null;
|
|
10
|
+
// A boundary is a manual run or a payload that says it follows a compaction; anything else is not one.
|
|
11
|
+
let boundary = !nonEmptyStdin && !stdinTimedOut;
|
|
12
|
+
if (nonEmptyStdin) {
|
|
13
|
+
let payload = null;
|
|
14
|
+
try {
|
|
15
|
+
payload = JSON.parse(stdinText.trim());
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Malformed JSON is handled as a null payload by the fail-closed check below.
|
|
19
|
+
payload = null;
|
|
20
|
+
}
|
|
21
|
+
if (!payload || typeof payload !== 'object') {
|
|
22
|
+
// Fail closed on malformed non-empty stdin; only a TTY/no-stdin manual run, which never reaches here, prints.
|
|
23
|
+
suppressOutput = true;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart payload always carries source.
|
|
27
|
+
// A sub-agent's payload carries its parent's session id, so the mismatch guard would pass and restore the parent's snapshot into it.
|
|
28
|
+
boundary = payload.source === 'compact';
|
|
29
|
+
if (payload.source !== 'compact' || isSubagentPayload(stdinText)) {
|
|
30
|
+
suppressOutput = true;
|
|
31
|
+
}
|
|
32
|
+
if (typeof payload.session_id === 'string') {
|
|
33
|
+
payloadSessionId = payload.session_id;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { suppressOutput, payloadSessionId, boundary };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=compact-resume-payload.js.map
|
package/dist/cli/context.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function cmdContext(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>, stdinText?: string): Promise<void>;
|
|
4
|
-
/** @internal Exported for the render snapshot test; not a stable public API. */
|
|
5
|
-
export declare function printContextMarkdown(items: Array<{
|
|
6
|
-
entry: MemoryEntry;
|
|
7
|
-
score: number;
|
|
8
|
-
tokens: number;
|
|
9
|
-
isGlobal: boolean;
|
|
10
|
-
}>, totalTokens: number, framing?: string, opts?: {
|
|
11
|
-
showStrength?: boolean;
|
|
12
|
-
heading?: string;
|
|
13
|
-
}): void;
|
|
1
|
+
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function cmdContext(hippoRoot: string, args: string[], flags: CliFlags, stdinText?: string): Promise<void>;
|
|
14
3
|
export declare function handleContext({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
15
4
|
//# sourceMappingURL=context.d.ts.map
|