mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-04 15:34:39 +00:00
useComposers(selector) in any plugin component and composers(selector) on every command context return the composer of a running agent, named by id or by focus, whether or not its tab is open. A running agent now has one store-backed composer model apart from any mounted tab. The mounted composer plugs its cursor-aware insert in while mounted; otherwise insertText and setPrompt write the agent's saved prompt. model and thinking resolve through the provider catalog with the picker's own function, so a read equals what the picker shows. The host reads one ComposerModel from context and no longer knows whether it is in an agent, a draft or New workspace. The daemon rejects an unlisted model or thinking option for a running agent, replacing the app-side guard.
Composer controls
Install this directory as a plugin and open the agent, draft, or New workspace composer. Four controls appear beside the model and thinking controls.
| Control | Component | What it does |
|---|---|---|
| Context length | Select |
Saves composer-controls.contextLength in the agent's metadata. |
| Needs review | Toggle |
Sets or clears composer-controls.needsReview in the agent's metadata. |
| Plan first | Toggle |
Sets the provider option plan_mode with composer.setOptions; enabled for Codex only. |
| Insert checklist | Action |
Inserts a task list at the cursor through composer.insertText. |
Each component calls useComposer() and uses the same commands in every composer. Paseo draws the
controls inline when the composer has room and as rows in the composer's overflow sheet when it
does not, including on a phone.
Reaching a composer from outside it
Two more contributions use a composer without sitting in one. Both name the agent instead of reading the composer they are mounted in, and neither needs the agent's tab to be open.
| Contribution | What it does |
|---|---|
| Composer tools (Explorer panel) | useComposers({ focused: true }) inserts the checklist into the focused agent's prompt. |
| Mark for review (Command Center) | composers({ agentId }) sets the same needsReview metadata as the toggle, for the agent you selected. |
client/controls.tsx holds the four composer components, client/panel.tsx the panel, and index.client.tsx registers everything.