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> |
||
|---|---|---|
| .. | ||
| native | ||
| pi-agent-core | ||
| pi-ai | ||
| pi-coding-agent | ||
| pi-tui | ||