{"_id":"@aidex/engines","_rev":"8-1591b9b34b790177a04b64ab2f9be973","name":"@aidex/engines","dist-tags":{"latest":"1.2.0"},"versions":{"0.1.0-alpha":{"name":"@aidex/engines","version":"0.1.0-alpha","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@0.1.0-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"eb44cc7b83627ec1dc83051db0269849bd696a7c","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-0.1.0-alpha.tgz","fileCount":27,"integrity":"sha512-00EXN2k0zb3GIItSmshnfzHL19pmNnFFV8nxLIIv9AxxSjQQo+legPYdLBtDruEHORkywTmr3Zo3qMMr7TdMLw==","signatures":[{"sig":"MEYCIQCn9GERW8zs4WWmrTbCYGUCTav50aDfFUAC9+5cjq4fYgIhAIHDhb+KoFWD5ud5+mdKckRbaQWGEkn3uEDLbNuQWygA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22242},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -b","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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.1.0-alpha","@aidex/providers":"0.1.0-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_0.1.0-alpha_1785768585720_0.0288341867670181","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha":{"name":"@aidex/engines","version":"0.2.0-alpha","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@0.2.0-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"060406680dce6e0e129c070cd984b16ca2be81f8","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-0.2.0-alpha.tgz","fileCount":19,"integrity":"sha512-Xh2iRRNF/dWy9DpcJ4frGUIkjedMZykL3wVAwQDUgggMn0sLKYSdvGfU23KHJNDAKn5rxTKenKz1bigd9ee16A==","signatures":[{"sig":"MEUCIGgO5B8D8OSlGKZE77mSWOW3YkHzJRekQs2gzx1QpgVVAiEAm/ZQg82LQTV9E0DksyhkiR+wmeacw919ZNGOPsEqtHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35466},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.2.0-alpha","@aidex/providers":"0.2.0-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_0.2.0-alpha_1785772032051_0.9398079836551807","host":"s3://npm-registry-packages-npm-production"}},"0.2.1-alpha":{"name":"@aidex/engines","version":"0.2.1-alpha","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@0.2.1-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"df725d53502c72237660f049d06262d236d49b67","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-0.2.1-alpha.tgz","fileCount":20,"integrity":"sha512-FnbhWHa95z3Y/atMi70STUJvW753EjQuufvOLyhydttz6wCq7Y0i+/TEWVCjr2ub4IoyVS70U4Pei6QN8rj3Og==","signatures":[{"sig":"MEQCICJaZpCIkG54sp7ikEUzeQudwNs9FEZ66WxTrhXOtfGsAiALfhMclIBXOw3mpqxwYWXtLpjYeBPhtZ9XmWkWgNBU2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42616},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.2.1-alpha","@aidex/providers":"0.2.1-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_0.2.1-alpha_1785778144493_0.5824669337081767","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-alpha":{"name":"@aidex/engines","version":"0.3.0-alpha","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@0.3.0-alpha","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"d896eba549a9db03773e42f07c839c869091e790","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-0.3.0-alpha.tgz","fileCount":9,"integrity":"sha512-Vu3SL/4fWg8SmOUqJJ4+xqPldqdqGAMquLz7JqnSGXStkUtKSdyQKP9Nk1+SvQ4Vw3jLs4j3aADRDmasixhwEw==","signatures":[{"sig":"MEUCIQDZUApN/cnNYN0QR6R8Hf+BkMfBk0oAMW4OkQTVvC322AIgHMzK6WUYupGhooJOWOVPKNK/Zgw9jcn3DGULsVuY9kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37066},"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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"0.3.0-alpha","@aidex/providers":"0.3.0-alpha"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_0.3.0-alpha_1786213592019_0.644839252267777","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aidex/engines","version":"1.0.0","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@1.0.0","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"835cb95917bceab7ecd0a00872dc9cb904490554","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-1.0.0.tgz","fileCount":9,"integrity":"sha512-EFo9QGKXnnWrtrLa8yos2VVlOk/CZvUTAOeM1RB4qXVYmKwHh2LWzIm52kJPmU2c7kqohbVTEkrMOXxYeSr8Bw==","signatures":[{"sig":"MEUCIHmPb/W8FMnGIbouzuKpLa1fArCgUX3rrZVcc0OXFEDiAiEA11yW0PmoDtjZusnJeompF4Pp4/hhvR4fHIvSJafIX0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37048},"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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"1.0.0","@aidex/providers":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_1.0.0_1786431562182_0.07802656162536348","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aidex/engines","version":"1.0.1","keywords":["ai","engine","registry"],"author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","license":"MIT","_id":"@aidex/engines@1.0.1","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"71183ffb55b1a8ba7c80c465e3e1b59398ce8295","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-1.0.1.tgz","fileCount":9,"integrity":"sha512-5kyavRho7sqLNGUmOHyUSvC/iOgeKPqllThBzVQIKtAymSSmGpReq+Hxi90/sdL2vLOETDQo6smea48GdpnLrg==","signatures":[{"sig":"MEYCIQCGHNuXsR3Q1Xxu1CdxFPVC/ZaLvk4DHu3UZSbygEv7/AIhAP/uPSSMR3Dq577PPpLuVbXn+o/A+3VwWUeh+uzfMDv1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37048},"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/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@aidex/core":"1.0.1","@aidex/providers":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/engines_1.0.1_1786432200843_0.8347936139010699","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aidex/engines","version":"1.1.0","keywords":["ai","engine","registry"],"author":{"name":"Sudheer Babu","email":"isudheerbabu.dev@gmail.com"},"license":"MIT","_id":"@aidex/engines@1.1.0","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","bugs":{"url":"https://github.com/getaidex/aidex/issues"},"dist":{"shasum":"8037a17f80439e9097f0cda2f03f14475a8406bc","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-1.1.0.tgz","fileCount":20,"integrity":"sha512-rTcGNi0Imb4qxilpVxHvz4gUAXc5hxWDBVqR5Mu9AbM+0wpe6xjaB1OYwlLbtlTyRjtZkmGnZHvGYi+UsEHwmg==","signatures":[{"sig":"MEUCIQCm8W905i4usJDdmSRTFRAIO6E9SxxkyPQqXdkVSYvTYQIgP21pl0NN0aW5ZhB3/hnr4/C+5cLNZ1oGp8BIkRQpCgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44233},"main":"./dist/index.cjs","type":"module","_from":"file:aidex-engines-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/b5aeecae226b26c2987dc613152d9448/aidex-engines-1.1.0.tgz","_integrity":"sha512-rTcGNi0Imb4qxilpVxHvz4gUAXc5hxWDBVqR5Mu9AbM+0wpe6xjaB1OYwlLbtlTyRjtZkmGnZHvGYi+UsEHwmg==","repository":{"url":"git+https://github.com/getaidex/aidex.git","type":"git","directory":"packages/engines"},"_npmVersion":"10.9.8","description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","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/engines_1.1.0_1787417521312_0.5247647402957791","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aidex/engines","version":"1.2.0","description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","keywords":["ai","engine","registry"],"license":"MIT","author":"Sudheer Babu <isudheerbabu.dev@gmail.com>","homepage":"https://github.com/getaidex/aidex/tree/main/packages/engines#readme","repository":{"type":"git","url":"git+https://github.com/getaidex/aidex.git","directory":"packages/engines"},"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/engines@1.2.0","dist":{"integrity":"sha512-BAQcQZot0b429NFJo/65AkIXgGXOdEtiOPGa4jUEjN0YsByWt9k8q2WWs76wENx7VVaAuXgQpQ6XS4ecXXbYqg==","shasum":"86acde2fe827bb752ffe5e8b634e62728ea8c5aa","tarball":"https://registry.npmjs.org/@aidex/engines/-/engines-1.2.0.tgz","fileCount":20,"unpackedSize":44233,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7r5BhvYtS+QLBpwf1IzoR/G9pwGr0/3dWxU1ODselNAIgaNjkmI+0Qr4ytgBGFQeey2ntfH5Qesfbb639LXuly5A="}]},"_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/engines_1.2.0_1787491710580_0.056320845500278605"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T14:49:45.557Z","modified":"2026-08-23T13:28:30.886Z","0.1.0-alpha":"2026-08-03T14:49:45.856Z","0.2.0-alpha":"2026-08-03T15:47:12.241Z","0.2.1-alpha":"2026-08-03T17:29:04.926Z","0.3.0-alpha":"2026-08-08T18:26:32.174Z","1.0.0":"2026-08-11T06:59:22.335Z","1.0.1":"2026-08-11T07:10:00.976Z","1.1.0":"2026-08-22T16:52:01.476Z","1.2.0":"2026-08-23T13:28:30.721Z"},"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/engines#readme","keywords":["ai","engine","registry"],"repository":{"type":"git","url":"git+https://github.com/getaidex/aidex.git","directory":"packages/engines"},"description":"Aidex Engines — a provider-agnostic Engine contract and central EngineRegistry for registering and executing engines by id.","maintainers":[{"name":"sudheerbabu","email":"isudheerbabu.dev@gmail.com"}],"readme":"# @aidex/engines\n\n## Installation\n\n```sh\npnpm add @aidex/engines\n```\n\n```sh\nnpm install @aidex/engines\n```\n\nA central registry for registering and executing **Engines** — a\nprovider-agnostic, domain-agnostic unit of work, dispatched by `id` rather\nthan compiled in by name. Modeled directly on `@aidex/core`'s\n`Strategy`/`StrategyRegistry` pattern, but as its own standalone package: the\nfrozen kernel (`packages/core`) is never modified to support this.\n\n## Why a separate package, not `packages/core`\n\n`@aidex/core`'s `Strategy` contract (`{ name, version?, execute(request,\ncontext) }`, dispatched by `StrategyRegistry`) already covers \"family of\ninterchangeable units of work, selected by name, common interface.\" An\n`EngineRegistry` inside the kernel itself would duplicate that abstraction\nand reopen a folder name (`engine/`) the kernel's own architecture docs\nrecord as deliberately retired in favor of `kernel/`. This package exists\ninstead — application/plugin-land, exactly where `Strategy`, `Provider`, and\n`Plugin` implementations already live, never inside `packages/core`.\n\n## Contents\n\n- **`types/Engine`** — the contract: `{ id, name, description, version,\n  execute(context): Promise<TResult> }`. `context` reuses `@aidex/core`'s\n  `ExecutionContext` rather than inventing a parallel shape — real\n  integration with the existing kernel contracts, without modifying them.\n- **`registry/EngineRegistry`** — `register()`, `unregister()`, `has()`,\n  `get()`, `list()`, `execute()`. Duplicate registrations throw\n  `@aidex/core`'s own `DuplicateRegistrationError` (reused, not\n  reimplemented); dispatching to a missing id throws this package's\n  `EngineNotFoundError`.\n- **`errors/EngineNotFoundError`** — thrown by `execute()` for an\n  unregistered id. `get()`/`has()` stay plain accessors (return\n  `undefined`/`false`), matching `StrategyRegistry`'s own split between\n  silent lookup and fail-loud dispatch.\n- **`capabilities/engineSupportsProvider`** — `missingCapabilities(engine, provider)` and `engineSupportsProvider(engine, provider)`, reusing `@aidex/providers`' existing `ProviderCapability`/`CapableProvider` system to check whether a provider satisfies an engine's optional `requiredCapabilities`. A provider that doesn't implement `CapableProvider` (no `getCapabilities()`) is treated as declaring zero capabilities.\n- **`errors/UnsupportedProviderCapabilityError`** — thrown by `EngineRegistry.execute()` when the given context's provider doesn't support everything the engine's `requiredCapabilities` lists.\n\nFor engine *discovery* — listing all engines available across installed Feature Packs and their metadata — use `@aidex/catalog`'s `EngineCatalog` and `resolveCatalogEngine()`.\n\n## Provider-agnostic, domain-agnostic\n\nNothing in this package knows what any engine does — no document, print, or\napplication-specific logic anywhere. `EngineRegistry` only ever sees an\n`id` string and an object satisfying `Engine`; it has no idea whether that\nengine extracts text from a PDF, resizes an image, or does something not yet\ninvented.\n\n## Extensibility\n\nA future plugin registers a new engine purely by constructing an object\nthat satisfies `Engine` and calling `registry.register(engine)` — the\nregistry itself never needs a code change to support it (the same\nOpen-Closed discipline `StrategyRegistry` follows).\n\n## Dependency direction\n\n`@aidex/engines` depends on `@aidex/core` only (`ExecutionContext`,\n`DuplicateRegistrationError`) for runtime code. It also carries a\n**type-only** dependency on `@aidex/providers` — `ProviderCapability`,\n`ProviderCapabilities`, and `CapableProvider` are imported as types only,\nto check an engine's optional `requiredCapabilities` against a provider's\nexisting capability model without duplicating it. No runtime import of\n`@aidex/providers`, and no dependency on `@aidex/strategies`,\n`@aidex/plugins`, or any application code.\n","readmeFilename":""}