v0.7.0
Minor Changes
-
6d03cf5: Add connectors extension and restructure shared config.
- Connectors: new extension that discovers MCP tools from Aperture's
/v1/mcpendpoint and registers them with Pi. Splits tools into pinned (first-class Pi tools) and proxied (reached through discovery meta-tools). - Connectors config:
connectors.enabledmaster switch (defaultfalse),connectors.pinnedToolsstored as{ connectorId; toolName }objects, andconnectors.discoveryToolstoggle (defaulttrue) for the list / search / describe / call meta-tools. - Resource proxy tools (
connector_resource_search/connector_resource_describe/connector_resource_serve) for browsing gateway resources. - Connector UI redesign with
@aliou/pi-utils-uicomponents and Markdown rendering. - Settings: new Connectors tab with pinned-tools submenu driven by
FilterableChecklist, reading live gateway tool state. - Config: extract shared config, types, and sync bus to
src/shared/; add JSON Schema generation andschema.json; parse Aperture provider config as hujson so commented gateway configs work in settings. - API: Typebox schemas with response validation, live integration tests, and API-verified connector IDs.
- Feature request/register event dispatching between aperture and connectors extensions.
- Settings: cancel in-flight Aperture fetches when the user presses Esc on an async-loading submenu (
AsyncEditor), instead of letting them run to the 5s timeout in the background. The abort signal is threaded throughApertureClient,createMcpSession, andlistTools, and late resolves/rejects on a dismissed submenu are ignored so a slow gateway can no longer leave the settings panel unresponsive or silently mutate the draft.
- Connectors: new extension that discovers MCP tools from Aperture's
Patch Changes
-
8bb0984: Tolerate the admin-only
/aperture/configendpoint so non-admin Aperture grants can use the extension.ApertureClient._fetchnow throws anApertureHttpErrorthat carries the HTTP status, so callers can tolerate specific responses.providerConfigInfos()(andproviderBaseUrls()) return an empty map on HTTP 403 instead of throwing./aperture/configrequiresrole:adminand is the only endpoint a non-admin grant cannot access; everything else (/api/providers,/api/connectors,/v1/mcp, model calls) returns 200 for non-admin grants.- Proxy provider matching already falls back to IDs via
/api/providerswhen provider config info is empty, so onboarding and the proxy settings submenu keep working for non-admin users. Admin users keep the richer base-URL matching. Dedicated mode and connectors never read/aperture/configand are unaffected. - Other non-403 errors still propagate.