mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-02 22:52:58 +00:00
A provider plugin reports `controls` and the `providerOptions` it runs in `session.config`, and receives running-session changes as `session.configure` `changes.providerOptions` (null returns a key to its default), under the same apply-or-throw contract as built-in providers. A control may declare a `defaultValue`; a value a plugin reports at that default for a key nobody set stays unset instead of being pinned to the agent. A plugin that still reports `settings` keeps working: the daemon reads each setting as a control plus an option and sends changes in both shapes (COMPAT(plugin-provider-settings)). The app resolves a control's icon as a Lucide name when it is not one of the built-in kebab-case names, so a plugin's icon shows live and in drafts. Public docs and the provider-direct example use only `providerOptions` and controls; the migration doc gains the rows.
Direct provider example
This plugin implements ProviderRegistration directly. It demonstrates connection negotiation,
catalog and session listing, session creation, prompt and command disposition, option controls
with icons (controls and providerOptions),
persistence and replay, archive actions, and an ordinary child session.
The provider emits versioned provider-result timeline items for its root and child sessions.
index.client.tsx registers the Zod schema and React Native renderer for those items. The server
and client share only the item kind and schema under shared/.
The provider receives Paseo host tools through config.mcpServers; it does not receive a second
callback tool API.