{"_id":"@aidex/connections","_rev":"8-ff87fdba16dbe1b9ef08be799be9688f","name":"@aidex/connections","dist-tags":{"latest":"1.2.0"},"versions":{"0.2.1-alpha":{"name":"@aidex/connections","version":"0.2.1-alpha","keywords":["ai","connection","provider","configuration"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/connections@0.2.1-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"0eb57b1b4c8eb1c3be20dde27c9a79113381e090","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-0.2.1-alpha.tgz","fileCount":26,"integrity":"sha512-7K2opXdNhSHGY4MT1/H++CbXC2cafnGVWYkYlo0gK81KFrXHEzLcgcvuamrguY67uR4aTYRzOIL6zh4DOP2CIA==","signatures":[{"sig":"MEUCIDpHd9H0bRWjVJrPltXf0XbrIaRAF6pAd6aZnuuUwoJeAiEA1CY/SSbQf6aqojyKtdH/6OB0zYnmsQx5LFGdOtwliTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60914},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"deprecated":"Broken: built against a stale @aidex/core missing the AidexError export, throws on require/import. Use 0.2.2-alpha or later.","repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.2.1-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_0.2.1-alpha_1786119369279_0.41483154206583484","host":"s3://npm-registry-packages-npm-production"}},"0.2.2-alpha":{"name":"@aidex/connections","version":"0.2.2-alpha","keywords":["ai","connection","provider","configuration"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/connections@0.2.2-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"2dae49666f4bc19d500904e126f455b0311bbdfe","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-0.2.2-alpha.tgz","fileCount":26,"integrity":"sha512-9+3Lbfs+Sk6bBrkAFYwds4URRphFZIsVCMHpn0wC7leQWISyiR6GF218skBGjfUrIQTxeddFg0TFRhjx+BX5Vw==","signatures":[{"sig":"MEUCIQCyLkJ3y7Mb3MUGyBGeiwVewTOa4UBSP6hkK6AWxM+edQIgTJtztueqkshgNF8ORWhoylLuz/RQcsyx6Pc8j4mp9gM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60914},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.2.2-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_0.2.2-alpha_1786121013395_0.4742403087252274","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-alpha":{"name":"@aidex/connections","version":"0.3.0-alpha","keywords":["ai","connection","provider","configuration"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/connections@0.3.0-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"985882bb0bc446163085514683a3f41bd6354b18","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-0.3.0-alpha.tgz","fileCount":9,"integrity":"sha512-SkW3idd/FXAIYqy0Mxc5JuhUMDC5nfC+YzX6M/GZV8BfpIh/1pMxI8SMotO24r3bHO7u58b/NX7mk0gQTo5kTQ==","signatures":[{"sig":"MEUCIQDWvJSAWkP6zrAThO7mn/MMmnGG23FoDlmY6TXwy9mCUgIgZLX8HSFQ9XT6Nm+t+dOAGMWL3706Z/s1h1Umf0SJJkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51524},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.3.0-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_0.3.0-alpha_1786213581201_0.7867480952364505","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aidex/connections","version":"1.0.0","keywords":["ai","connection","provider","configuration"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/connections@1.0.0","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"027d4ce44748a932edc66ed66324574897cca019","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-1.0.0.tgz","fileCount":9,"integrity":"sha512-C2traDJJ6G+RX8B4Y8BOagXTWsTlopqzT5uJAtGEt07pWOTznCQLUZmJKVsCtD28/6IAaxFlV1U1zsjms2eApQ==","signatures":[{"sig":"MEQCICJKg5R3ZQAn8FXAs6LcqqWeu3X+tked2DRsnndT7ZkBAiARBeM8vUSMvSBTPa9zeFyqWYugRIviaShYDyroZvHvfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51512},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_1.0.0_1786431550602_0.9215693857638705","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aidex/connections","version":"1.0.1","keywords":["ai","connection","provider","configuration"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/connections@1.0.1","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"a9afcd86648661ebfc5143889feb0f87766e062c","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-1.0.1.tgz","fileCount":9,"integrity":"sha512-ODeEur5OUMMavy9mlzS2AiWpbByHSUAMbsCSCGu/VnXzrK0eNxgJXhyvtvDsjdr6FgqFemy88/BNVwYh20NGvA==","signatures":[{"sig":"MEYCIQCQBBBxWsf6t+F5IHw7qCUY1hUUVZX3GMN0LdsNdFU1kAIhAPGsYZVxavfZEHDnW1NAo/gjLnlpDKWbb3dyYKBoE+Nt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51512},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_1.0.1_1786432190461_0.05920821296704193","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aidex/connections","version":"1.1.0","keywords":["ai","connection","provider","configuration"],"author":{"name":"Sudheer Babu","email":"isudheerbabu.dev@gmail.com"},"license":"MIT","_id":"@aidex/connections@1.1.0","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"f4b9a895d613b5c37281834b9ace07d088926d44","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-1.1.0.tgz","fileCount":30,"integrity":"sha512-QkPx97K4qJbQtHIfXKRd74ttQSE//y3a3KjisPyRf04MOOYZwdddr7+n35Wk26tWx86X+Sjtj7JI4f0KWpxohA==","signatures":[{"sig":"MEYCIQD1YILE5T2c9nZf3l1rhg3AERKUjWd2bJXcqF2nGdKvfQIhAMJtcZcKLnAF6aveUrTXfAhnYdZqpN25Eyxm+Hh7NUhT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101773},"main":"./dist/index.cjs","type":"module","_from":"file:aidex-connections-1.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0","pnpm":">=9"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"_resolved":"/tmp/ad41a4603a3f992967f49243d4c544b6/aidex-connections-1.1.0.tgz","_integrity":"sha512-QkPx97K4qJbQtHIfXKRd74ttQSE//y3a3KjisPyRf04MOOYZwdddr7+n35Wk26tWx86X+Sjtj7JI4f0KWpxohA==","repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/connections"},"_npmVersion":"10.9.8","description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances, with optional persistence and health-check support.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@aidex/core":"1.1.0","@aidex/providers":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connections_1.1.0_1787417519686_0.21381594920456615","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aidex/connections","version":"1.2.0","description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances, with optional persistence and health-check support.","keywords":["ai","connection","provider","configuration"],"license":"MIT","author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","repository":{"type":"git","url":"git+https://github.com/getaidex/aidex.git","directory":"packages/connections"},"bugs":{"url":"https://github.com/getaidex/aidex/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"publishConfig":{"access":"public"},"dependencies":{"@aidex/core":"1.2.0","@aidex/providers":"1.2.0"},"engines":{"node":">=20.19.0","pnpm":">=9"},"scripts":{"build":"tsc -b && tsup","typecheck":"tsc -b --noEmit"},"_nodeVersion":"24.13.0","_id":"@aidex/connections@1.2.0","dist":{"integrity":"sha512-+/r51qV7nhKcYIV1Q1zItOV0gyRDV+K5EpJx2fplYOD3kJrap6+uTOdSwd8XdfzOs1octt/cHGRo6YhNTDdi6Q==","shasum":"cbc3efdc3e56ca21c4d20367120fa7ddfa27dabf","tarball":"https://registry.npmjs.org/@aidex/connections/-/connections-1.2.0.tgz","fileCount":30,"unpackedSize":104352,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnglDr+J0hJmSw8WrRI4fOQAUEXOu/A7ilLMbXS9eATAIhAOtRDEDiTbBiXK0XbcJTyWkcpPxTF1x8JtCbZvPUipFV"}]},"_npmUser":{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"},"directories":{},"maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/connections_1.2.0_1787491709081_0.739572191827427"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-07T16:16:09.053Z","modified":"2026-08-23T13:28:29.414Z","0.2.1-alpha":"2026-08-07T16:16:09.439Z","0.2.2-alpha":"2026-08-07T16:43:33.551Z","0.3.0-alpha":"2026-08-08T18:26:21.365Z","1.0.0":"2026-08-11T06:59:10.819Z","1.0.1":"2026-08-11T07:09:50.603Z","1.1.0":"2026-08-22T16:51:59.838Z","1.2.0":"2026-08-23T13:28:29.223Z"},"bugs":{"url":"https://github.com/getaidex/aidex/issues"},"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","homepage":"https://github.com/getaidex/aidex/tree/main/packages/connections#readme","keywords":["ai","connection","provider","configuration"],"repository":{"type":"git","url":"git+https://github.com/getaidex/aidex.git","directory":"packages/connections"},"description":"Aidex Connection Manager — framework-agnostic management of named AI-provider connection configurations, resolved into Provider instances, with optional persistence and health-check support.","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"readme":"# @aidex/connections\n\n## Installation\n\n```sh\npnpm add @aidex/connections @aidex/providers\n```\n\n```sh\nnpm install @aidex/connections @aidex/providers\n```\n\nA framework-agnostic manager for named AI-provider **connection**\nconfigurations — the identity/config/enabled-state an application needs to\nuse a provider, kept separate from `@aidex/core`'s `Provider` interface,\nwhich handles actual model execution. `ConnectionManager` lets an\napplication register, look up, list, update, enable/disable, and remove\nconnections, then `resolve()` one into a real `Provider` instance to hand to\n`AIBuilder`/`Aidex` itself.\n\n## Why a separate package, not `packages/core`\n\n`docs/roadmap/roadmap.md`'s \"What deliberately stays out, and why\" section\nexplicitly rejects a kernel-level provider registry / runtime provider\nswitching: `AidexConfig.provider` is one `Provider` per `Aidex` instance, by\ndesign (see [ADR-001](../../docs/decisions/ADR-001-kernel-philosophy.md)).\nThis package doesn't change that — the kernel still only ever sees one\n`Provider` per `Aidex` instance. \"Multiple connections\" lives entirely at\nthis application-composition layer, the same relationship `@aidex/engines`\nalready has with the kernel: its own package, depending on `@aidex/core`\nonly, composed by the application, never imported by `@aidex/core` itself.\n\n## Contents\n\n- **`manager/ConnectionManager`** — `register()`, `get()`, `list()`, `has()`,\n  `update()`, `remove()`, `enable()`, `disable()`, `registerProviderFactory()`,\n  `resolve()`, plus the optional store-backed `load()`/`persist()`/\n  `persistRemoval()` — see \"Persistence\" below. Duplicate registrations throw\n  `@aidex/core`'s own `DuplicateRegistrationError` (reused, not reimplemented)\n  — mirrors `EngineRegistry`'s own convention for the same case.\n- **`types/Connection`** — what `get()`/`list()` return: `{ id, providerType,\n  enabled, metadata? }`. Deliberately has **no `config` field** — see\n  Secrets below.\n- **`types/RegisterConnectionInput`** — what `register()` accepts, including\n  the opaque, provider-shaped `config` (may contain secrets).\n- **`types/ProviderFactory`** — `(config) => Provider`, registered per\n  `providerType` via `registerProviderFactory()`. This package has zero\n  dependency on `@aidex/providers` and never imports a concrete `Provider`\n  implementation — the application supplies the factory.\n- **`errors/*`** — `ConnectionNotFoundError`, `DisabledConnectionError`,\n  `InvalidConnectionConfigError`, `ProviderFactoryNotFoundError`, all\n  extending `@aidex/core`'s `AidexError` and accepting an optional trailing\n  `executionId` so an operation inside an `Aidex.execute()` flow can\n  correlate its error with the rest of that execution.\n- **`store/ConnectionStore`** — the pluggable, async persistence-backend\n  interface (`get()`/`list()`/`save()`/`remove()`) a `ConnectionManager` can\n  optionally be configured with. `InMemoryConnectionStore` is the only\n  implementation this package ships — process-local, no real persistence —\n  for testing store injection end to end and as the shape a real\n  Firestore/Redis/Postgres-backed store should match.\n\n## Secrets\n\n`config` — the only place a connection's secrets ever live — is stored\ninternally by `ConnectionManager` and reachable through exactly one method:\n`resolve()`, which hands it to the matching registered `ProviderFactory` and\nreturns the resulting `Provider`. `get()`/`list()`/every thrown error return\n`Connection`, a type that structurally has no `config` field at all. This is\na guarantee by construction, not a field-name-based redaction pass applied\nafter the fact.\n\n## Usage\n\n```ts\nimport { ConnectionManager } from '@aidex/connections';\nimport { GeminiProvider } from '@aidex/providers';\n\nconst manager = new ConnectionManager();\n\nmanager.registerProviderFactory('gemini', (config) => new GeminiProvider(config));\n\nmanager.register({\n  id: 'primary',\n  providerType: 'gemini',\n  config: { apiKey: process.env.GEMINI_API_KEY },\n});\n\nconst provider = manager.resolve('primary');\n// Hand `provider` to AIBuilder/Aidex exactly as any other Provider:\n// new AIBuilder().provider(provider).build();\n```\n\n## Persistence (optional)\n\n`ConnectionManager` is still fully synchronous and in-memory-only by\ndefault (see \"Secrets\" above) — persistence is opt-in, and every existing\nmethod behaves identically whether or not it's configured:\n\n```ts\nimport { ConnectionManager, InMemoryConnectionStore } from '@aidex/connections';\n\nconst store = new InMemoryConnectionStore();\nconst manager = new ConnectionManager({ store });\n\nmanager.register({ id: 'primary', providerType: 'gemini', config: { apiKey: '...' } });\nawait manager.persist('primary'); // writes the current in-memory state to the store\n\n// Elsewhere — a fresh manager sharing the same store:\nconst manager2 = new ConnectionManager({ store });\nawait manager2.load(); // hydrates in-memory state FROM the store\nmanager2.get('primary'); // { id: 'primary', providerType: 'gemini', enabled: true, metadata: undefined }\n```\n\n- **`load()`** hydrates in-memory state from the store, overwriting any\n  existing entry with the same id — the store is authoritative for a\n  `load()`. A no-op (resolves immediately) when no store is configured.\n- **`persist(id)`** writes the current in-memory state for `id` to the\n  store. Always validates `id` is registered first (throws\n  `ConnectionNotFoundError` otherwise, regardless of whether a store\n  exists) — a no-op after that check when no store is configured.\n- **`persistRemoval(id)`** removes `id` from the store only — it does\n  **not** touch in-memory state; pair it with the existing synchronous\n  `remove()` for that. Resolves `false` when no store is configured.\n- **Nothing is automatic.** `register()`/`update()`/`enable()`/`disable()`/\n  `remove()` never touch the store themselves — an application decides\n  when to call `persist()`/`persistRemoval()`, and whether to call\n  `load()` at startup.\n- **`InMemoryConnectionStore` is process-local — it does not survive a\n  restart.** A concrete persistent implementation (Firestore, Redis,\n  Postgres, ...) is application code; this package does not ship one.\n\n## Dependency direction\n\n`@aidex/connections` depends on `@aidex/core` only. It is not a dependency\nof `@aidex/sdk` — an application imports it directly and passes its\n`resolve()` output into `AIBuilder.provider()` itself.\n","readmeFilename":""}