Coverage: old API to 2.0
This matrix contains 1,499 mappings across 12 old namespaces and 13 destination pages, including 47 explicit drops.
Counts by old namespace
| Old namespace | Rows | Dropped |
|---|---|---|
| app | 379 | 12 |
| bridge | 179 | 1 |
| build | 33 | 0 |
| cli | 41 | 0 |
| host | 161 | 0 |
| install | 37 | 0 |
| manifest | 41 | 1 |
| marketplace | 34 | 0 |
| registry | 115 | 1 |
| server | 407 | 22 |
| settings | 11 | 7 |
| testing | 61 | 3 |
| Total | 1499 | 47 |
app
| Old item | New home | Note |
|---|---|---|
| app.PluginAppBuilder | AppPluginApi | The app factory receives the concrete API object. |
| app.PluginAppBuilder.composer | bb.threads composer contracts | The Threads owner replaces builder composer registration. |
| app.PluginAppBuilder.contentScripts | dropped | Use an owner-declared surface or app service. |
| app.PluginAppBuilder.slots | AppPluginApi.surfaces | Typed owner surfaces replace the slot registry. |
| app.PluginAppDefinition | AppPluginFactory | The app artifact exports a tier factory. |
| app.PluginAppDefinition.__bbPluginApp | dropped | The loader verifies the artifact and does not use a branded value. |
| app.PluginAppDefinition.setup | definePlugin(factory) | The default app export is the factory result. |
| app.PluginAppSetup | AppPluginFactory | Replaced by the typed factory callback. |
| app.PluginSdkApp | AppPluginApi | Replaced by the concrete app API object. |
| app.components.ExperimentalAppPanel | @bb/layout/contracts: LayoutPanelController | The controller covers all shell panel actions. |
| app.components.ExperimentalAppPanelSurface | @bb/layout/contracts: LayoutPanelController | The nearest controller replaces kind current. |
| app.components.ExperimentalFileLocation | @bb/ui: FileLocation | Pure file-link location type. |
| app.components.ExperimentalFileOpenOptions | @bb/ui: FileOpenOptions | Pure file-link option type. |
| app.components.ExperimentalFixedTabTargetState | bb.layout.panels surface: LayoutPanelProps.target | The target keeps its sequence and value. |
| app.components.ExperimentalLiveFileTarget | @bb/ui: LiveFileTarget | Pure file-link target type. |
| app.components.ExperimentalOpenFixedTabOptions | bb.layout.panels surface: LayoutPanelOpenOptions | The panel ID and target move into one open() call. |
| app.components.ExperimentalPermissionModePickerProps | @bb/ui: PermissionModePickerProps | The stable controlled props keep provider routing. |
| app.components.ExperimentalPermissionModePickerProps.onChange | PermissionModePickerProps.onChange | The callback receives the accepted mode. |
| app.components.ExperimentalProviderModelPickerProps | @bb/ui: ProviderModelPickerProps | The stable controlled props keep provider routing. |
| app.components.ExperimentalProviderModelPickerProps.onChange | ProviderModelPickerProps.onChange | The callback receives one coherent selection. |
| app.components.ExperimentalProviderModelPickerRouting | @bb/ui: ProviderPickerRouting | The route identifies a host or environment. |
| app.components.ExperimentalProviderModelPickerValue | @bb/ui: ProviderPickerValue | The stable value keeps provider, model, reasoning, and tier. |
| app.components.Markdown | @bb/thread-ui/components: Markdown | The chat Markdown component remains available as a module export. |
| app.components.ThreadChat | @bb/thread-ui/components: ThreadChat | The exact component remains available as a module export. |
| app.components.UrlLink | @bb/ui: UrlLink | Shared semantic link export. |
| app.components.experimental_Diff | @bb/ui: Diff | Facade; bb.files owns the renderer surface. |
| app.components.experimental_FileLink | @bb/ui: FileLink | Canonical name removes the experimental prefix. |
| app.components.experimental_NewThreadComposer | @bb/thread-ui/components: NewThreadComposer | The stable export removes the experimental prefix. |
| app.components.experimental_PermissionModePicker | @bb/ui: PermissionModePicker | The stable export drops the experimental prefix. |
| app.components.experimental_ProviderModelPicker | @bb/ui: ProviderModelPicker | The stable export drops the experimental prefix. |
| app.components.experimental_SourceCode | @bb/ui: SourceCode | Facade; bb.files owns the renderer surface. |
| app.components.experimental_UrlLink | @bb/ui: experimental_UrlLink | Deprecated alias for UrlLink. |
| app.composer | bb.thread-ui.composer.actions surface and ComposerHandle | Separate contracts replace the customization bundle. |
| app.composer.ComposerCustomization | bb.thread-ui.composer.actions surface: ComposerActionContribution | Each action, menu row, or card becomes one contribution. |
| app.composer.ComposerPlusMenuItem | bb.thread-ui.composer.actions surface: plus-menu contribution | The list contribution keeps the action behavior. |
| app.composer.ComposerPlusMenuItem.run | bb.thread-ui.composer.actions surface: plus-menu contribution | The list contribution keeps the action behavior. |
| app.composer.ComposerRichTextSpec | @bb/thread-ui/components: ComposerHandle.setTextEffect() | The composer handle owns text effects. |
| app.composer.ComposerStructuredDraft | @bb/threads/contracts: ComposerDraft | The draft also carries attachments and a revision. |
| app.composer.ComposerView | bb.thread-ui.composer surface: ComposerProps | The surface props expose reactive composer state. |
| app.composer.PluginComposerApi | @bb/thread-ui/components: ComposerHandle | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.addQuote | @bb/thread-ui/components: ComposerHandle.addQuote | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.clear | @bb/thread-ui/components: ComposerHandle.clear | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.focus | @bb/thread-ui/components: ComposerHandle.focus | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.insertMention | @bb/thread-ui/components: ComposerHandle.insertMention | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.setInputLock | @bb/thread-ui/components: ComposerHandle.setInputLock | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.setText | @bb/thread-ui/components: ComposerHandle.setText | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.setTextEffect | @bb/thread-ui/components: ComposerHandle.setTextEffect | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerApi.updateText | @bb/thread-ui/components: ComposerHandle.updateText | The shared handle keeps imperative composer operations. |
| app.composer.PluginComposerMention | @bb/threads/contracts: ComposerMention | |
| app.composer.PluginComposerTextEffect | @bb/thread-ui/components: ComposerHandle.setTextEffect() | |
| app.composer.customize | bb.thread-ui.composer.actions surface | Each old bundle entry becomes one ordered contribution. |
| app.contentScripts | dropped | Replaced by owner-declared surface claims and app services. |
| app.contentScripts.register | dropped | Replaced by api.surfaces.provide() or a typed service edge. |
| app.contracts.BbContext | @bb/workspace/contracts: WorkspaceContext | Replaces the project-and-thread-only route record. |
| app.contracts.BbNavigate | @bb/workspace/contracts: WorkspaceNavigation | Replaces the broad navigation type. |
| app.contracts.BbNavigate.experimental_openFileExternally | useFiles().open({ disposition: external }) | The app client keeps host routing private. |
| app.contracts.BbNavigate.experimental_openFilePreview | useFiles().open({ disposition: preview }) | The bb.files-ui.opener winner handles the request. |
| app.contracts.BbNavigate.openThreadPanel | WorkspaceNavigation.openThreadPanel() | Keeps thread panel routing. |
| app.contracts.BbNavigate.openUrl | WorkspaceNavigation.openUrl() | Keeps host-controlled URL opening. |
| app.contracts.BbNavigate.toCompose | WorkspaceNavigation.toCompose() | Adds an optional typed project ID. |
| app.contracts.BbNavigate.toPluginPanel | WorkspaceNavigation.toPluginPanel() | Keeps plugin panel routes. |
| app.contracts.BbNavigate.toProject | WorkspaceNavigation.toProject() | Keeps project route navigation. |
| app.contracts.BbNavigate.toThread | WorkspaceNavigation.toThread() | Keeps thread route navigation. |
| app.contracts.CodeOverflowMode | CodeOverflowMode | The values stay scroll and wrap. |
| app.contracts.DiffProps | DiffRenderProps | The exact component and surface use one base type. |
| app.contracts.DiffProps.className | DiffRenderProps.className | The optional root class stays available. |
| app.contracts.DiffProps.experimental_fullFileContents | DiffRenderProps.fullFileContents | The field becomes stable. |
| app.contracts.DiffProps.overflow | DiffRenderProps.overflow | The owner resolves the default before the surface call. |
| app.contracts.DiffProps.patch | DiffRenderProps.patch | The field stays required. |
| app.contracts.DiffProps.path | DiffRenderProps.path | The field stays required. |
| app.contracts.DiffProps.showLineNumbers | DiffRenderProps.showLineNumbers | The owner resolves the default before the surface call. |
| app.contracts.DiffProps.view | DiffRenderProps.view | The owner resolves the default before the surface call. |
| app.contracts.DiffViewMode | DiffViewMode | The values stay unified and split. |
| app.contracts.ExperimentalAppPanel.openFixedTab | bb.layout.panels surface: LayoutPanelController.open() | An open call focuses the current single panel. |
| app.contracts.ExperimentalDiffFileContent | DiffFileContent | The type loses the experimental prefix. |
| app.contracts.ExperimentalDiffFullFileContents | DiffFullFileContents | fullFileContents replaces the experimental field. |
| app.contracts.ExperimentalFileLinkProps | FileLinkProps | The type loses the experimental prefix. |
| app.contracts.ExperimentalFixedTabTargetContract | bb.layout.panels surface: target StandardSchemaV1<T> | The panel declaration owns target validation. |
| app.contracts.ExperimentalFixedTabTargetContract.validate | bb.layout.panels surface: target schema validation | The shell checks the schema before open(). |
| app.contracts.ExperimentalFixedTabTargetState.clear | bb.layout.panels surface: LayoutPanelController.clearTarget() | The caller can clear one exact target sequence. |
| app.contracts.ExperimentalPluginFixedTabReference | bb.layout.panels surface: full panel ID plus target schema | The full ID replaces the old panelId and id pair. |
| app.contracts.MarkdownProps | @bb/thread-ui/components: Markdown and MarkdownProps | The chat Markdown component remains an exact export. |
| app.contracts.NewThreadComposerProps | @bb/thread-ui/components: NewThreadComposer and ComposerProps | The component uses the shared draft and selection contracts. |
| app.contracts.NewThreadComposerProps.onSubmit | @bb/thread-ui/components: NewThreadComposer and ComposerProps | The component uses the shared draft and selection contracts. |
| app.contracts.NewThreadRequest | @bb/thread-ui/components: NewThreadComposer and ComposerProps | The component uses the shared draft and selection contracts. |
| app.contracts.PluginCodeThemeData | @bb/layout/contracts: LayoutCodeTheme | The stable code theme keeps colors and token rules. |
| app.contracts.PluginCodeThemeState | @bb/layout/contracts: LayoutThemeClientState | The new state includes the selected theme definition. |
| app.contracts.PluginCodeThemeTokenRule | @bb/layout/contracts: LayoutCodeThemeTokenRule | The TextMate rule shape stays stable. |
| app.contracts.PluginCommandPaletteActionContext | bb.commands.command keyed service: AppCommandContext | The context includes route, source, input, cancellation, and navigation. |
| app.contracts.PluginCommandPaletteActionContext.openPanel | bb.commands.command keyed service: AppCommandContext.navigation.openPanel() | The new target names the Threads side-panel surface and key. |
| app.contracts.PluginCommandPaletteActionRegistration | bb.commands.command keyed service: AppCommand | The new contract adds common command metadata and keybindings. |
| app.contracts.PluginCommandPaletteActionRegistration.isAvailable | bb.commands.command keyed service: AppCommand.isAvailable() | Availability applies to the palette, menus, keybindings, and direct runs. |
| app.contracts.PluginCommandPaletteActionRegistration.run | bb.commands.command keyed service: AppCommand.run() | All command sources use the same executor. |
| app.contracts.PluginComposerScope | @bb/threads/contracts: ComposerScope | The durable draft and selection services use this scope. |
| app.contracts.PluginComposerThreadRowStatus | bb.thread-ui.composer surface and @bb/thread-ui/components: ComposerHandle | The surface and handle split state from local focus actions. |
| app.contracts.PluginContentScriptContext | dropped | Owner surfaces and services provide typed context. |
| app.contracts.PluginContentScriptContext.experimental_setThreadRowStatus | bb.threads.list child surface | A declared child surface replaces global row mutation. |
| app.contracts.PluginContentScriptDisposer | Disposer | The app factory and registrations own cleanup. |
| app.contracts.PluginContentScriptRegistration | dropped | The 2.0 app tier has no trusted content-script registration. |
| app.contracts.PluginContentScriptRegistration.mount | dropped | Use a factory or an owner-declared surface implementation. |
| app.contracts.PluginDiffRendererProps | DiffSurfaceProps | The stable type keeps the resolved values and Original. |
| app.contracts.PluginDiffRendererProps.Original | DiffSurfaceProps.Original | A single surface winner receives the default component. |
| app.contracts.PluginDiffRendererProps.experimental_fullFileContents | DiffSurfaceProps.fullFileContents | The field becomes stable and nullable. |
| app.contracts.PluginDiffRendererProps.overflow | DiffSurfaceProps.overflow | The field stays resolved and required. |
| app.contracts.PluginDiffRendererProps.patch | DiffSurfaceProps.patch | The field stays required. |
| app.contracts.PluginDiffRendererProps.path | DiffSurfaceProps.path | The field stays required. |
| app.contracts.PluginDiffRendererProps.showLineNumbers | DiffSurfaceProps.showLineNumbers | The field stays resolved and required. |
| app.contracts.PluginDiffRendererProps.view | DiffSurfaceProps.view | The field stays resolved and required. |
| app.contracts.PluginDiffRendererRegistration | bb.files-ui.diff claim plus api.surfaces.provide() | The surface declaration owns the props type. |
| app.contracts.PluginFileOpenerProps | FileOpenerProps | FileTarget replaces separate path and source fields. |
| app.contracts.PluginFileOpenerProps.Original | dropped | A keyed surface has no Original. Use renderPreview() for bb.files-ui.preview. |
| app.contracts.PluginFileOpenerProps.path | FileOpenerProps.target.path | The target contains the confined path. |
| app.contracts.PluginFileOpenerProps.source | FileOpenerProps.target | FileTarget replaces the old source object. |
| app.contracts.PluginFileOpenerRegistration | bb.files-ui.opener claim plus api.surfaces.provide() | Static claims replace registration metadata. |
| app.contracts.PluginFileOpenerRegistration.component | api.surfaces.provide(bb.files-ui.opener, { key }, component) | Behavior moves to the app factory. |
| app.contracts.PluginFileOpenerRegistration.extensions | repeated bb.files-ui.opener keyed claims | Each extension becomes one static claim. |
| app.contracts.PluginFileOpenerRegistration.id | bb.files-ui.opener claim key | The extension key and plugin ID identify the claimant. |
| app.contracts.PluginFileOpenerRegistration.title | plugin manifest name and description | The winner picker reads static plugin metadata. |
| app.contracts.PluginFileOpenerSource | FileTarget | A discriminated union replaces nullable identity fields. |
| app.contracts.PluginFileOpenerSource.environmentId | FileTarget workspace variant: environmentId | The field is required only for a workspace. |
| app.contracts.PluginFileOpenerSource.experimental_hostId | FileTarget host variant: hostId | The field becomes stable and required for host targets. |
| app.contracts.PluginFileOpenerSource.kind | FileTarget.kind | The stable discriminant keeps the three source kinds. |
| app.contracts.PluginFileOpenerSource.projectId | dropped | environmentId identifies the workspace. Use bb.workspace to resolve its project. |
| app.contracts.PluginFileOpenerSource.threadId | FileTarget thread-storage variant: threadId | The field is required only for thread storage. |
| app.contracts.PluginFixedTabDeclaration | bb.layout.panels surface: LayoutPanelRegistration | The target schema is optional on one stable declaration. |
| app.contracts.PluginFixedTabRegistration | bb.layout.panels surface: LayoutPanelRegistration | Use persistent: true and instances: single. |
| app.contracts.PluginFixedTabRegistration.component | bb.layout.panels surface: LayoutPanelRegistration.component | The plugin still owns the panel body. |
| app.contracts.PluginFixedTabRegistration.icon | bb.layout.panels surface: LayoutPanelRegistration.icon | The shell uses this icon for its tab. |
| app.contracts.PluginFixedTabRegistration.id | bb.layout.panels surface: LayoutPanelRegistration.id | The local ID remains stable. |
| app.contracts.PluginFixedTabRegistration.layout | bb.layout.panels surface: LayoutPanelRegistration.frame | padded and flush keep their meanings. |
| app.contracts.PluginFixedTabRegistration.panelId | bb.layout.panels surface: full panel ID | The claimant namespace replaces the separate old panel ID. |
| app.contracts.PluginFixedTabRegistration.title | bb.layout.panels surface: LayoutPanelRegistration.title | The shell uses this title for its tab. |
| app.contracts.PluginHomepageSectionProps | bb.thread-ui.composer.actions: ComposerActionContext | The default composer declares and renders this presentation surface. |
| app.contracts.PluginHomepageSectionProps.projectId | ComposerActionContext.scope | A new-thread scope carries the nullable project ID. |
| app.contracts.PluginHomepageSectionRegistration | bb.thread-ui.composer.actions: ComposerActionContribution | A stack contribution replaces the fixed homepage slot. |
| app.contracts.PluginHomepageSectionRegistration.component | ComposerActionContribution.component | The component receives the composer action context. |
| app.contracts.PluginHomepageSectionRegistration.id | ComposerActionContribution.id | The contribution keeps one stable ID. |
| app.contracts.PluginHomepageSectionRegistration.title | ComposerActionContribution.component | The component renders its own heading. |
| app.contracts.PluginMessageActionContext | bb.thread-ui.view surface: MessageAction | A view wrapper or ThreadChat instance supplies the action. |
| app.contracts.PluginMessageActionContext.openPanel | bb.thread-ui.view surface: MessageAction | A view wrapper or ThreadChat instance supplies the action. |
| app.contracts.PluginMessageActionRegistration | bb.thread-ui.view surface: MessageAction | A view wrapper or ThreadChat instance supplies the action. |
| app.contracts.PluginMessageActionRegistration.run | bb.thread-ui.view surface: MessageAction | A view wrapper or ThreadChat instance supplies the action. |
| app.contracts.PluginMessageDirectiveMessage | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveMessage.id | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveMessage.projectId | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveMessage.threadId | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveMessage.turnId | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveOpenWorkspaceFile | useFiles().open() | The caller supplies a workspace FileTarget. |
| app.contracts.PluginMessageDirectiveProps | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveProps.attributes | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveProps.message | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveProps.openWorkspaceFile | useFiles().open() | A workspace target replaces the nullable helper. |
| app.contracts.PluginMessageDirectiveProps.source | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginMessageDirectiveRegistration | bb.thread-ui.timeline.item surface: plugin-owned directive item type | The timeline item contract carries message and thread identity. |
| app.contracts.PluginNavPanel.experimental_sidebarAccessory | bb.layout.panels surface: navigation.accessory | The sidebar winner places the bounded accessory. |
| app.contracts.PluginNavPanel.fixedTabs | bb.layout.panels surface: persistent panel declarations | Each old fixed tab becomes one persistent panel declaration. |
| app.contracts.PluginNavPanel.headerContent | bb.layout.panels surface: headerContent | The panel dock winner owns the panel header. |
| app.contracts.PluginNavPanelProps | bb.layout.panels surface: LayoutPanelProps | Panel state replaces route remainder props. |
| app.contracts.PluginNavPanelProps.subPath | bb.layout.panels surface: LayoutPanelProps.state | A panel can store its route state as JSON. |
| app.contracts.PluginNavPanelRegistration | bb.layout.panels surface: LayoutPanelRegistration | The new declaration separates panel content from shell frame rules. |
| app.contracts.PluginNavPanelRegistration.component | bb.layout.panels surface: LayoutPanelRegistration.component | The plugin still owns the panel body. |
| app.contracts.PluginNavPanelRegistration.icon | bb.layout.panels surface: LayoutPanelRegistration.icon | The shell uses one icon in navigation and panel chrome. |
| app.contracts.PluginNavPanelRegistration.id | bb.layout.panels surface: LayoutPanelRegistration.id | The runtime adds the claimant ID to form the full panel ID. |
| app.contracts.PluginNavPanelRegistration.path | bb.layout.panels surface: LayoutPanelRegistration.navigation.path | The path remains shell-owned navigation metadata. |
| app.contracts.PluginNavPanelRegistration.title | bb.layout.panels surface: LayoutPanelRegistration.title | The shell uses the title in navigation and panel chrome. |
| app.contracts.PluginNewThreadPanelActionContext | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionContext.openPanel | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration.component | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration.icon | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration.id | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration.layout | bb.layout.panels surface: LayoutPanelRegistration.frame | Threads owns the launcher; Layout owns the frame choice. |
| app.contracts.PluginNewThreadPanelActionRegistration.run | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelActionRegistration.title | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelProps | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelProps.params | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginNewThreadPanelProps.projectId | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginPanelActionOpenOptions | bb.layout.panels surface: LayoutPanelOpenOptions | state replaces params; the frame keeps the optional title. |
| app.contracts.PluginPendingInteractionProps | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginPendingInteractionProps.cancel | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginPendingInteractionProps.interaction | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginPendingInteractionProps.submit | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginPendingInteractionRegistration | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginPendingInteractionView | bb.thread-ui.timeline.item surface: InteractionItemProps | The keyed timeline component displays the interaction. |
| app.contracts.PluginProviderIconRegistration | ProviderDeclaration.icon or exact app export | Provider identity data replaces the global icon slot. |
| app.contracts.PluginProviderIconRegistration.icon | ProviderDeclaration.icon | A plugin can also export an exact React icon module. |
| app.contracts.PluginProviderIconRegistration.providerId | ProviderDeclaration.id | The provider key identifies the icon owner. |
| app.contracts.PluginProvidersState | @bb/providers/app: ProviderDirectoryState | The state reports directory status and provider records. |
| app.contracts.PluginRealtimeConnectionState | @get-bb/plugin/app: RealtimeConnectionState | The app adapter keeps the shared connection states. |
| app.contracts.PluginRpcClient | @get-bb/plugin/app: RpcClient | The client binds one plugin RPC contract. |
| app.contracts.PluginRpcClient.call | @get-bb/plugin/app: RpcClient.call() | The call remains typed by method input and output. |
| app.contracts.PluginSettingsSectionProps | bb.settings.pages surface: SettingsPageProps | Pages receive routing and compact-layout data. |
| app.contracts.PluginSettingsSectionRegistration | bb.settings.pages surface: SettingsPageRegistration | A list-surface registration replaces the fixed slot registration. |
| app.contracts.PluginSettingsSectionRegistration.component | bb.settings.pages surface: SettingsPageRegistration.component | The component now receives SettingsPageProps. |
| app.contracts.PluginSettingsSectionRegistration.description | bb.settings.pages surface: SettingsPageRegistration.description | The page can show the description below its heading. |
| app.contracts.PluginSettingsSectionRegistration.id | bb.settings.pages surface: SettingsPageRegistration.id | The runtime qualifies the ID with the claimant plugin ID. |
| app.contracts.PluginSettingsSectionRegistration.title | bb.settings.pages surface: SettingsPageRegistration.label | The page label appears in navigation and the page header. |
| app.contracts.PluginSettingsState | @bb/settings/hooks: UsePluginSettingsState | The UI state adapts bb.preferences, reports errors, and keeps secret values out. |
| app.contracts.PluginSidebarFooterActionContext | bb.layout.statusbar surface: LayoutStatusItemProps | The shell controllers replace the special footer context. |
| app.contracts.PluginSidebarFooterActionContext.openSettings | bb.commands command: bb.settings.openCurrent | A status action runs the Settings command through api.commands. |
| app.contracts.PluginSidebarFooterActionProps | bb.layout.statusbar surface: LayoutStatusItemProps | The new props include route and shell controllers. |
| app.contracts.PluginSidebarFooterActionRegistration | bb.layout.statusbar surface: LayoutStatusItemRegistration | The data-only form keeps the host-rendered action. |
| app.contracts.PluginSidebarProject | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarPullRequest | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarSplit | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarSplitPane | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThread | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.archive | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.open | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.openNewThread | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.rename | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.requestDelete | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.setPinned | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActions.setRead | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadActivity | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadIndicator | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadPullRequestState | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarThreadsState | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSidebarWorkspaceKind | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginSourceCodeRendererProps | SourceSurfaceProps | The stable type keeps the resolved values and Original. |
| app.contracts.PluginSourceCodeRendererProps.Original | SourceSurfaceProps.Original | A single surface winner receives the default component. |
| app.contracts.PluginSourceCodeRendererProps.content | SourceSurfaceProps.content | The field stays required. |
| app.contracts.PluginSourceCodeRendererProps.highlightedLines | SourceSurfaceProps.highlightedLines | The field stays resolved and nullable. |
| app.contracts.PluginSourceCodeRendererProps.overflow | SourceSurfaceProps.overflow | The field stays resolved and required. |
| app.contracts.PluginSourceCodeRendererProps.path | SourceSurfaceProps.path | The field stays required. |
| app.contracts.PluginSourceCodeRendererRegistration | bb.files-ui.source claim plus api.surfaces.provide() | The surface declaration owns the props type. |
| app.contracts.PluginTargetedPanelActionOpenOptions | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadHeaderActionProps | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original. |
| app.contracts.PluginThreadHeaderActionProps.isCompactViewport | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original. |
| app.contracts.PluginThreadHeaderActionProps.projectId | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original. |
| app.contracts.PluginThreadHeaderActionProps.threadId | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original. |
| app.contracts.PluginThreadHeaderActionRegistration | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original. |
| app.contracts.PluginThreadListProps | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.Original | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.activeProjectId | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.activeThreadId | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.isCompactViewport | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.onNavigate | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListProps.searchQuery | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadListRegistration | bb.thread-ui.list surface: ThreadListProps and ThreadSummary | The list surface receives data and actions through typed props. |
| app.contracts.PluginThreadPanelActionContext | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionContext.openPanel | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration.component | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration.icon | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration.id | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration.layout | bb.layout.panels surface: LayoutPanelRegistration.frame | Threads owns the body; Layout owns the frame choice. |
| app.contracts.PluginThreadPanelActionRegistration.run | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelActionRegistration.title | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelProps | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelProps.params | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginThreadPanelProps.threadId | bb.thread-ui.sidePanels surface: ThreadSidePanelContribution and ThreadSidePanelProps | One list contract replaces panel action and panel body records. |
| app.contracts.PluginTimelineRendererProps | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRendererRegistration | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRendererRegistration.component | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRendererRegistration.kind | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRendererRow | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRowPresentation | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.PluginTimelineRowStatus | bb.thread-ui.timeline.item surface: TimelineItem and TimelineItemProps | The keyed contract uses the canonical item type. |
| app.contracts.SourceCodeLineRange | SourceCodeLineRange | The stable type keeps inclusive one-based lines. |
| app.contracts.SourceCodeProps | SourceRenderProps | The exact component and surface use one base type. |
| app.contracts.SourceCodeProps.className | SourceRenderProps.className | The optional root class stays available. |
| app.contracts.SourceCodeProps.content | SourceRenderProps.content | The field stays required. |
| app.contracts.SourceCodeProps.highlightedLines | SourceRenderProps.highlightedLines | The owner resolves absent input to null. |
| app.contracts.SourceCodeProps.overflow | SourceRenderProps.overflow | The owner resolves the default before the surface call. |
| app.contracts.SourceCodeProps.path | SourceRenderProps.path | The field stays required. |
| app.contracts.ThreadChatMessageAction | @bb/thread-ui/components: ThreadChat and its props | The exact component export keeps instance actions. |
| app.contracts.ThreadChatMessageReference | @bb/thread-ui/components: ThreadChat and its props | The exact component export keeps instance actions. |
| app.contracts.ThreadChatProps | @bb/thread-ui/components: ThreadChat and its props | The exact component export keeps instance actions. |
| app.contracts.UrlLinkProps | @bb/ui: UrlLinkProps | The semantic link keeps standard anchor props and BB URL policy. |
| app.coreUi | @bb/ui/core | The stable module contains shared display helpers. |
| app.coreUi.EnvironmentDisplayHostContext | @bb/ui/core: EnvironmentDisplayHostContext | Pure type export. |
| app.coreUi.EnvironmentDisplayInfo | @bb/ui/core: EnvironmentDisplayInfo | Pure type export. |
| app.coreUi.PendingInteractionToolUseAsk | @bb/ui/core: PendingInteractionToolUseAsk | Pure type export. |
| app.coreUi.assertNever | @bb/ui/core: assertNever | Pure helper export. |
| app.coreUi.buildPendingInteractionApprovalResolution | @bb/ui/core: buildPendingInteractionApprovalResolution | Pure helper export. |
| app.coreUi.describePendingInteractionToolUse | @bb/ui/core: describePendingInteractionToolUse | Pure helper export. |
| app.coreUi.extractErrorMessage | @bb/ui/core: extractErrorMessage | Pure helper export. |
| app.coreUi.formatEnvironmentDisplay | @bb/ui/core: formatEnvironmentDisplay | Pure helper export. |
| app.coreUi.formatPendingInteractionApprovalResolutionOutcome | @bb/ui/core: formatPendingInteractionApprovalResolutionOutcome | Pure helper export. |
| app.coreUi.formatPendingInteractionSubjectDetailLines | @bb/ui/core: formatPendingInteractionSubjectDetailLines | Pure helper export. |
| app.coreUi.formatPendingInteractionSummary | @bb/ui/core: formatPendingInteractionSummary | Pure helper export. |
| app.coreUi.formatPendingInteractionToolUseDetailLines | @bb/ui/core: formatPendingInteractionToolUseDetailLines | Pure helper export. |
| app.coreUi.formatPendingInteractionUserQuestionOptionLabel | @bb/ui/core: formatPendingInteractionUserQuestionOptionLabel | Pure helper export. |
| app.coreUi.summarizePendingInteractionRequestedPermissions | @bb/ui/core: summarizePendingInteractionRequestedPermissions | Pure helper export. |
| app.coreUi.toRecord | @bb/ui/core: toRecord | Pure helper export. |
| app.definePluginApp | definePlugin(factory) | Replaced by the app factory. |
| app.fileOpener.Original | dropped | A keyed surface has no Original. Use FileOpenerProps.renderPreview(). |
| app.fileOpener.path | FileOpenerProps.target.path | The target contains the path. |
| app.fileOpener.source | FileOpenerProps.target | FileTarget provides the stable source identity. |
| app.hooks.experimental_useAppPanel | @bb/layout/hooks: usePanelController() | The controller opens, focuses, closes, and moves shell panels. |
| app.hooks.experimental_useCodeTheme | @bb/layout/hooks: useLayoutTheme() | The hook returns the active mode and resolved code theme. |
| app.hooks.experimental_useFixedTabTarget | @bb/layout/hooks: usePanelTarget() | The hook reads the target and its sequence from LayoutPanelProps. |
| app.hooks.experimental_useProviders | @bb/providers/app: useProviders() | The stable hook reads the active provider directory. |
| app.hooks.experimental_useSidebarThreadActions | bb.thread-ui.list surface: ThreadListProps.actions | The surface receives the typed list actions. |
| app.hooks.experimental_useSidebarThreadPullRequest | bb.thread-ui.list surface: ThreadSummary and view wrappers | A list winner can add thread status data through its own service. |
| app.hooks.experimental_useSidebarThreadSplit | bb.thread-ui.list surface: ThreadListProps.actions.open() | The open action selects current or split placement. |
| app.hooks.experimental_useSidebarThreads | bb.thread-ui.list surface: ThreadListProps.state | The surface receives the typed list state. |
| app.hooks.useBbContext | @bb/workspace/app: useWorkspaceContext() | Adds environment and typed route state. |
| app.hooks.useBbNavigate | @bb/workspace/app: useWorkspaceNavigate() | Returns typed workspace route actions. |
| app.hooks.useComposer | @bb/thread-ui/app: useComposer() | The hook returns the shared composer handle. |
| app.hooks.useComposerView | @bb/thread-ui/app: useComposerView() | The hook reads the active composer props. |
| app.hooks.useRealtime | @get-bb/plugin/app: useRealtime() | The hook adapts the bb.realtime port. |
| app.hooks.useRealtimeConnectionState | @get-bb/plugin/app: useRealtimeConnectionState() | The hook reports the shared transport state. |
| app.hooks.useRpc | @get-bb/plugin/app: useRpc() | The hook returns a typed client for bb.rpc. |
| app.hooks.useSettings | @bb/settings/hooks: usePluginSettings() | The hook adapts bb.preferences, omits secrets, and reports errors. |
| app.interaction-contracts | @bb/thread-ui/interactions exports | Shared schemas remain available to native clients. |
| app.interactions.ASK_USER_QUESTION_RENDERER_ID | @bb/thread-ui/interactions: ASK_USER_QUESTION_RENDERER_ID | The interaction export keeps the shared wire shape. |
| app.interactions.InteractionAnswer | @bb/thread-ui/interactions: InteractionAnswer | The interaction export keeps the shared wire shape. |
| app.interactions.InteractionOption | @bb/thread-ui/interactions: InteractionOption | The interaction export keeps the shared wire shape. |
| app.interactions.InteractionPayload | @bb/thread-ui/interactions: InteractionPayload | The interaction export keeps the shared wire shape. |
| app.interactions.InteractionQuestion | @bb/thread-ui/interactions: InteractionQuestion | The interaction export keeps the shared wire shape. |
| app.interactions.InteractionResponse | @bb/thread-ui/interactions: InteractionResponse | The interaction export keeps the shared wire shape. |
| app.interactions.MAX_OPTIONS | @bb/thread-ui/interactions: MAX_OPTIONS | The interaction export keeps the shared wire shape. |
| app.interactions.MAX_OPTION_PREVIEW_LENGTH | @bb/thread-ui/interactions: MAX_OPTION_PREVIEW_LENGTH | The interaction export keeps the shared wire shape. |
| app.interactions.MAX_QUESTIONS | @bb/thread-ui/interactions: MAX_QUESTIONS | The interaction export keeps the shared wire shape. |
| app.interactions.SECRET_REQUEST_RENDERER_ID | @bb/thread-ui/interactions: SECRET_REQUEST_RENDERER_ID | The interaction export keeps the shared wire shape. |
| app.interactions.SecretRequestPayload | @bb/thread-ui/interactions: SecretRequestPayload | The interaction export keeps the shared wire shape. |
| app.interactions.SecretRequestResponse | @bb/thread-ui/interactions: SecretRequestResponse | The interaction export keeps the shared wire shape. |
| app.interactions.interactionPayloadSchema | @bb/thread-ui/interactions: interactionPayloadSchema | The interaction export keeps the shared wire shape. |
| app.interactions.interactionResponseSchema | @bb/thread-ui/interactions: interactionResponseSchema | The interaction export keeps the shared wire shape. |
| app.interactions.secretNameSchema | @bb/thread-ui/interactions: secretNameSchema | The interaction export keeps the shared wire shape. |
| app.interactions.secretRequestPayloadSchema | @bb/thread-ui/interactions: secretRequestPayloadSchema | The interaction export keeps the shared wire shape. |
| app.interactions.secretRequestResponseSchema | @bb/thread-ui/interactions: secretRequestResponseSchema | The interaction export keeps the shared wire shape. |
| app.mentions.PluginMentionItem | bb.mentions.provider: MentionItem | The provider returns the same row data. |
| app.mentions.PluginMentionProviderRegistration | bb.mentions.provider: claim, facts, and MentionProvider | The static claim replaces the app-visible registration record. |
| app.mentions.PluginMentionSearchContext | bb.mentions.provider: MentionProviderSearchInput | Project and thread scope remain nullable. |
| app.mentions.PluginMentionSearchGroup | bb.mentions service: MentionSearchGroup | One trigger produces at most one winner group. |
| app.mentions.PluginMentionSearchItem | bb.mentions service: MentionSearchItem | The wire row keeps the old nullable subtitle and icon. |
| app.mentions.PluginMentionTrigger | bb.mentions.provider: MentionTrigger key | Version 1 keeps the five old trigger characters. |
| app.mentions.PluginUi.registerMentionProvider | bb.mentions.provider keyed claim plus api.services.provide() | The factory uses the ordinary service path. |
| app.mentions.contributions | bb.mentions service: providers() | The app no longer uses a special contributions route. |
| app.mentions.search | bb.mentions service: search() | The typed service replaces the special mention search route. |
| app.module | @get-bb/plugin/app module | Replaced by the tier-specific app entry. |
| app.replacement.AUTOMATIC_REPLACEMENT_PROVIDER | ArbitrationRecord.source: default | The migration converts the automatic sentinel to the declared default. |
| app.replacement.BUILT_IN_REPLACEMENT_PROVIDER | ContractRecord.defaultClaimant | The migration pins the declared built-in default claimant. |
| app.replacement.diffPreference | bb.files-ui.diff global winner | The kernel migrates the old local pin. |
| app.replacement.fileOpenerOverride | dropped | bb.files-ui.opener has one global winner per extension. Import an exact component when choice must stay fixed. |
| app.replacement.fileOpenerPreference | bb.files-ui.opener keyed global winners | One winner exists for each extension key. |
| app.replacement.replacementProviderKey | arbitration identity: contractId plus key | The kernel stores the normalized contract identity directly. |
| app.replacement.sourceCodePreference | bb.files-ui.source global winner | The kernel migrates the old local pin. |
| app.replacement.threadListPreference | kernel winner store: bb.thread-ui.list | The global winner replaces the client local-storage preference. |
| app.rpc.JsonValue | @get-bb/plugin/contracts: JsonValue | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcCallArgs | @get-bb/plugin/contracts: RpcCallArgs | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcContract | @get-bb/plugin/contracts: RpcContract | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcError | @get-bb/plugin/contracts: RpcError | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcErrorCode | @get-bb/plugin/contracts: RpcErrorCode | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcHandlers | @get-bb/plugin/contracts: RpcHandlers | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcIssuePathSegment | @get-bb/plugin/contracts: RpcIssuePathSegment | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcMethodContract | @get-bb/plugin/contracts: RpcMethodContract | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcMethodContract.input | @get-bb/plugin/contracts: RpcMethodContract.input | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcMethodContract.output | @get-bb/plugin/contracts: RpcMethodContract.output | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcResult | @get-bb/plugin/contracts: RpcResult | The contracts package keeps the typed RPC boundary. |
| app.rpc.PluginRpcValidationIssue | @get-bb/plugin/contracts: RpcValidationIssue | The contracts package keeps the typed RPC boundary. |
| app.rpc.StandardSchemaV1 | @get-bb/plugin/contracts: StandardSchemaV1 | The contracts package keeps the typed RPC boundary. |
| app.rpc.StandardSchemaV1InferInput | @get-bb/plugin/contracts: StandardSchemaV1InferInput | The contracts package keeps the typed RPC boundary. |
| app.rpc.StandardSchemaV1InferOutput | @get-bb/plugin/contracts: StandardSchemaV1InferOutput | The contracts package keeps the typed RPC boundary. |
| app.rpc.StandardSchemaV1Issue | @get-bb/plugin/contracts: StandardSchemaV1Issue | The contracts package keeps the typed RPC boundary. |
| app.rpc.StandardSchemaV1Result | @get-bb/plugin/contracts: StandardSchemaV1Result | The contracts package keeps the typed RPC boundary. |
| app.rpc.defineRpcContract | @get-bb/plugin/contracts: defineRpcContract | The contracts package keeps the typed RPC boundary. |
| app.slots | AppPluginApi.surfaces | Owner-declared contracts replace the open slot namespace. |
| app.slots.commandPaletteAction | bb.commands.command keyed service: api.commands.add() | The bb.commands-ui palette reads the keyed command catalog. |
| app.slots.experimental_diffRenderer | bb.files-ui.diff single surface | The global winner replaces the local slot pin. |
| app.slots.experimental_newThreadPanelAction | bb.thread-ui.sidePanels surface | The placement field selects the new-thread context. |
| app.slots.experimental_providerIcon | dropped | Declare icon data or export an exact provider icon component. |
| app.slots.experimental_sourceCodeRenderer | bb.files-ui.source single surface | The global winner replaces the local slot pin. |
| app.slots.experimental_threadHeaderAction | bb.thread-ui.view surface: ThreadViewProps.headerActions | A view winner can wrap Original and add typed actions. |
| app.slots.experimental_threadList | bb.thread-ui.list surface | The single surface uses the global winner store. |
| app.slots.experimental_timelineRenderer | bb.thread-ui.timeline.item surface | The keyed surface selects one winner for each item type. |
| app.slots.fileOpener | bb.files-ui.opener keyed surface | Each normalized extension is a key. |
| app.slots.homepageSection | bb.thread-ui.composer.actions surface with placement: stack | The default composer owns this presentation-only affordance. |
| app.slots.messageAction | bb.thread-ui.view surface: ThreadViewProps.messageActions | A view wrapper or ThreadChat instance adds typed actions. |
| app.slots.messageDirective | bb.thread-ui.timeline.item surface | A plugin-owned directive becomes a plugin-owned item type. |
| app.slots.navPanel | bb.layout.panels surface: api.surfaces.add() | One panel declaration can add navigation metadata. |
| app.slots.pendingInteraction | bb.thread-ui.timeline.item surface and bb.threads interactions service | The keyed item component shows pending and final states. |
| app.slots.settingsSection | bb.settings.pages surface | Each old section becomes an ordered settings page claim. |
| app.slots.sidebarFooterAction | bb.layout.statusbar surface: api.surfaces.add() | The default sidebar can place status entries in its footer. |
| app.slots.threadPanelAction | bb.thread-ui.sidePanels surface | A list contribution provides the thread launcher and body. |
bridge
| Old item | New home | Note |
|---|---|---|
| bridge.context | bb.providers.bridge host role: ProviderBridgeContext | |
| bridge.define | @bb/providers/bridge: defineProviderBridge() | |
| bridge.definition | bb.providers.bridge host role: ProviderBridgeDefinition | |
| bridge.definition.handleLine | bb.providers.bridge host role: ProviderBridgeDefinition.handleLine | |
| bridge.definition.onClose | bb.providers.bridge host role: ProviderBridgeDefinition.onClose | |
| bridge.definition.onSigint | bb.providers.bridge host role: ProviderBridgeDefinition.onSigint | |
| bridge.definition.onSigterm | bb.providers.bridge host role: ProviderBridgeDefinition.onSigterm | |
| bridge.definition.start | bb.providers.bridge host role: ProviderBridgeDefinition.start | |
| bridge.delta.backgroundTask | @bb/providers/bridge: BackgroundTaskItem | |
| bridge.delta.commandSnapshot | @bb/providers/bridge: ThreadDelta.commandSnapshot | |
| bridge.delta.contextCleared | @bb/providers/bridge: ThreadDelta.contextCleared | |
| bridge.delta.contextCompacted | @bb/providers/bridge: ThreadDelta.contextCompacted | |
| bridge.delta.contextWindow | @bb/providers/bridge: ThreadDelta.contextWindow | |
| bridge.delta.delegation | @bb/providers/bridge: DelegationItem | |
| bridge.delta.extension | @bb/providers/bridge: ExtensionItem | |
| bridge.delta.extensionState | @bb/providers/bridge: ThreadDelta.extensionState | |
| bridge.delta.fileChange | @bb/providers/bridge: DeltaFileChange | |
| bridge.delta.fileRead | @bb/providers/bridge: FileReadItem | |
| bridge.delta.inputAccepted | @bb/providers/bridge: ThreadDelta.inputAccepted | |
| bridge.delta.inputProvider | @bb/providers/bridge: ThreadDelta.inputProvider | |
| bridge.delta.item | @bb/providers/bridge: DeltaItem | |
| bridge.delta.itemClose | @bb/providers/bridge: ThreadDelta.itemClose | |
| bridge.delta.itemKey | @bb/providers/bridge: DeltaItemKey | |
| bridge.delta.itemOpen | @bb/providers/bridge: ThreadDelta.itemOpen | |
| bridge.delta.itemProgress | @bb/providers/bridge: ThreadDelta.itemProgress | |
| bridge.delta.itemTypes | @bb/providers/bridge: DeltaItem["type"] | |
| bridge.delta.kinds | @bb/providers/bridge: ThreadDelta union | The union keeps all normalized delta kinds. |
| bridge.delta.method | @bb/providers/bridge: THREAD_DELTA_NOTIFICATION_METHOD | |
| bridge.delta.modelFallback | @bb/providers/bridge: ThreadDelta.modelFallback | |
| bridge.delta.noTurnFallback | @bb/providers/bridge: DeltaNoTurnFallback | |
| bridge.delta.notification | bb.providers.bridge host role: thread/delta notification | |
| bridge.delta.outputChannel | @bb/providers/bridge: DeltaOutputChannel | |
| bridge.delta.outputDelta | @bb/providers/bridge: ThreadDelta.outputDelta | |
| bridge.delta.planSteps | @bb/providers/bridge: PlanStepsItem | |
| bridge.delta.progress | @bb/providers/bridge: DeltaProgressSnapshot | |
| bridge.delta.providerError | @bb/providers/bridge: ThreadDelta.providerError | |
| bridge.delta.rateLimits | @bb/providers/bridge: ThreadDelta.rateLimits | |
| bridge.delta.search | @bb/providers/bridge: SearchItem | |
| bridge.delta.sessionEnded | @bb/providers/bridge: ThreadDelta.sessionEnded | |
| bridge.delta.sessionReset | @bb/providers/bridge: ThreadDelta.sessionReset | |
| bridge.delta.textChannel | @bb/providers/bridge: DeltaTextChannel | |
| bridge.delta.textClose | @bb/providers/bridge: ThreadDelta.textClose | |
| bridge.delta.textDelta | @bb/providers/bridge: ThreadDelta.textDelta | |
| bridge.delta.threadIdentity | @bb/providers/bridge: ThreadDelta.threadIdentity | |
| bridge.delta.threadName | @bb/providers/bridge: ThreadDelta.threadName | |
| bridge.delta.threadStarted | @bb/providers/bridge: ThreadDelta.threadStarted | |
| bridge.delta.turnBoundary | @bb/providers/bridge: ThreadDelta.turnBoundary | |
| bridge.delta.turnDiff | @bb/providers/bridge: ThreadDelta.turnDiff | |
| bridge.delta.turnOpen | @bb/providers/bridge: ThreadDelta.turnOpen | |
| bridge.delta.unhandled | @bb/providers/bridge: ThreadDelta.unhandled | |
| bridge.delta.usage | @bb/providers/bridge: ThreadDelta.usage | |
| bridge.delta.warning | @bb/providers/bridge: ThreadDelta.warning | |
| bridge.entry | bb.providers.bridge host role: ProviderBridgeEntry | |
| bridge.env.withoutRuntime | bb.providers.host.supervisor: childEnv() | The shared supervisor removes runtime-only environment values. |
| bridge.error.codes | @bb/providers/bridge: BRIDGE_JSON_RPC_ERRORS | |
| bridge.error.data | @bb/providers/bridge: BridgeError.data | |
| bridge.execution.envVars | @bb/providers/bridge: BridgeExecutionOptions.envVars | |
| bridge.execution.instructions | @bb/providers/bridge: BridgeExecutionOptions.instructions | |
| bridge.execution.model | @bb/providers/bridge: BridgeExecutionOptions.model | |
| bridge.execution.promptMode | @bb/providers/bridge: BridgeExecutionOptions.promptMode | |
| bridge.execution.providerOptions | @bb/providers/bridge: BridgeExecutionOptions.providerOptions | |
| bridge.execution.reasoningLevel | @bb/providers/bridge: BridgeExecutionOptions.reasoningLevel | |
| bridge.execution.serviceTier | @bb/providers/bridge: BridgeExecutionOptions.serviceTier | |
| bridge.experimental_acpAgentProbeSchema | @bb/providers/bridge/acp: experimental_acpAgentProbeSchema | The export stays experimental. |
| bridge.experimental_acpLaunchSpecSchema | @bb/providers/bridge/acp: experimental_acpLaunchSpecSchema | The export stays experimental. |
| bridge.experimental_acpProviderBridge | @bb/providers/bridge/acp: experimental_acpProviderBridge | The adapter uses the stable bridge role. |
| bridge.experimental_buildBridgeToolCallContent | bb.providers.host.requests: buildToolContent() | The shared request service replaces the experimental helper. |
| bridge.experimental_probeAcpAgent | @bb/providers/bridge/acp: experimental_probeAcpAgent() | The export stays experimental. |
| bridge.experimental_recordProviderChildIo | bb.providers.host.supervisor: recordChildIo() | The shared supervisor owns transcript records. |
| bridge.experimental_toolPresentation | @bb/providers/bridge/acp: experimental_toolPresentation | The ACP presentation adapter stays experimental. |
| bridge.exportName | dropped | The bb.providers.bridge host-role claim replaces the magic experimental_providerBridge export. |
| bridge.handshake.capabilities | @bb/providers/bridge: handshake.capabilities | |
| bridge.handshake.capabilities.approvalEnforcedBy | @bb/providers/bridge: handshake.capabilities.approvalEnforcedBy | |
| bridge.handshake.capabilities.fork | @bb/providers/bridge: handshake.capabilities.fork | |
| bridge.handshake.capabilities.grammarVersions | @bb/providers/bridge: handshake.capabilities.grammarVersions | |
| bridge.handshake.capabilities.sessionRestore | @bb/providers/bridge: handshake.capabilities.sessionRestore | |
| bridge.handshake.capabilities.skills | @bb/providers/bridge: handshake.capabilities.skills | |
| bridge.handshake.capabilities.steerMode | @bb/providers/bridge: handshake.capabilities.steerMode | |
| bridge.handshake.capabilities.threadArchive | @bb/providers/bridge: handshake.capabilities.threadArchive | |
| bridge.handshake.capabilities.threadGoalClear | @bb/providers/bridge: handshake.capabilities.threadGoalClear | |
| bridge.handshake.capabilities.threadRename | @bb/providers/bridge: handshake.capabilities.threadRename | |
| bridge.handshake.grammarVersions | @bb/providers/bridge: handshake.grammarVersions | |
| bridge.handshake.initialize | @bb/providers/bridge: handshake.initialize | |
| bridge.handshake.negotiateGrammar | @bb/providers/bridge: handshake.negotiateGrammar | |
| bridge.handshake.steerMode | @bb/providers/bridge: handshake.steerMode | |
| bridge.inbound.interaction | bb.providers.host.requests: interaction | The shared request service tracks the response. |
| bridge.inbound.methods | @bb/providers/bridge: BRIDGE_RUNTIME_REQUEST_METHODS | |
| bridge.inbound.toolCall | bb.providers.host.requests: toolCall | The shared request service tracks the response. |
| bridge.interaction.secretRequest | @bb/providers/bridge: SecretInteraction | The kernel secrets port stores the submitted value. |
| bridge.io.create | bb.providers.host.requests: transport.create | The shared request service owns JSON-RPC output. |
| bridge.io.lineHandler | bb.providers.host.requests: transport.lineHandler | The shared request service owns JSON-RPC output. |
| bridge.io.recoveryError | bb.providers.host.requests: transport.recoveryError | The shared request service owns JSON-RPC output. |
| bridge.io.runRequest | bb.providers.host.requests: transport.runRequest | The shared request service owns JSON-RPC output. |
| bridge.io.sendError | bb.providers.host.requests: transport.sendError | The shared request service owns JSON-RPC output. |
| bridge.jsonrpc.commandPlan | @bb/providers/bridge: JsonRpc.commandPlan | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.decodeToolCall | @bb/providers/bridge: JsonRpc.decodeToolCall | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.decodedInteraction | @bb/providers/bridge: JsonRpc.decodedInteraction | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.decodedToolCall | @bb/providers/bridge: JsonRpc.decodedToolCall | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.inboundRequest | @bb/providers/bridge: JsonRpc.inboundRequest | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.message | @bb/providers/bridge: JsonRpc.message | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.noopPlan | @bb/providers/bridge: JsonRpc.noopPlan | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.postInitialize | @bb/providers/bridge: JsonRpc.postInitialize | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.requestPlan | @bb/providers/bridge: JsonRpc.requestPlan | The bridge runtime owns transport decoding. |
| bridge.jsonrpc.runtimeEvent | @bb/providers/bridge: JsonRpc.runtimeEvent | The bridge runtime owns transport decoding. |
| bridge.lines.args | @bb/providers/host: BoundedLineReaderOptions | |
| bridge.lines.maxBytes | bb.providers.host.supervisor: MAX_BRIDGE_LINE_BYTES | |
| bridge.lines.read | bb.providers.host.supervisor: readBoundedLines() | |
| bridge.maintenance.clampPercent | bb.providers.host.maintenance: clampPercent() | The shared host service removes provider-local probe code. |
| bridge.maintenance.command | @bb/providers/bridge: ProviderInstallationCommand | |
| bridge.maintenance.commandOutput | bb.providers.host.maintenance: commandOutput() | The shared host service removes provider-local probe code. |
| bridge.maintenance.compareVersions | bb.providers.host.maintenance: compareVersions() | The shared host service removes provider-local probe code. |
| bridge.maintenance.downloadedInstaller | bb.providers.host.maintenance: downloadedInstaller() | The shared host service removes provider-local probe code. |
| bridge.maintenance.formatCommand | bb.providers.host.maintenance: formatCommand() | The shared host service removes provider-local probe code. |
| bridge.maintenance.health | @bb/providers/bridge: ProviderHealth | |
| bridge.maintenance.installAction | @bb/providers/bridge: ProviderInstallationAction | |
| bridge.maintenance.installSource | bb.providers.host.maintenance: installSource() | The shared host service removes provider-local probe code. |
| bridge.maintenance.installStatus | @bb/providers/bridge: ProviderInstallationStatus | |
| bridge.maintenance.installationVerification | bb.providers.host.maintenance: installationVerification() | The shared host service removes provider-local probe code. |
| bridge.maintenance.npmCommand | bb.providers.host.maintenance: npmCommand() | The shared host service removes provider-local probe code. |
| bridge.maintenance.npmInstall | bb.providers.host.maintenance: npmInstall() | The shared host service removes provider-local probe code. |
| bridge.maintenance.npmLatest | bb.providers.host.maintenance: npmLatest() | The shared host service removes provider-local probe code. |
| bridge.maintenance.npmProbe | bb.providers.host.maintenance: npmProbe() | The shared host service removes provider-local probe code. |
| bridge.maintenance.npmProbeType | @bb/providers/host: NpmGlobalPackageProbe | |
| bridge.maintenance.readCliVersion | bb.providers.host.maintenance: readCliVersion() | The shared host service removes provider-local probe code. |
| bridge.maintenance.resolveExecutable | bb.providers.host.maintenance: resolveExecutable() | The shared host service removes provider-local probe code. |
| bridge.maintenance.runResult | @bb/providers/bridge: ProviderInstallationRunResult | |
| bridge.maintenance.usage | @bb/providers/bridge: ProviderUsage | |
| bridge.maintenance.verification | @bb/providers/bridge: ProviderInstallationVerification | |
| bridge.maintenance.versionFrom | bb.providers.host.maintenance: versionFrom() | The shared host service removes provider-local probe code. |
| bridge.maintenance.window | @bb/providers/bridge: ProviderUsageWindow | |
| bridge.notification.error | bb.providers.bridge host role: notify.error | |
| bridge.notification.methods | @bb/providers/bridge: BRIDGE_NOTIFICATION_METHODS | |
| bridge.notification.providerRaw | bb.providers.bridge host role: notify.providerRaw | |
| bridge.notification.recovery | bb.providers.bridge host role: notify.recovery | |
| bridge.notification.sessionReplaced | bb.providers.bridge host role: notify.sessionReplaced | |
| bridge.notification.threadIdentity | bb.providers.bridge host role: notify.threadIdentity | |
| bridge.parseEntry | bb.providers.bridge host-role loader validation | The loader validates contract.json before role start. |
| bridge.protocol.grammarV2 | @bb/providers/bridge: delta grammar version 2 | Kept for negotiated compatibility. |
| bridge.protocol.grammarV3 | @bb/providers/bridge: delta grammar version 3 | Kept for negotiated compatibility. |
| bridge.protocol.version | @bb/providers/bridge: BRIDGE_PROTOCOL_VERSION | |
| bridge.providerRawEventSchema | @bb/providers/bridge: providerRawEventSchema | |
| bridge.recovery.hint | @bb/providers/bridge: ProviderRecoveryHint | |
| bridge.request.executionOptions | @bb/providers/bridge: BridgeExecutionOptions | The type applies to thread and turn requests. |
| bridge.request.installRun | bb.providers.bridge host role: installRun | Runtime request handlers use this message contract. |
| bridge.request.installStatus | bb.providers.bridge host role: installStatus | Runtime request handlers use this message contract. |
| bridge.request.methods | @bb/providers/bridge: RUNTIME_BRIDGE_METHODS | |
| bridge.request.modelList | bb.providers.bridge host role: modelList | Runtime request handlers use this message contract. |
| bridge.request.providerHealth | bb.providers.bridge host role: providerHealth | Runtime request handlers use this message contract. |
| bridge.request.providerUsage | bb.providers.bridge host role: providerUsage | Runtime request handlers use this message contract. |
| bridge.request.skillsConfigure | bb.providers.bridge host role: skillsConfigure | Runtime request handlers use this message contract. |
| bridge.request.threadArchive | bb.providers.bridge host role: threadArchive | Runtime request handlers use this message contract. |
| bridge.request.threadDiscard | bb.providers.bridge host role: threadDiscard | Runtime request handlers use this message contract. |
| bridge.request.threadFork | bb.providers.bridge host role: threadFork | Runtime request handlers use this message contract. |
| bridge.request.threadGoalClear | bb.providers.bridge host role: threadGoalClear | Runtime request handlers use this message contract. |
| bridge.request.threadLifecycle | bb.providers.bridge host role: threadLifecycle | Runtime request handlers use this message contract. |
| bridge.request.threadNameSet | bb.providers.bridge host role: threadNameSet | Runtime request handlers use this message contract. |
| bridge.request.threadResume | bb.providers.bridge host role: threadResume | Runtime request handlers use this message contract. |
| bridge.request.threadStart | bb.providers.bridge host role: threadStart | Runtime request handlers use this message contract. |
| bridge.request.threadStop | bb.providers.bridge host role: threadStop | Runtime request handlers use this message contract. |
| bridge.request.threadUnarchive | bb.providers.bridge host role: threadUnarchive | Runtime request handlers use this message contract. |
| bridge.request.turnStart | bb.providers.bridge host role: turnStart | Runtime request handlers use this message contract. |
| bridge.request.turnSteer | bb.providers.bridge host role: turnSteer | Runtime request handlers use this message contract. |
| bridge.threadDelta | @bb/providers/bridge: ThreadDelta and threadDeltaSchema | |
| bridge.toolCall.buildContent | bb.providers.host.requests: buildContent | The shared host service owns pending tool calls. |
| bridge.toolCall.content | @bb/providers/bridge: BridgeToolCall.content | |
| bridge.toolCall.decodePayload | bb.providers.host.requests: decodePayload | The shared host service owns pending tool calls. |
| bridge.toolCall.decodeResponse | bb.providers.host.requests: decodeResponse | The shared host service owns pending tool calls. |
| bridge.toolCall.image | @bb/providers/bridge: BridgeToolCall.image | |
| bridge.toolCall.request | @bb/providers/bridge: BridgeToolCall.request | |
| bridge.toolCall.response | @bb/providers/bridge: BridgeToolCall.response | |
| bridge.toolCall.tracker | bb.providers.host.requests: tracker | The shared host service owns pending tool calls. |
| bridge.toolCall.tracker.create | bb.providers.host.requests: tracker.create | The shared host service owns pending tool calls. |
| bridge.toolCall.tracker.forward | bb.providers.host.requests: tracker.forward | The shared host service owns pending tool calls. |
| bridge.toolCall.tracker.handle | bb.providers.host.requests: tracker.handle | The shared host service owns pending tool calls. |
| bridge.toolCall.tracker.resolve | bb.providers.host.requests: tracker.resolve | The shared host service owns pending tool calls. |
| bridge.visibility.coverage | @bb/providers/bridge: ProviderVisibility.coverage | |
| bridge.visibility.create | @bb/providers/bridge: ProviderVisibility.create | |
| bridge.visibility.description | @bb/providers/bridge: ProviderVisibility.description | |
| bridge.visibility.metadata | @bb/providers/bridge: ProviderVisibility.metadata |
build
cli
host
| Old item | New home | Note |
|---|---|---|
| host.ai.contract | <pluginId>.aiHost role: AiHostCommands | A private typed role replaces the shared experimental host contract. |
| host.ai.declaration | bb.agents.ai: AiService | One public keyed service replaces the declaration-only form. |
| host.ai.declaration.displayName | bb.agents.ai: AiService.displayName | The label remains. |
| host.ai.declaration.id | bb.agents.ai: AiService.id | The ID selects the keyed winner. |
| host.ai.declaration.kinds | bb.agents.ai: AiService.kinds | The list must match the service method groups. |
| host.ai.errorCode | @bb/agents/host: AiServiceErrorCode | The stable error code union remains. |
| host.ai.inference.complete | <pluginId>.aiHost role: inference.complete | The explicit host verb remains. |
| host.ai.inference.input | <pluginId>.aiHost role: AiInferenceHostInput | The request keeps the service ID for host dispatch. |
| host.ai.inference.output | <pluginId>.aiHost role: AiInferenceResult | The structured result and classified failure remain. |
| host.ai.voice.input | <pluginId>.aiHost role: AiVoiceHostInput | The request keeps audio, file, prompt, and timeout data. |
| host.ai.voice.output | <pluginId>.aiHost role: AiVoiceResult | The text result and classified failure remain. |
| host.ai.voice.transcribe | <pluginId>.aiHost role: voice.transcribe | The explicit host verb remains. |
| host.api.aiServices | api.ai | The stable direct API replaces the experimental property. |
| host.api.aiServices.register | api.ai.add() | The server half provides a host-backed AI service. |
| host.api.dispose | host factory disposer | |
| host.api.hosts | host factory: api.roles | |
| host.api.hosts.client | HostRolesPort.use() | |
| host.api.hosts.declarePorts | host role manifest: shared port declarations | |
| host.api.hosts.ensureTunnel | host daemon: tunnel.ensure | |
| host.api.tunnelIdentity | host daemon: tunnel identity | |
| host.call.options | HostRoleClient.call(): signal and timeoutMs | |
| host.client | HostRoleClient | |
| host.client.call | HostRoleClient.call() | |
| host.client.signal | HostRoleClient.onSignal() | |
| host.client.workerExit | HostRolesPort.watch(): role.exited | |
| host.context.experimental_retainWorker | bb.providers.host.supervisor: retainWorker() | The shared supervisor owns worker leases. |
| host.daemon.bridgeLaunch | bb.providers private bridge host role | The Providers plugin owns bridge launch behavior. |
| host.daemon.events | host daemon: session.events | |
| host.daemon.interaction | bb.providers private host role | The Providers plugin owns tool and interaction behavior. |
| host.daemon.interactionInterrupt | bb.providers private host role | The Providers plugin owns tool and interaction behavior. |
| host.daemon.local.client | host daemon local API: typed local client | |
| host.daemon.local.health | host daemon local API: local.health | |
| host.daemon.local.openInTarget | host daemon local API: local.openInTarget | |
| host.daemon.local.openTargets | host daemon local API: local.openTargets | |
| host.daemon.local.status | host daemon local API: local.status | |
| host.daemon.local.statusType | host daemon local API: LocalStatus | |
| host.daemon.pluginHostCall | host daemon: role.call | |
| host.daemon.pluginHostCancel | host daemon: role.cancel | |
| host.daemon.pluginHostDispose | host daemon: role.dispose | |
| host.daemon.pluginHostSignal | host daemon: role.signal | |
| host.daemon.pluginHostWorkerExited | host daemon: role.exited | |
| host.daemon.providerHealth | bb.providers private host role | The daemon carries the typed call. The Providers plugin owns the verb. |
| host.daemon.providerInstallRun | bb.providers private host role | The daemon carries the typed call. The Providers plugin owns the verb. |
| host.daemon.providerInstallStatus | bb.providers private host role | The daemon carries the typed call. The Providers plugin owns the verb. |
| host.daemon.providerModels | bb.providers private host role | The daemon carries the typed call. The Providers plugin owns the verb. |
| host.daemon.providerUsage | bb.providers private host role | The daemon carries the typed call. The Providers plugin owns the verb. |
| host.daemon.sessionOpen | host daemon: session.open | |
| host.daemon.sessionOpenRequest | host daemon: SessionOpenRequest | |
| host.daemon.sessionOpenResponse | host daemon: SessionOpenResponse | |
| host.daemon.toolCall | bb.providers private host role | The Providers plugin owns tool and interaction behavior. |
| host.daemon.tunnelIdentity | host daemon: tunnel.ensure identity | |
| host.defineEntry | defineHostPlugin() | |
| host.entry | defineHostPlugin() result | |
| host.entry.contract | contract.json: hostRoles[] | |
| host.entry.dispose | host factory disposer and HostRoleContext.signal | |
| host.entry.experimental_apiVersion | host artifact protocol version | The version field is stable in 2.0. |
| host.entry.experimental_signals | contract.json: hostRoles[].signals | Signals are stable typed role members. |
| host.entry.handlers | host factory: api.roles.provide() handlers | |
| host.experimental_aiServicesHostContract | <pluginId>.aiHost role: AiHostCommands | This gap ID maps to the same private role as host.ai.contract. |
| host.experimental_nativeRootsHostContract | bb.providers.nativeRoots host role | The keyed role replaces the experimental host contract. |
| host.experimental_providerBridge | bb.providers.bridge host role | The keyed host-role claim replaces the magic export. |
| host.experimental_resolveClaudePluginRoots | @bb/providers/host: experimental_resolveClaudePluginRoots() | The vendor adapter stays experimental. |
| host.experimental_resolveVendorPluginRoots | @bb/providers/host: experimental_resolveVendorPluginRoots() | The vendor adapter stays experimental. |
| host.nativeRoots.answer | bb.providers.nativeRoots: ProviderNativeRootsRole.resolve() input | The role call carries the validated resolver answer. |
| host.nativeRoots.contract | bb.providers.nativeRoots host role | The keyed role replaces the experimental contract. |
| host.nativeRoots.dropped | FilteredNativeRoots.dropped | Validation still reports each removed root. |
| host.nativeRoots.filter | bb.providers.host.declarations: filterNativeRoots() | The shared host service validates and limits roots. |
| host.nativeRoots.filtered | FilteredNativeRoots | The result keeps accepted roots and validation reports. |
| host.nativeRoots.input | ProviderResolvedNativeRootsInput | The input keeps provider and workspace context. |
| host.nativeRoots.output | ProviderResolvedNativeRoots | The output keeps normalized skill and command roots. |
| host.nativeRoots.resolve | bb.providers.nativeRoots: resolve() | The keyed host role resolves host-specific roots. |
| host.paths | HostRoleContext.paths | |
| host.provider.capabilities | bb.providers.provider: ProviderCapabilities | |
| host.provider.capabilities.fork | bb.providers.provider: ProviderCapabilities.fork | |
| host.provider.capabilities.permissionModes | bb.providers.provider: ProviderCapabilities.permissionModes | |
| host.provider.capabilities.reasoningLevels | bb.providers.provider: ProviderCapabilities.reasoningLevels | |
| host.provider.capabilities.supportsManualCompaction | bb.providers.provider: ProviderCapabilities.supportsManualCompaction | |
| host.provider.capabilities.supportsNativeUserQuestion | bb.providers.provider: ProviderCapabilities.supportsNativeUserQuestion | |
| host.provider.capabilities.supportsServiceTier | bb.providers.provider: ProviderCapabilities.supportsServiceTier | |
| host.provider.capabilities.supportsThreadArchive | bb.providers.provider: ProviderCapabilities.supportsThreadArchive | |
| host.provider.capabilities.supportsThreadRename | bb.providers.provider: ProviderCapabilities.supportsThreadRename | |
| host.provider.declaration | bb.providers.provider: ProviderDeclaration | The server and host use one declaration type. |
| host.provider.declaration.capabilities | bb.providers.provider: ProviderDeclaration.capabilities | |
| host.provider.declaration.composerActions | bb.providers.provider: ProviderDeclaration.composerActions | |
| host.provider.declaration.deriveOptions | bb.providers.provider: Provider.deriveOptions() | Behavior moves from declaration data to the provider service. |
| host.provider.declaration.displayName | bb.providers.provider: ProviderDeclaration.displayName | |
| host.provider.declaration.env | bb.providers.provider: ProviderDeclaration.env | |
| host.provider.declaration.experimental_bridgeOptions | bb.providers.provider: ProviderDeclaration.bridgeOptions | The stable declaration field replaces the experimental field. |
| host.provider.declaration.experimental_visibility | bb.providers.provider: ProviderDeclaration.visibility | The stable declaration field replaces the experimental field. |
| host.provider.declaration.extensionKinds | bb.providers.provider: ProviderDeclaration.extensionKinds | |
| host.provider.declaration.family | bb.providers.provider: ProviderDeclaration.family | |
| host.provider.declaration.icon | bb.providers.provider: ProviderDeclaration.icon | |
| host.provider.declaration.id | bb.providers.provider: ProviderDeclaration.id | |
| host.provider.declaration.maintenance | bb.providers.provider: ProviderDeclaration.maintenance | |
| host.provider.declaration.models | bb.providers.provider: ProviderDeclaration.models | |
| host.provider.declaration.nativeCommandRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.commands | The native-roots object holds static command roots. |
| host.provider.declaration.nativeSkillRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.skills | The native-roots object holds static skill roots. |
| host.provider.declaration.reasoningLevels | bb.providers.provider: ProviderDeclaration.reasoningLevels | |
| host.provider.declaration.resolvesNativeRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.resolveOnHost | The provider can claim the bb.providers.nativeRoots host role. |
| host.provider.declaration.serviceTiers | bb.providers.provider: ProviderDeclaration.serviceTiers | |
| host.provider.declaration.strings | bb.providers.provider: ProviderDeclaration.strings | |
| host.provider.extensionKind | bb.providers.provider: ProviderExtensionKind | |
| host.provider.extensionKind.item | bb.providers.provider: ProviderExtensionKind.item | |
| host.provider.extensionKind.state | bb.providers.provider: ProviderExtensionKind.state | |
| host.provider.fallbackModel | bb.providers.provider: ProviderFallbackModel | |
| host.provider.fallbackModel.defaultReasoningEffort | bb.providers.provider: ProviderFallbackModel.defaultReasoningEffort | |
| host.provider.fallbackModel.description | bb.providers.provider: ProviderFallbackModel.description | |
| host.provider.fallbackModel.displayName | bb.providers.provider: ProviderFallbackModel.displayName | |
| host.provider.fallbackModel.id | bb.providers.provider: ProviderFallbackModel.id | |
| host.provider.fallbackModel.isDefault | bb.providers.provider: ProviderFallbackModel.isDefault | |
| host.provider.fallbackModel.supportedReasoningEfforts | bb.providers.provider: ProviderFallbackModel.supportedReasoningEfforts | |
| host.provider.maintenance | bb.providers.provider: ProviderMaintenance | |
| host.provider.maintenance.health | bb.providers.provider: ProviderMaintenance.health | |
| host.provider.maintenance.installation | bb.providers.provider: ProviderMaintenance.installation | |
| host.provider.maintenance.usage | bb.providers.provider: ProviderMaintenance.usage | |
| host.provider.option | bb.providers.provider: ProviderOption | |
| host.provider.option.description | bb.providers.provider: ProviderOption.description | |
| host.provider.option.id | bb.providers.provider: ProviderOption.id | |
| host.provider.option.label | bb.providers.provider: ProviderOption.label | |
| host.provider.optionsContext | bb.providers.provider: ProviderOptionsContext | |
| host.provider.optionsContext.settings | bb.providers.provider: ProviderOptionsContext.settings | |
| host.provider.strings | bb.providers.provider: ProviderStrings | |
| host.provider.strings.brandPrefix | bb.providers.provider: ProviderStrings.brandPrefix | |
| host.provider.strings.expiredHint | bb.providers.provider: ProviderStrings.expiredHint | |
| host.provider.strings.iconTint | bb.providers.provider: ProviderStrings.iconTint | |
| host.provider.strings.installUrl | bb.providers.provider: ProviderStrings.installUrl | |
| host.provider.strings.planModeCopy | bb.providers.provider: ProviderStrings.planModeCopy | |
| host.provider.strings.signInHint | bb.providers.provider: ProviderStrings.signInHint | |
| host.providers.namespace | bb.providers.provider keyed service | The service token replaces the host registration namespace. |
| host.providers.register | api.services.provide(bbProvider.key()) | The factory scope owns provider cleanup. |
| host.rpc.context | HostRoleContext | |
| host.rpc.context.emitSignal | HostRoleContext.emitSignal() | |
| host.rpc.context.lifecycle | HostRoleContext.signal and role lifecycle | |
| host.rpc.context.paths | HostRoleContext.paths | |
| host.rpc.context.retainWorker | HostRoleContext.retain() | |
| host.rpc.context.signal | HostRoleContext.signal | |
| host.rpc.context.watch | HostRoleContext.watch() | |
| host.rpc.handlers | host factory: typed role handlers | |
| host.signal.contract | contract.json: hostRoles[].signals | |
| host.signal.event | HostRoleEvent: role.signal | |
| host.signals | host role signal map | |
| host.watch.change | WatchEvent | |
| host.watch.changeType | WatchEvent.kind | |
| host.watch.event | HostRoleContext.watch() event | |
| host.watch.options | WatchOptions | |
| host.watch.subscription | HostRoleContext.watch() disposer | |
| host.worker.lease | HostRoleLease | |
| host.workspace | @bb/workspace/host: EnvironmentWorkspace | Keeps the host-only workspace object. |
| host.workspace.commitOptions | WorkspaceCommitOptions | Keeps the message and hook choice. |
| host.workspace.diffFilesArgs | WorkspaceDiffFilesInput | Keeps file count limits. |
| host.workspace.diffOptions | WorkspaceDiffOptions | Keeps diff work limits. |
| host.workspace.diffPatchArgs | WorkspaceDiffPatchInput | Keeps path and byte limits. |
| host.workspace.mutations | EnvironmentWorkspace mutation methods | Keeps commit, reset, merge, pull request, and destroy operations. |
| host.workspace.personalRoot | EnvironmentWorkspaceFactory.personalRoot() | Returns the managed personal root. |
| host.workspace.provision | EnvironmentWorkspaceFactory.provision() | Creates or reconnects a contained workspace. |
| host.workspace.provisionArgs | ProvisionWorkspaceInput | Keeps all four provisioning modes. |
| host.workspace.pullRequestAction | PullRequestAction | Keeps the typed pull request action. |
| host.workspace.queries | EnvironmentWorkspace query methods | Keeps all status, diff, branch, fingerprint, pull request, and file queries. |
| host.workspace.squashMergeOptions | WorkspaceSquashMergeOptions | Keeps the target branch and commit message. |
| host.workspace.statusOptions | WorkspaceStatusOptions | Keeps status work limits. |
| host.workspace.validatePersonalPath | EnvironmentWorkspaceFactory.validatePersonalPath() | Validates a personal target path. |
install
manifest
| Old item | New home | Note |
|---|---|---|
| manifest.bb.app | bb.plugin.jsonc: artifacts.app | |
| manifest.bb.branding | bb.plugin.jsonc: branding | |
| manifest.bb.branding.experimental_icons | bb.plugin.jsonc: branding.icons | Named icons are stable manifest data. |
| manifest.bb.branding.icon | bb.plugin.jsonc: branding.icon | |
| manifest.bb.branding.logo | bb.plugin.jsonc: branding.logo | |
| manifest.bb.branding.logo.dark | bb.plugin.jsonc: branding.logo.dark | |
| manifest.bb.branding.logo.light | bb.plugin.jsonc: branding.logo.light | |
| manifest.bb.description | bb.plugin.jsonc: description | |
| manifest.bb.host | bb.plugin.jsonc: artifacts.host | |
| manifest.bb.hostArtifact | bb.plugin.jsonc: artifacts.host and artifact.json | One verified host artifact fulfills declared roles. |
| manifest.bb.name | bb.plugin.jsonc: name | |
| manifest.bb.server | bb.plugin.jsonc: artifacts.server | |
| manifest.bb.skills | bb.plugin.jsonc: skills | The build makes ordinary bb.agents skill claims. |
| manifest.bb.themes | bb.plugin.jsonc: themes | The build makes keyed bb.layout.theme claims. |
| manifest.bb.themes.codeTheme | bb.plugin.jsonc: themes[].codeTheme | |
| manifest.bb.themes.css | bb.plugin.jsonc: themes[].css | |
| manifest.bb.themes.description | bb.plugin.jsonc: themes[].description | |
| manifest.bb.themes.id | bb.plugin.jsonc: themes[].id | |
| manifest.bb.themes.name | bb.plugin.jsonc: themes[].name | |
| manifest.noCurrentArtifacts | bb.plugin.jsonc: artifacts | The new manifest names built tier artifacts. |
| manifest.noCurrentContributes | bb.plugin.jsonc: claims, surfaces, services, settings, skills, themes, and hostRoles | The 2.0 manifest has explicit static declarations. |
| manifest.normalized | kernel loader: NormalizedPluginRecord | |
| manifest.normalized.appEntry | NormalizedPluginRecord.artifacts.app | |
| manifest.normalized.branding | NormalizedPluginRecord.branding | |
| manifest.normalized.description | NormalizedPluginRecord.description | |
| manifest.normalized.hostEntry | NormalizedPluginRecord.artifacts.host | |
| manifest.normalized.id | NormalizedPluginRecord.id | |
| manifest.normalized.name | NormalizedPluginRecord.name | |
| manifest.normalized.packageName | NormalizedPluginRecord.provenance.packageName | |
| manifest.normalized.rootDir | kernel artifact store: verified immutable root | |
| manifest.normalized.serverEntry | NormalizedPluginRecord.artifacts.server | |
| manifest.normalized.skillNames | bb.agents skill claims | The Agents plugin owns skill discovery and names. |
| manifest.normalized.skillsRootPaths | NormalizedPluginRecord.skills.roots | |
| manifest.normalized.themes | NormalizedPluginRecord.themes | |
| manifest.normalized.version | NormalizedPluginRecord.version | |
| manifest.package.bb | bb.plugin.jsonc | The manifest moves from package.json to a strict standalone file. |
| manifest.package.engines | bb.plugin.jsonc: engines | |
| manifest.package.name | bb.plugin.jsonc: id and artifact.json: plugin.packageName | The plugin ID is explicit. The package name stays provenance data. |
| manifest.package.pluginTailwindContent | dropped | The app build scans the source import graph and declared exported modules. |
| manifest.package.version | bb.plugin.jsonc: version | |
| manifest.reader | kernel loader: read and validate bb.plugin.json plus contract.json |
marketplace
registry
| Old item | New home | Note |
|---|---|---|
| registry.applyUpdate | bb plugin update | |
| registry.bindSdk | dropped | The old bb.sdk facade delegates to named 2.0 services during migration. |
| registry.builtin.root | kernel bundled release index: verified artifact root | |
| registry.builtin.source | kernel bundled release index: InstallSource | |
| registry.bundled.autoInstall | kernel bundled release index: entries[].installByDefault | |
| registry.bundled.categories | kernel bundled release index: categories | |
| registry.bundled.category | kernel bundled release index: entries[].category | |
| registry.bundled.defaultEnabled | kernel bundled release index: entries[].enabledByDefault | |
| registry.bundled.definition | kernel bundled release index: BundledPluginDefinition | |
| registry.bundled.list | bb.plugins.list({ includeBuiltins: true }) | |
| registry.bundled.name | kernel bundled release index: entries[].name | |
| registry.bundled.pluginId | kernel bundled release index: entries[].pluginId | |
| registry.bundled.plugins | kernel bundled release index: entries | |
| registry.checkUpdates | bb plugin outdated | |
| registry.componentBuild | bb plugin build: component registry generator | Build tooling generates @bb/ui registry records. |
| registry.componentRegistry | bb plugin build: @bb/ui component registry | The registry remains build input, not a runtime contract. |
| registry.events | bb.plugins.watch() | |
| registry.findAgentTool | bb.agents.tool keyed contract: resolve key | |
| registry.getApi | plugin factory: tier-specific api object | |
| registry.getAppAsset | kernel verified artifact route: app assets | |
| registry.getBrandingAsset | kernel verified artifact route: branding assets | |
| registry.getHttpRoute | bb.http: route registry | |
| registry.getIconAsset | kernel verified artifact route: named icons | |
| registry.getRpcHandler | bb.rpc: registered contract handler | |
| registry.getSettings | bb.settings service: get plugin settings | |
| registry.getSource | bb.plugins.get(): source | |
| registry.handleHostSignal | host role runtime: role.signal | |
| registry.handleHostWorkerExit | host role runtime: role.exited | |
| registry.handleUncaughtException | kernel diagnostics: generation failure and fallback | |
| registry.httpToken | bb plugin token and bb.http token authentication | |
| registry.index | bb plugin build: generated component registry index | The index remains build output. |
| registry.install | bb plugin install | |
| registry.installCatalog | bb plugin install marketplace:<market>/<entry> | |
| registry.installOfficial | bb plugin install builtin:<name> | |
| registry.installPath | bb plugin install path:<directory> | |
| registry.invokeAgentTool | bb.agents tool service: execute() | |
| registry.invokeHttpRoute | bb.http: route dispatch | |
| registry.invokeRpcHandler | bb.rpc.call() | |
| registry.isBuiltin | bb.plugins: PluginSummary.source.kind | |
| registry.item | bb plugin build: generated component registry item | The item remains build output. |
| registry.item.file | bb plugin build: generated component registry file | The file remains build output. |
| registry.list | bb.plugins.list() | |
| registry.listAgentTools | bb.agents.tool keyed contract: list claims | |
| registry.listCli | bb.commands.cli keyed contract: list claims | |
| registry.listHostArtifactGenerations | bb.plugins.hostRoles() | |
| registry.listInstructions | bb.agents instructions service: list() | |
| registry.listMentions | bb.mentions provider contract: list claims | |
| registry.listSkills | bb.agents skill service: list() | |
| registry.listThemes | bb.layout.theme keyed contract | The kernel indexes theme claims. The Layout plugin owns theme behavior. |
| registry.listUpdateResults | bb.plugins.get(): update facts | |
| registry.readLogTail | bb.plugins.diagnostics(): logs | |
| registry.readThemeCodeTheme | bb.layout.theme service: read code theme asset | |
| registry.readThemeCss | bb.layout.theme service: read CSS asset | |
| registry.reload | bb plugin reload | |
| registry.reloadOutcome | kernel loader: ReloadResult | |
| registry.remove | bb plugin remove | |
| registry.resolveAgentConfiguration | bb.agents configuration service: resolve() | |
| registry.resolveCatalogNpm | kernel marketplace resolver: npm InstallSource | |
| registry.resolveMention | bb.mentions service: resolve() | |
| registry.runCli | bb plugin run <id> <verb> | |
| registry.searchMentions | bb.mentions service: search() | |
| registry.service | kernel PluginRuntimeRegistry | |
| registry.setEnabled | bb plugin enable and bb plugin disable | |
| registry.skillContribution | bb.agents skill claim | |
| registry.start | kernel loader: boot and activate | |
| registry.startUpdateChecks | kernel marketplace update scheduler | |
| registry.stop | kernel loader: drain and unload | |
| registry.stopUpdateChecks | kernel marketplace update scheduler: dispose | |
| registry.sweepSchedules | kernel loader lifecycle: remove generation-owned schedules | |
| registry.ui.accordion | @bb/ui: Accordion* | Shared module export. |
| registry.ui.alert | @bb/ui: Alert | Shared module export. |
| registry.ui.alertDialog | @bb/ui: AlertDialog* | Shared module export. |
| registry.ui.aspectRatio | @bb/ui: AspectRatio | Shared module export. |
| registry.ui.avatar | @bb/ui: Avatar | Shared module export. |
| registry.ui.badge | @bb/ui: Badge | Shared module export. |
| registry.ui.breadcrumb | @bb/ui: Breadcrumb* | Shared module export. |
| registry.ui.button | @bb/ui: Button | Shared module export. |
| registry.ui.calendar | @bb/ui: Calendar | Shared module export. |
| registry.ui.card | @bb/ui: Card* | Shared module export. |
| registry.ui.carousel | @bb/ui: Carousel* | Shared module export. |
| registry.ui.chart | @bb/ui: Chart* | Shared module export. |
| registry.ui.checkbox | @bb/ui: Checkbox | Shared module export. |
| registry.ui.collapsible | @bb/ui: Collapsible* | Shared module export. |
| registry.ui.command | @bb/ui: Command* | Shared module export. |
| registry.ui.contextMenu | @bb/ui: ContextMenu* | Shared module export. |
| registry.ui.dialog | @bb/ui: Dialog* | Shared module export. |
| registry.ui.drawer | @bb/ui: Drawer* | Shared module export. |
| registry.ui.dropdownMenu | @bb/ui: DropdownMenu* | Shared module export. |
| registry.ui.form | @bb/ui: Form* | Shared module export. |
| registry.ui.hoverCard | @bb/ui: HoverCard* | Shared module export. |
| registry.ui.input | @bb/ui: Input | Shared module export. |
| registry.ui.inputOtp | @bb/ui: InputOtp | Shared module export. |
| registry.ui.label | @bb/ui: Label | Shared module export. |
| registry.ui.menubar | @bb/ui: Menubar* | Shared module export. |
| registry.ui.navigationMenu | @bb/ui: NavigationMenu* | Shared module export. |
| registry.ui.pagination | @bb/ui: Pagination* | Shared module export. |
| registry.ui.popover | @bb/ui: Popover* | Shared module export. |
| registry.ui.progress | @bb/ui: Progress | Shared module export. |
| registry.ui.radioGroup | @bb/ui: RadioGroup* | Shared module export. |
| registry.ui.resizable | @bb/ui: Resizable* | Shared module export. |
| registry.ui.scrollArea | @bb/ui: ScrollArea, ScrollBar | Shared module export. |
| registry.ui.select | @bb/ui: Select* | Shared module export. |
| registry.ui.separator | @bb/ui: Separator | Shared module export. |
| registry.ui.sheet | @bb/ui: Sheet* | Shared module export. |
| registry.ui.skeleton | @bb/ui: Skeleton | Shared module export. |
| registry.ui.slider | @bb/ui: Slider | Shared module export. |
| registry.ui.switch | @bb/ui: Switch | Shared module export. |
| registry.ui.table | @bb/ui: Table* | Shared module export. |
| registry.ui.tabs | @bb/ui: Tabs* | Shared module export. |
| registry.ui.textarea | @bb/ui: Textarea | Shared module export. |
| registry.ui.toggle | @bb/ui: Toggle | Shared module export. |
| registry.ui.toggleGroup | @bb/ui: ToggleGroup* | Shared module export. |
| registry.ui.tooltip | @bb/ui: Tooltip* | Shared module export. |
| registry.updateSettings | bb.settings service: update plugin settings | |
| registry.watchDispatch | bb.plugins.watch() |
server
| Old item | New home | Note |
|---|---|---|
| server.agents | api.agents and api.tools | The direct APIs provide configuration, interception, and keyed tool registration. |
| server.agents.configuration | bb.agents.configuration: AgentConfiguration | The list resolver combines this shape. |
| server.agents.configuration.instructions | bb.agents.configuration: AgentInstructions | The shape adds an explicit merge mode. |
| server.agents.configuration.skills | bb.agents.configuration: AgentConfiguration.skills | Values use stable rootId and path references. |
| server.agents.configuration.tools | bb.agents.configuration: AgentToolSet | The old array becomes the include list with an explicit exclude list. |
| server.agents.configurationContext | bb.agents.configuration: AgentConfigurationContext | The stable session context remains available. |
| server.agents.configure | api.agents.configure() | A list contribution resolves configuration for each turn. |
| server.agents.contributeInstructions | api.agents.contributeInstructions() | The shortcut adds an append configuration contribution. |
| server.agents.registerTool | api.tools.add() | The call provides one bb.agents.tool key. |
| server.agents.toolContext | bb.agents.tool: AgentToolContext | The context adds environment, host, and provider IDs. |
| server.agents.toolLabels | bb.agents.tool: AgentToolLabels | Pending and completed labels remain a pair. |
| server.agents.toolPresentation | bb.agents.tool: AgentToolPresentation | The presentation remains data for the timeline owner. |
| server.agents.toolPresentation.icon | bb.agents.tool: AgentToolPresentation.icon | The glyph remains host-rendered data. |
| server.agents.toolPresentation.label | bb.agents.tool: AgentToolPresentation.label | Pending and completed labels remain. |
| server.agents.toolPresentation.suppress | bb.agents.tool: AgentToolPresentation.suppress | The default-collapse hint remains. |
| server.agents.toolPresentation.tint | bb.agents.tool: AgentToolPresentation.tint | Light and dark tint values remain. |
| server.agents.toolRegistration | bb.agents.tool: AgentTool | AgentTool holds metadata, parameters, and execution. |
| server.agents.toolRegistration.description | bb.agents.tool: AgentTool.description | The model reads this description. |
| server.agents.toolRegistration.execute | bb.agents.tool: AgentTool.execute() | The selected winner handles the call. |
| server.agents.toolRegistration.instructions | bb.agents.tool: AgentTool.instructions | Active tool instructions join session instructions. |
| server.agents.toolRegistration.name | bb.agents.tool: AgentTool.name | The name is the keyed contract key. |
| server.agents.toolRegistration.parameters | bb.agents.tool: AgentTool.parameters | Standard Schema and JSON Schema forms remain available. |
| server.agents.toolResult | bb.agents.tool: AgentToolResult | Text and image content remain. |
| server.agents.toolSelection.name | bb.agents.configuration: AgentToolSelection.name | The selection names one bb.agents.tool key. |
| server.agents.toolSelection.parameters | bb.agents.configuration: AgentToolSelection.parameters | The per-turn schema restriction remains. |
| server.background | bb.background port | The kernel port owns generation-scoped background work. |
| server.background.schedule | bb.background: schedule() | The kernel keeps the durable five-field cron row. |
| server.background.service | bb.background: service() | The kernel restarts failed services with bounded backoff. |
| server.background.service.start | bb.background: BackgroundService.start() | The generation signal stops the service. |
| server.cli | server factory: api.cli | The direct API is backed by bb.commands.cli. |
| server.cli.commandInfo | bb.commands.cli service: CliSubcommand | Help metadata stays static. |
| server.cli.commandInfo.name | CliSubcommand.name | The field keeps its purpose. |
| server.cli.commandInfo.summary | CliSubcommand.summary | The field keeps its purpose. |
| server.cli.commandInfo.usage | CliSubcommand.usage | The field keeps its purpose. |
| server.cli.context | bb.commands.cli service: CliInvocationContext | The new context makes all four fields present and nullable where necessary. |
| server.cli.context.cwd | CliInvocationContext.cwd | The kernel supplies an absolute invocation directory. |
| server.cli.context.projectId | CliInvocationContext.projectId | A missing route context becomes null. |
| server.cli.context.signal | CliInvocationContext.signal | The signal is always present and stops on disconnect or shutdown. |
| server.cli.context.threadId | CliInvocationContext.threadId | A missing route context becomes null. |
| server.cli.executionResult | CLI boundary: CliExecutionResult | The boundary still normalizes output and reports limit failures. |
| server.cli.outputLimit | @bb/commands/server: CLI_OUTPUT_MAX_BYTES | The combined output limit stays 1 MiB. |
| server.cli.outputLimitError | CLI boundary: CliOutputLimitError | The error keeps byte counts and the stable code. |
| server.cli.register | server factory: api.cli.add() | The factory stages one keyed CLI claim. |
| server.cli.registration | bb.commands.cli service: CliVerb | The keyed contract replaces the old registration object. |
| server.cli.registration.commands | CliVerb.commands | The optional subcommand help list remains. |
| server.cli.registration.name | CliVerb.name and the bb.commands.cli key | The manifest claim and handler must use the same top-level verb. |
| server.cli.registration.run | CliVerb.run() | The server runs the resolved keyed provider. |
| server.cli.registration.summary | CliVerb.summary | The kernel can render help without handler execution. |
| server.cli.result | bb.commands.cli service: CliResult | The handler still returns an exit code and optional output. |
| server.contract | ServerPluginApi | The server factory receives the concrete tier API. |
| server.events | bb.threads service: events | The domain service owns thread lifecycle events. |
| server.events.on | bb.threads service: events.subscribe() | The subscription stays observe-only. |
| server.events.payloads | bb.threads service: ThreadEventMap | The event map keeps typed payloads. |
| server.events.thread.active | bb.threads service: ThreadEventMap["thread.active"] | The lifecycle event keeps its payload. |
| server.events.thread.archived | bb.threads service: ThreadEventMap["thread.archived"] | The lifecycle event keeps its payload. |
| server.events.thread.created | bb.threads service: ThreadEventMap["thread.created"] | The lifecycle event keeps its payload. |
| server.events.thread.deleted | bb.threads service: ThreadEventMap["thread.deleted"] | The lifecycle event keeps its payload. |
| server.events.thread.failed | bb.threads service: ThreadEventMap["thread.failed"] | The lifecycle event keeps its payload. |
| server.events.thread.idle | bb.threads service: ThreadEventMap["thread.idle"] | The lifecycle event keeps its payload. |
| server.experimental_aiServices | api.ai | The stable API registers bb.agents.ai keys. |
| server.experimental_aiServices.declaration | bb.agents.ai: AiService | The public service joins metadata and methods. |
| server.experimental_aiServices.declaration.displayName | bb.agents.ai: AiService.displayName | The user-facing label remains. |
| server.experimental_aiServices.declaration.id | bb.agents.ai: AiService.id | The ID is the keyed contract key. |
| server.experimental_aiServices.declaration.kinds | bb.agents.ai: AiService.kinds | The list declares inference and voice methods. |
| server.experimental_aiServices.register | api.ai.add() | The call provides one keyed AI service. |
| server.factory | defineServerPlugin(factory) | The server artifact exports one typed factory. |
| server.hosts | plugin factory: api.hosts | |
| server.hosts.client.call | HostRoleClient.call() | |
| server.hosts.client.experimental_onSignal | HostRoleClient.onSignal() | |
| server.hosts.client.experimental_onWorkerExit | HostRolesPort.watch(): role.exited | |
| server.hosts.client.options | HostRoleClient.call(): options | |
| server.hosts.client.signalEvent | HostRoleEvent: role.signal | |
| server.hosts.clientArgs.contract | contract.json: hostRoles[] | |
| server.hosts.clientArgs.experimental_signals | contract.json: hostRoles[].signals | |
| server.hosts.declareSharedPorts | bb.plugin.jsonc: hostRoles[].sharedPorts | |
| server.hosts.ensureSharedPortTunnel | host daemon: tunnel.ensure | |
| server.hosts.experimental_client | HostRolesPort.use() | |
| server.hosts.sharedPortIdentity | host daemon: tunnel identity | |
| server.http | bb.http service | |
| server.http.handler | bb.http: HttpHandler | |
| server.http.route | bb.http: route() | |
| server.http.route.options | bb.http: HttpRoute | |
| server.http.route.options.auth | bb.http: HttpRoute.auth | |
| server.import.defineRpcContract | defineRpcContract() from @get-bb/plugin/contracts | |
| server.log | plugin factory: api.log and kernel diagnostics | |
| server.log.debug | PluginLogger.debug() | |
| server.log.error | PluginLogger.error() | |
| server.log.info | PluginLogger.info() | |
| server.log.warn | PluginLogger.warn() | |
| server.onDispose | PluginScope.effect() or the factory disposer | |
| server.pluginId | PluginScope.pluginId | |
| server.providers | bb.providers.provider contract | The keyed contract replaces the registration namespace. |
| server.providers.capabilities | bb.providers.provider: ProviderCapabilities | |
| server.providers.capabilities.fork | bb.providers.provider: ProviderCapabilities.fork | |
| server.providers.capabilities.permissionModes | bb.providers.provider: ProviderCapabilities.permissionModes | |
| server.providers.capabilities.reasoningLevels | bb.providers.provider: ProviderCapabilities.reasoningLevels | |
| server.providers.capabilities.supportsManualCompaction | bb.providers.provider: ProviderCapabilities.supportsManualCompaction | |
| server.providers.capabilities.supportsNativeUserQuestion | bb.providers.provider: ProviderCapabilities.supportsNativeUserQuestion | |
| server.providers.capabilities.supportsServiceTier | bb.providers.provider: ProviderCapabilities.supportsServiceTier | |
| server.providers.capabilities.supportsThreadArchive | bb.providers.provider: ProviderCapabilities.supportsThreadArchive | |
| server.providers.capabilities.supportsThreadRename | bb.providers.provider: ProviderCapabilities.supportsThreadRename | |
| server.providers.declaration | bb.providers.provider: ProviderDeclaration | The static declaration remains part of contract.json. |
| server.providers.declaration.capabilities | bb.providers.provider: ProviderDeclaration.capabilities | |
| server.providers.declaration.composerActions | bb.providers.provider: ProviderDeclaration.composerActions | |
| server.providers.declaration.deriveProviderOptions | bb.providers.provider: Provider.deriveOptions() | Behavior moves from declaration data to the provider service. |
| server.providers.declaration.displayName | bb.providers.provider: ProviderDeclaration.displayName | |
| server.providers.declaration.env | bb.providers.provider: ProviderDeclaration.env | |
| server.providers.declaration.experimental_bridgeOptions | bb.providers.provider: ProviderDeclaration.bridgeOptions | The stable declaration field replaces the experimental field. |
| server.providers.declaration.experimental_nativeCommandRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.commands | The stable native-roots object replaces the experimental field. |
| server.providers.declaration.experimental_nativeSkillRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.skills | The stable native-roots object replaces the experimental field. |
| server.providers.declaration.experimental_resolvesNativeRoots | bb.providers.provider: ProviderDeclaration.nativeRoots.resolveOnHost | The stable native-roots object replaces the experimental field. |
| server.providers.declaration.experimental_visibility | bb.providers.provider: ProviderDeclaration.visibility | The stable declaration field replaces the experimental field. |
| server.providers.declaration.extensionKinds | bb.providers.provider: ProviderDeclaration.extensionKinds | |
| server.providers.declaration.family | bb.providers.provider: ProviderDeclaration.family | |
| server.providers.declaration.icon | bb.providers.provider: ProviderDeclaration.icon | |
| server.providers.declaration.id | bb.providers.provider: ProviderDeclaration.id | |
| server.providers.declaration.maintenance | bb.providers.provider: ProviderDeclaration.maintenance | |
| server.providers.declaration.models | bb.providers.provider: ProviderDeclaration.models | |
| server.providers.declaration.reasoningLevels | bb.providers.provider: ProviderDeclaration.reasoningLevels | |
| server.providers.declaration.serviceTiers | bb.providers.provider: ProviderDeclaration.serviceTiers | |
| server.providers.declaration.strings | bb.providers.provider: ProviderDeclaration.strings | |
| server.providers.env.passthrough | bb.providers.provider: ProviderDeclaration.env.passthrough | |
| server.providers.extensionKind | bb.providers.provider: ProviderExtensionKind | |
| server.providers.extensionKind.item | bb.providers.provider: ProviderExtensionKind.item | |
| server.providers.extensionKind.state | bb.providers.provider: ProviderExtensionKind.state | |
| server.providers.fallbackModel | bb.providers.provider: ProviderFallbackModel | |
| server.providers.fallbackModel.defaultReasoningEffort | bb.providers.provider: ProviderFallbackModel.defaultReasoningEffort | |
| server.providers.fallbackModel.description | bb.providers.provider: ProviderFallbackModel.description | |
| server.providers.fallbackModel.displayName | bb.providers.provider: ProviderFallbackModel.displayName | |
| server.providers.fallbackModel.id | bb.providers.provider: ProviderFallbackModel.id | |
| server.providers.fallbackModel.isDefault | bb.providers.provider: ProviderFallbackModel.isDefault | |
| server.providers.fallbackModel.supportedReasoningEfforts | bb.providers.provider: ProviderFallbackModel.supportedReasoningEfforts | |
| server.providers.maintenance | bb.providers.provider: ProviderMaintenance | |
| server.providers.maintenance.health | bb.providers.provider: ProviderMaintenance.health | |
| server.providers.maintenance.installation | bb.providers.provider: ProviderMaintenance.installation | |
| server.providers.maintenance.usage | bb.providers.provider: ProviderMaintenance.usage | |
| server.providers.models.fallback | bb.providers.provider: ProviderDeclaration.models.fallback | |
| server.providers.models.scope | bb.providers.provider: ProviderDeclaration.models.scope | |
| server.providers.optionDescriptor | bb.providers.provider: ProviderOption | |
| server.providers.optionDescriptor.description | bb.providers.provider: ProviderOption.description | |
| server.providers.optionDescriptor.id | bb.providers.provider: ProviderOption.id | |
| server.providers.optionDescriptor.label | bb.providers.provider: ProviderOption.label | |
| server.providers.optionsContext | bb.providers.provider: ProviderOptionsContext | |
| server.providers.optionsContext.model | bb.providers.provider: ProviderOptionsContext.model | |
| server.providers.optionsContext.permissionMode | bb.providers.provider: ProviderOptionsContext.permissionMode | |
| server.providers.optionsContext.projectId | bb.providers.provider: ProviderOptionsContext.projectId | |
| server.providers.optionsContext.promptMode | bb.providers.provider: ProviderOptionsContext.promptMode | |
| server.providers.optionsContext.settings | bb.providers.provider: ProviderOptionsContext.settings | |
| server.providers.optionsContext.threadId | bb.providers.provider: ProviderOptionsContext.threadId | |
| server.providers.register | api.services.provide(bbProvider, implementation, { key }) | The factory scope supplies automatic cleanup. |
| server.providers.strings | bb.providers.provider: ProviderStrings | |
| server.providers.strings.brandPrefix | bb.providers.provider: ProviderStrings.brandPrefix | |
| server.providers.strings.expiredHint | bb.providers.provider: ProviderStrings.expiredHint | |
| server.providers.strings.iconTint | bb.providers.provider: ProviderStrings.iconTint | |
| server.providers.strings.installUrl | bb.providers.provider: ProviderStrings.installUrl | |
| server.providers.strings.planModeCopy | bb.providers.provider: ProviderStrings.planModeCopy | |
| server.providers.strings.signInHint | bb.providers.provider: ProviderStrings.signInHint | |
| server.realtime | bb.realtime service | |
| server.realtime.publish | bb.realtime: publish() | |
| server.rpc | bb.rpc service | |
| server.rpc.contract | bb.rpc: RpcContract and contract.json methods | |
| server.rpc.error | bb.rpc: RpcError | |
| server.rpc.register | bb.rpc: register() | |
| server.sdk | deprecated bb.sdk facade over named services | The facade drains during migration. |
| server.sdk.contract | typed service edges and kernel ports | Named contracts replace the broad SDK facade. |
| server.sdk.environments | bb.workspace service: environments | Replaces the broad SDK area. |
| server.sdk.environments.archiveThreads | bb.workspace service: environments.archiveThreads() | The implementation uses its required bb.threads edge. |
| server.sdk.environments.commit | bb.workspace service: environments.commit() | Keeps an explicit commit input. |
| server.sdk.environments.diff | bb.workspace service: environments.diff() | Returns a bounded diff record. |
| server.sdk.environments.diffBranches | bb.workspace service: environments.diffBranches() | Lists valid comparison branches. |
| server.sdk.environments.diffFile | bb.workspace service: environments.diffFile() | Returns one changed file. |
| server.sdk.environments.diffFiles | bb.workspace service: environments.diffFiles() | Returns a bounded file page. |
| server.sdk.environments.diffPatch | bb.workspace service: environments.diffPatch() | Returns bounded patches for selected paths. |
| server.sdk.environments.get | bb.workspace service: environments.get() | Reads one environment. |
| server.sdk.environments.markPullRequestDraft | bb.workspace service: environments.markPullRequestDraft() | Uses a typed environment ID. |
| server.sdk.environments.markPullRequestReady | bb.workspace service: environments.markPullRequestReady() | Uses a typed environment ID. |
| server.sdk.environments.mergePullRequest | bb.workspace service: environments.mergePullRequest() | Keeps merge options in one input record. |
| server.sdk.environments.paths | bb.workspace service: environments.paths() | Lists roots for one environment. |
| server.sdk.environments.pullRequest | bb.workspace service: environments.pullRequest() | Returns pull request state or null. |
| server.sdk.environments.squashMerge | bb.workspace service: environments.squashMerge() | Keeps target and message options. |
| server.sdk.environments.status | bb.workspace service: environments.status() | Returns workspace and Git status. |
| server.sdk.environments.update | bb.workspace service: environments.update() | Updates environment metadata. |
| server.sdk.files | bb.files service | The named service replaces the broad SDK area. |
| server.sdk.files.createPreview | bb.files service: preview() | The result is a scoped preview lease. |
| server.sdk.files.list | bb.files service: list() | The result uses typed FileEntry values. |
| server.sdk.files.listPaths | bb.files service: list({ recursive: true }) | One method replaces the duplicate path-list verb. |
| server.sdk.files.mkdir | bb.files service: mkdir() | The request can create parent directories. |
| server.sdk.files.move | bb.files service: move() | The service checks both target scopes. |
| server.sdk.files.read | bb.files service: read() | The request uses FileTarget. |
| server.sdk.files.remove | bb.files service: remove() | Recursive removal requires an explicit flag. |
| server.sdk.files.write | bb.files service: write() | expectedRevision keeps the concurrency guard. |
| server.sdk.guide | bb guide static renderer | The kernel keeps static CLI guide rendering. |
| server.sdk.guide.render | bb guide: render chapter | The renderer reads verified packaged guide data. |
| server.sdk.hosts | bb.workspace service: hosts | The named workspace service owns enrolled host operations. |
| server.sdk.hosts.cloneDefaultPath | bb.workspace service: hosts.cloneDefaultPath() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.createJoinCode | bb.workspace service: hosts.createJoinCode() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.delete | bb.workspace service: hosts.delete() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.directory | bb.workspace service: hosts.directory() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.get | bb.workspace service: hosts.get() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.installProviderCli | bb.workspace service: hosts.installProviderCli() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.list | bb.workspace service: hosts.list() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.pathsExist | bb.workspace service: hosts.pathsExist() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.pickFolder | bb.workspace service: hosts.pickFolder() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.providerCliStatus | bb.workspace service: hosts.providerCliStatus() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.retryUpdate | bb.workspace service: hosts.retryUpdate() | The workspace owner keeps explicit host identity. |
| server.sdk.hosts.update | bb.workspace service: hosts.update() | The workspace owner keeps explicit host identity. |
| server.sdk.plugins | bb.plugins introspection plus privileged kernel controls | |
| server.sdk.plugins.applyUpdate | dropped | Use the privileged bb plugin update command or the recovery UI. |
| server.sdk.plugins.callRpc | bb.rpc.call() | |
| server.sdk.plugins.catalog | kernel marketplace control API | This API is privileged and is not a plugin service. |
| server.sdk.plugins.catalog.install | dropped | Use the privileged bb plugin install flow. |
| server.sdk.plugins.catalog.installPlan | dropped | Use the privileged bb plugin install flow. |
| server.sdk.plugins.catalog.search | kernel marketplace query: search() | |
| server.sdk.plugins.catalog.status | kernel marketplace query: status() | |
| server.sdk.plugins.checkUpdates | bb plugin outdated | |
| server.sdk.plugins.disable | dropped | Use the privileged bb plugin disable command or the plugin management UI. |
| server.sdk.plugins.enable | dropped | Use the privileged bb plugin enable command or the plugin management UI. |
| server.sdk.plugins.getSettings | bb.preferences: list() plus bb.plugins manifest read | The schema comes from bb.plugins, and values come from bb.preferences. |
| server.sdk.plugins.getSource | bb.plugins.get(): source | |
| server.sdk.plugins.install | dropped | Use the privileged bb plugin install command or the plugin management UI. |
| server.sdk.plugins.list | bb.plugins.list() | |
| server.sdk.plugins.listUpdateResults | bb.plugins.get(): update facts | |
| server.sdk.plugins.marketplaces | kernel marketplace control API | This API is privileged and is not a plugin service. |
| server.sdk.plugins.marketplaces.add | dropped | Use the privileged bb marketplace add command or the plugin management UI. |
| server.sdk.plugins.marketplaces.list | dropped | Use the privileged bb marketplace list command or the plugin management UI. |
| server.sdk.plugins.marketplaces.refresh | dropped | Use the privileged bb marketplace refresh command or the plugin management UI. |
| server.sdk.plugins.marketplaces.remove | dropped | Use the privileged bb marketplace remove command or the plugin management UI. |
| server.sdk.plugins.reload | dropped | Use the privileged bb plugin reload command or the plugin management UI. |
| server.sdk.plugins.remove | dropped | Use the privileged bb plugin remove command or the plugin management UI. |
| server.sdk.plugins.token | bb plugin token and bb.http token authentication | |
| server.sdk.plugins.updateSettings | bb.preferences: set() and clear() | Secret changes use the kernel human-only secret flow. |
| server.sdk.projects | bb.workspace service: projects | Replaces the broad SDK area. |
| server.sdk.projects.attachments | bb.workspace service: projects.attachments | Keeps attachment operations under projects. |
| server.sdk.projects.attachments.copy | bb.workspace service: projects.attachments.copy() | Copies one attachment. |
| server.sdk.projects.attachments.read | bb.workspace service: projects.attachments.read() | Reads one attachment. |
| server.sdk.projects.attachments.upload | bb.workspace service: projects.attachments.upload() | Uploads one attachment. |
| server.sdk.projects.branches | bb.workspace service: projects.branches() | Lists source branches. |
| server.sdk.projects.commands | bb.workspace service: projects.commands() | Lists project commands. |
| server.sdk.projects.create | bb.workspace service: projects.create() | Creates one project. |
| server.sdk.projects.defaultExecutionOptions | bb.workspace service: projects.defaultExecutionOptions() | Reads project execution defaults. |
| server.sdk.projects.delete | bb.workspace service: projects.delete() | Deletes one project. |
| server.sdk.projects.fileContent | bb.workspace service: projects.fileContent() | Reads source content through workspace containment. |
| server.sdk.projects.files | bb.workspace service: projects.files() | Lists source files through workspace containment. |
| server.sdk.projects.get | bb.workspace service: projects.get() | Reads one project. |
| server.sdk.projects.list | bb.workspace service: projects.list() | Returns a bounded project page. |
| server.sdk.projects.paths | bb.workspace service: projects.paths() | Lists project source roots. |
| server.sdk.projects.promptHistory | bb.workspace service: projects.promptHistory() | Reads bounded prompt history. |
| server.sdk.projects.reorder | bb.workspace service: projects.reorder() | Applies one explicit project order. |
| server.sdk.projects.sidebarBootstrap | bb.workspace service: projects.catalogSnapshot() | Replaces sidebar-specific output with a presentation-neutral project catalog. |
| server.sdk.projects.sources | bb.workspace service: projects.sources | Keeps source operations under projects. |
| server.sdk.projects.sources.add | bb.workspace service: projects.sources.add() | Adds one source. |
| server.sdk.projects.sources.delete | bb.workspace service: projects.sources.delete() | Deletes one source. |
| server.sdk.projects.sources.update | bb.workspace service: projects.sources.update() | Updates one source. |
| server.sdk.projects.update | bb.workspace service: projects.update() | Updates project metadata. |
| server.sdk.providers | bb.providers service | The named service replaces the broad SDK area. |
| server.sdk.providers.list | bb.providers service: list() | The service returns the active provider directory. |
| server.sdk.providers.models | bb.providers service: models() | The service resolves models through the provider winner. |
| server.sdk.skills | bb.agents.skills service | The named service replaces the broad SDK area. |
| server.sdk.skills.getContent | bb.agents.skills service: getContent() | The method reads one skill. |
| server.sdk.skills.list | bb.agents.skills service: list() | The method lists skill summaries. |
| server.sdk.skills.listFiles | bb.agents.skills service: listFiles() | The method lists files under one skill. |
| server.sdk.skills.registry | bb.agents.skills service: registry | The nested service owns registry operations. |
| server.sdk.skills.registry.detail | bb.agents.skills service: registry.detail() | The method reads source details. |
| server.sdk.skills.registry.entries | bb.agents.skills service: registry.entries() | The method lists source entries. |
| server.sdk.skills.registry.get | bb.agents.skills service: registry.get() | The method reads one registry skill. |
| server.sdk.skills.registry.install | bb.agents.skills service: registry.install() | The method installs one registry skill. |
| server.sdk.skills.registry.repositoryStars | bb.agents.skills service: registry.repositoryStars() | The method reads repository stars. |
| server.sdk.skills.registry.search | bb.agents.skills service: registry.search() | The method searches the registry. |
| server.sdk.skills.remove | bb.agents.skills service: remove() | The method removes one skill by stable identity. |
| server.sdk.skills.update | bb.agents.skills service: update() | The method writes content with an optional revision check. |
| server.sdk.status | bb.plugins: status() | Thread and workspace fields move to their domain services. |
| server.sdk.status.get | bb.plugins: status() | Thread and workspace fields move to their domain services. |
| server.sdk.subscribe | bb.realtime: subscribe() | Named domain services replace entity selectors. |
| server.sdk.subscribe.connection | bb.realtime: connection() | The connection listener reports transport state. |
| server.sdk.subscribe.environmentChanged | bb.workspace service: environments.watch() | Replaces the broad realtime subscription filter. |
| server.sdk.subscribe.hostChanged | bb.workspace service: hosts.watch() | The host watcher replaces the broad realtime selector. |
| server.sdk.subscribe.projectChanged | bb.workspace service: projects.watch() | Replaces the broad realtime subscription filter. |
| server.sdk.subscribe.systemChanged | bb.workspace service: watch() | The workspace watcher reports host, environment, and project changes. |
| server.sdk.subscribe.systemConfigChanged | bb.preferences: watch() | The preference watcher reports effective configuration changes. |
| server.sdk.subscribe.threadChanged | bb.threads service: records.subscribe() | The typed subscription replaces the realtime thread channel. |
| server.sdk.system | named owner services and kernel ports | The broad system facade splits by contract owner. |
| server.sdk.system.attention | bb.threads service: attention.get() | The thread owner computes unread and pending attention. |
| server.sdk.system.cliSkillsStatus | bb.agents.skills service: cli.status() | Skill install state moves out of the system SDK area. |
| server.sdk.system.config | bb.preferences: list() | This port returns the settings slice. Other named services return the old system facts. |
| server.sdk.system.executionOptions | bb.providers service: models() execution catalog | The provider catalog owns execution choices. |
| server.sdk.system.installCliSkills | bb.agents.skills service: cli.install() | CLI skill installation moves to the skill owner. |
| server.sdk.system.providerStates | bb.providers service: list() and watch() | Provider records carry availability and winner state. |
| server.sdk.system.reloadConfig | bb.preferences: reload() | The kernel port reloads external configuration. |
| server.sdk.system.transcribeVoice | bb.agents.ai: AiService.voice.transcribe() | The selected AI service transcribes the recording. |
| server.sdk.system.updateExperiments | bb.preferences: set() | The bb.settings manifest declares the experiment keys. |
| server.sdk.system.updateGeneralSettings | bb.preferences: set() | Individual keys replace the old bulk object update. |
| server.sdk.system.updateKeyboardSettings | bb.preferences: set() | Declared keyboard keys replace the bulk update. |
| server.sdk.system.usageLimits | bb.providers service: usage() | The selected provider reports account limits. |
| server.sdk.system.version | bb.plugins: status().version | Kernel status supplies the server version. |
| server.sdk.terminals | bb.workspace service: terminals | The named workspace service owns terminal sessions. |
| server.sdk.terminals.close | bb.workspace service: terminals.close() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.create | bb.workspace service: terminals.create() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.get | bb.workspace service: terminals.get() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.input | bb.workspace service: terminals.input() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.list | bb.workspace service: terminals.list() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.output | bb.workspace service: terminals.output() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.rename | bb.workspace service: terminals.rename() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.resize | bb.workspace service: terminals.resize() | The workspace owner keeps terminal identity and scope. |
| server.sdk.terminals.restart | bb.workspace service: terminals.restart() | The workspace owner keeps terminal identity and scope. |
| server.sdk.theme | bb.layout.themes service | bb.sdk.theme becomes a compatibility facade. |
| server.sdk.theme.catalog | bb.layout.themes service: catalog() | The catalog lists built-in, custom, and plugin theme claims. |
| server.sdk.theme.get | bb.layout.themes service: get() | The result uses LayoutThemeState. |
| server.sdk.theme.set | bb.layout.themes service: set(selection) and set(themeId) | Both old overloads stay available. |
| server.sdk.threadSections | bb.threads service: sections | The thread service owns section records. |
| server.sdk.threadSections.create | bb.threads service: sections.create() | |
| server.sdk.threadSections.delete | bb.threads service: sections.delete() | |
| server.sdk.threadSections.list | bb.threads service: sections.list() | |
| server.sdk.threadSections.update | bb.threads service: sections.update() | |
| server.sdk.threads | bb.threads service | The compatibility facade resolves to this named service. |
| server.sdk.threads.archive | bb.threads service: records.archive() | |
| server.sdk.threads.archiveAll | bb.threads service: records.archiveTree() | |
| server.sdk.threads.cancelPlan | bb.threads service: execution.cancelPlan() | |
| server.sdk.threads.childSummary | bb.threads service: records.childSummary() | |
| server.sdk.threads.clearGoal | bb.threads service: execution.clearGoal() | |
| server.sdk.threads.compact | bb.threads service: execution.compact() | |
| server.sdk.threads.conversationOutline | bb.threads service: records.conversationOutline() | |
| server.sdk.threads.defaultExecutionOptions | bb.threads service: execution.defaultOptions() | |
| server.sdk.threads.delete | bb.threads service: records.delete() | |
| server.sdk.threads.editMessage | bb.threads service: timeline.editMessage() | |
| server.sdk.threads.events | bb.threads service: events | The domain service exposes durable event history. |
| server.sdk.threads.events.list | bb.threads service: events.list() | |
| server.sdk.threads.events.wait | bb.threads service: events.wait() | |
| server.sdk.threads.fork | bb.threads service: records.fork() | |
| server.sdk.threads.get | bb.threads service: records.get() | |
| server.sdk.threads.interactions | bb.threads service: interactions | The domain service owns pending interactions. |
| server.sdk.threads.interactions.cancel | bb.threads service: interactions.cancel() | |
| server.sdk.threads.interactions.get | bb.threads service: interactions.get() | |
| server.sdk.threads.interactions.list | bb.threads service: interactions.list() | |
| server.sdk.threads.interactions.resolve | bb.threads service: interactions.resolve() | |
| server.sdk.threads.interactions.respond | bb.threads service: interactions.respond() | |
| server.sdk.threads.list | bb.threads service: records.list() | |
| server.sdk.threads.markRead | bb.threads service: records.markRead() | |
| server.sdk.threads.markUnread | bb.threads service: records.markUnread() | |
| server.sdk.threads.open | bb.threads service: selection.open() | |
| server.sdk.threads.output | bb.threads service: execution.output() | |
| server.sdk.threads.paneAction | bb.threads service: selection.updateContext() | The service stores an opaque context and does not define pane layout. |
| server.sdk.threads.pin | bb.threads service: records.pin() | |
| server.sdk.threads.promptHistory | bb.threads service: execution.promptHistory() | |
| server.sdk.threads.queuedMessages | bb.threads service: queue | The queue service owns queued messages. |
| server.sdk.threads.queuedMessages.create | bb.threads service: queue.create() | |
| server.sdk.threads.queuedMessages.delete | bb.threads service: queue.delete() | |
| server.sdk.threads.queuedMessages.list | bb.threads service: queue.list() | |
| server.sdk.threads.queuedMessages.reorder | bb.threads service: queue.reorder() | |
| server.sdk.threads.queuedMessages.send | bb.threads service: queue.send() | |
| server.sdk.threads.queuedMessages.setGroupBoundary | bb.threads service: queue.setGroupBoundary() | |
| server.sdk.threads.queuedMessages.update | bb.threads service: queue.update() | |
| server.sdk.threads.reorderPinned | bb.threads service: records.reorderPinned() | |
| server.sdk.threads.resolveMentions | bb.threads service: execution.resolveMentions() | |
| server.sdk.threads.search | bb.threads service: records.search() | |
| server.sdk.threads.send | bb.threads service: execution.send() | |
| server.sdk.threads.spawn | bb.threads service: execution.spawn() | |
| server.sdk.threads.stop | bb.threads service: execution.stop() | |
| server.sdk.threads.storageFiles | bb.threads service: storage.files() | |
| server.sdk.threads.storageLocation | bb.threads service: storage.location() | |
| server.sdk.threads.storagePaths | bb.threads service: storage.paths() | |
| server.sdk.threads.tabs | bb.threads service: selection.getContexts() and selection.setContexts() | Opaque contexts replace tab-specific storage. |
| server.sdk.threads.tabs.get | bb.threads service: selection.getContexts() | |
| server.sdk.threads.tabs.update | bb.threads service: selection.setContexts() | |
| server.sdk.threads.timeline | bb.threads service: timeline.list() | |
| server.sdk.threads.timelineTurnSummaryDetails | bb.threads service: timeline.turnSummaryDetails() | |
| server.sdk.threads.unarchive | bb.threads service: records.unarchive() | |
| server.sdk.threads.unpin | bb.threads service: records.unpin() | |
| server.sdk.threads.update | bb.threads service: records.update() | |
| server.sdk.threads.wait | bb.threads service: execution.wait() | |
| server.server | plugin factory facts and kernel ports | |
| server.server.experimental_dataDir | dropped | Use bb.storage. The kernel does not expose its data directory. |
| server.server.loopbackBaseUrl | bb.http: url() | |
| server.settings | bb.preferences port | The fixed kernel port replaces the factory property. |
| server.settings.define | dropped | Declare the schema in the kernel manifest and read values through bb.preferences. |
| server.settings.descriptor | dropped | The kernel manifest settings schema replaces the runtime descriptor union. |
| server.settings.descriptor.default | dropped | The kernel manifest settings schema owns the effective default. |
| server.settings.descriptor.description | dropped | The kernel manifest settings schema owns the field description. |
| server.settings.descriptor.experimental_multiline | dropped | The kernel manifest settings schema selects the text editor. |
| server.settings.descriptor.label | dropped | The kernel manifest settings schema owns the field label. |
| server.settings.descriptor.options | dropped | The kernel manifest settings schema owns select choices. |
| server.settings.descriptor.secret | dropped | The kernel manifest marks a secret field, and the UI uses the kernel bb.secrets port. |
| server.settings.descriptor.type | dropped | The kernel manifest settings schema owns the field type. |
| server.settings.handle.get | bb.preferences: get() | Returns one effective typed value. |
| server.settings.handle.onChange | bb.preferences: watch() | Returns a disposable subscription. |
| server.status | bb.plugins: reportStatus() | |
| server.status.needsConfiguration | bb.plugins: reportStatus({ state: 'needs-configuration' }) | |
| server.storage | bb.storage service | |
| server.storage.database | bb.storage: database() | |
| server.storage.kv | bb.storage: kv() | |
| server.storage.kv.delete | bb.storage: KvStore.delete() | |
| server.storage.kv.get | bb.storage: KvStore.get() | |
| server.storage.kv.list | bb.storage: KvStore.list() | |
| server.storage.kv.set | bb.storage: KvStore.set() | |
| server.storage.migrate | bb.storage: migrate() | |
| server.ui | domain-owned surfaces and services | Threads and Mentions own the former server UI operations. |
| server.ui.mentionItem | bb.mentions.provider: MentionItem | The item keeps its stable ID, title, subtitle, and icon. |
| server.ui.mentionProvider | bb.mentions.provider: MentionProvider and MentionProviderFacts | Static facts and live methods now have separate shapes. |
| server.ui.mentionProvider.id | bb.mentions.provider: MentionProviderFacts.providerId | The build enforces an owner namespace. |
| server.ui.mentionProvider.label | bb.mentions.provider: MentionProviderFacts.label | The app reads the label from static contract facts. |
| server.ui.mentionProvider.resolve | bb.mentions.provider: resolve() | Resolution runs at send time and returns agent-only context. |
| server.ui.mentionProvider.search | bb.mentions.provider: search() | The service adds cancellation, a limit, and a two-second deadline. |
| server.ui.mentionProvider.triggers | bb.mentions.provider: keyed claim | Each array entry becomes one claim. An omitted array becomes the @ key. |
| server.ui.mentionSearchContext | bb.mentions.provider: MentionProviderSearchInput | The new input adds a limit and an abort signal. |
| server.ui.registerMentionProvider | bb.mentions.provider keyed claim plus api.services.provide() | One old registration becomes one claim for each trigger. |
| server.ui.requestInput | bb.threads service: interactions.request() | The thread interaction service replaces the server UI request. |
| server.ui.requestInput.options.signal | bb.threads service: interactions.request() options.signal | The abort signal cancels the wait. |
| server.ui.requestInput.request | bb.threads service: ThreadInteractionRequest | The request keeps the thread, interaction type, title, payload, and timeout. |
settings
| Old item | New home | Note |
|---|---|---|
| settings.boolean.fields | dropped | The kernel manifest settings schema owns boolean field declarations. |
| settings.define | dropped | Declare settings in the kernel manifest settings schema. |
| settings.descriptor | dropped | The kernel manifest settings schema owns the descriptor union. |
| settings.descriptors | dropped | The kernel manifest settings schema owns the settings map. |
| settings.handle.get | bb.preferences: get() | Returns the effective stored or default cell. |
| settings.handle.onChange | bb.preferences: watch() | Reports committed effective changes. |
| settings.namespace | bb.preferences port | The fixed kernel port replaces the old runtime settings namespace. |
| settings.project.fields | dropped | The kernel manifest settings schema owns project field declarations. |
| settings.select.fields | dropped | The kernel manifest settings schema owns select field declarations. |
| settings.string.fields | dropped | The kernel manifest settings schema owns string field declarations. |
| settings.value | bb.preferences: PreferenceCell.value | The new value type is JsonValue after schema validation. |
testing
| Old item | New home | Note |
|---|---|---|
| testing.contentScript.mounted | dropped | RenderedSurface replaces the mount result and inspects cleanup. |
| testing.contentScript.options | dropped | RenderSurfaceOptions supplies the replacement surface context. |
| testing.createFakePluginHost | createServerHarness() | The server harness runs the real loader graph. |
| testing.createFakeSdk | ServerHarness.services.stub() | Named service doubles replace the broad bb.sdk fake. |
| testing.fakeHarness.callAgentTool | ServerHarness.drivers.callAgentTool() | It calls a keyed bb.agents.tool claim. |
| testing.fakeHarness.callRpc | ServerHarness.drivers.callRpc() | It calls the explicit RPC port. |
| testing.fakeHarness.dispose | ServerHarness.dispose() | It tests automatic cleanup and abort. |
| testing.fakeHarness.emitThreadEvent | ServerHarness.drivers.emitThreadEvent() | It sends an event through bb.threads. |
| testing.fakeHarness.fetchHttp | ServerHarness.drivers.fetchHttp() | It calls the HTTP port. |
| testing.fakeHarness.reload | ServerHarness.drivers.reload() | It tests generation replacement. |
| testing.fakeHarness.resolveAgentConfiguration | ServerHarness.drivers.resolveAgentConfiguration() | It resolves configuration through bb.agents. |
| testing.fakeHarness.runCli | ServerHarness.drivers.runCli() | It runs a contributed command verb. |
| testing.fakeHarness.runSchedule | ServerHarness.drivers.runSchedule() | It runs a declared schedule. |
| testing.fakeHarness.runService | ServerHarness.drivers.runService() | It starts a declared background service. |
| testing.fakeHarness.setSettings | ServerHarness.drivers.setSettings() | It changes test settings and sends change events. |
| testing.fakeHost.bb | ServerHarness.api | The harness exposes the concrete server API. |
| testing.fakeHost.harness | ServerHarness | Drivers and inspection share one typed harness. |
| testing.fakeHost.options | ServerHarnessOptions | Named services and test ports replace broad SDK options. |
| testing.fakeHost.staleError | KernelError with stale_handle | The common kernel error replaces a test-only class. |
| testing.fakeSdk.calls | ServerHarness.inspection.calls | It records typed service and port calls. |
| testing.fakeSdk.callsTo | ServerHarness.inspection.callsTo() | It filters recorded calls by a contract path. |
| testing.fakeSdk.stub | ServerHarness.services.stub() | It stubs one named service token. |
| testing.hostHarness.call | HostHarness.call() | It validates input, output, JSON, and cancellation. |
| testing.hostHarness.create | createHostHarness() | The stable host harness replaces the experimental entry. |
| testing.hostHarness.dispose | HostHarness.dispose() | It aborts calls and disposes the role. |
| testing.hostHarness.leases | HostHarness.retainedLeaseCount() | It reports current host retention leases. |
| testing.hostHarness.lifecycleSignal | HostHarness.lifecycleSignal | It exposes the role lifecycle signal. |
| testing.hostHarness.options | HostHarnessOptions | It supplies paths and host ports. |
| testing.hostHarness.signals | HostHarness.signals() | It returns validated signals in order. |
| testing.installRuntime | installTestAppRuntime() | It installs the 2.0 app test runtime. |
| testing.loadPluginApp | loadAppPlugin() | It loads the 2.0 app factory. |
| testing.makeThreadResponse | @bb/threads/testing: threadFixture() | The thread owner supplies its fixture. |
| testing.mountContentScripts | dropped | renderSurface() tests the owner surface that replaces the content script. |
| testing.package.app | @get-bb/plugin/testing/app | The app harness entry. |
| testing.package.host | @get-bb/plugin/testing/host | The host harness entry. |
| testing.package.root | @get-bb/plugin/testing | The Node-only common test entry. |
| testing.publicScan.options | PublicImportScanOptions | It keeps explicit allow rules. |
| testing.publicScan.result | PublicImportScan | It reports files, violations, and private dependencies. |
| testing.publicScan.violation | PublicImportViolation | It keeps the four violation reasons. |
| testing.renderSlot | renderSurface() | A general surface renderer replaces slot rendering. |
| testing.renderSlot.behavior | RenderedSurface.behavior | It drives realtime, service bindings, and winner changes. |
| testing.renderSlot.inspection | RenderedSurface.inspection | It records RPC, navigation, service calls, and remounts. |
| testing.renderSlot.lifecycle | RenderedSurface.rerender() and unmount() | It controls surface and plugin cleanup. |
| testing.renderSlot.options | RenderSurfaceOptions | Contract ID, key, props, services, and route replace slot state. |
| testing.scanPublicSdkOnly | scanPublicImports() | The stable scan checks public package boundaries. |
| testing.testHelpers.corpusAvailable | @bb/providers/testing: providerCorpusAvailable() | The provider test module checks corpus availability. |
| testing.testHelpers.corpusEnv | @bb/providers/testing: PROVIDER_CORPUS_DIR_ENV | The provider test module owns the corpus location. |
| testing.testHelpers.decodeCorpus | @bb/threads/testing: decodeStoredEventRow() | The thread owner decodes stored event rows. |
| testing.testHelpers.deferred | deferred() | The common test entry keeps a small promise controller. |
| testing.testHelpers.deferredType | Deferred<T> | It defines the promise controller type. |
| testing.testHelpers.listCorpus | @bb/providers/testing: listProviderCorpus() | The provider test module lists corpus records. |
| testing.testHelpers.loadCorpus | @bb/providers/testing: loadProviderCorpus() | The provider test module loads one record. |
| testing.testHelpers.mergeBase | @bb/workspace/testing: mergeBaseFixture() | The workspace owner supplies its fixture. |
| testing.testHelpers.models | @bb/providers/testing: preferredTestModels() | The provider owner supplies test model order. |
| testing.testHelpers.optionalPaths | assertContract() | Contract conformance owns optional-path checks. |
| testing.testHelpers.resolveCorpusDir | @bb/providers/testing: resolveProviderCorpusDir() | The provider test module resolves the corpus directory. |
| testing.testHelpers.resolveModel | @bb/providers/testing: resolveTestModel() | The provider owner selects an available model. |
| testing.testHelpers.shellQuote | @get-bb/plugin/testing/process: shellQuote() | The process test subpath supplies shell quotation. |
| testing.testHelpers.waitMarker | @get-bb/plugin/testing/process: waitForMarkerCount() | The process test subpath supplies marker waits. |
| testing.testHelpers.workspaceStatus | @bb/workspace/testing: workspaceStatusFixture() | The workspace owner supplies its fixture. |
| testing.testHelpers.workspaceTree | @bb/workspace/testing: workingTreeFixture() | The workspace owner supplies its fixture. |
Drop list
These 47 old items have no direct 2.0 mapping. Each row states the replacement path in its note.
| Old item | New | Note |
|---|---|---|
| app.PluginAppBuilder.contentScripts | dropped | Use an owner-declared surface or app service. |
| app.PluginAppDefinition.__bbPluginApp | dropped | The loader verifies the artifact and does not use a branded value. |
| app.contentScripts | dropped | Replaced by owner-declared surface claims and app services. |
| app.contentScripts.register | dropped | Replaced by api.surfaces.provide() or a typed service edge. |
| app.contracts.PluginContentScriptContext | dropped | Owner surfaces and services provide typed context. |
| app.contracts.PluginContentScriptRegistration | dropped | The 2.0 app tier has no trusted content-script registration. |
| app.contracts.PluginContentScriptRegistration.mount | dropped | Use a factory or an owner-declared surface implementation. |
| app.contracts.PluginFileOpenerProps.Original | dropped | A keyed surface has no Original. Use renderPreview() for bb.files-ui.preview. |
| app.contracts.PluginFileOpenerSource.projectId | dropped | environmentId identifies the workspace. Use bb.workspace to resolve its project. |
| app.fileOpener.Original | dropped | A keyed surface has no Original. Use FileOpenerProps.renderPreview(). |
| app.replacement.fileOpenerOverride | dropped | bb.files-ui.opener has one global winner per extension. Import an exact component when choice must stay fixed. |
| app.slots.experimental_providerIcon | dropped | Declare icon data or export an exact provider icon component. |
| bridge.exportName | dropped | The bb.providers.bridge host-role claim replaces the magic experimental_providerBridge export. |
| manifest.package.pluginTailwindContent | dropped | The app build scans the source import graph and declared exported modules. |
| registry.bindSdk | dropped | The old bb.sdk facade delegates to named 2.0 services during migration. |
| server.sdk.plugins.applyUpdate | dropped | Use the privileged bb plugin update command or the recovery UI. |
| server.sdk.plugins.catalog.install | dropped | Use the privileged bb plugin install flow. |
| server.sdk.plugins.catalog.installPlan | dropped | Use the privileged bb plugin install flow. |
| server.sdk.plugins.disable | dropped | Use the privileged bb plugin disable command or the plugin management UI. |
| server.sdk.plugins.enable | dropped | Use the privileged bb plugin enable command or the plugin management UI. |
| server.sdk.plugins.install | dropped | Use the privileged bb plugin install command or the plugin management UI. |
| server.sdk.plugins.marketplaces.add | dropped | Use the privileged bb marketplace add command or the plugin management UI. |
| server.sdk.plugins.marketplaces.list | dropped | Use the privileged bb marketplace list command or the plugin management UI. |
| server.sdk.plugins.marketplaces.refresh | dropped | Use the privileged bb marketplace refresh command or the plugin management UI. |
| server.sdk.plugins.marketplaces.remove | dropped | Use the privileged bb marketplace remove command or the plugin management UI. |
| server.sdk.plugins.reload | dropped | Use the privileged bb plugin reload command or the plugin management UI. |
| server.sdk.plugins.remove | dropped | Use the privileged bb plugin remove command or the plugin management UI. |
| server.server.experimental_dataDir | dropped | Use bb.storage. The kernel does not expose its data directory. |
| server.settings.define | dropped | Declare the schema in the kernel manifest and read values through bb.preferences. |
| server.settings.descriptor | dropped | The kernel manifest settings schema replaces the runtime descriptor union. |
| server.settings.descriptor.default | dropped | The kernel manifest settings schema owns the effective default. |
| server.settings.descriptor.description | dropped | The kernel manifest settings schema owns the field description. |
| server.settings.descriptor.experimental_multiline | dropped | The kernel manifest settings schema selects the text editor. |
| server.settings.descriptor.label | dropped | The kernel manifest settings schema owns the field label. |
| server.settings.descriptor.options | dropped | The kernel manifest settings schema owns select choices. |
| server.settings.descriptor.secret | dropped | The kernel manifest marks a secret field, and the UI uses the kernel bb.secrets port. |
| server.settings.descriptor.type | dropped | The kernel manifest settings schema owns the field type. |
| settings.boolean.fields | dropped | The kernel manifest settings schema owns boolean field declarations. |
| settings.define | dropped | Declare settings in the kernel manifest settings schema. |
| settings.descriptor | dropped | The kernel manifest settings schema owns the descriptor union. |
| settings.descriptors | dropped | The kernel manifest settings schema owns the settings map. |
| settings.project.fields | dropped | The kernel manifest settings schema owns project field declarations. |
| settings.select.fields | dropped | The kernel manifest settings schema owns select field declarations. |
| settings.string.fields | dropped | The kernel manifest settings schema owns string field declarations. |
| testing.contentScript.mounted | dropped | RenderedSurface replaces the mount result and inspects cleanup. |
| testing.contentScript.options | dropped | RenderSurfaceOptions supplies the replacement surface context. |
| testing.mountContentScripts | dropped | renderSurface() tests the owner surface that replaces the content script. |