Files
paseo/plugin-examples/provider-direct
Mohamed Boudra 389db81784 feat(plugin): provider plugins declare option controls and receive option changes
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.
2026-11-02 00:29:50 +01:00
..

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.