@get-bb/plugin-sdk 0.6.14 → 0.6.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -247,6 +247,7 @@ declare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{
247
247
  "pane.focus.up": "pane.focus.up";
248
248
  "pane.maximize.toggle": "pane.maximize.toggle";
249
249
  "panel.close": "panel.close";
250
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
250
251
  "panel.newTab": "panel.newTab";
251
252
  "panel.nextNewTabItem": "panel.nextNewTabItem";
252
253
  "panel.nextTab": "panel.nextTab";
@@ -8604,6 +8605,7 @@ declare const hostDaemonCommandRegistry: {
8604
8605
  darwin: "darwin";
8605
8606
  linux: "linux";
8606
8607
  unknown: "unknown";
8608
+ win32: "win32";
8607
8609
  wsl: "wsl";
8608
8610
  }>;
8609
8611
  portAvailable: z$1.ZodBoolean;
@@ -9029,12 +9031,14 @@ type CreateMachineRequest = z$1.infer<typeof createMachineRequestSchema>;
9029
9031
  declare const hostEnrollmentCommandResponseSchema: z$1.ZodNullable<z$1.ZodObject<{
9030
9032
  command: z$1.ZodString;
9031
9033
  expiresAt: z$1.ZodNumber;
9034
+ windowsCommand: z$1.ZodString;
9032
9035
  }, z$1.core.$strip>>;
9033
9036
  type HostEnrollmentCommandResponse = z$1.infer<typeof hostEnrollmentCommandResponseSchema>;
9034
9037
  declare const hostReconnectResponseSchema: z$1.ZodObject<{
9035
9038
  command: z$1.ZodString;
9036
9039
  expiresAt: z$1.ZodNumber;
9037
9040
  hostId: z$1.ZodString;
9041
+ windowsCommand: z$1.ZodString;
9038
9042
  }, z$1.core.$strict>;
9039
9043
  type HostReconnectResponse = z$1.infer<typeof hostReconnectResponseSchema>;
9040
9044
  declare const createHostJoinCodeResponseSchema: z$1.ZodObject<{
@@ -9577,6 +9581,7 @@ declare const pluginCatalogSearchResponseSchema: z$1.ZodObject<{
9577
9581
  iconUrl: z$1.ZodNullable<z$1.ZodString>;
9578
9582
  incompatibleReason: z$1.ZodNullable<z$1.ZodString>;
9579
9583
  installed: z$1.ZodBoolean;
9584
+ installedByDefault: z$1.ZodDefault<z$1.ZodBoolean>;
9580
9585
  installs: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodNumber>>;
9581
9586
  marketplace: z$1.ZodString;
9582
9587
  marketplaceDisplayName: z$1.ZodString;
@@ -10097,6 +10102,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10097
10102
  "pane.focus.up": "pane.focus.up";
10098
10103
  "pane.maximize.toggle": "pane.maximize.toggle";
10099
10104
  "panel.close": "panel.close";
10105
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10100
10106
  "panel.newTab": "panel.newTab";
10101
10107
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10102
10108
  "panel.nextTab": "panel.nextTab";
@@ -10246,6 +10252,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10246
10252
  "pane.focus.up": "pane.focus.up";
10247
10253
  "pane.maximize.toggle": "pane.maximize.toggle";
10248
10254
  "panel.close": "panel.close";
10255
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10249
10256
  "panel.newTab": "panel.newTab";
10250
10257
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10251
10258
  "panel.nextTab": "panel.nextTab";
@@ -10338,6 +10345,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10338
10345
  "pane.focus.up": "pane.focus.up";
10339
10346
  "pane.maximize.toggle": "pane.maximize.toggle";
10340
10347
  "panel.close": "panel.close";
10348
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10341
10349
  "panel.newTab": "panel.newTab";
10342
10350
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10343
10351
  "panel.nextTab": "panel.nextTab";
@@ -10433,6 +10441,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10433
10441
  darwin: "darwin";
10434
10442
  linux: "linux";
10435
10443
  unknown: "unknown";
10444
+ win32: "win32";
10436
10445
  wsl: "wsl";
10437
10446
  }>>;
10438
10447
  serverAccess: z$1.ZodObject<{
@@ -18649,6 +18658,29 @@ interface PluginCommandRegistration {
18649
18658
  */
18650
18659
  run(context: PluginCommandContext): void | Promise<void>;
18651
18660
  }
18661
+ /**
18662
+ * A command handled by a composer through the same path as bb's own "Focus
18663
+ * composer" command. Listed, rebindable and namespaced like any other plugin
18664
+ * command. The composer holding the caret runs it; with the caret outside every
18665
+ * composer, the focused pane's primary composer does. Like bb's composer
18666
+ * commands, its shortcut is inactive while a terminal, browser tab or modal has
18667
+ * focus, and the palette lists it only when some composer would run it.
18668
+ */
18669
+ interface ExperimentalComposerCommandRegistration {
18670
+ /** Initial keyboard binding. Users can rebind every command, including ones without a default. Conflicting defaults remain unbound. */
18671
+ defaultShortcut?: PluginCommandShortcut;
18672
+ /** Unique within the plugin across every command; letters, digits, `-`, `_`. */
18673
+ id: string;
18674
+ /** The palette row's and keyboard settings' label. */
18675
+ title: string;
18676
+ /**
18677
+ * Runs with the handling composer, bound to this plugin like `useComposer()`.
18678
+ * Errors (sync or async) are contained and logged.
18679
+ */
18680
+ run(context: {
18681
+ composer: PluginComposerApi;
18682
+ }): void | Promise<void>;
18683
+ }
18652
18684
  /** Registers commands for bb's command palette. */
18653
18685
  interface PluginAppCommands {
18654
18686
  /** Register a command. IDs are unique within this plugin, including legacy slot registrations. */
@@ -18941,6 +18973,8 @@ interface PluginAppSlots {
18941
18973
  }
18942
18974
  interface PluginAppComposer {
18943
18975
  customize(registration: ComposerCustomization): void;
18976
+ /** Register a command that the composer holding the caret runs. IDs share the `app.commands` namespace. */
18977
+ experimental_registerCommand(registration: ExperimentalComposerCommandRegistration): void;
18944
18978
  }
18945
18979
  /** Stable lifecycle values for one content-script instance in one bb client. */
18946
18980
  interface PluginContentScriptContext {
@@ -20293,4 +20327,4 @@ declare const experimental_useProviders: () => PluginProvidersState;
20293
20327
  declare const experimental_useCodeTheme: () => PluginCodeThemeState;
20294
20328
 
20295
20329
  export { Markdown, ThreadChat, ThreadTitle, UrlLink, definePluginApp, experimental_BranchPicker, experimental_Diff, experimental_FileLink, experimental_Icon, experimental_NewThreadComposer, experimental_PermissionModePicker, experimental_ProviderIcon, experimental_ProviderModelPicker, experimental_SidebarNavigationIcon, experimental_SourceCode, experimental_useAppPanel, experimental_useBranches, experimental_useCheckoutState, experimental_useCodeTheme, experimental_useFixedTabTarget, experimental_usePluginId, experimental_useProviders, experimental_useQuestionFormHost, experimental_useSidebarNavigation, experimental_useSidebarNavigationSplit, experimental_useSidebarThreadActions, experimental_useSidebarThreadPullRequest, experimental_useSidebarThreadSplit, experimental_useSidebarThreads, useBbContext, useBbNavigate, useComposer, useComposers, useEnvironmentProviders, useRealtime, useRealtimeConnectionState, useRpc, useSdk, useSettings, useSidebarSplitLayout, useSidebarThreadDraft, useSidebarThreadDraftIds, useSidebarThreadRowStatus, useSidebarThreadRowStatuses, useSidebarThreadShortcut };
20296
- export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerAttachment, ComposerCustomization, ComposerDraft, ComposerDraftReplacement, ComposerDraftSnapshot, ComposerInsertOptions, ComposerInsertPart, ComposerMention, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerSelection, ComposerSendMenuItem, ComposerSubmitOptions, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerPopupRegistration, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, ExperimentalPluginFixedTabReference, ExperimentalProviderIconProps, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalQuestionFormHost, ExperimentalQuestionShortcut, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarHeaderProps, ExperimentalSidebarHeaderRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActions, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationIconProps, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, ExperimentalSidebarNavigationSplit, ExperimentalSidebarNavigationSplitOptions, ExperimentalSidebarNavigationState, JsonValue$1 as JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBoundThreadsArea, PluginBrowserBbSdk, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext, PluginCommandRegistration, PluginCommandShortcut, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginEnvironmentProvider, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, PluginEnvironmentProvidersState, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMachineProviderInputsChange, PluginMachineProviderInputsProps, PluginMachineProviderInputsRegistration, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderIconRegistration, PluginProvidersState, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSection, PluginSidebarSplitLayout, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadDraftState, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadRowStatus, PluginSidebarThreadShortcut, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginThreadTitleProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, ReadonlyJsonValue, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
20330
+ export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerAttachment, ComposerCustomization, ComposerDraft, ComposerDraftReplacement, ComposerDraftSnapshot, ComposerInsertOptions, ComposerInsertPart, ComposerMention, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerSelection, ComposerSendMenuItem, ComposerSubmitOptions, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerCommandRegistration, ExperimentalComposerPopupRegistration, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, ExperimentalPluginFixedTabReference, ExperimentalProviderIconProps, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalQuestionFormHost, ExperimentalQuestionShortcut, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarHeaderProps, ExperimentalSidebarHeaderRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActions, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationIconProps, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, ExperimentalSidebarNavigationSplit, ExperimentalSidebarNavigationSplitOptions, ExperimentalSidebarNavigationState, JsonValue$1 as JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBoundThreadsArea, PluginBrowserBbSdk, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext, PluginCommandRegistration, PluginCommandShortcut, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginEnvironmentProvider, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, PluginEnvironmentProvidersState, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMachineProviderInputsChange, PluginMachineProviderInputsProps, PluginMachineProviderInputsRegistration, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderIconRegistration, PluginProvidersState, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSection, PluginSidebarSplitLayout, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadDraftState, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadRowStatus, PluginSidebarThreadShortcut, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginThreadTitleProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, ReadonlyJsonValue, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
@@ -6,7 +6,7 @@
6
6
  // and read the real source: https://github.com/get-bb/bb
7
7
 
8
8
  import { z } from 'zod';
9
- import { ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterItemRegistration, PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, ExperimentalAppOverlayRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarHeaderRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, ExperimentalPluginBrowserToolbarActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginCommandRegistration, PluginProviderIconRegistration, ExperimentalIconRegistration, PluginTimelineRendererRegistration, PluginEnvironmentProviderInputsRegistration, PluginMachineProviderInputsRegistration, PluginContentScriptRegistration, PluginAppDefinition } from '@get-bb/plugin-sdk';
9
+ import { ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterItemRegistration, PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, ExperimentalAppOverlayRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarHeaderRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, ExperimentalPluginBrowserToolbarActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginCommandRegistration, ExperimentalComposerCommandRegistration, PluginProviderIconRegistration, ExperimentalIconRegistration, PluginTimelineRendererRegistration, PluginEnvironmentProviderInputsRegistration, PluginMachineProviderInputsRegistration, PluginContentScriptRegistration, PluginAppDefinition } from '@get-bb/plugin-sdk';
10
10
 
11
11
  type ExperimentalSidebarFooterCommandKind = "close" | "open" | "toggle";
12
12
  interface ExperimentalSidebarFooterRuntimeSnapshot {
@@ -49,9 +49,14 @@ declare const commandShortcutSchema: z.ZodObject<{
49
49
  mod: z.ZodDefault<z.ZodBoolean>;
50
50
  shift: z.ZodDefault<z.ZodBoolean>;
51
51
  }, z.core.$strict>;
52
- interface CollectedPluginCommandRegistration extends Omit<PluginCommandRegistration, "defaultShortcut"> {
53
- defaultShortcut: z.infer<typeof commandShortcutSchema> | null;
54
- }
52
+ type CollectedCommandShortcut = z.infer<typeof commandShortcutSchema> | null;
53
+ type CollectedPluginCommandRegistration = (Omit<PluginCommandRegistration, "defaultShortcut"> & {
54
+ target: "app";
55
+ defaultShortcut: CollectedCommandShortcut;
56
+ }) | (Omit<ExperimentalComposerCommandRegistration, "defaultShortcut"> & {
57
+ target: "composer";
58
+ defaultShortcut: CollectedCommandShortcut;
59
+ });
55
60
  interface CollectedPluginAppRegistrations {
56
61
  homepageSections: PluginHomepageSectionRegistration[];
57
62
  settingsSections: PluginSettingsSectionRegistration[];
@@ -196,6 +196,7 @@ declare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{
196
196
  "pane.focus.up": "pane.focus.up";
197
197
  "pane.maximize.toggle": "pane.maximize.toggle";
198
198
  "panel.close": "panel.close";
199
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
199
200
  "panel.newTab": "panel.newTab";
200
201
  "panel.nextNewTabItem": "panel.nextNewTabItem";
201
202
  "panel.nextTab": "panel.nextTab";
@@ -8655,6 +8656,7 @@ declare const hostDaemonCommandRegistry: {
8655
8656
  darwin: "darwin";
8656
8657
  linux: "linux";
8657
8658
  unknown: "unknown";
8659
+ win32: "win32";
8658
8660
  wsl: "wsl";
8659
8661
  }>;
8660
8662
  portAvailable: z$1.ZodBoolean;
@@ -9080,12 +9082,14 @@ type CreateMachineRequest = z$1.infer<typeof createMachineRequestSchema>;
9080
9082
  declare const hostEnrollmentCommandResponseSchema: z$1.ZodNullable<z$1.ZodObject<{
9081
9083
  command: z$1.ZodString;
9082
9084
  expiresAt: z$1.ZodNumber;
9085
+ windowsCommand: z$1.ZodString;
9083
9086
  }, z$1.core.$strip>>;
9084
9087
  type HostEnrollmentCommandResponse = z$1.infer<typeof hostEnrollmentCommandResponseSchema>;
9085
9088
  declare const hostReconnectResponseSchema: z$1.ZodObject<{
9086
9089
  command: z$1.ZodString;
9087
9090
  expiresAt: z$1.ZodNumber;
9088
9091
  hostId: z$1.ZodString;
9092
+ windowsCommand: z$1.ZodString;
9089
9093
  }, z$1.core.$strict>;
9090
9094
  type HostReconnectResponse = z$1.infer<typeof hostReconnectResponseSchema>;
9091
9095
  declare const createHostJoinCodeResponseSchema: z$1.ZodObject<{
@@ -9628,6 +9632,7 @@ declare const pluginCatalogSearchResponseSchema: z$1.ZodObject<{
9628
9632
  iconUrl: z$1.ZodNullable<z$1.ZodString>;
9629
9633
  incompatibleReason: z$1.ZodNullable<z$1.ZodString>;
9630
9634
  installed: z$1.ZodBoolean;
9635
+ installedByDefault: z$1.ZodDefault<z$1.ZodBoolean>;
9631
9636
  installs: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodNumber>>;
9632
9637
  marketplace: z$1.ZodString;
9633
9638
  marketplaceDisplayName: z$1.ZodString;
@@ -10148,6 +10153,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10148
10153
  "pane.focus.up": "pane.focus.up";
10149
10154
  "pane.maximize.toggle": "pane.maximize.toggle";
10150
10155
  "panel.close": "panel.close";
10156
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10151
10157
  "panel.newTab": "panel.newTab";
10152
10158
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10153
10159
  "panel.nextTab": "panel.nextTab";
@@ -10297,6 +10303,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10297
10303
  "pane.focus.up": "pane.focus.up";
10298
10304
  "pane.maximize.toggle": "pane.maximize.toggle";
10299
10305
  "panel.close": "panel.close";
10306
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10300
10307
  "panel.newTab": "panel.newTab";
10301
10308
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10302
10309
  "panel.nextTab": "panel.nextTab";
@@ -10389,6 +10396,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10389
10396
  "pane.focus.up": "pane.focus.up";
10390
10397
  "pane.maximize.toggle": "pane.maximize.toggle";
10391
10398
  "panel.close": "panel.close";
10399
+ "panel.fullScreen.toggle": "panel.fullScreen.toggle";
10392
10400
  "panel.newTab": "panel.newTab";
10393
10401
  "panel.nextNewTabItem": "panel.nextNewTabItem";
10394
10402
  "panel.nextTab": "panel.nextTab";
@@ -10484,6 +10492,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
10484
10492
  darwin: "darwin";
10485
10493
  linux: "linux";
10486
10494
  unknown: "unknown";
10495
+ win32: "win32";
10487
10496
  wsl: "wsl";
10488
10497
  }>>;
10489
10498
  serverAccess: z$1.ZodObject<{
@@ -18825,6 +18834,29 @@ interface PluginCommandRegistration {
18825
18834
  */
18826
18835
  run(context: PluginCommandContext): void | Promise<void>;
18827
18836
  }
18837
+ /**
18838
+ * A command handled by a composer through the same path as bb's own "Focus
18839
+ * composer" command. Listed, rebindable and namespaced like any other plugin
18840
+ * command. The composer holding the caret runs it; with the caret outside every
18841
+ * composer, the focused pane's primary composer does. Like bb's composer
18842
+ * commands, its shortcut is inactive while a terminal, browser tab or modal has
18843
+ * focus, and the palette lists it only when some composer would run it.
18844
+ */
18845
+ interface ExperimentalComposerCommandRegistration {
18846
+ /** Initial keyboard binding. Users can rebind every command, including ones without a default. Conflicting defaults remain unbound. */
18847
+ defaultShortcut?: PluginCommandShortcut;
18848
+ /** Unique within the plugin across every command; letters, digits, `-`, `_`. */
18849
+ id: string;
18850
+ /** The palette row's and keyboard settings' label. */
18851
+ title: string;
18852
+ /**
18853
+ * Runs with the handling composer, bound to this plugin like `useComposer()`.
18854
+ * Errors (sync or async) are contained and logged.
18855
+ */
18856
+ run(context: {
18857
+ composer: PluginComposerApi;
18858
+ }): void | Promise<void>;
18859
+ }
18828
18860
  /** Registers commands for bb's command palette. */
18829
18861
  interface PluginAppCommands {
18830
18862
  /** Register a command. IDs are unique within this plugin, including legacy slot registrations. */
@@ -19117,6 +19149,8 @@ interface PluginAppSlots {
19117
19149
  }
19118
19150
  interface PluginAppComposer {
19119
19151
  customize(registration: ComposerCustomization): void;
19152
+ /** Register a command that the composer holding the caret runs. IDs share the `app.commands` namespace. */
19153
+ experimental_registerCommand(registration: ExperimentalComposerCommandRegistration): void;
19120
19154
  }
19121
19155
  /** Stable lifecycle values for one content-script instance in one bb client. */
19122
19156
  interface PluginContentScriptContext {
@@ -22834,4 +22868,4 @@ declare function cliCommand<const TOptions extends CliOptions = Record<string, n
22834
22868
  declare function defineCli(spec: PluginCliSpec): PluginCliRegistration;
22835
22869
 
22836
22870
  export { PLUGIN_CLI_OUTPUT_MAX_BYTES, PluginCliError, cliCommand, defineCli, defineRpcContract, experimental_defineHostEntry };
22837
- export type { BbContext, BbNavigate, BbPluginApi, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerAttachment, ComposerCustomization, ComposerDraft, ComposerDraftReplacement, ComposerDraftSnapshot, ComposerInsertOptions, ComposerInsertPart, ComposerMention, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerSelection, ComposerSendMenuItem, ComposerSubmitOptions, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerPopupRegistration, ExperimentalDesktopBrowserAcquireInput, ExperimentalDesktopBrowserCreateInput, ExperimentalDesktopBrowserLease, ExperimentalDesktopBrowserScope, ExperimentalDesktopBrowsersArea, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, ExperimentalPluginFixedTabReference, ExperimentalPluginMentionImage, ExperimentalPluginProviderEnvContext, ExperimentalPluginProviderEnvEntry, ExperimentalPluginProviderEnvHealth, ExperimentalPluginProviderEnvHealthContext, ExperimentalPluginRpcCaller, ExperimentalPluginRpcHandlerContext, ExperimentalPluginRpcHandlersWithContext, ExperimentalPluginWebSocket, ExperimentalPluginWebSocketContext, ExperimentalPluginWebSocketHandler, ExperimentalPluginWebSocketHandlers, ExperimentalProviderIconProps, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalQuestionFormHost, ExperimentalQuestionShortcut, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarHeaderProps, ExperimentalSidebarHeaderRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActions, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationIconProps, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, ExperimentalSidebarNavigationSplit, ExperimentalSidebarNavigationSplitOptions, ExperimentalSidebarNavigationState, JsonValue, MachineBootstrapApi, MachineBootstrapRequest, MachineExecutor, MachineExecutorRequest, MarkdownProps, MessageDispatchHookContext, MessageDispatchHookDecision, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAiCompleteOptions, PluginAiServiceDeclaration, PluginAiServiceStatus, PluginAiServices, PluginAiTranscribeOptions, PluginAppBuilder, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginBbSdk, PluginBoundThreadsArea, PluginBrowserBbSdk, PluginCli, PluginCliBooleanOption, PluginCliCommand, PluginCliCommandInfo, PluginCliConstraint, PluginCliContext, PluginCliDurationOption, PluginCliDurationUnit, PluginCliEnumOption, PluginCliErrorCode, PluginCliExecutionResult, PluginCliIntegerOption, PluginCliOption, PluginCliOptionValues, PluginCliOutputLimitError, PluginCliPositional, PluginCliPositionalValues, PluginCliRegistration, PluginCliResult, PluginCliRunInput, PluginCliSpec, PluginCliStringOption, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext, PluginCommandRegistration, PluginCommandShortcut, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginDispatchAttemptKind, PluginDispatchEnvironmentIntent, PluginDispatchExecution, PluginDispatchExecutionSources, PluginDispatchInput, PluginEnvironmentProvider, PluginEnvironmentProviderDeclaration, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, PluginEnvironmentProviderRequirements, PluginEnvironmentProvidersState, PluginEnvironmentValidateDecision, PluginEnvironments, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHookHandler, PluginHookName, PluginHookSignatures, PluginHooks, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionDescription, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMachineProviderDeclaration, PluginMachineProviderInputsChange, PluginMachineProviderInputsProps, PluginMachineProviderInputsRegistration, PluginMachineValidateDecision, PluginMachines, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderCompletedTurnDisplay, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderExtensionKindDeclaration, PluginProviderFallbackModel, PluginProviderIconRegistration, PluginProviderMaintenance, PluginProviderModelCatalogScope, PluginProviderNativeRootEntry, PluginProviderNativeRoots, PluginProviderOptionDescriptor, PluginProviderOptionsContext, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginProviderStrings, PluginProviders, PluginProvidersState, PluginRealtime, PluginRealtimeConnectionState, PluginRowLabels, PluginRowPresentation, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerAccess, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSection, PluginSidebarSplitLayout, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadDraftState, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadRowStatus, PluginSidebarThreadShortcut, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginStatusApi, PluginStorage, PluginTargetedPanelActionOpenOptions, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginThreadTitleProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, PluginTurnFailedEvent, PluginUi, ReadonlyJsonValue, ServerAccessGrant, ServerAccessProviderDeclaration, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
22871
+ export type { BbContext, BbNavigate, BbPluginApi, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerAttachment, ComposerCustomization, ComposerDraft, ComposerDraftReplacement, ComposerDraftSnapshot, ComposerInsertOptions, ComposerInsertPart, ComposerMention, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerSelection, ComposerSendMenuItem, ComposerSubmitOptions, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerCommandRegistration, ExperimentalComposerPopupRegistration, ExperimentalDesktopBrowserAcquireInput, ExperimentalDesktopBrowserCreateInput, ExperimentalDesktopBrowserLease, ExperimentalDesktopBrowserScope, ExperimentalDesktopBrowsersArea, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, ExperimentalPluginFixedTabReference, ExperimentalPluginMentionImage, ExperimentalPluginProviderEnvContext, ExperimentalPluginProviderEnvEntry, ExperimentalPluginProviderEnvHealth, ExperimentalPluginProviderEnvHealthContext, ExperimentalPluginRpcCaller, ExperimentalPluginRpcHandlerContext, ExperimentalPluginRpcHandlersWithContext, ExperimentalPluginWebSocket, ExperimentalPluginWebSocketContext, ExperimentalPluginWebSocketHandler, ExperimentalPluginWebSocketHandlers, ExperimentalProviderIconProps, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalQuestionFormHost, ExperimentalQuestionShortcut, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarHeaderProps, ExperimentalSidebarHeaderRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActions, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationIconProps, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, ExperimentalSidebarNavigationSplit, ExperimentalSidebarNavigationSplitOptions, ExperimentalSidebarNavigationState, JsonValue, MachineBootstrapApi, MachineBootstrapRequest, MachineExecutor, MachineExecutorRequest, MarkdownProps, MessageDispatchHookContext, MessageDispatchHookDecision, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAiCompleteOptions, PluginAiServiceDeclaration, PluginAiServiceStatus, PluginAiServices, PluginAiTranscribeOptions, PluginAppBuilder, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginBbSdk, PluginBoundThreadsArea, PluginBrowserBbSdk, PluginCli, PluginCliBooleanOption, PluginCliCommand, PluginCliCommandInfo, PluginCliConstraint, PluginCliContext, PluginCliDurationOption, PluginCliDurationUnit, PluginCliEnumOption, PluginCliErrorCode, PluginCliExecutionResult, PluginCliIntegerOption, PluginCliOption, PluginCliOptionValues, PluginCliOutputLimitError, PluginCliPositional, PluginCliPositionalValues, PluginCliRegistration, PluginCliResult, PluginCliRunInput, PluginCliSpec, PluginCliStringOption, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext, PluginCommandRegistration, PluginCommandShortcut, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginDispatchAttemptKind, PluginDispatchEnvironmentIntent, PluginDispatchExecution, PluginDispatchExecutionSources, PluginDispatchInput, PluginEnvironmentProvider, PluginEnvironmentProviderDeclaration, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, PluginEnvironmentProviderRequirements, PluginEnvironmentProvidersState, PluginEnvironmentValidateDecision, PluginEnvironments, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHookHandler, PluginHookName, PluginHookSignatures, PluginHooks, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionDescription, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMachineProviderDeclaration, PluginMachineProviderInputsChange, PluginMachineProviderInputsProps, PluginMachineProviderInputsRegistration, PluginMachineValidateDecision, PluginMachines, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderCompletedTurnDisplay, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderExtensionKindDeclaration, PluginProviderFallbackModel, PluginProviderIconRegistration, PluginProviderMaintenance, PluginProviderModelCatalogScope, PluginProviderNativeRootEntry, PluginProviderNativeRoots, PluginProviderOptionDescriptor, PluginProviderOptionsContext, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginProviderStrings, PluginProviders, PluginProvidersState, PluginRealtime, PluginRealtimeConnectionState, PluginRowLabels, PluginRowPresentation, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerAccess, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSection, PluginSidebarSplitLayout, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadDraftState, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadRowStatus, PluginSidebarThreadShortcut, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginStatusApi, PluginStorage, PluginTargetedPanelActionOpenOptions, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginThreadTitleProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, PluginTurnFailedEvent, PluginUi, ReadonlyJsonValue, ServerAccessGrant, ServerAccessProviderDeclaration, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
@@ -516,24 +516,38 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
516
516
  machineProviderInputs: /* @__PURE__ */ new Set(),
517
517
  contentScript: /* @__PURE__ */ new Set()
518
518
  };
519
- function registerCommand(registration) {
520
- const kind = "commands.register";
519
+ function collectCommand(kind, registration) {
521
520
  const id = requireSlotId(kind, registration?.id);
522
521
  requireUniqueId(kind, seenIds.command, id);
523
522
  if (typeof registration.run !== "function") {
524
523
  throw new Error(`${kind}: "run" must be a function`);
525
524
  }
525
+ return {
526
+ id,
527
+ defaultShortcut: registration.defaultShortcut === void 0 ? null : commandShortcutSchema.parse(registration.defaultShortcut),
528
+ title: requireNonEmptyString(kind, "title", registration.title)
529
+ };
530
+ }
531
+ function registerCommand(registration) {
532
+ const kind = "commands.register";
533
+ const command = collectCommand(kind, registration);
526
534
  if (registration.isAvailable !== void 0 && typeof registration.isAvailable !== "function") {
527
535
  throw new Error(`${kind}: "isAvailable" must be a function`);
528
536
  }
529
537
  collected.commandPaletteActions.push({
530
- id,
531
- defaultShortcut: registration.defaultShortcut === void 0 ? null : commandShortcutSchema.parse(registration.defaultShortcut),
532
- title: requireNonEmptyString(kind, "title", registration.title),
538
+ target: "app",
539
+ ...command,
533
540
  ...registration.isAvailable !== void 0 ? { isAvailable: registration.isAvailable } : {},
534
541
  run: registration.run
535
542
  });
536
543
  }
544
+ function registerComposerCommand(registration) {
545
+ collected.commandPaletteActions.push({
546
+ target: "composer",
547
+ ...collectCommand("composer.experimental_registerCommand", registration),
548
+ run: registration.run
549
+ });
550
+ }
537
551
  definition.setup({
538
552
  commands: { register: registerCommand },
539
553
  slots: {
@@ -897,7 +911,8 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
897
911
  if (customization !== null) {
898
912
  collected.composerCustomizations.push(customization);
899
913
  }
900
- }
914
+ },
915
+ experimental_registerCommand: registerComposerCommand
901
916
  },
902
917
  experimental_icons: {
903
918
  register(registration) {
@@ -6216,13 +6216,8 @@ function describeCalibrationEvents(events) {
6216
6216
 
6217
6217
  // ../provider-bridge-protocol/src/testing/parity.ts
6218
6218
  import { spawn } from "node:child_process";
6219
- import {
6220
- existsSync as existsSync2,
6221
- mkdtempSync,
6222
- realpathSync,
6223
- rmSync,
6224
- writeFileSync
6225
- } from "node:fs";
6219
+ import { existsSync as existsSync2, mkdtempSync, realpathSync, writeFileSync } from "node:fs";
6220
+ import { rm } from "node:fs/promises";
6226
6221
  import { tmpdir } from "node:os";
6227
6222
  import { isAbsolute, join as join2, resolve as resolve2 } from "node:path";
6228
6223
  import { fileURLToPath as fileURLToPath2, pathToFileURL } from "node:url";
@@ -6397,6 +6392,8 @@ function listRecordedCells(root) {
6397
6392
  }
6398
6393
 
6399
6394
  // ../provider-bridge-protocol/src/testing/parity.ts
6395
+ var REPLAY_CLEANUP_RETRIES = 20;
6396
+ var REPLAY_CLEANUP_RETRY_DELAY_MS = 100;
6400
6397
  var SOURCE_BOOTSTRAP = fileURLToPath2(
6401
6398
  new URL("../bridge-worker-entry.ts", import.meta.url)
6402
6399
  );
@@ -6591,7 +6588,8 @@ async function replayRecording(options) {
6591
6588
  stdio: ["pipe", "pipe", "pipe"]
6592
6589
  });
6593
6590
  const recordedCwd = recordedWorkspaceDir(recording);
6594
- const restoreRecordedWorkspace = (line) => recordedCwd === null || recordedCwd === workspaceDir ? line : line.split(workspaceDir).join(recordedCwd);
6591
+ const jsonText = (value) => JSON.stringify(value).slice(1, -1);
6592
+ const restoreRecordedWorkspace = (line) => recordedCwd === null || recordedCwd === workspaceDir ? line : line.split(jsonText(workspaceDir)).join(jsonText(recordedCwd));
6595
6593
  const initializeId = PARITY_INITIALIZE_ID;
6596
6594
  const startedAt = Date.now();
6597
6595
  const lines = [];
@@ -6829,8 +6827,14 @@ async function replayRecording(options) {
6829
6827
  return null;
6830
6828
  })
6831
6829
  ]);
6832
- rmSync(stateDir, { recursive: true, force: true });
6833
- rmSync(workspaceDir, { recursive: true, force: true });
6830
+ for (const directory of [stateDir, workspaceDir]) {
6831
+ await rm(directory, {
6832
+ force: true,
6833
+ maxRetries: REPLAY_CLEANUP_RETRIES,
6834
+ recursive: true,
6835
+ retryDelay: REPLAY_CLEANUP_RETRY_DELAY_MS
6836
+ });
6837
+ }
6834
6838
  return {
6835
6839
  providerId,
6836
6840
  recordingDir: options.recordingDir,
@@ -354,6 +354,70 @@ function readNewlineDelimitedLines(input, onLine) {
354
354
  // Player
355
355
  // ---------------------------------------------------------------------------
356
356
 
357
+ function servePiCatalog(entries) {
358
+ const models = new Map();
359
+ let state = {};
360
+ for (const entry of entries) {
361
+ if (entry.dir !== "provider→bridge") continue;
362
+ const message = parseLine(entry.line);
363
+ if (message?.type !== "response" || message.success !== true) continue;
364
+ const candidates = [];
365
+ if (message.command === "get_state" && message.data?.model) {
366
+ candidates.push(message.data.model);
367
+ if (!state.model) state = message.data;
368
+ }
369
+ if (
370
+ message.command === "get_available_models" &&
371
+ Array.isArray(message.data?.models)
372
+ ) {
373
+ candidates.push(...message.data.models);
374
+ }
375
+ for (const model of candidates) {
376
+ if (typeof model?.provider === "string" && typeof model.id === "string") {
377
+ models.set(`${model.provider}/${model.id}`, model);
378
+ }
379
+ }
380
+ }
381
+ const channelOut = createWriteStream(null, { fd: 3 });
382
+ const channelIn = new Socket({ fd: 4, readable: true, writable: false });
383
+ channelIn.on("error", () => {});
384
+ channelIn.unref();
385
+ readNewlineDelimitedLines(channelIn, (line) => {
386
+ const message = parseLine(line);
387
+ if (message?.kind !== "request" || message.method !== "model-scope") return;
388
+ channelOut.write(
389
+ `${JSON.stringify({
390
+ kind: "reply",
391
+ id: message.id,
392
+ result: {
393
+ scopedModelIds: [...models.keys()],
394
+ ...(state.model
395
+ ? { defaultModelId: `${state.model.provider}/${state.model.id}` }
396
+ : {}),
397
+ },
398
+ })}\n`,
399
+ );
400
+ });
401
+ readNewlineDelimitedLines(process.stdin, (line) => {
402
+ const message = parseLine(line);
403
+ if (typeof message?.id !== "string") return;
404
+ process.stdout.write(
405
+ `${JSON.stringify({
406
+ id: message.id,
407
+ type: "response",
408
+ command: message.type,
409
+ success: true,
410
+ data:
411
+ message.type === "get_available_models"
412
+ ? { models: [...models.values()] }
413
+ : state,
414
+ })}\n`,
415
+ );
416
+ });
417
+ process.stdin.on("end", () => process.exit(0));
418
+ process.on("SIGTERM", () => process.exit(0));
419
+ }
420
+
357
421
  function main() {
358
422
  // A bridge's install gate may probe `<cli> --version` through the replay
359
423
  // command; answer like a CLI instead of claiming a segment and waiting.
@@ -369,6 +433,14 @@ function main() {
369
433
  ...readLane(args.recording, "provider→bridge"),
370
434
  ...readLane(args.recording, "bridge→provider"),
371
435
  ].sort((left, right) => left.run - right.run || left.seq - right.seq);
436
+ if (
437
+ args.dialect === "pi-rpc" &&
438
+ process.argv.includes("--no-session") &&
439
+ !process.argv.includes("--session-dir")
440
+ ) {
441
+ servePiCatalog(entries);
442
+ return;
443
+ }
372
444
  const segments = buildSegments(entries, dialect);
373
445
  const segmentIndex = claimSegmentIndex(args.state);
374
446
  let script = segments[segmentIndex] ?? [];
@@ -1209,24 +1209,38 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
1209
1209
  machineProviderInputs: /* @__PURE__ */ new Set(),
1210
1210
  contentScript: /* @__PURE__ */ new Set()
1211
1211
  };
1212
- function registerCommand(registration) {
1213
- const kind = "commands.register";
1212
+ function collectCommand(kind, registration) {
1214
1213
  const id = requireSlotId(kind, registration?.id);
1215
1214
  requireUniqueId(kind, seenIds.command, id);
1216
1215
  if (typeof registration.run !== "function") {
1217
1216
  throw new Error(`${kind}: "run" must be a function`);
1218
1217
  }
1218
+ return {
1219
+ id,
1220
+ defaultShortcut: registration.defaultShortcut === void 0 ? null : commandShortcutSchema.parse(registration.defaultShortcut),
1221
+ title: requireNonEmptyString(kind, "title", registration.title)
1222
+ };
1223
+ }
1224
+ function registerCommand(registration) {
1225
+ const kind = "commands.register";
1226
+ const command = collectCommand(kind, registration);
1219
1227
  if (registration.isAvailable !== void 0 && typeof registration.isAvailable !== "function") {
1220
1228
  throw new Error(`${kind}: "isAvailable" must be a function`);
1221
1229
  }
1222
1230
  collected.commandPaletteActions.push({
1223
- id,
1224
- defaultShortcut: registration.defaultShortcut === void 0 ? null : commandShortcutSchema.parse(registration.defaultShortcut),
1225
- title: requireNonEmptyString(kind, "title", registration.title),
1231
+ target: "app",
1232
+ ...command,
1226
1233
  ...registration.isAvailable !== void 0 ? { isAvailable: registration.isAvailable } : {},
1227
1234
  run: registration.run
1228
1235
  });
1229
1236
  }
1237
+ function registerComposerCommand(registration) {
1238
+ collected.commandPaletteActions.push({
1239
+ target: "composer",
1240
+ ...collectCommand("composer.experimental_registerCommand", registration),
1241
+ run: registration.run
1242
+ });
1243
+ }
1230
1244
  definition.setup({
1231
1245
  commands: { register: registerCommand },
1232
1246
  slots: {
@@ -1590,7 +1604,8 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
1590
1604
  if (customization !== null) {
1591
1605
  collected.composerCustomizations.push(customization);
1592
1606
  }
1593
- }
1607
+ },
1608
+ experimental_registerCommand: registerComposerCommand
1594
1609
  },
1595
1610
  experimental_icons: {
1596
1611
  register(registration) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@get-bb/plugin-sdk",
3
- "version": "0.6.14",
3
+ "version": "0.6.16",
4
4
  "homepage": "https://github.com/get-bb/bb#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/get-bb/bb/issues"