nlm-memory 0.21.0 → 0.21.13
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 +67 -12
- package/assets/replay-eval-dark.svg +26 -0
- package/assets/replay-eval-light.svg +26 -0
- package/dist/cli/digest.js +34 -7
- package/dist/cli/digest.js.map +1 -1
- package/dist/cli/nlm.d.ts +14 -0
- package/dist/cli/nlm.js +450 -65
- package/dist/cli/nlm.js.map +1 -1
- package/dist/cli/reprocess-job-adapters.d.ts +35 -0
- package/dist/cli/reprocess-job-adapters.js +80 -0
- package/dist/cli/reprocess-job-adapters.js.map +1 -0
- package/dist/cli/scope-coverage.js +4 -1
- package/dist/cli/scope-coverage.js.map +1 -1
- package/dist/cli/supersede.js +8 -7
- package/dist/cli/supersede.js.map +1 -1
- package/dist/core/actions/actions-log.d.ts +65 -8
- package/dist/core/actions/actions-log.js +134 -17
- package/dist/core/actions/actions-log.js.map +1 -1
- package/dist/core/actions/overlay.d.ts +11 -2
- package/dist/core/actions/overlay.js +18 -6
- package/dist/core/actions/overlay.js.map +1 -1
- package/dist/core/adapters/from-source.js +11 -3
- package/dist/core/adapters/from-source.js.map +1 -1
- package/dist/core/adapters/fs-wiki-writer.d.ts +44 -0
- package/dist/core/adapters/fs-wiki-writer.js +132 -0
- package/dist/core/adapters/fs-wiki-writer.js.map +1 -0
- package/dist/core/adapters/hermes-agent.d.ts +15 -2
- package/dist/core/adapters/hermes-agent.js +57 -11
- package/dist/core/adapters/hermes-agent.js.map +1 -1
- package/dist/core/adapters/memory-wiki-writer.d.ts +8 -0
- package/dist/core/adapters/memory-wiki-writer.js +16 -0
- package/dist/core/adapters/memory-wiki-writer.js.map +1 -0
- package/dist/core/adapters/muse.d.ts +51 -0
- package/dist/core/adapters/muse.js +271 -0
- package/dist/core/adapters/muse.js.map +1 -0
- package/dist/core/adapters/opencode.d.ts +11 -4
- package/dist/core/adapters/opencode.js +41 -7
- package/dist/core/adapters/opencode.js.map +1 -1
- package/dist/core/alerts/alert-state.d.ts +17 -0
- package/dist/core/alerts/alert-state.js +45 -0
- package/dist/core/alerts/alert-state.js.map +1 -0
- package/dist/core/alerts/check-and-alert.d.ts +28 -0
- package/dist/core/alerts/check-and-alert.js +53 -0
- package/dist/core/alerts/check-and-alert.js.map +1 -0
- package/dist/core/alerts/drift-transition.d.ts +27 -0
- package/dist/core/alerts/drift-transition.js +56 -0
- package/dist/core/alerts/drift-transition.js.map +1 -0
- package/dist/core/alerts/embedder-transition.d.ts +23 -0
- package/dist/core/alerts/embedder-transition.js +40 -0
- package/dist/core/alerts/embedder-transition.js.map +1 -0
- package/dist/core/alerts/fire-alert.d.ts +24 -0
- package/dist/core/alerts/fire-alert.js +72 -0
- package/dist/core/alerts/fire-alert.js.map +1 -0
- package/dist/core/alerts/job-alert.d.ts +12 -0
- package/dist/core/alerts/job-alert.js +37 -0
- package/dist/core/alerts/job-alert.js.map +1 -0
- package/dist/core/alerts/types.d.ts +104 -0
- package/dist/core/alerts/types.js +11 -0
- package/dist/core/alerts/types.js.map +1 -0
- package/dist/core/alerts/wiki-alert.d.ts +15 -0
- package/dist/core/alerts/wiki-alert.js +31 -0
- package/dist/core/alerts/wiki-alert.js.map +1 -0
- package/dist/core/classifier/prompt.d.ts +13 -0
- package/dist/core/classifier/prompt.js +52 -2
- package/dist/core/classifier/prompt.js.map +1 -1
- package/dist/core/dataset/build-dataset.d.ts +16 -1
- package/dist/core/dataset/build-dataset.js +105 -45
- package/dist/core/dataset/build-dataset.js.map +1 -1
- package/dist/core/digest/compose.d.ts +8 -0
- package/dist/core/digest/compose.js +54 -0
- package/dist/core/digest/compose.js.map +1 -1
- package/dist/core/digest/hook-injection.d.ts +1 -1
- package/dist/core/digest/hook-injection.js +9 -1
- package/dist/core/digest/hook-injection.js.map +1 -1
- package/dist/core/digest/hook-version-parity.d.ts +31 -0
- package/dist/core/digest/hook-version-parity.js +56 -0
- package/dist/core/digest/hook-version-parity.js.map +1 -0
- package/dist/core/embedding/pg-embed-backfill.js +1 -1
- package/dist/core/embedding/pg-embed-backfill.js.map +1 -1
- package/dist/core/exemplars/capture-from-session.d.ts +1 -1
- package/dist/core/exemplars/capture-from-session.js +3 -3
- package/dist/core/exemplars/capture-from-session.js.map +1 -1
- package/dist/core/exemplars/embed-backfill.d.ts +9 -0
- package/dist/core/exemplars/embed-backfill.js +9 -1
- package/dist/core/exemplars/embed-backfill.js.map +1 -1
- package/dist/core/exemplars/recall-code.d.ts +1 -1
- package/dist/core/exemplars/recall-code.js +2 -2
- package/dist/core/exemplars/recall-code.js.map +1 -1
- package/dist/core/facts/backfill-facts.d.ts +1 -1
- package/dist/core/facts/backfill-facts.js +4 -4
- package/dist/core/facts/backfill-facts.js.map +1 -1
- package/dist/core/facts/embed-backfill.d.ts +54 -0
- package/dist/core/facts/embed-backfill.js +109 -0
- package/dist/core/facts/embed-backfill.js.map +1 -0
- package/dist/core/facts/reconcile-facts.d.ts +42 -0
- package/dist/core/facts/reconcile-facts.js +133 -0
- package/dist/core/facts/reconcile-facts.js.map +1 -0
- package/dist/core/health/embed-failure-state.d.ts +4 -0
- package/dist/core/health/embed-failure-state.js +12 -0
- package/dist/core/health/embed-failure-state.js.map +1 -0
- package/dist/core/health/warmup-retry.d.ts +27 -0
- package/dist/core/health/warmup-retry.js +53 -0
- package/dist/core/health/warmup-retry.js.map +1 -0
- package/dist/core/health/warmup-state.d.ts +15 -0
- package/dist/core/health/warmup-state.js +15 -1
- package/dist/core/health/warmup-state.js.map +1 -1
- package/dist/core/hook/cite-memo.d.ts +11 -7
- package/dist/core/hook/cite-memo.js +25 -17
- package/dist/core/hook/cite-memo.js.map +1 -1
- package/dist/core/hook/hook-log.d.ts +13 -2
- package/dist/core/hook/hook-log.js +16 -8
- package/dist/core/hook/hook-log.js.map +1 -1
- package/dist/core/hook/memo.d.ts +10 -6
- package/dist/core/hook/memo.js +25 -17
- package/dist/core/hook/memo.js.map +1 -1
- package/dist/core/hook/pointer-block.d.ts +8 -1
- package/dist/core/hook/pointer-block.js +17 -4
- package/dist/core/hook/pointer-block.js.map +1 -1
- package/dist/core/hook/resolve-conversation-by-query.d.ts +6 -5
- package/dist/core/hook/resolve-conversation-by-query.js +24 -12
- package/dist/core/hook/resolve-conversation-by-query.js.map +1 -1
- package/dist/core/ingest/ingest-session.d.ts +1 -1
- package/dist/core/ingest/ingest-session.js +3 -3
- package/dist/core/ingest/ingest-session.js.map +1 -1
- package/dist/core/ingest/reclassify-oversized.d.ts +1 -1
- package/dist/core/ingest/reclassify-oversized.js +2 -2
- package/dist/core/ingest/reclassify-oversized.js.map +1 -1
- package/dist/core/ingest/reprocess.d.ts +1 -1
- package/dist/core/ingest/reprocess.js +2 -2
- package/dist/core/ingest/reprocess.js.map +1 -1
- package/dist/core/jobs/job-supervisor.d.ts +168 -0
- package/dist/core/jobs/job-supervisor.js +335 -0
- package/dist/core/jobs/job-supervisor.js.map +1 -0
- package/dist/core/learner/model.d.ts +63 -0
- package/dist/core/learner/model.js +30 -0
- package/dist/core/learner/model.js.map +1 -0
- package/dist/core/learner/service.d.ts +42 -0
- package/dist/core/learner/service.js +74 -0
- package/dist/core/learner/service.js.map +1 -0
- package/dist/core/learner/summary.d.ts +28 -0
- package/dist/core/learner/summary.js +70 -0
- package/dist/core/learner/summary.js.map +1 -0
- package/dist/core/learner/validate.d.ts +18 -0
- package/dist/core/learner/validate.js +95 -0
- package/dist/core/learner/validate.js.map +1 -0
- package/dist/core/metrics/re-derivation.d.ts +31 -2
- package/dist/core/metrics/re-derivation.js +36 -4
- package/dist/core/metrics/re-derivation.js.map +1 -1
- package/dist/core/outcome/coverage.d.ts +1 -1
- package/dist/core/outcome/coverage.js +2 -2
- package/dist/core/outcome/coverage.js.map +1 -1
- package/dist/core/outcome/rollup.d.ts +1 -1
- package/dist/core/outcome/rollup.js +4 -4
- package/dist/core/outcome/rollup.js.map +1 -1
- package/dist/core/providers/provider-registry.d.ts +40 -23
- package/dist/core/providers/provider-registry.js +99 -81
- package/dist/core/providers/provider-registry.js.map +1 -1
- package/dist/core/recall/citation-log.d.ts +10 -5
- package/dist/core/recall/citation-log.js +21 -10
- package/dist/core/recall/citation-log.js.map +1 -1
- package/dist/core/recall/hook-recall-log.d.ts +5 -2
- package/dist/core/recall/hook-recall-log.js +12 -6
- package/dist/core/recall/hook-recall-log.js.map +1 -1
- package/dist/core/recall/miss-log.d.ts +7 -4
- package/dist/core/recall/miss-log.js +18 -11
- package/dist/core/recall/miss-log.js.map +1 -1
- package/dist/core/recall/query-log.d.ts +8 -5
- package/dist/core/recall/query-log.js +16 -9
- package/dist/core/recall/query-log.js.map +1 -1
- package/dist/core/recall/recall-service.d.ts +10 -1
- package/dist/core/recall/recall-service.js +31 -12
- package/dist/core/recall/recall-service.js.map +1 -1
- package/dist/core/recall/recent-log.d.ts +6 -1
- package/dist/core/recall/recent-log.js +13 -5
- package/dist/core/recall/recent-log.js.map +1 -1
- package/dist/core/recall/related-concepts.d.ts +29 -0
- package/dist/core/recall/related-concepts.js +67 -0
- package/dist/core/recall/related-concepts.js.map +1 -0
- package/dist/core/recall/related-exemplars.d.ts +1 -1
- package/dist/core/recall/related-exemplars.js +2 -2
- package/dist/core/recall/related-exemplars.js.map +1 -1
- package/dist/core/recall/related-facts.d.ts +1 -1
- package/dist/core/recall/related-facts.js +3 -3
- package/dist/core/recall/related-facts.js.map +1 -1
- package/dist/core/recall-facts/fact-query-log.d.ts +8 -4
- package/dist/core/recall-facts/fact-query-log.js +16 -8
- package/dist/core/recall-facts/fact-query-log.js.map +1 -1
- package/dist/core/recall-facts/fact-recall-service.d.ts +2 -2
- package/dist/core/recall-facts/fact-recall-service.js +12 -12
- package/dist/core/recall-facts/fact-recall-service.js.map +1 -1
- package/dist/core/scheduler/scan-once.js +15 -14
- package/dist/core/scheduler/scan-once.js.map +1 -1
- package/dist/core/scheduler/scheduler.d.ts +3 -0
- package/dist/core/scheduler/scheduler.js +15 -11
- package/dist/core/scheduler/scheduler.js.map +1 -1
- package/dist/core/signals/failure-mode-recall.d.ts +1 -1
- package/dist/core/signals/failure-mode-recall.js +2 -2
- package/dist/core/signals/failure-mode-recall.js.map +1 -1
- package/dist/core/signals/stamp-scope.d.ts +2 -2
- package/dist/core/signals/stamp-scope.js +2 -2
- package/dist/core/signals/stamp-scope.js.map +1 -1
- package/dist/core/sources/source-registry.d.ts +49 -28
- package/dist/core/sources/source-registry.js +113 -70
- package/dist/core/sources/source-registry.js.map +1 -1
- package/dist/core/storage/pg-code-exemplar-store.d.ts +19 -10
- package/dist/core/storage/pg-code-exemplar-store.js +58 -27
- package/dist/core/storage/pg-code-exemplar-store.js.map +1 -1
- package/dist/core/storage/pg-entity-store.d.ts +6 -1
- package/dist/core/storage/pg-entity-store.js +33 -18
- package/dist/core/storage/pg-entity-store.js.map +1 -1
- package/dist/core/storage/pg-fact-ingest.d.ts +1 -1
- package/dist/core/storage/pg-fact-ingest.js +10 -7
- package/dist/core/storage/pg-fact-ingest.js.map +1 -1
- package/dist/core/storage/pg-fact-store.d.ts +29 -17
- package/dist/core/storage/pg-fact-store.js +99 -46
- package/dist/core/storage/pg-fact-store.js.map +1 -1
- package/dist/core/storage/pg-learner-store.d.ts +27 -0
- package/dist/core/storage/pg-learner-store.js +174 -0
- package/dist/core/storage/pg-learner-store.js.map +1 -0
- package/dist/core/storage/pg-session-store.d.ts +24 -20
- package/dist/core/storage/pg-session-store.js +162 -90
- package/dist/core/storage/pg-session-store.js.map +1 -1
- package/dist/core/storage/pg-signal-store.d.ts +10 -5
- package/dist/core/storage/pg-signal-store.js +24 -12
- package/dist/core/storage/pg-signal-store.js.map +1 -1
- package/dist/core/storage/pg-storage.d.ts +4 -0
- package/dist/core/storage/pg-storage.js +6 -0
- package/dist/core/storage/pg-storage.js.map +1 -1
- package/dist/core/storage/pg-workstream-store.d.ts +16 -11
- package/dist/core/storage/pg-workstream-store.js +46 -29
- package/dist/core/storage/pg-workstream-store.js.map +1 -1
- package/dist/core/storage/sqlite-code-exemplar-store.d.ts +24 -10
- package/dist/core/storage/sqlite-code-exemplar-store.js +84 -40
- package/dist/core/storage/sqlite-code-exemplar-store.js.map +1 -1
- package/dist/core/storage/sqlite-entity-store.d.ts +8 -1
- package/dist/core/storage/sqlite-entity-store.js +46 -27
- package/dist/core/storage/sqlite-entity-store.js.map +1 -1
- package/dist/core/storage/sqlite-fact-store.d.ts +45 -19
- package/dist/core/storage/sqlite-fact-store.js +172 -64
- package/dist/core/storage/sqlite-fact-store.js.map +1 -1
- package/dist/core/storage/sqlite-learner-store.d.ts +33 -0
- package/dist/core/storage/sqlite-learner-store.js +178 -0
- package/dist/core/storage/sqlite-learner-store.js.map +1 -0
- package/dist/core/storage/sqlite-outcome-store.d.ts +37 -22
- package/dist/core/storage/sqlite-outcome-store.js +90 -37
- package/dist/core/storage/sqlite-outcome-store.js.map +1 -1
- package/dist/core/storage/sqlite-session-store.d.ts +29 -20
- package/dist/core/storage/sqlite-session-store.js +207 -121
- package/dist/core/storage/sqlite-session-store.js.map +1 -1
- package/dist/core/storage/sqlite-signal-store.d.ts +12 -5
- package/dist/core/storage/sqlite-signal-store.js +27 -15
- package/dist/core/storage/sqlite-signal-store.js.map +1 -1
- package/dist/core/storage/sqlite-storage.d.ts +4 -0
- package/dist/core/storage/sqlite-storage.js +10 -2
- package/dist/core/storage/sqlite-storage.js.map +1 -1
- package/dist/core/storage/sqlite-workstream-store.d.ts +16 -11
- package/dist/core/storage/sqlite-workstream-store.js +52 -31
- package/dist/core/storage/sqlite-workstream-store.js.map +1 -1
- package/dist/core/storage/supersedence-log.d.ts +10 -7
- package/dist/core/storage/supersedence-log.js +19 -14
- package/dist/core/storage/supersedence-log.js.map +1 -1
- package/dist/core/tenancy/default-team.d.ts +6 -0
- package/dist/core/tenancy/default-team.js +7 -0
- package/dist/core/tenancy/default-team.js.map +1 -0
- package/dist/core/tenancy/hosted-mode.d.ts +9 -0
- package/dist/core/tenancy/hosted-mode.js +12 -0
- package/dist/core/tenancy/hosted-mode.js.map +1 -0
- package/dist/core/tenancy/team-auth.d.ts +16 -0
- package/dist/core/tenancy/team-auth.js +22 -0
- package/dist/core/tenancy/team-auth.js.map +1 -0
- package/dist/core/tenancy/team-token-store.d.ts +45 -0
- package/dist/core/tenancy/team-token-store.js +52 -0
- package/dist/core/tenancy/team-token-store.js.map +1 -0
- package/dist/core/tenancy/tenant-clause.d.ts +37 -0
- package/dist/core/tenancy/tenant-clause.js +11 -0
- package/dist/core/tenancy/tenant-clause.js.map +1 -0
- package/dist/core/tenancy/tenant-state-path.d.ts +28 -0
- package/dist/core/tenancy/tenant-state-path.js +49 -0
- package/dist/core/tenancy/tenant-state-path.js.map +1 -0
- package/dist/core/wiki/project.d.ts +17 -0
- package/dist/core/wiki/project.js +37 -0
- package/dist/core/wiki/project.js.map +1 -0
- package/dist/core/wiki/reconcile.d.ts +15 -0
- package/dist/core/wiki/reconcile.js +14 -0
- package/dist/core/wiki/reconcile.js.map +1 -0
- package/dist/core/wiki/render.d.ts +5 -0
- package/dist/core/wiki/render.js +84 -0
- package/dist/core/wiki/render.js.map +1 -0
- package/dist/core/wiki/rollup.d.ts +28 -0
- package/dist/core/wiki/rollup.js +91 -0
- package/dist/core/wiki/rollup.js.map +1 -0
- package/dist/core/wiki/select.d.ts +8 -0
- package/dist/core/wiki/select.js +7 -0
- package/dist/core/wiki/select.js.map +1 -0
- package/dist/core/wiki/slug.d.ts +36 -0
- package/dist/core/wiki/slug.js +71 -0
- package/dist/core/wiki/slug.js.map +1 -0
- package/dist/core/wiki/types.d.ts +37 -0
- package/dist/core/wiki/types.js +2 -0
- package/dist/core/wiki/types.js.map +1 -0
- package/dist/core/work-digest/build-work-digest.d.ts +1 -1
- package/dist/core/work-digest/build-work-digest.js +3 -3
- package/dist/core/work-digest/build-work-digest.js.map +1 -1
- package/dist/core/workstream/bind.d.ts +1 -1
- package/dist/core/workstream/bind.js +10 -10
- package/dist/core/workstream/bind.js.map +1 -1
- package/dist/core/workstream/rollup.d.ts +1 -1
- package/dist/core/workstream/rollup.js +6 -6
- package/dist/core/workstream/rollup.js.map +1 -1
- package/dist/hook/hook-helpers.d.ts +14 -0
- package/dist/hook/hook-helpers.js +29 -2
- package/dist/hook/hook-helpers.js.map +1 -1
- package/dist/hook/pre-compact-hook.js +6 -4
- package/dist/hook/pre-compact-hook.js.map +1 -1
- package/dist/hook/prompt-recall-hook.d.ts +5 -2
- package/dist/hook/prompt-recall-hook.js +28 -17
- package/dist/hook/prompt-recall-hook.js.map +1 -1
- package/dist/hook/recall-over-http.d.ts +27 -3
- package/dist/hook/recall-over-http.js +44 -11
- package/dist/hook/recall-over-http.js.map +1 -1
- package/dist/hook/session-end-hook.js +7 -5
- package/dist/hook/session-end-hook.js.map +1 -1
- package/dist/hook/session-start-hook.d.ts +14 -1
- package/dist/hook/session-start-hook.js +55 -15
- package/dist/hook/session-start-hook.js.map +1 -1
- package/dist/hook/stop-hook.js +9 -7
- package/dist/hook/stop-hook.js.map +1 -1
- package/dist/http/app.d.ts +41 -3
- package/dist/http/app.js +355 -96
- package/dist/http/app.js.map +1 -1
- package/dist/install/claude-code.d.ts +17 -0
- package/dist/install/claude-code.js +44 -5
- package/dist/install/claude-code.js.map +1 -1
- package/dist/install/codex.d.ts +23 -2
- package/dist/install/codex.js +111 -14
- package/dist/install/codex.js.map +1 -1
- package/dist/install/cursor.d.ts +2 -2
- package/dist/install/cursor.js +7 -7
- package/dist/install/cursor.js.map +1 -1
- package/dist/install/hermes.d.ts +8 -0
- package/dist/install/hermes.js +28 -5
- package/dist/install/hermes.js.map +1 -1
- package/dist/install/local-source.d.ts +20 -0
- package/dist/install/local-source.js +28 -0
- package/dist/install/local-source.js.map +1 -0
- package/dist/install/mcp-block.d.ts +77 -0
- package/dist/install/mcp-block.js +99 -0
- package/dist/install/mcp-block.js.map +1 -0
- package/dist/install/pi.d.ts +26 -0
- package/dist/install/pi.js +43 -0
- package/dist/install/pi.js.map +1 -1
- package/dist/install/setup.js +6 -0
- package/dist/install/setup.js.map +1 -1
- package/dist/install/windsurf.d.ts +2 -2
- package/dist/install/windsurf.js +7 -7
- package/dist/install/windsurf.js.map +1 -1
- package/dist/llm/classifier-box.d.ts +5 -0
- package/dist/llm/classifier-box.js +5 -0
- package/dist/llm/classifier-box.js.map +1 -1
- package/dist/mcp/server.d.ts +73 -16
- package/dist/mcp/server.js +306 -83
- package/dist/mcp/server.js.map +1 -1
- package/dist/ports/clock.d.ts +12 -0
- package/dist/ports/clock.js +10 -0
- package/dist/ports/clock.js.map +1 -0
- package/dist/ports/code-exemplar-store.d.ts +13 -13
- package/dist/ports/entity-store.d.ts +5 -1
- package/dist/ports/fact-store.d.ts +0 -0
- package/dist/ports/fact-store.js +0 -0
- package/dist/ports/fact-store.js.map +1 -1
- package/dist/ports/learner-store.d.ts +80 -0
- package/dist/ports/learner-store.js +19 -0
- package/dist/ports/learner-store.js.map +1 -0
- package/dist/ports/outcome.d.ts +3 -3
- package/dist/ports/session-store.d.ts +20 -14
- package/dist/ports/session-store.js +5 -0
- package/dist/ports/session-store.js.map +1 -1
- package/dist/ports/signal-store.d.ts +12 -8
- package/dist/ports/spawn-child.d.ts +14 -0
- package/dist/ports/spawn-child.js +10 -0
- package/dist/ports/spawn-child.js.map +1 -0
- package/dist/ports/storage.d.ts +6 -0
- package/dist/ports/transcript-adapter.d.ts +11 -0
- package/dist/ports/wiki-writer.d.ts +19 -0
- package/dist/ports/wiki-writer.js +12 -0
- package/dist/ports/wiki-writer.js.map +1 -0
- package/dist/ports/workstream-store.d.ts +19 -12
- package/dist/shared/types.d.ts +22 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/shared/version.d.ts +9 -0
- package/dist/shared/version.js +11 -0
- package/dist/shared/version.js.map +1 -0
- package/dist/ui/assets/index-D6F3xAis.js +11 -0
- package/dist/ui/index.html +1 -1
- package/migrations/033_actions_kind_check.sql +58 -0
- package/migrations/034_tenancy_teams_and_stamps.sql +40 -0
- package/migrations/035_tenancy_entity_rekey.sql +75 -0
- package/migrations/036_tenant_name_uniqueness.sql +59 -0
- package/migrations/037_sessions_covering_index.sql +25 -0
- package/migrations/038_sources_muse.sql +33 -0
- package/migrations/039_learner_evidence.sql +51 -0
- package/migrations/pg/033_actions_kind_check.sql +17 -0
- package/migrations/pg/034_tenancy.sql +77 -0
- package/migrations/pg/035_tenant_name_uniqueness.sql +15 -0
- package/migrations/pg/036_sources_muse.sql +12 -0
- package/migrations/pg/037_learner_evidence.sql +55 -0
- package/nlm/index.js +246 -55
- package/package.json +10 -5
- package/plugin/.codex-plugin/plugin.json +2 -2
- package/plugin/scripts/prompt-recall-hook.mjs +244 -55
- package/plugin/scripts/session-start-hook.mjs +273 -53
- package/plugin/scripts/stop-hook.mjs +195 -37
- package/dist/ui/assets/index-CSaBtgXD.js +0 -11
package/dist/install/codex.js
CHANGED
|
@@ -26,6 +26,7 @@ import { spawnSync } from "node:child_process";
|
|
|
26
26
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
27
27
|
import { homedir } from "node:os";
|
|
28
28
|
import { dirname, join, resolve } from "node:path";
|
|
29
|
+
import { codexMcpToml } from "./mcp-block.js";
|
|
29
30
|
const DEFAULT_SOURCE = "pbmagnet4/nlm-memory";
|
|
30
31
|
const PLUGIN_NAME = "nlm-memory";
|
|
31
32
|
// Marketplace name is derived from the source's basename by codex when
|
|
@@ -51,6 +52,16 @@ function runCodex(args) {
|
|
|
51
52
|
stderr: result.stderr ?? "",
|
|
52
53
|
};
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Ask Codex for its effective MCP configuration, including plugin-provided
|
|
57
|
+
* servers that are not materialized in ~/.codex/config.toml.
|
|
58
|
+
*
|
|
59
|
+
* The exit status is sufficient and avoids parsing or echoing configuration
|
|
60
|
+
* output that may contain environment-variable names or other user settings.
|
|
61
|
+
*/
|
|
62
|
+
export function codexHasEffectiveMcpServer(name, runner = runCodex) {
|
|
63
|
+
return runner(["mcp", "get", name]).status === 0;
|
|
64
|
+
}
|
|
54
65
|
export function codexBinaryAvailable() {
|
|
55
66
|
const r = spawnSync("codex", ["--version"], { encoding: "utf8" });
|
|
56
67
|
return r.status === 0;
|
|
@@ -61,23 +72,109 @@ export function codexHooksPath() {
|
|
|
61
72
|
export function codexConfigPath() {
|
|
62
73
|
return process.env["NLM_CODEX_CONFIG"] ?? join(homedir(), ".codex", "config.toml");
|
|
63
74
|
}
|
|
64
|
-
export function writeMcpServerToConfig(configPath) {
|
|
75
|
+
export function writeMcpServerToConfig(configPath, transport = "http") {
|
|
65
76
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
66
77
|
const existing = existsSync(configPath) ? readFileSync(configPath, "utf8") : "";
|
|
67
78
|
const next = stripSentinelBlock(existing);
|
|
68
|
-
// An un-sentineled [mcp_servers.nlm-memory] table — hand-authored, or left
|
|
69
|
-
// a pre-rename install
|
|
70
|
-
//
|
|
71
|
-
// the
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
// An un-sentineled [mcp_servers.nlm-memory] table — hand-authored, or left
|
|
80
|
+
// by a pre-rename install. Appending our managed block would duplicate the
|
|
81
|
+
// TOML key and break codex's parser, so we either replace it (when it is
|
|
82
|
+
// recognizably the stdio shape we used to emit, i.e. an upgrade) or leave it
|
|
83
|
+
// strictly alone (when the user has customized it beyond that).
|
|
84
|
+
let base = next;
|
|
85
|
+
let migrated = false;
|
|
86
|
+
if (hasNlmMcpTable(base)) {
|
|
87
|
+
if (transport === "http" && isOurStdioTable(base)) {
|
|
88
|
+
base = removeNlmMcpTables(base);
|
|
89
|
+
migrated = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (base !== existing)
|
|
93
|
+
writeFileSync(configPath, base, "utf8");
|
|
94
|
+
return "skipped-existing";
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const block = `${MCP_SENTINEL_BEGIN}\n${codexMcpToml({ transport })}${MCP_SENTINEL_END}\n`;
|
|
98
|
+
const sep = base.length > 0 && !base.endsWith("\n\n") ? (base.endsWith("\n") ? "\n" : "\n\n") : "";
|
|
99
|
+
writeFileSync(configPath, base + sep + block, "utf8");
|
|
100
|
+
return migrated ? "migrated-stdio" : "written";
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* True when the existing un-sentineled table is the stdio shape this installer
|
|
104
|
+
* used to emit — `command`/`args` and nothing exotic. A table carrying a `url`
|
|
105
|
+
* is already HTTP; one with extra keys we never wrote is user-customized. Both
|
|
106
|
+
* are left alone, because silently rewriting someone's deliberate config is
|
|
107
|
+
* worse than leaving them on stdio.
|
|
108
|
+
*/
|
|
109
|
+
export function isOurStdioTable(content) {
|
|
110
|
+
const body = nlmTableBodies(content);
|
|
111
|
+
if (body.length === 0)
|
|
112
|
+
return false;
|
|
113
|
+
const entries = body
|
|
114
|
+
.flatMap((b) => b.split("\n"))
|
|
115
|
+
.map((l) => l.trim())
|
|
116
|
+
.filter((l) => l.length > 0 && !l.startsWith("#"))
|
|
117
|
+
.map((l) => {
|
|
118
|
+
const eq = l.indexOf("=");
|
|
119
|
+
return eq < 0 ? ["", ""] : [l.slice(0, eq).trim(), l.slice(eq + 1).trim()];
|
|
120
|
+
});
|
|
121
|
+
const keys = entries.map(([k]) => k ?? "");
|
|
122
|
+
if (keys.some((k) => k === "url"))
|
|
123
|
+
return false;
|
|
124
|
+
const allowed = new Set(["command", "args", "NLM_FORMAT"]);
|
|
125
|
+
if (keys.length === 0 || !keys.every((k) => allowed.has(k)))
|
|
126
|
+
return false;
|
|
127
|
+
// Key names alone are not enough. A deliberate wrapper — a shell script that
|
|
128
|
+
// sets env then execs nlm — uses exactly these keys, and migrating it away
|
|
129
|
+
// would destroy a setup the user built on purpose. Require the values to
|
|
130
|
+
// look like something this installer would have produced: the nlm entrypoint
|
|
131
|
+
// (or node running it) with the `mcp` subcommand.
|
|
132
|
+
const val = (k) => entries.find(([key]) => key === k)?.[1] ?? "";
|
|
133
|
+
const command = val("command").replace(/^["']|["']$/g, "");
|
|
134
|
+
const base = command.split("/").filter(Boolean).at(-1) ?? command;
|
|
135
|
+
const commandLooksOurs = ["nlm", "nlm.js", "node"].includes(base);
|
|
136
|
+
const argsHasMcpSubcommand = /(^|[[,\s])["']mcp["']/.test(val("args"));
|
|
137
|
+
return commandLooksOurs && argsHasMcpSubcommand;
|
|
138
|
+
}
|
|
139
|
+
/** Bodies of `[mcp_servers.nlm-memory]` and its dotted sub-tables. */
|
|
140
|
+
function nlmTableBodies(content) {
|
|
141
|
+
const out = [];
|
|
142
|
+
const lines = content.split("\n");
|
|
143
|
+
let capturing = false;
|
|
144
|
+
let buf = [];
|
|
145
|
+
for (const line of lines) {
|
|
146
|
+
const t = line.trim();
|
|
147
|
+
if (t.startsWith("[")) {
|
|
148
|
+
if (capturing) {
|
|
149
|
+
out.push(buf.join("\n"));
|
|
150
|
+
buf = [];
|
|
151
|
+
}
|
|
152
|
+
capturing = t === "[mcp_servers.nlm-memory]" || t.startsWith("[mcp_servers.nlm-memory.");
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (capturing)
|
|
156
|
+
buf.push(line);
|
|
157
|
+
}
|
|
158
|
+
if (capturing)
|
|
159
|
+
out.push(buf.join("\n"));
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/** Drop `[mcp_servers.nlm-memory]` and its dotted sub-tables from the TOML. */
|
|
163
|
+
export function removeNlmMcpTables(content) {
|
|
164
|
+
const lines = content.split("\n");
|
|
165
|
+
const kept = [];
|
|
166
|
+
let dropping = false;
|
|
167
|
+
for (const line of lines) {
|
|
168
|
+
const t = line.trim();
|
|
169
|
+
if (t.startsWith("[")) {
|
|
170
|
+
dropping = t === "[mcp_servers.nlm-memory]" || t.startsWith("[mcp_servers.nlm-memory.");
|
|
171
|
+
if (dropping)
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (!dropping)
|
|
175
|
+
kept.push(line);
|
|
76
176
|
}
|
|
77
|
-
|
|
78
|
-
const sep = next.length > 0 && !next.endsWith("\n\n") ? (next.endsWith("\n") ? "\n" : "\n\n") : "";
|
|
79
|
-
writeFileSync(configPath, next + sep + block, "utf8");
|
|
80
|
-
return "written";
|
|
177
|
+
return kept.join("\n").replace(/\n{3,}/g, "\n\n");
|
|
81
178
|
}
|
|
82
179
|
/** True if the config already declares an `[mcp_servers.nlm-memory]` table. */
|
|
83
180
|
export function hasNlmMcpTable(content) {
|
|
@@ -235,7 +332,7 @@ export function connectCodex(opts, pluginScriptsDir) {
|
|
|
235
332
|
// universal infrastructure that should work whether or not the plugin
|
|
236
333
|
// system honors the bundled .mcp.json indirection.
|
|
237
334
|
const configPath = codexConfigPath();
|
|
238
|
-
const mcpResult = writeMcpServerToConfig(configPath);
|
|
335
|
+
const mcpResult = writeMcpServerToConfig(configPath, opts.transport ?? "http");
|
|
239
336
|
return {
|
|
240
337
|
source,
|
|
241
338
|
marketplaceName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/install/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC,4EAA4E;AAC5E,uEAAuE;AACvE,wBAAwB;AACxB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAE9C,uEAAuE;AACvE,0EAA0E;AAC1E,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,iDAAiD,CAAC;AAC7E,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAmB5C,SAAS,QAAQ,CAAC,IAA2B;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACrF,CAAC;AAcD,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE1C,8EAA8E;IAC9E,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,QAAQ;YAAE,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,kBAAkB,gEAAgE,gBAAgB,IAAI,CAAC;IACxH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,aAAa,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,0BAA0B,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChF,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,kCAAkC;IAClE,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,CAAC,CAAC;IAC1C,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,uEAAuE;IACvE,6EAA6E;IAC7E,IAAI,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,QAAQ,IAAI,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC;AAkBD,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmB,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,gEAAgE;QAChE,kEAAkE;QAClE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAuB;IAC3D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,gBAAwB,EACxB,SAAiB;IAEjB,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAElC,MAAM,UAAU,GAAmC;QACjD,YAAY,EAAE;YACZ,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gCAAgC,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,GAAG;oBAC5F,aAAa,EAAE,+BAA+B;iBAC/C;aACF;SACF;QACD,gBAAgB,EAAE;YAChB,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gCAAgC,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,GAAG;oBAC5F,aAAa,EAAE,sCAAsC;iBACtD;aACF;SACF;QACD,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gCAAgC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG;iBACpF;aACF;SACF;KACF,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CACnE,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CACxB,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CACnE,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;;YACtC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QAAE,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAeD,MAAM,UAAU,YAAY,CAC1B,IAAoB,EACpB,gBAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;IAC7C,MAAM,eAAe,GAAG,gBAAgB,CAAC;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC;IAE/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;YACL,MAAM;YACN,eAAe;YACf,UAAU;YACV,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;YAC5D,gBAAgB,EAAE,eAAe,EAAE;YACnC,uBAAuB,EAAE,KAAK;YAC9B,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,wEAAwE;IACxE,yDAAyD;IACzD,MAAM,SAAS,GAAG,QAAQ,CAAC;QACzB,QAAQ;QACR,KAAK;QACL,GAAG,UAAU,IAAI,eAAe,EAAE;KACnC,CAAC,CAAC;IAEH,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAC7C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;QACnC,gBAAgB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC9C,kBAAkB,GAAG,SAAS,CAAC;IACjC,CAAC;IAED,kEAAkE;IAClE,sEAAsE;IACtE,mDAAmD;IACnD,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAErD,OAAO;QACL,MAAM;QACN,eAAe;QACf,UAAU;QACV,cAAc;QACd,SAAS;QACT,kBAAkB;QAClB,gBAAgB,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC7D,uBAAuB,EAAE,SAAS,KAAK,kBAAkB;QACzD,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;YACL,eAAe,EAAE,gBAAgB;YACjC,UAAU,EAAE,WAAW;YACvB,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;YAC3C,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC;QAC5B,QAAQ;QACR,QAAQ;QACR,GAAG,WAAW,IAAI,gBAAgB,EAAE;KACrC,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,QAAQ,CAAC;QACjC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,gBAAgB;KACjB,CAAC,CAAC;IAEH,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,kBAAkB,GAAG,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,eAAe,EAAE,CAAC,CAAC;IAEtE,OAAO;QACL,eAAe,EAAE,gBAAgB;QACjC,UAAU,EAAE,WAAW;QACvB,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,4EAA4E;AAC5E,mFAAmF;AACnF,4EAA4E;AAC5E,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,qEAAqE;AACrE,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,wBAAwB;AACxB,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;AAExC,kFAAkF;AAClF,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,0EAA0E;IAC1E,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,sDAAsD;IACtD,OAAO,OAAO,KAAK,gBAAgB,WAAW,GAAG,IAAI,OAAO,KAAK,iBAAiB,WAAW,IAAI,CAAC;AACpG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClG,SAAS,CAAC,oCAAoC;QAChD,CAAC;QACD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,YAAY,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,YAAY,GAAG,KAAK,CAAC,CAAC,iCAAiC;;gBAC/E,SAAS,CAAC,sDAAsD;QACvE,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAoB,EAAE,UAAkB;IAClE,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IAErC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,UAAU,GACd,UAAU,CAAC,UAAU,CAAC;YACtB,oBAAoB,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9F,OAAO;YACL,yBAAyB,EAAE,UAAU;YACrC,eAAe,EAAE,IAAI;YACrB,oBAAoB,EAAE,IAAI;YAC1B,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;YACvC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,GAAG,KAAK,CAAC;IACtC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,yBAAyB,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAExF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE/C,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACtG,CAAC"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/install/codex.ts"],"names":[],"mappings":"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"}
|
package/dist/install/cursor.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface ConnectCursorReport {
|
|
|
19
19
|
export interface DisconnectCursorReport {
|
|
20
20
|
readonly action: "disabled" | "not-found" | "dry-run";
|
|
21
21
|
}
|
|
22
|
-
export declare function connectCursor(registry: SourceRegistryPort, opts?: ConnectCursorOptions): Promise<ConnectCursorReport>;
|
|
23
|
-
export declare function disconnectCursor(registry: SourceRegistryPort, opts?: {
|
|
22
|
+
export declare function connectCursor(registry: SourceRegistryPort, tenantId: string, opts?: ConnectCursorOptions): Promise<ConnectCursorReport>;
|
|
23
|
+
export declare function disconnectCursor(registry: SourceRegistryPort, tenantId: string, opts?: {
|
|
24
24
|
dryRun?: boolean;
|
|
25
25
|
}): Promise<DisconnectCursorReport>;
|
package/dist/install/cursor.js
CHANGED
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { existsSync } from "node:fs";
|
|
10
10
|
import { defaultDbPath } from "../core/adapters/cursor.js";
|
|
11
|
-
export async function connectCursor(registry, opts = {}) {
|
|
11
|
+
export async function connectCursor(registry, tenantId, opts = {}) {
|
|
12
12
|
const adapterDbPath = opts.dbPath ?? defaultDbPath();
|
|
13
13
|
const adapterExists = existsSync(adapterDbPath);
|
|
14
14
|
if (opts.dryRun) {
|
|
15
15
|
return { adapterDbPath, adapterExists, action: "dry-run" };
|
|
16
16
|
}
|
|
17
|
-
const existing = await registry.getByName("Cursor");
|
|
17
|
+
const existing = await registry.getByName(tenantId, "Cursor");
|
|
18
18
|
if (existing) {
|
|
19
19
|
if (existing.enabled && existing.pathOrUrl === adapterDbPath) {
|
|
20
20
|
return { adapterDbPath, adapterExists, action: "already-active" };
|
|
21
21
|
}
|
|
22
|
-
await registry.update(existing.id, { enabled: true, pathOrUrl: adapterDbPath });
|
|
22
|
+
await registry.update(tenantId, existing.id, { enabled: true, pathOrUrl: adapterDbPath });
|
|
23
23
|
return { adapterDbPath, adapterExists, action: "enabled" };
|
|
24
24
|
}
|
|
25
|
-
await registry.insert({
|
|
25
|
+
await registry.insert(tenantId, {
|
|
26
26
|
kind: "cursor",
|
|
27
27
|
name: "Cursor",
|
|
28
28
|
pathOrUrl: adapterDbPath,
|
|
@@ -31,13 +31,13 @@ export async function connectCursor(registry, opts = {}) {
|
|
|
31
31
|
});
|
|
32
32
|
return { adapterDbPath, adapterExists, action: "created" };
|
|
33
33
|
}
|
|
34
|
-
export async function disconnectCursor(registry, opts = {}) {
|
|
34
|
+
export async function disconnectCursor(registry, tenantId, opts = {}) {
|
|
35
35
|
if (opts.dryRun)
|
|
36
36
|
return { action: "dry-run" };
|
|
37
|
-
const existing = await registry.getByName("Cursor");
|
|
37
|
+
const existing = await registry.getByName(tenantId, "Cursor");
|
|
38
38
|
if (!existing)
|
|
39
39
|
return { action: "not-found" };
|
|
40
|
-
await registry.update(existing.id, { enabled: false });
|
|
40
|
+
await registry.update(tenantId, existing.id, { enabled: false });
|
|
41
41
|
return { action: "disabled" };
|
|
42
42
|
}
|
|
43
43
|
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/install/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAkB3D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,OAA6B,EAAE;IAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/install/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAkB3D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,QAAgB,EAChB,OAA6B,EAAE;IAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;YAC7D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,aAAa;QACxB,YAAY,EAAE,YAAY;QAC1B,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA4B,EAC5B,QAAgB,EAChB,OAA6B,EAAE;IAE/B,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/install/hermes.d.ts
CHANGED
|
@@ -6,16 +6,24 @@
|
|
|
6
6
|
* preserve any comments the user has written in their config file. Round-
|
|
7
7
|
* tripping through parse+stringify would silently destroy comments.
|
|
8
8
|
*/
|
|
9
|
+
import { type McpTransport } from "./mcp-block.js";
|
|
9
10
|
export interface ConnectHermesOptions {
|
|
10
11
|
readonly nlmBinPath: string;
|
|
11
12
|
readonly nodeExecPath: string;
|
|
12
13
|
readonly dryRun?: boolean;
|
|
14
|
+
/** Defaults to "http" — see mcp-block.ts for why. */
|
|
15
|
+
readonly transport?: McpTransport;
|
|
16
|
+
readonly token?: string;
|
|
17
|
+
readonly port?: string;
|
|
13
18
|
}
|
|
14
19
|
export interface ConnectHermesReport {
|
|
15
20
|
readonly configPath: string;
|
|
16
21
|
readonly alreadyPresent: boolean;
|
|
17
22
|
readonly written: boolean;
|
|
18
23
|
readonly dryRun: boolean;
|
|
24
|
+
readonly transport: McpTransport;
|
|
25
|
+
/** True when an existing stdio block was rewritten to HTTP in place. */
|
|
26
|
+
readonly migratedFromStdio: boolean;
|
|
19
27
|
}
|
|
20
28
|
export interface DisconnectHermesReport {
|
|
21
29
|
readonly configPath: string;
|
package/dist/install/hermes.js
CHANGED
|
@@ -10,6 +10,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { dirname, join } from "node:path";
|
|
12
12
|
import { Document as YamlDocument, parseDocument as parseYamlDocument } from "yaml";
|
|
13
|
+
import { buildMcpBlock, isStdioBlock } from "./mcp-block.js";
|
|
13
14
|
export function hermesConfigPath() {
|
|
14
15
|
return process.env["NLM_HERMES_CONFIG"] ?? join(homedir(), ".hermes", "config.yaml");
|
|
15
16
|
}
|
|
@@ -27,15 +28,37 @@ export function connectHermes(opts) {
|
|
|
27
28
|
const configPath = hermesConfigPath();
|
|
28
29
|
const doc = readDocument(configPath);
|
|
29
30
|
const alreadyPresent = doc.getIn(["mcp_servers", "nlm-memory"]) !== undefined;
|
|
31
|
+
// toJS() so the shape check sees a plain object, not a YAMLMap node.
|
|
32
|
+
const existing = alreadyPresent
|
|
33
|
+
? (doc.toJS()?.mcp_servers ?? {})["nlm-memory"]
|
|
34
|
+
: undefined;
|
|
35
|
+
const transport = opts.transport ?? "http";
|
|
36
|
+
// Re-running connect on an install predating the HTTP default rewrites the
|
|
37
|
+
// stale stdio block rather than leaving it, so existing users are carried
|
|
38
|
+
// over instead of silently keeping a process-per-session config forever.
|
|
39
|
+
const migratedFromStdio = transport === "http" && alreadyPresent && isStdioBlock(existing);
|
|
40
|
+
// Built before the dry-run branch so a missing token fails the same way in
|
|
41
|
+
// both modes — a dry run that "succeeds" then errors for real is a trap.
|
|
42
|
+
const block = buildMcpBlock({
|
|
43
|
+
transport,
|
|
44
|
+
nlmBinPath: opts.nlmBinPath,
|
|
45
|
+
nodeExecPath: opts.nodeExecPath,
|
|
46
|
+
...(opts.token ? { token: opts.token } : {}),
|
|
47
|
+
...(opts.port ? { port: opts.port } : {}),
|
|
48
|
+
});
|
|
30
49
|
if (!opts.dryRun) {
|
|
31
|
-
doc.setIn(["mcp_servers", "nlm-memory"],
|
|
32
|
-
command: opts.nodeExecPath,
|
|
33
|
-
args: [opts.nlmBinPath, "mcp"],
|
|
34
|
-
});
|
|
50
|
+
doc.setIn(["mcp_servers", "nlm-memory"], block);
|
|
35
51
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
36
52
|
writeFileSync(configPath, doc.toString(), "utf8");
|
|
37
53
|
}
|
|
38
|
-
return {
|
|
54
|
+
return {
|
|
55
|
+
configPath,
|
|
56
|
+
alreadyPresent,
|
|
57
|
+
written: !opts.dryRun,
|
|
58
|
+
dryRun: opts.dryRun ?? false,
|
|
59
|
+
transport,
|
|
60
|
+
migratedFromStdio,
|
|
61
|
+
};
|
|
39
62
|
}
|
|
40
63
|
export function disconnectHermes(opts) {
|
|
41
64
|
const configPath = hermesConfigPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/install/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/install/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AA4BhF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,YAAY,EAAE,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2EAA2E,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC;IAC9E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,CAAE,GAAG,CAAC,IAAI,EAAgD,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;QAC9F,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAiB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IACzD,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,iBAAiB,GACrB,SAAS,KAAK,MAAM,IAAI,cAAc,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEnE,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,UAAU;QACV,cAAc;QACd,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;QAC5B,SAAS;QACT,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA2B;IAC1D,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5C,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nlm connect <runtime>` for runtimes NLM reads in place (OpenCode's
|
|
3
|
+
* opencode.db, Muse's session store): nothing is installed, the connect
|
|
4
|
+
* operation only registers the source row so the daemon scans it.
|
|
5
|
+
*/
|
|
6
|
+
import type { SourceKind, SourceRegistryPort } from "../core/sources/source-registry.js";
|
|
7
|
+
export interface LocalSourceSpec {
|
|
8
|
+
readonly kind: SourceKind;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly runtimeLabel: string;
|
|
11
|
+
readonly path: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ConnectLocalSourceReport {
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly exists: boolean;
|
|
16
|
+
readonly action: "created" | "enabled" | "already-active" | "dry-run";
|
|
17
|
+
}
|
|
18
|
+
export declare function connectLocalSource(registry: SourceRegistryPort, tenantId: string, spec: LocalSourceSpec, opts?: {
|
|
19
|
+
dryRun?: boolean;
|
|
20
|
+
}): Promise<ConnectLocalSourceReport>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nlm connect <runtime>` for runtimes NLM reads in place (OpenCode's
|
|
3
|
+
* opencode.db, Muse's session store): nothing is installed, the connect
|
|
4
|
+
* operation only registers the source row so the daemon scans it.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
export async function connectLocalSource(registry, tenantId, spec, opts = {}) {
|
|
8
|
+
const exists = existsSync(spec.path);
|
|
9
|
+
if (opts.dryRun)
|
|
10
|
+
return { path: spec.path, exists, action: "dry-run" };
|
|
11
|
+
const existing = await registry.getByName(tenantId, spec.name);
|
|
12
|
+
if (existing) {
|
|
13
|
+
if (existing.enabled && existing.pathOrUrl === spec.path) {
|
|
14
|
+
return { path: spec.path, exists, action: "already-active" };
|
|
15
|
+
}
|
|
16
|
+
await registry.update(tenantId, existing.id, { enabled: true, pathOrUrl: spec.path });
|
|
17
|
+
return { path: spec.path, exists, action: "enabled" };
|
|
18
|
+
}
|
|
19
|
+
await registry.insert(tenantId, {
|
|
20
|
+
kind: spec.kind,
|
|
21
|
+
name: spec.name,
|
|
22
|
+
pathOrUrl: spec.path,
|
|
23
|
+
runtimeLabel: spec.runtimeLabel,
|
|
24
|
+
enabled: exists,
|
|
25
|
+
});
|
|
26
|
+
return { path: spec.path, exists, action: "created" };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=local-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-source.js","sourceRoot":"","sources":["../../src/install/local-source.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgBrC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAA4B,EAC5B,QAAgB,EAChB,IAAqB,EACrB,OAA6B,EAAE;IAE/B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAEvE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACzD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the MCP server block every runtime installer
|
|
3
|
+
* writes. One definition here, reused by claude-code / hermes / any future
|
|
4
|
+
* surface, so a new adapter cannot silently ship a different shape.
|
|
5
|
+
*
|
|
6
|
+
* HTTP is the default transport. The daemon mounts the full MCP surface at
|
|
7
|
+
* POST /mcp (src/http/app.ts), stateless — a fresh transport and server per
|
|
8
|
+
* request, with the team resolved from the bearer token. That means one shared
|
|
9
|
+
* process serves every session, and the corpus is reached over the network
|
|
10
|
+
* rather than by each client opening the SQLite file directly.
|
|
11
|
+
*
|
|
12
|
+
* Stdio remains available via `--stdio`. Its one real advantage is that it
|
|
13
|
+
* builds its own stack and therefore works with the daemon stopped; everything
|
|
14
|
+
* else about it is worse (a process per session, N independent readers of the
|
|
15
|
+
* same database, and no multi-tenancy — the stdio path is pinned to
|
|
16
|
+
* DEFAULT_TEAM_ID while the HTTP path resolves the team from the token).
|
|
17
|
+
*/
|
|
18
|
+
export type McpTransport = "http" | "stdio";
|
|
19
|
+
/**
|
|
20
|
+
* The env var every runtime reads the bearer token from. Runtimes that support
|
|
21
|
+
* env indirection (Codex `bearer_token_env_var`, pi `bearerTokenEnv`) get the
|
|
22
|
+
* name and never see the secret; the token only lands in a config file on
|
|
23
|
+
* runtimes with no such option, which today means Claude Code's ~/.mcp.json.
|
|
24
|
+
*/
|
|
25
|
+
export declare const TOKEN_ENV_VAR = "NLM_MCP_TOKEN";
|
|
26
|
+
export interface McpBlockOptions {
|
|
27
|
+
readonly transport: McpTransport;
|
|
28
|
+
/** Required for stdio. Path to the nlm entrypoint. */
|
|
29
|
+
readonly nlmBinPath?: string;
|
|
30
|
+
/** Required for stdio. Node executable that runs it. */
|
|
31
|
+
readonly nodeExecPath?: string;
|
|
32
|
+
/** Bearer token for the HTTP transport. Falls back to NLM_MCP_TOKEN. */
|
|
33
|
+
readonly token?: string;
|
|
34
|
+
/** Daemon port. Falls back to NLM_PORT, then the shared default. */
|
|
35
|
+
readonly port?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface HttpMcpBlock {
|
|
38
|
+
readonly type: "http";
|
|
39
|
+
readonly url: string;
|
|
40
|
+
readonly headers: Record<string, string>;
|
|
41
|
+
}
|
|
42
|
+
export interface StdioMcpBlock {
|
|
43
|
+
readonly command: string;
|
|
44
|
+
readonly args: ReadonlyArray<string>;
|
|
45
|
+
}
|
|
46
|
+
export type McpBlock = HttpMcpBlock | StdioMcpBlock;
|
|
47
|
+
export declare function mcpEndpointUrl(port?: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Build the block for one runtime. Throws on a missing prerequisite rather
|
|
50
|
+
* than emitting a config that would fail at runtime — a connect command that
|
|
51
|
+
* writes a broken block is worse than one that refuses.
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildMcpBlock(opts: McpBlockOptions): McpBlock;
|
|
54
|
+
/**
|
|
55
|
+
* Codex (~/.codex/config.toml) — reads the token from an env var, so nothing
|
|
56
|
+
* secret is written to disk. Emitted as TOML text because the installer
|
|
57
|
+
* manages a sentinel-bracketed region rather than parsing the file.
|
|
58
|
+
*/
|
|
59
|
+
export declare function codexMcpToml(opts?: {
|
|
60
|
+
transport: McpTransport;
|
|
61
|
+
port?: string;
|
|
62
|
+
}): string;
|
|
63
|
+
/**
|
|
64
|
+
* pi (~/.pi/agent/mcp.json, read by pi-mcp-adapter) — also supports env
|
|
65
|
+
* indirection via `bearerTokenEnv`. `auth: "bearer"` is set explicitly
|
|
66
|
+
* because the adapter auto-detects OAuth when a url is present and auth is
|
|
67
|
+
* unspecified, which would try to register an OAuth client against a daemon
|
|
68
|
+
* that has none.
|
|
69
|
+
*/
|
|
70
|
+
export declare function piMcpEntry(opts: {
|
|
71
|
+
transport: McpTransport;
|
|
72
|
+
nlmBinPath?: string;
|
|
73
|
+
nodeExecPath?: string;
|
|
74
|
+
port?: string;
|
|
75
|
+
}): Record<string, unknown>;
|
|
76
|
+
/** True when an existing config block is the legacy stdio shape. */
|
|
77
|
+
export declare function isStdioBlock(block: unknown): boolean;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the MCP server block every runtime installer
|
|
3
|
+
* writes. One definition here, reused by claude-code / hermes / any future
|
|
4
|
+
* surface, so a new adapter cannot silently ship a different shape.
|
|
5
|
+
*
|
|
6
|
+
* HTTP is the default transport. The daemon mounts the full MCP surface at
|
|
7
|
+
* POST /mcp (src/http/app.ts), stateless — a fresh transport and server per
|
|
8
|
+
* request, with the team resolved from the bearer token. That means one shared
|
|
9
|
+
* process serves every session, and the corpus is reached over the network
|
|
10
|
+
* rather than by each client opening the SQLite file directly.
|
|
11
|
+
*
|
|
12
|
+
* Stdio remains available via `--stdio`. Its one real advantage is that it
|
|
13
|
+
* builds its own stack and therefore works with the daemon stopped; everything
|
|
14
|
+
* else about it is worse (a process per session, N independent readers of the
|
|
15
|
+
* same database, and no multi-tenancy — the stdio path is pinned to
|
|
16
|
+
* DEFAULT_TEAM_ID while the HTTP path resolves the team from the token).
|
|
17
|
+
*/
|
|
18
|
+
import { DEFAULT_NLM_PORT } from "../shared/net.js";
|
|
19
|
+
/**
|
|
20
|
+
* The env var every runtime reads the bearer token from. Runtimes that support
|
|
21
|
+
* env indirection (Codex `bearer_token_env_var`, pi `bearerTokenEnv`) get the
|
|
22
|
+
* name and never see the secret; the token only lands in a config file on
|
|
23
|
+
* runtimes with no such option, which today means Claude Code's ~/.mcp.json.
|
|
24
|
+
*/
|
|
25
|
+
export const TOKEN_ENV_VAR = "NLM_MCP_TOKEN";
|
|
26
|
+
export function mcpEndpointUrl(port) {
|
|
27
|
+
const p = port ?? process.env["NLM_PORT"] ?? DEFAULT_NLM_PORT;
|
|
28
|
+
// 127.0.0.1 rather than localhost: Node resolves localhost to IPv6 ::1
|
|
29
|
+
// first, a measured per-connection penalty on a loopback-only daemon.
|
|
30
|
+
return `http://127.0.0.1:${p}/mcp`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build the block for one runtime. Throws on a missing prerequisite rather
|
|
34
|
+
* than emitting a config that would fail at runtime — a connect command that
|
|
35
|
+
* writes a broken block is worse than one that refuses.
|
|
36
|
+
*/
|
|
37
|
+
export function buildMcpBlock(opts) {
|
|
38
|
+
if (opts.transport === "stdio") {
|
|
39
|
+
if (!opts.nlmBinPath || !opts.nodeExecPath) {
|
|
40
|
+
throw new Error("stdio transport requires nlmBinPath and nodeExecPath");
|
|
41
|
+
}
|
|
42
|
+
return { command: opts.nodeExecPath, args: [opts.nlmBinPath, "mcp"] };
|
|
43
|
+
}
|
|
44
|
+
const token = opts.token ?? process.env["NLM_MCP_TOKEN"];
|
|
45
|
+
if (!token) {
|
|
46
|
+
throw new Error("NLM_MCP_TOKEN is not set — the /mcp endpoint requires a bearer token. " +
|
|
47
|
+
"Run `nlm setup` to generate one, or connect with --stdio.");
|
|
48
|
+
}
|
|
49
|
+
// The token is written literally: MCP config files do not expand ${VAR},
|
|
50
|
+
// so a placeholder would reach the client as the literal string.
|
|
51
|
+
return {
|
|
52
|
+
type: "http",
|
|
53
|
+
url: mcpEndpointUrl(opts.port),
|
|
54
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Codex (~/.codex/config.toml) — reads the token from an env var, so nothing
|
|
59
|
+
* secret is written to disk. Emitted as TOML text because the installer
|
|
60
|
+
* manages a sentinel-bracketed region rather than parsing the file.
|
|
61
|
+
*/
|
|
62
|
+
export function codexMcpToml(opts = { transport: "http" }) {
|
|
63
|
+
if (opts.transport === "stdio") {
|
|
64
|
+
return `[mcp_servers.nlm-memory]\ncommand = "nlm"\nargs = ["mcp"]\n`;
|
|
65
|
+
}
|
|
66
|
+
return (`[mcp_servers.nlm-memory]\n` +
|
|
67
|
+
`url = "${mcpEndpointUrl(opts.port)}"\n` +
|
|
68
|
+
`bearer_token_env_var = "${TOKEN_ENV_VAR}"\n`);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* pi (~/.pi/agent/mcp.json, read by pi-mcp-adapter) — also supports env
|
|
72
|
+
* indirection via `bearerTokenEnv`. `auth: "bearer"` is set explicitly
|
|
73
|
+
* because the adapter auto-detects OAuth when a url is present and auth is
|
|
74
|
+
* unspecified, which would try to register an OAuth client against a daemon
|
|
75
|
+
* that has none.
|
|
76
|
+
*/
|
|
77
|
+
export function piMcpEntry(opts) {
|
|
78
|
+
if (opts.transport === "stdio") {
|
|
79
|
+
if (!opts.nlmBinPath || !opts.nodeExecPath) {
|
|
80
|
+
throw new Error("stdio transport requires nlmBinPath and nodeExecPath");
|
|
81
|
+
}
|
|
82
|
+
return { type: "stdio", command: opts.nodeExecPath, args: [opts.nlmBinPath, "mcp"] };
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
url: mcpEndpointUrl(opts.port),
|
|
86
|
+
auth: "bearer",
|
|
87
|
+
bearerTokenEnv: TOKEN_ENV_VAR,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** True when an existing config block is the legacy stdio shape. */
|
|
91
|
+
export function isStdioBlock(block) {
|
|
92
|
+
if (typeof block !== "object" || block === null)
|
|
93
|
+
return false;
|
|
94
|
+
const b = block;
|
|
95
|
+
if (b["type"] === "http" || typeof b["url"] === "string")
|
|
96
|
+
return false;
|
|
97
|
+
return typeof b["command"] === "string";
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=mcp-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-block.js","sourceRoot":"","sources":["../../src/install/mcp-block.ts"],"names":[],"mappings":"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"}
|