The extension loader emits "Extension does not export a valid factory function" for shared libraries like cmux that live in the extensions/ directory but are not extensions. Previous fixes (#1537, #1545) added pi manifest opt-out checks in the three discovery layers, but a defense-in-depth gap remained: if any discovery path fails to filter a library, loadExtension() reports it as a broken extension. Add isNonExtensionLibrary() check in loadExtension() itself. When a module does not export a factory function, the loader now checks the nearest package.json for a "pi" manifest with no declared extensions before reporting an error. Libraries with "pi": {} are silently skipped instead of producing a spurious error on every startup. Fixes #1709 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cli | ||
| core | ||
| modes | ||
| resources/extensions/memory | ||
| tests | ||
| utils | ||
| cli.ts | ||
| config.ts | ||
| index.ts | ||
| main.ts | ||
| migrations.ts | ||