Skip to content

Carry provider extension UI through the bridge, daemon, server, and app - #2446

Open
SawyerHood wants to merge 1 commit into
bb/garden-5-thread-reloadfrom
bb/garden-6-provider-extension-plumbing
Open

Carry provider extension UI through the bridge, daemon, server, and app#2446
SawyerHood wants to merge 1 commit into
bb/garden-5-thread-reloadfrom
bb/garden-6-provider-extension-plumbing

Conversation

@SawyerHood

@SawyerHood SawyerHood commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Human comments

What was wrong

A provider plugin's extensions (pi's ctx.ui) had no generic path into bb: no thread-scoped questions outside a turn, no way to cancel them, no persisted per-thread extension state with app-rendered actions, no bridge-listed slash commands, and no plugin-to-bridge RPC.

What changed (no Pi code in this layer)

  • Bridge protocol: interaction/request may carry turnId: null + experimental_scope: "thread"; interaction/cancel notification; command/list; provider/custom; extension/action (packages/provider-bridge-protocol, packages/agent-runtime).
  • User questions: experimental_responseMode: "verbatim", experimental_placeholder, experimental_prefill, answers with experimental_verbatimText; USER_QUESTION_MAX_OPTIONS 4 → 100 (packages/domain/src/pending-interactions.ts). App and mobile question forms honor verbatim mode.
  • Daemon: host.list_commands merges the bridge's command/list (with diagnostics); provider.custom_call; thread.extension-state.action; per-interaction abort registry.
  • Server: persists extension.state snapshots (thread/extensionState/updated, superseded-event pruning), exposes extensionStates on the timeline, POST …/extension-state/action; bb.providers.experimental_client / experimental_modelsChanged (per-host model cache invalidation); PluginSettingsSectionProps.experimental_hostId.
  • App: app.slots.experimental_providerExtensionState renders a provider's state kinds above/below the composer.
  • Wire change: HOST_DAEMON_PROTOCOL_VERSION 171 → 172. docs/provider-bridge-protocol.md and docs/api_to_audit.md updated.

Prerequisite: #2445 (shares the protocol header and routes/threads/actions.ts).

Known gaps, deliberate: dialogs are thread-scoped even mid-turn; cancel is thread-wide; no runtime-level test for interaction/cancel wiring.

How you verified

turbo run typecheck; turbo run test for @bb/agent-runtime, @bb/provider-bridge-protocol, @bb/host-daemon, @bb/server (interactions, extension-state action, project commands, model cache), @bb/app, @bb/mobile, @bb/db, @bb/domain, @bb/thread-view, @get-bb/plugin-sdk, bb-plugin-provider-codex, @bb/host-daemon-contract.

Fixes: none (upstream stack split).

AGENT GENERATED

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant