@get-bb/plugin-sdk 0.4.55 → 0.4.84

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.
package/README.md CHANGED
@@ -9,18 +9,6 @@ The authoritative contracts are the exported declarations in
9
9
  [`src/app-contract.ts`](src/app-contract.ts). Keep author-facing guidance in
10
10
  the built-in `bb-plugin-authoring` skill synchronized with those declarations.
11
11
 
12
- ## Environment providers
13
-
14
- `bb.experimental_environments.register` lets plugins create and remove thread
15
- workspaces on enrolled machines. The type-only `./environment-provider` entry
16
- contains the resource-operation contract. Core owns durable launches,
17
- cancellation, retries, retirement, and teardown. Selections persist non-secret
18
- inputs alongside `machine: { type: "existing", hostId }`.
19
-
20
- The bundled Project checkout, Worktree, and Personal workspace plugins are the
21
- reference implementations. See the Plugin Guide for registration, availability,
22
- validation, lifecycle policy, and app inputs controls.
23
-
24
12
  ## Composer customization
25
13
 
26
14
  Composer UI extensions register through `app.composer.customize(...)`. A
@@ -6,7 +6,7 @@
6
6
  // and read the real source: https://github.com/get-bb/bb
7
7
 
8
8
  import * as react from 'react';
9
- import { ComponentType, ComponentPropsWithoutRef, ReactNode } from 'react';
9
+ import { ComponentType, ComponentPropsWithoutRef, CSSProperties, ReactNode } from 'react';
10
10
  import { z } from 'zod';
11
11
 
12
12
  /**
@@ -330,10 +330,14 @@ declare const createThreadEnvironmentArgsSchema: z.ZodDiscriminatedUnion<[z.ZodO
330
330
  }, z.core.$strip>, z.ZodObject<{
331
331
  environmentProviderId: z.ZodString;
332
332
  inputs: z.ZodDefault<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
333
- machine: z.ZodObject<{
333
+ machine: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
334
334
  hostId: z.ZodString;
335
335
  type: z.ZodLiteral<"existing">;
336
- }, z.core.$strip>;
336
+ }, z.core.$strip>, z.ZodObject<{
337
+ inputs: z.ZodDefault<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
338
+ machineProviderId: z.ZodString;
339
+ type: z.ZodLiteral<"new">;
340
+ }, z.core.$strip>], "type">>;
337
341
  type: z.ZodLiteral<"provider">;
338
342
  }, z.core.$strip>], "type">;
339
343
  type CreateThreadEnvironmentArgs = z.infer<typeof createThreadEnvironmentArgsSchema>;
@@ -577,6 +581,18 @@ interface PluginFileOpenerSource {
577
581
  interface PluginFileOpenerProps {
578
582
  path: string;
579
583
  source: PluginFileOpenerSource;
584
+ /**
585
+ * One-based, inclusive lines requested by the latest file open, or null when
586
+ * untargeted. BB supplies a new object for each targeted open, including an
587
+ * identical target in the active tab. Observe object identity to navigate
588
+ * again; keep the editor model intact. Older hosts may omit this prop.
589
+ *
590
+ * @experimental Audit navigation, remount, and persistence semantics before stabilizing.
591
+ */
592
+ experimental_lineRange?: {
593
+ startLineNumber: number;
594
+ endLineNumber: number;
595
+ } | null;
580
596
  /**
581
597
  * BB's file preview, bound to this file. Render it to delegate conditionally
582
598
  * without re-entering plugin replacement resolution.
@@ -1517,20 +1533,21 @@ interface PluginCommandPaletteActionRegistration {
1517
1533
  run(context: PluginCommandPaletteActionContext): void | Promise<void>;
1518
1534
  }
1519
1535
  /**
1520
- * Supply the inline React mark bb draws for one agent provider.
1536
+ * Supply an inline React mark for a provider. Agent, machine, and environment
1537
+ * icon renderers select the mark by provider kind and id.
1538
+ * Only surfaces using the provider icon renderer consult this slot. Persistent
1539
+ * machine labels use a laptop glyph directly.
1521
1540
  *
1522
- * A manifest `branding.icon` (or a provider's `logoUrl`) is fetched and drawn
1523
- * through `<img>`, a separate document where `currentColor` resolves to black
1524
- * — invisible on dark themes and unreachable from app CSS. A component is
1525
- * rendered inline, so it inherits the app's theme colors and the host's sizing
1526
- * classes. Register a static color logo as a file and a theme-aware mark here.
1541
+ * Provider logo assets use a currentColor mask. Inline components can also
1542
+ * render multiple colors and inherit the app's theme and sizing classes.
1527
1543
  *
1528
- * The host passes only `className` (sizing plus the provider's color class);
1544
+ * The host passes `className` for sizing; color inherits from its wrapper.
1529
1545
  * the component must render an inline SVG (or other inline markup) and must
1530
- * not fetch. One registration per provider id per plugin; when two plugins
1531
- * claim the same provider id the host keeps the first by plugin id and warns.
1546
+ * not fetch. One registration per provider kind and id per plugin; when two
1547
+ * plugins claim the same pair the host keeps the first by plugin id and warns.
1532
1548
  */
1533
1549
  interface PluginProviderIconRegistration {
1550
+ providerKind: "agent" | "environment" | "machine";
1534
1551
  /**
1535
1552
  * The provider this mark is for — the id bb knows the provider by (the
1536
1553
  * provider declaration's id, e.g. `codex` or `acp-cursor`), not the plugin
@@ -1638,10 +1655,13 @@ interface PluginTimelineRendererRegistration {
1638
1655
  interface PluginEnvironmentProviderInputsProps {
1639
1656
  /** Project selected in the composer; null in projectless compose. */
1640
1657
  projectId: string | null;
1641
- /**
1642
- * The enrolled machine the selection names; null before one is picked.
1643
- */
1644
- hostId: string | null;
1658
+ /** Whether setup uses an existing host or provisions a new host before create. */
1659
+ target: {
1660
+ kind: "existing-host";
1661
+ hostId: string;
1662
+ } | {
1663
+ kind: "new-host";
1664
+ };
1645
1665
  /**
1646
1666
  * The `inputs` value the selection will carry: null until `onChange`
1647
1667
  * supplies one.
@@ -1676,6 +1696,34 @@ interface PluginEnvironmentProviderInputsRegistration {
1676
1696
  environmentProviderId: string;
1677
1697
  component: ComponentType<PluginEnvironmentProviderInputsProps>;
1678
1698
  }
1699
+ /**
1700
+ * Props passed to an `experimental_machineProviderInputs` component. Machine
1701
+ * inputs are persisted and readable by every plugin, so they must contain only
1702
+ * non-secret configuration and references to credentials held in plugin
1703
+ * settings.
1704
+ */
1705
+ interface PluginMachineProviderInputsProps {
1706
+ /** The value persisted with the machine selection. */
1707
+ value: JsonValue$1 | null;
1708
+ /** Replace the submitted value or block submission with a visible reason. */
1709
+ onChange(next: PluginMachineProviderInputsChange): void;
1710
+ }
1711
+ type PluginMachineProviderInputsChange = {
1712
+ status: "ready";
1713
+ value: JsonValue$1;
1714
+ } | {
1715
+ status: "blocked";
1716
+ reason: string;
1717
+ };
1718
+ /**
1719
+ * Supply the inputs control for one machine provider registered server-side
1720
+ * through `bb.experimental_machines.register`.
1721
+ */
1722
+ interface PluginMachineProviderInputsRegistration {
1723
+ /** The machine provider id this control supplies inputs for. */
1724
+ machineProviderId: string;
1725
+ component: ComponentType<PluginMachineProviderInputsProps>;
1726
+ }
1679
1727
  interface PluginAppSlots {
1680
1728
  homepageSection(registration: PluginHomepageSectionRegistration): void;
1681
1729
  settingsSection(registration: PluginSettingsSectionRegistration): void;
@@ -1734,8 +1782,8 @@ interface PluginAppSlots {
1734
1782
  */
1735
1783
  commandPaletteAction(registration: PluginCommandPaletteActionRegistration): void;
1736
1784
  /**
1737
- * Draw one agent or environment provider's icon with an inline
1738
- * React component instead of its `<img>`-rendered logo file (see
1785
+ * Draw one agent, environment, or machine provider's icon with an inline
1786
+ * React component instead of its masked logo asset (see
1739
1787
  * {@link PluginProviderIconRegistration}). Experimental: see
1740
1788
  * docs/api_to_audit.md.
1741
1789
  */
@@ -1754,6 +1802,12 @@ interface PluginAppSlots {
1754
1802
  * see docs/api_to_audit.md.
1755
1803
  */
1756
1804
  experimental_environmentProviderInputs(registration: PluginEnvironmentProviderInputsRegistration): void;
1805
+ /**
1806
+ * Supply the non-secret machine inputs control rendered by machine creation
1807
+ * surfaces (see {@link PluginMachineProviderInputsRegistration}).
1808
+ * Experimental: see docs/api_to_audit.md.
1809
+ */
1810
+ experimental_machineProviderInputs(registration: PluginMachineProviderInputsRegistration): void;
1757
1811
  }
1758
1812
  interface PluginAppComposer {
1759
1813
  customize(registration: ComposerCustomization): void;
@@ -1801,7 +1855,63 @@ interface PluginContentScriptRegistration {
1801
1855
  interface PluginAppContentScripts {
1802
1856
  register(registration: PluginContentScriptRegistration): void;
1803
1857
  }
1858
+ interface ExperimentalIconProps {
1859
+ name: string;
1860
+ /** Used when the requested name is missing; defaults to the host Zap icon. */
1861
+ fallback?: string;
1862
+ className?: string;
1863
+ style?: CSSProperties;
1864
+ "aria-hidden"?: boolean | "false" | "true";
1865
+ "aria-label"?: string;
1866
+ }
1867
+ /** Shared agent, machine, or environment artwork without fetching metadata. */
1868
+ interface ExperimentalProviderIconProps {
1869
+ /** Keeps same-id agent, machine, and environment providers distinct. */
1870
+ providerKind: PluginProviderIconRegistration["providerKind"];
1871
+ /**
1872
+ * Existing agent, machine, or environment provider record. Reads id, logoUrl, icon and
1873
+ * strings.iconTint; other fields are ignored. An id-only record is sufficient
1874
+ * when only frontend registrations and fallback are needed. Does not fetch.
1875
+ */
1876
+ provider: {
1877
+ id: string;
1878
+ logoUrl?: string | null;
1879
+ /** Agent providers use { glyph }; machine and environment providers use a string. */
1880
+ icon?: {
1881
+ glyph: string;
1882
+ } | string | null;
1883
+ strings?: {
1884
+ iconTint?: {
1885
+ light: string;
1886
+ dark: string;
1887
+ } | null;
1888
+ } | null;
1889
+ };
1890
+ /** Used when no artwork is available; defaults to Code. */
1891
+ fallback?: string;
1892
+ className?: string;
1893
+ "aria-hidden"?: boolean | "false" | "true";
1894
+ "aria-label"?: string;
1895
+ }
1896
+ interface ExperimentalIconRegistration {
1897
+ /** Shared app name. Namespacing is recommended, but not required. */
1898
+ name: string;
1899
+ /** Inline artwork. Honor className for sizing; use currentColor for tint. */
1900
+ component: ComponentType<{
1901
+ className?: string;
1902
+ }>;
1903
+ }
1904
+ interface ExperimentalAppIcons {
1905
+ /**
1906
+ * Add or override an app icon during setup. Returns nothing; the host
1907
+ * replaces registrations on reload and removes them on unload. Duplicate
1908
+ * names within a plugin reject setup. Between plugins, the first plugin id
1909
+ * in lexical order wins, independent of bundle load order.
1910
+ */
1911
+ register(registration: ExperimentalIconRegistration): void;
1912
+ }
1804
1913
  interface PluginAppBuilder {
1914
+ experimental_icons: ExperimentalAppIcons;
1805
1915
  slots: PluginAppSlots;
1806
1916
  composer: PluginAppComposer;
1807
1917
  contentScripts: PluginAppContentScripts;
@@ -2526,6 +2636,15 @@ interface BbNavigate {
2526
2636
  * shims the specifier to that object on `globalThis.__bbPluginRuntime`.
2527
2637
  */
2528
2638
  interface PluginSdkApp {
2639
+ experimental_Icon: ComponentType<ExperimentalIconProps>;
2640
+ /**
2641
+ * Render provider slot override, then its logo, then its glyph, then fallback.
2642
+ * Pass a record from agent, machine, or environment provider queries;
2643
+ * an id-only record resolves frontend registrations, without fetching metadata.
2644
+ * Updates on plugin load, reload and unload. Throwing or recursive overrides
2645
+ * fall back to declared artwork. Logo assets render as currentColor masks.
2646
+ */
2647
+ experimental_ProviderIcon: ComponentType<ExperimentalProviderIconProps>;
2529
2648
  definePluginApp(setup: PluginAppSetup): PluginAppDefinition;
2530
2649
  useRpc<Contract extends PluginRpcContract = PluginRpcContract>(): PluginRpcClient<Contract>;
2531
2650
  useRealtime(channel: string, handler: (payload: unknown) => void): void;
@@ -2669,6 +2788,8 @@ interface PluginSdkApp {
2669
2788
  useComposerView(): ComposerView;
2670
2789
  }
2671
2790
 
2791
+ declare const experimental_Icon: react.ComponentType<ExperimentalIconProps>;
2792
+ declare const experimental_ProviderIcon: react.ComponentType<ExperimentalProviderIconProps>;
2672
2793
  declare const definePluginApp: (setup: PluginAppSetup) => PluginAppDefinition;
2673
2794
  declare const ThreadChat: react.ComponentType<ThreadChatProps>;
2674
2795
  declare const Markdown: react.ComponentType<MarkdownProps>;
@@ -2699,5 +2820,5 @@ declare const experimental_useSidebarThreadSplit: (threadId: string) => PluginSi
2699
2820
  declare const experimental_useProviders: () => PluginProvidersState;
2700
2821
  declare const experimental_useCodeTheme: () => PluginCodeThemeState;
2701
2822
 
2702
- export { Markdown, ThreadChat, UrlLink, definePluginApp, experimental_BranchPicker, experimental_Diff, experimental_FileLink, experimental_NewThreadComposer, experimental_PermissionModePicker, experimental_ProviderModelPicker, experimental_SourceCode, experimental_useAppPanel, experimental_useBranches, experimental_useCheckoutState, experimental_useCodeTheme, experimental_useFixedTabTarget, experimental_useProviders, experimental_useSidebarThreadActions, experimental_useSidebarThreadPullRequest, experimental_useSidebarThreadSplit, experimental_useSidebarThreads, useBbContext, useBbNavigate, useComposer, useComposerView, useRealtime, useRealtimeConnectionState, useRpc, useSettings };
2703
- export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue$1 as JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, 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, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
2823
+ export { Markdown, ThreadChat, UrlLink, definePluginApp, experimental_BranchPicker, experimental_Diff, experimental_FileLink, experimental_Icon, experimental_NewThreadComposer, experimental_PermissionModePicker, experimental_ProviderIcon, experimental_ProviderModelPicker, experimental_SourceCode, experimental_useAppPanel, experimental_useBranches, experimental_useCheckoutState, experimental_useCodeTheme, experimental_useFixedTabTarget, experimental_useProviders, experimental_useSidebarThreadActions, experimental_useSidebarThreadPullRequest, experimental_useSidebarThreadSplit, experimental_useSidebarThreads, useBbContext, useBbNavigate, useComposer, useComposerView, useRealtime, useRealtimeConnectionState, useRpc, useSettings };
2824
+ export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderIconProps, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarFooter, ExperimentalSidebarFooterActionContext, ExperimentalSidebarFooterActionRegistration, ExperimentalSidebarFooterDisclosureController, ExperimentalSidebarFooterDisclosureProps, ExperimentalSidebarFooterDisclosureRegistration, ExperimentalSidebarFooterItemBase, ExperimentalSidebarFooterItemRegistration, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue$1 as JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginEnvironmentProviderInputsChange, PluginEnvironmentProviderInputsProps, PluginEnvironmentProviderInputsRegistration, 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, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
@@ -22,10 +22,14 @@ declare const environmentSchema: z.ZodObject<{
22
22
  environmentProviderInstanceKey: z.ZodNullable<z.ZodString>;
23
23
  environmentProviderSelection: z.ZodNullable<z.ZodObject<{
24
24
  inputs: z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
25
- machine: z.ZodObject<{
25
+ machine: z.ZodDiscriminatedUnion<[z.ZodObject<{
26
26
  hostId: z.ZodString;
27
27
  type: z.ZodLiteral<"existing">;
28
- }, z.core.$strip>;
28
+ }, z.core.$strip>, z.ZodObject<{
29
+ inputs: z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
30
+ machineProviderId: z.ZodString;
31
+ type: z.ZodLiteral<"new">;
32
+ }, z.core.$strip>], "type">;
29
33
  }, z.core.$strip>>;
30
34
  hostId: z.ZodString;
31
35
  id: z.ZodString;
@@ -75,6 +79,29 @@ declare const hostSchema: z.ZodObject<{
75
79
  id: z.ZodString;
76
80
  lastRejectedProtocolVersion: z.ZodNullable<z.ZodNumber>;
77
81
  lastSeenAt: z.ZodNullable<z.ZodNumber>;
82
+ lifecycle: z.ZodObject<{
83
+ message: z.ZodNullable<z.ZodString>;
84
+ pendingLog: z.ZodString;
85
+ phase: z.ZodEnum<{
86
+ active: "active";
87
+ creating: "creating";
88
+ destroyed: "destroyed";
89
+ removing: "removing";
90
+ resuming: "resuming";
91
+ suspended: "suspended";
92
+ suspending: "suspending";
93
+ }>;
94
+ suspendedAt: z.ZodNullable<z.ZodNumber>;
95
+ teardown: z.ZodNullable<z.ZodObject<{
96
+ attempt: z.ZodNumber;
97
+ status: z.ZodEnum<{
98
+ failed: "failed";
99
+ removed: "removed";
100
+ running: "running";
101
+ }>;
102
+ }, z.core.$strip>>;
103
+ }, z.core.$strip>;
104
+ machineProviderId: z.ZodNullable<z.ZodString>;
78
105
  maxPermissionMode: z.ZodEnum<{
79
106
  "accept-edits": "accept-edits";
80
107
  auto: "auto";
@@ -86,6 +113,7 @@ declare const hostSchema: z.ZodObject<{
86
113
  disconnected: "disconnected";
87
114
  }>;
88
115
  type: z.ZodEnum<{
116
+ ephemeral: "ephemeral";
89
117
  persistent: "persistent";
90
118
  }>;
91
119
  updatedAt: z.ZodNumber;
@@ -166,8 +194,10 @@ type Checkout<R> = R extends {
166
194
  gitCheckout: true;
167
195
  } ? {
168
196
  path: string;
197
+ experimental_ownsPath: boolean;
169
198
  } : {
170
199
  path: string;
200
+ experimental_ownsPath: boolean;
171
201
  } | null;
172
202
  type InputsValue<S> = S extends StandardSchemaV1 ? StandardSchemaV1InferOutput<S> : null;
173
203
  /** Attempt-scoped updates; core persists each update before this call returns. */
@@ -251,8 +281,10 @@ interface PluginEnvironmentProviderPolicy {
251
281
  interface PluginEnvironmentProviderDefinition<R extends PluginEnvironmentProviderRequirements = PluginEnvironmentProviderRequirements, S extends PluginEnvironmentProviderInputsSchema = PluginEnvironmentProviderInputsSchema> {
252
282
  id: string;
253
283
  displayName: string;
284
+ /** Short explanation shown in environment choices. */
285
+ description: string;
254
286
  /** Host glyph, plugin-relative icon path, or this plugin’s declared namespaced icon. */
255
- icon?: string;
287
+ icon: string;
256
288
  requires?: R;
257
289
  inputs?: S;
258
290
  policy?: Partial<PluginEnvironmentProviderPolicy>;
@@ -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 { StandardSchemaV1 as StandardSchemaV1$1, PluginEnvironmentProviderRequirements as PluginEnvironmentProviderRequirements$1, StandardSchemaV1InferOutput, PluginEnvironmentValidateDecision, JsonValue as JsonValue$2 } from '@get-bb/plugin-sdk';
9
+ import { StandardSchemaV1 as StandardSchemaV1$1, PluginEnvironmentProviderRequirements as PluginEnvironmentProviderRequirements$1, StandardSchemaV1InferOutput, PluginEnvironmentValidateDecision, JsonValue as JsonValue$2, PluginMachineValidateDecision } from '@get-bb/plugin-sdk';
10
10
 
11
11
  /** Input-form entry: a path, or a path with options. */
12
12
  declare const providerNativeRootInputSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -74,10 +74,14 @@ declare const environmentSchema: z.ZodObject<{
74
74
  environmentProviderInstanceKey: z.ZodNullable<z.ZodString>;
75
75
  environmentProviderSelection: z.ZodNullable<z.ZodObject<{
76
76
  inputs: z.ZodNullable<z.ZodType<JsonValue$1, unknown, z.core.$ZodTypeInternals<JsonValue$1, unknown>>>;
77
- machine: z.ZodObject<{
77
+ machine: z.ZodDiscriminatedUnion<[z.ZodObject<{
78
78
  hostId: z.ZodString;
79
79
  type: z.ZodLiteral<"existing">;
80
- }, z.core.$strip>;
80
+ }, z.core.$strip>, z.ZodObject<{
81
+ inputs: z.ZodNullable<z.ZodType<JsonValue$1, unknown, z.core.$ZodTypeInternals<JsonValue$1, unknown>>>;
82
+ machineProviderId: z.ZodString;
83
+ type: z.ZodLiteral<"new">;
84
+ }, z.core.$strip>], "type">;
81
85
  }, z.core.$strip>>;
82
86
  hostId: z.ZodString;
83
87
  id: z.ZodString;
@@ -127,6 +131,29 @@ declare const hostSchema: z.ZodObject<{
127
131
  id: z.ZodString;
128
132
  lastRejectedProtocolVersion: z.ZodNullable<z.ZodNumber>;
129
133
  lastSeenAt: z.ZodNullable<z.ZodNumber>;
134
+ lifecycle: z.ZodObject<{
135
+ message: z.ZodNullable<z.ZodString>;
136
+ pendingLog: z.ZodString;
137
+ phase: z.ZodEnum<{
138
+ active: "active";
139
+ creating: "creating";
140
+ destroyed: "destroyed";
141
+ removing: "removing";
142
+ resuming: "resuming";
143
+ suspended: "suspended";
144
+ suspending: "suspending";
145
+ }>;
146
+ suspendedAt: z.ZodNullable<z.ZodNumber>;
147
+ teardown: z.ZodNullable<z.ZodObject<{
148
+ attempt: z.ZodNumber;
149
+ status: z.ZodEnum<{
150
+ failed: "failed";
151
+ removed: "removed";
152
+ running: "running";
153
+ }>;
154
+ }, z.core.$strip>>;
155
+ }, z.core.$strip>;
156
+ machineProviderId: z.ZodNullable<z.ZodString>;
130
157
  maxPermissionMode: z.ZodEnum<{
131
158
  "accept-edits": "accept-edits";
132
159
  auto: "auto";
@@ -138,6 +165,7 @@ declare const hostSchema: z.ZodObject<{
138
165
  disconnected: "disconnected";
139
166
  }>;
140
167
  type: z.ZodEnum<{
168
+ ephemeral: "ephemeral";
141
169
  persistent: "persistent";
142
170
  }>;
143
171
  updatedAt: z.ZodNumber;
@@ -492,10 +520,12 @@ type Checkout<R> = R extends {
492
520
  gitCheckout: true;
493
521
  } ? {
494
522
  path: string;
523
+ experimental_ownsPath: boolean;
495
524
  } : {
496
525
  path: string;
526
+ experimental_ownsPath: boolean;
497
527
  } | null;
498
- type InputsValue<S> = S extends StandardSchemaV1$1 ? StandardSchemaV1InferOutput<S> : null;
528
+ type InputsValue$1<S> = S extends StandardSchemaV1$1 ? StandardSchemaV1InferOutput<S> : null;
499
529
  /** Attempt-scoped updates; core persists each update before this call returns. */
500
530
  interface PluginEnvironmentProviderProgress {
501
531
  step(text: string): void;
@@ -506,7 +536,7 @@ interface PluginEnvironmentProviderValidateContext<R extends PluginEnvironmentPr
506
536
  host: Host;
507
537
  projectCheckout: Checkout<R>;
508
538
  gitRemote: Fact<R, "gitRemote", string>;
509
- inputs: InputsValue<S>;
539
+ inputs: InputsValue$1<S>;
510
540
  }
511
541
  interface PluginEnvironmentProviderAvailabilityContext {
512
542
  project: Project;
@@ -577,8 +607,10 @@ interface PluginEnvironmentProviderPolicy {
577
607
  interface PluginEnvironmentProviderDefinition<R extends PluginEnvironmentProviderRequirements$1 = PluginEnvironmentProviderRequirements$1, S extends PluginEnvironmentProviderInputsSchema = PluginEnvironmentProviderInputsSchema> {
578
608
  id: string;
579
609
  displayName: string;
610
+ /** Short explanation shown in environment choices. */
611
+ description: string;
580
612
  /** Host glyph, plugin-relative icon path, or this plugin’s declared namespaced icon. */
581
- icon?: string;
613
+ icon: string;
582
614
  requires?: R;
583
615
  inputs?: S;
584
616
  policy?: Partial<PluginEnvironmentProviderPolicy>;
@@ -591,6 +623,80 @@ interface PluginEnvironmentProviderDefinition<R extends PluginEnvironmentProvide
591
623
 
592
624
  declare const RESERVED_BB_CLI_COMMANDS: readonly string[];
593
625
 
626
+ type PluginMachineProviderResource = Exclude<JsonValue$2, null>;
627
+ type PluginMachineProviderInputsSchema = StandardSchemaV1$1 | undefined;
628
+ type InputsValue<S> = S extends StandardSchemaV1$1 ? StandardSchemaV1InferOutput<S> : null;
629
+ interface PluginMachineProviderProgress {
630
+ step(text: string): void;
631
+ log(text: string): void;
632
+ }
633
+ type PluginMachineProviderAvailability = {
634
+ status: "available";
635
+ } | {
636
+ status: "setup-required";
637
+ message: string;
638
+ } | {
639
+ status: "unavailable";
640
+ message: string;
641
+ };
642
+ type PluginMachineProviderValidateContext<S extends PluginMachineProviderInputsSchema = PluginMachineProviderInputsSchema> = {
643
+ inputs: InputsValue<S>;
644
+ };
645
+ interface PluginMachineProviderLifecycleContext {
646
+ checkpoint(resource: PluginMachineProviderResource): Promise<void>;
647
+ report: PluginMachineProviderProgress;
648
+ signal: AbortSignal;
649
+ }
650
+ type PluginMachineProviderCreateContext<S extends PluginMachineProviderInputsSchema = PluginMachineProviderInputsSchema> = PluginMachineProviderValidateContext<S> & PluginMachineProviderLifecycleContext & {
651
+ key: string;
652
+ attempt: number;
653
+ };
654
+ type PluginMachineProviderCreateResult = {
655
+ status: "created";
656
+ name: string;
657
+ resource: PluginMachineProviderResource;
658
+ } | {
659
+ status: "failed";
660
+ message: string;
661
+ };
662
+ type PluginMachineProviderResourceLifecycleContext = PluginMachineProviderLifecycleContext & {
663
+ hostId: string;
664
+ resource: PluginMachineProviderResource;
665
+ };
666
+ type PluginMachineProviderRemoveContext = Omit<PluginMachineProviderResourceLifecycleContext, "checkpoint">;
667
+ interface PluginMachineProviderResourceResult {
668
+ resource: PluginMachineProviderResource;
669
+ }
670
+ type PluginMachineProviderRemoveResult = {
671
+ status: "removed";
672
+ } | {
673
+ status: "failed";
674
+ message: string;
675
+ };
676
+ interface PluginMachineProviderDefinition<S extends PluginMachineProviderInputsSchema = PluginMachineProviderInputsSchema> {
677
+ id: string;
678
+ displayName: string;
679
+ /** One line telling a user what choosing this provider gets them, shown wherever a machine is added. */
680
+ description: string;
681
+ /** Provider glyph, declared icon, or plugin-relative icon path. */
682
+ icon: string;
683
+ ephemeral?: boolean;
684
+ /** Persisted and readable by every plugin. Store secret references, never secrets. */
685
+ inputs?: S;
686
+ availability?(): PluginMachineProviderAvailability | Promise<PluginMachineProviderAvailability>;
687
+ validate?(context: PluginMachineProviderValidateContext<S>): PluginMachineValidateDecision | Promise<PluginMachineValidateDecision>;
688
+ create(context: PluginMachineProviderCreateContext<S>): Promise<PluginMachineProviderCreateResult>;
689
+ /** Reconcile and remove an uncertain allocation by durable key without creating or bootstrapping. Return failed while allocation intent remains unresolved. */
690
+ reconcileCleanup(context: {
691
+ key: string;
692
+ report: PluginMachineProviderProgress;
693
+ signal: AbortSignal;
694
+ }): Promise<PluginMachineProviderRemoveResult>;
695
+ suspend?(context: PluginMachineProviderResourceLifecycleContext): Promise<PluginMachineProviderResourceResult>;
696
+ resume?(context: PluginMachineProviderResourceLifecycleContext): Promise<PluginMachineProviderResourceResult>;
697
+ remove(context: PluginMachineProviderRemoveContext): Promise<PluginMachineProviderRemoveResult>;
698
+ }
699
+
594
700
  /**
595
701
  * A value that survives a JSON round trip without coercion or data loss.
596
702
  *
@@ -710,6 +816,36 @@ interface PluginEnvironmentProviderRequirements {
710
816
  * supplied pathKey. Provider ids are unique across running plugins.
711
817
  */
712
818
  type PluginEnvironmentProviderDeclaration<Requires extends PluginEnvironmentProviderRequirements = PluginEnvironmentProviderRequirements, Inputs extends PluginEnvironmentProviderInputsSchema = PluginEnvironmentProviderInputsSchema> = PluginEnvironmentProviderDefinition<Requires, Inputs>;
819
+ type PluginMachineProviderDeclaration<Inputs extends PluginMachineProviderInputsSchema = PluginMachineProviderInputsSchema> = PluginMachineProviderDefinition<Inputs>;
820
+ interface ServerAccessGrant {
821
+ id: string;
822
+ serverUrl: string;
823
+ headers?: Record<string, string>;
824
+ }
825
+ interface ServerAccessProviderDeclaration {
826
+ id: string;
827
+ displayName: string;
828
+ description: string;
829
+ availability(): (PluginMachineProviderAvailability & {
830
+ serverUrl?: string;
831
+ }) | Promise<PluginMachineProviderAvailability & {
832
+ serverUrl?: string;
833
+ }>;
834
+ acquire(context: {
835
+ key: string;
836
+ hostId: string;
837
+ signal: AbortSignal;
838
+ }): Promise<ServerAccessGrant | {
839
+ status: "failed";
840
+ message: string;
841
+ }>;
842
+ release(context: {
843
+ key: string;
844
+ hostId: string;
845
+ /** Null when acquisition was interrupted before a grant was returned. Reconcile using key and hostId. */
846
+ grantId: string | null;
847
+ }): Promise<void>;
848
+ }
713
849
  /**
714
850
  * Where a thread is going to run, as far as core knows at the checkpoint.
715
851
  * Before provisioning attaches an environment this is the start intent the
@@ -726,6 +862,10 @@ type PluginDispatchEnvironmentIntent = {
726
862
  machine: {
727
863
  type: "existing";
728
864
  hostId: string;
865
+ } | {
866
+ type: "new";
867
+ machineProviderId: string;
868
+ inputs: JsonValue | null;
729
869
  };
730
870
  inputs: JsonValue | null;
731
871
  };
@@ -1279,7 +1419,6 @@ interface ExperimentalPluginProviderEnvEntry {
1279
1419
  serverPath: string;
1280
1420
  };
1281
1421
  reason: string;
1282
- secret: boolean;
1283
1422
  }
1284
1423
  type PluginMentionTrigger = "!" | "#" | "$" | "@" | "~";
1285
1424
  /**
@@ -1539,13 +1678,24 @@ declare function storePluginHook<K extends PluginHookName>(records: {
1539
1678
  declare function pluginHookAlreadyRegisteredMessage(hook: PluginHookName): string;
1540
1679
  declare const ENVIRONMENT_PROVIDER_ID_PATTERN: RegExp;
1541
1680
  declare const ENVIRONMENT_PROVIDER_DISPLAY_NAME_MAX_CHARS = 80;
1681
+ declare const ENVIRONMENT_PROVIDER_DESCRIPTION_MAX_CHARS = 200;
1542
1682
  declare const ENVIRONMENT_PROVIDER_REQUIREMENT_NAMES: readonly ["projectCheckout", "gitCheckout", "gitRemote", "projectless"];
1543
1683
  type NormalizedPluginEnvironmentProviderRequirements = {
1544
1684
  [K in (typeof ENVIRONMENT_PROVIDER_REQUIREMENT_NAMES)[number]]: boolean;
1545
1685
  };
1686
+ declare const environmentCompositionSchema: z.ZodObject<{
1687
+ description: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | null, string | undefined>>;
1688
+ displayName: z.ZodString;
1689
+ environmentProviderId: z.ZodString;
1690
+ icon: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>, z.ZodTransform<string | null, string | undefined>>;
1691
+ id: z.ZodString;
1692
+ machineProviderId: z.ZodString;
1693
+ }, z.core.$strict>;
1694
+ type NormalizedPluginEnvironmentComposition = z.infer<typeof environmentCompositionSchema>;
1546
1695
  interface NormalizedPluginEnvironmentProvider {
1547
1696
  id: string;
1548
1697
  displayName: string;
1698
+ description: string | null;
1549
1699
  icon: string | null;
1550
1700
  requires: NormalizedPluginEnvironmentProviderRequirements;
1551
1701
  inputs: StandardSchemaV1 | null;
@@ -1557,7 +1707,25 @@ interface NormalizedPluginEnvironmentProvider {
1557
1707
  policy: PluginEnvironmentProviderPolicy;
1558
1708
  }
1559
1709
  declare function validatePluginEnvironmentProviderDeclaration(declaration: PluginEnvironmentProviderDeclaration): NormalizedPluginEnvironmentProvider;
1560
- declare const MACHINE_PROVIDER_REQUIREMENT_NAMES: readonly ["gitRemote"];
1710
+ declare const MACHINE_PROVIDER_DESCRIPTION_MAX_CHARS = 200;
1711
+ interface NormalizedPluginMachineProvider {
1712
+ id: string;
1713
+ displayName: string;
1714
+ description: string;
1715
+ icon: string;
1716
+ ephemeral: boolean;
1717
+ inputs: StandardSchemaV1 | null;
1718
+ inputsJsonSchema: JsonValue | null;
1719
+ availability: NonNullable<PluginMachineProviderDeclaration["availability"]> | null;
1720
+ validate: NonNullable<PluginMachineProviderDeclaration["validate"]> | null;
1721
+ reconcileCleanup: PluginMachineProviderDeclaration["reconcileCleanup"];
1722
+ create: PluginMachineProviderDeclaration["create"];
1723
+ suspend: NonNullable<PluginMachineProviderDeclaration["suspend"]> | null;
1724
+ resume: NonNullable<PluginMachineProviderDeclaration["resume"]> | null;
1725
+ remove: PluginMachineProviderDeclaration["remove"];
1726
+ }
1727
+ declare function validatePluginMachineProviderDeclaration(declaration: PluginMachineProviderDeclaration): NormalizedPluginMachineProvider;
1728
+ declare function validateServerAccessProviderDeclaration(declaration: ServerAccessProviderDeclaration): ServerAccessProviderDeclaration;
1561
1729
 
1562
- export { AGENT_TOOL_NAME_PATTERN, BACKGROUND_NAME_PATTERN, CLI_COMMAND_NAME_PATTERN, ENVIRONMENT_PROVIDER_DISPLAY_NAME_MAX_CHARS, ENVIRONMENT_PROVIDER_ID_PATTERN, ENVIRONMENT_PROVIDER_REQUIREMENT_NAMES, KV_VALUE_MAX_BYTES, MACHINE_PROVIDER_REQUIREMENT_NAMES, MENTION_PROVIDER_ID_PATTERN, PLUGIN_AGENT_DYNAMIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_SELECTION_MAX_IDS, PLUGIN_AGENT_STATIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, PLUGIN_AGENT_TOOL_PARAMETERS_MAX_BYTES, PLUGIN_HTTP_METHODS, PLUGIN_MENTION_TRIGGER_VALUES, PLUGIN_PROVIDER_BRIDGE_OPTIONS_MAX_BYTES, PLUGIN_PROVIDER_COMPOSER_ACTION_VALUES, PLUGIN_PROVIDER_DISPLAY_NAME_MAX_CHARS, PLUGIN_PROVIDER_ENV_MAX_ENTRIES, PLUGIN_PROVIDER_ENV_NAME_PATTERN, PLUGIN_PROVIDER_PERMISSION_MODE_VALUES, PLUGIN_PROVIDER_REASONING_LEVEL_VALUES, PROVIDER_ID_PATTERN, RESERVED_AGENT_TOOL_NAMES, RESERVED_BB_CLI_COMMANDS, RPC_METHOD_PATTERN, SERVER_DIRECT_AI_SERVICE_IDS, SETTING_KEY_PATTERN, adoptHttpRouteResponse, agentToolIconRefusalMessage, aiServiceAlreadyRegisteredMessage, assertAiServiceRegistrable, assertNoRecursiveJsonSchemaReferences, deriveValidatedProviderOptions, enforcePluginCliOutputLimit, isPluginMentionTrigger, isStandardSchema, isZodSchemaLike, normalizeMentionProviderTriggers, parsePluginAgentToolPresentation, pluginCliCollisionWarning, pluginHookAlreadyRegisteredMessage, providerAlreadyRegisteredMessage, providerIconRefusalMessage, providerWithoutBridgeMessage, readRpcMethodContract, registerSettingDescriptors, rejectStaleAgentToolFields, storePluginHook, summarizeParseIssues, summarizeStandardIssues, undeclaredIconProblem, validatePluginAiServiceDeclaration, validatePluginEnvironmentProviderDeclaration, validatePluginProviderDeclaration, validatePluginProviderEnvEntries, validateSettingsUpdate, zodSchemaToJsonSchema };
1563
- export type { AiServiceHostBinding, NormalizedPluginEnvironmentProvider, NormalizedPluginEnvironmentProviderRequirements, NormalizedPluginProviderDeclaration };
1730
+ export { AGENT_TOOL_NAME_PATTERN, BACKGROUND_NAME_PATTERN, CLI_COMMAND_NAME_PATTERN, ENVIRONMENT_PROVIDER_DESCRIPTION_MAX_CHARS, ENVIRONMENT_PROVIDER_DISPLAY_NAME_MAX_CHARS, ENVIRONMENT_PROVIDER_ID_PATTERN, ENVIRONMENT_PROVIDER_REQUIREMENT_NAMES, KV_VALUE_MAX_BYTES, MACHINE_PROVIDER_DESCRIPTION_MAX_CHARS, MENTION_PROVIDER_ID_PATTERN, PLUGIN_AGENT_DYNAMIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_SELECTION_MAX_IDS, PLUGIN_AGENT_STATIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, PLUGIN_AGENT_TOOL_PARAMETERS_MAX_BYTES, PLUGIN_HTTP_METHODS, PLUGIN_MENTION_TRIGGER_VALUES, PLUGIN_PROVIDER_BRIDGE_OPTIONS_MAX_BYTES, PLUGIN_PROVIDER_COMPOSER_ACTION_VALUES, PLUGIN_PROVIDER_DISPLAY_NAME_MAX_CHARS, PLUGIN_PROVIDER_ENV_MAX_ENTRIES, PLUGIN_PROVIDER_ENV_NAME_PATTERN, PLUGIN_PROVIDER_PERMISSION_MODE_VALUES, PLUGIN_PROVIDER_REASONING_LEVEL_VALUES, PROVIDER_ID_PATTERN, RESERVED_AGENT_TOOL_NAMES, RESERVED_BB_CLI_COMMANDS, RPC_METHOD_PATTERN, SERVER_DIRECT_AI_SERVICE_IDS, SETTING_KEY_PATTERN, adoptHttpRouteResponse, agentToolIconRefusalMessage, aiServiceAlreadyRegisteredMessage, assertAiServiceRegistrable, assertNoRecursiveJsonSchemaReferences, deriveValidatedProviderOptions, enforcePluginCliOutputLimit, environmentCompositionSchema, isPluginMentionTrigger, isStandardSchema, isZodSchemaLike, normalizeMentionProviderTriggers, parsePluginAgentToolPresentation, pluginCliCollisionWarning, pluginHookAlreadyRegisteredMessage, providerAlreadyRegisteredMessage, providerIconRefusalMessage, providerWithoutBridgeMessage, readRpcMethodContract, registerSettingDescriptors, rejectStaleAgentToolFields, storePluginHook, summarizeParseIssues, summarizeStandardIssues, undeclaredIconProblem, validatePluginAiServiceDeclaration, validatePluginEnvironmentProviderDeclaration, validatePluginMachineProviderDeclaration, validatePluginProviderDeclaration, validatePluginProviderEnvEntries, validateServerAccessProviderDeclaration, validateSettingsUpdate, zodSchemaToJsonSchema };
1731
+ export type { AiServiceHostBinding, NormalizedPluginEnvironmentComposition, NormalizedPluginEnvironmentProvider, NormalizedPluginEnvironmentProviderRequirements, NormalizedPluginMachineProvider, NormalizedPluginProviderDeclaration };