@get-bb/plugin-sdk 0.4.99 → 0.4.104
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/bundled-types/bb-plugin-sdk-app.d.ts +123 -30
- package/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts +129 -43
- package/bundled-types/bb-plugin-sdk-provider-bridge-testing.d.ts +35 -0
- package/bundled-types/bb-plugin-sdk-provider-bridge.d.ts +30 -0
- package/bundled-types/bb-plugin-sdk-testing-app.d.ts +9 -1
- package/bundled-types/bb-plugin-sdk-testing.d.ts +5 -5
- package/bundled-types/bb-plugin-sdk.d.ts +692 -71
- package/dist/index.js +799 -0
- package/dist/internal/host-policy.js +21 -15
- package/dist/provider-bridge-acp.js +18 -2
- package/dist/provider-bridge-testing.js +18 -2
- package/dist/provider-bridge.js +18 -2
- package/dist/testing/app.js +18 -1
- package/dist/testing/index.js +35 -22
- package/package.json +1 -1
|
@@ -855,6 +855,23 @@ interface ExperimentalAppOverlayRegistration {
|
|
|
855
855
|
id: string;
|
|
856
856
|
component: ComponentType<ExperimentalAppOverlayProps>;
|
|
857
857
|
}
|
|
858
|
+
/**
|
|
859
|
+
* A name the host resolves to a glyph, in this order: a name any plugin
|
|
860
|
+
* registered with `app.experimental_icons.register()`, then a built-in BB icon
|
|
861
|
+
* name (`"Zap"`), then a namespaced `"<pluginId>/<name>"` glyph naming an
|
|
862
|
+
* entry of that plugin's manifest `bb.branding.experimental_icons` map. A
|
|
863
|
+
* registration therefore shadows a built-in, and either shadows a declared
|
|
864
|
+
* icon of the same name. Names that resolve to none of the three fall back to
|
|
865
|
+
* the surface's generic icon.
|
|
866
|
+
*
|
|
867
|
+
* Declared icons and registrations are one vocabulary here: the same name
|
|
868
|
+
* works in `experimental_Icon`, in every field below, and — for a declared
|
|
869
|
+
* icon — in the tool, provider and bridge-row declarations that accept one.
|
|
870
|
+
* Declared icons need no frontend bundle and survive the plugin being stopped;
|
|
871
|
+
* registrations can be any React component but live only while the plugin's
|
|
872
|
+
* app bundle is loaded.
|
|
873
|
+
*/
|
|
874
|
+
type BbIconName = string;
|
|
858
875
|
/**
|
|
859
876
|
* Owner-defined validator for a fixed tab's transient target. The host first
|
|
860
877
|
* verifies that the value is JSON-safe, then calls this validator before
|
|
@@ -879,8 +896,7 @@ type ExperimentalPluginFixedTabReference<Target extends JsonValue$1 = never> = {
|
|
|
879
896
|
/** A fixed tab declared by a plugin nav panel. */
|
|
880
897
|
type PluginFixedTabRegistration<Target extends JsonValue$1 = never> = ExperimentalPluginFixedTabReference<Target> & {
|
|
881
898
|
title: string;
|
|
882
|
-
|
|
883
|
-
icon: string;
|
|
899
|
+
icon: BbIconName;
|
|
884
900
|
component: ComponentType<PluginNavPanelProps>;
|
|
885
901
|
/** `flush` lets the component own padding and scrolling. */
|
|
886
902
|
layout?: "flush" | "padded";
|
|
@@ -891,8 +907,7 @@ interface PluginNavPanelRegistration {
|
|
|
891
907
|
/** Unique within the plugin; letters, digits, `-`, `_`. */
|
|
892
908
|
id: string;
|
|
893
909
|
title: string;
|
|
894
|
-
|
|
895
|
-
icon: string;
|
|
910
|
+
icon: BbIconName;
|
|
896
911
|
/** URL segment under `/plugins/<pluginId>/`; letters, digits, `-`, `_`. */
|
|
897
912
|
path: string;
|
|
898
913
|
component: ComponentType<PluginNavPanelProps>;
|
|
@@ -975,10 +990,10 @@ interface PluginThreadPanelActionRegistration {
|
|
|
975
990
|
/** Label of the action row in the panel's new-tab launcher. */
|
|
976
991
|
title: string;
|
|
977
992
|
/**
|
|
978
|
-
*
|
|
979
|
-
*
|
|
993
|
+
* Drawn only when the manifest declares no `bb.branding.icon`; the launcher
|
|
994
|
+
* row and opened tabs prefer that over this hint.
|
|
980
995
|
*/
|
|
981
|
-
icon?:
|
|
996
|
+
icon?: BbIconName;
|
|
982
997
|
/** Rendered inside every panel tab this action opens. */
|
|
983
998
|
component: ComponentType<PluginThreadPanelProps>;
|
|
984
999
|
/**
|
|
@@ -1015,8 +1030,8 @@ interface PluginNewThreadPanelActionRegistration {
|
|
|
1015
1030
|
id: string;
|
|
1016
1031
|
/** Label of the action row in the panel's new-tab launcher. */
|
|
1017
1032
|
title: string;
|
|
1018
|
-
/**
|
|
1019
|
-
icon?:
|
|
1033
|
+
/** Drawn only when the manifest declares no `bb.branding.icon`. */
|
|
1034
|
+
icon?: BbIconName;
|
|
1020
1035
|
/** Rendered inside every panel tab this action opens. */
|
|
1021
1036
|
component: ComponentType<PluginNewThreadPanelProps>;
|
|
1022
1037
|
/** Host framing; matches `threadPanelAction`. */
|
|
@@ -1060,8 +1075,8 @@ interface PluginSidebarFooterActionRegistration {
|
|
|
1060
1075
|
id: string;
|
|
1061
1076
|
/** Tooltip and accessible label for the icon button. */
|
|
1062
1077
|
title: string;
|
|
1063
|
-
/**
|
|
1064
|
-
icon:
|
|
1078
|
+
/** Drawn only when the manifest declares no `bb.branding.icon`. */
|
|
1079
|
+
icon: BbIconName;
|
|
1065
1080
|
/**
|
|
1066
1081
|
* Runs when the user activates the action (e.g. call `openSettings()`,
|
|
1067
1082
|
* open a panel via other surfaces, toast). Errors (sync or async) are
|
|
@@ -1080,8 +1095,7 @@ interface ExperimentalSidebarFooterItemBase {
|
|
|
1080
1095
|
id: string;
|
|
1081
1096
|
/** Tooltip and accessible label for the host-rendered icon button. */
|
|
1082
1097
|
label: string;
|
|
1083
|
-
|
|
1084
|
-
icon: string;
|
|
1098
|
+
icon: BbIconName;
|
|
1085
1099
|
}
|
|
1086
1100
|
/** A sidebar-footer item that runs a callback when activated. */
|
|
1087
1101
|
interface ExperimentalSidebarFooterActionRegistration extends ExperimentalSidebarFooterItemBase {
|
|
@@ -1558,8 +1572,7 @@ interface PluginMessageActionRegistration {
|
|
|
1558
1572
|
id: string;
|
|
1559
1573
|
/** Tooltip / menu label for the action. */
|
|
1560
1574
|
title: string;
|
|
1561
|
-
|
|
1562
|
-
icon?: string;
|
|
1575
|
+
icon?: BbIconName;
|
|
1563
1576
|
/**
|
|
1564
1577
|
* Runs when the user activates the action. Errors (sync or async) are
|
|
1565
1578
|
* contained and logged; they never break the timeline.
|
|
@@ -1618,10 +1631,6 @@ interface PluginCommandRegistration {
|
|
|
1618
1631
|
*/
|
|
1619
1632
|
run(context: PluginCommandContext): void | Promise<void>;
|
|
1620
1633
|
}
|
|
1621
|
-
/** @deprecated Use PluginCommandContext. */
|
|
1622
|
-
type PluginCommandPaletteActionContext = PluginCommandContext;
|
|
1623
|
-
/** @deprecated Use PluginCommandRegistration. */
|
|
1624
|
-
type PluginCommandPaletteActionRegistration = PluginCommandRegistration;
|
|
1625
1634
|
/** Registers commands for bb's command palette. */
|
|
1626
1635
|
interface PluginAppCommands {
|
|
1627
1636
|
/** Register a command. IDs are unique within this plugin, including legacy slot registrations. */
|
|
@@ -1990,6 +1999,11 @@ interface ExperimentalProviderIconProps {
|
|
|
1990
1999
|
"aria-hidden"?: boolean | "false" | "true";
|
|
1991
2000
|
"aria-label"?: string;
|
|
1992
2001
|
}
|
|
2002
|
+
/**
|
|
2003
|
+
* An app icon registered by a plugin. The registry is app-wide: a registered
|
|
2004
|
+
* name is usable wherever a `BbIconName` is — `experimental_Icon`, and every
|
|
2005
|
+
* host-rendered surface that takes one — by this plugin or any other.
|
|
2006
|
+
*/
|
|
1993
2007
|
interface ExperimentalIconRegistration {
|
|
1994
2008
|
/** Shared app name. Namespacing is recommended, but not required. */
|
|
1995
2009
|
name: string;
|
|
@@ -2000,10 +2014,11 @@ interface ExperimentalIconRegistration {
|
|
|
2000
2014
|
}
|
|
2001
2015
|
interface ExperimentalAppIcons {
|
|
2002
2016
|
/**
|
|
2003
|
-
* Add or override an app icon during setup.
|
|
2004
|
-
*
|
|
2005
|
-
*
|
|
2006
|
-
*
|
|
2017
|
+
* Add or override an app icon during setup. A registered name shadows a
|
|
2018
|
+
* built-in of the same name. Returns nothing; the host replaces
|
|
2019
|
+
* registrations on reload and removes them on unload. Duplicate names within
|
|
2020
|
+
* a plugin reject setup. Between plugins, the first plugin id in lexical
|
|
2021
|
+
* order wins, independent of bundle load order.
|
|
2007
2022
|
*/
|
|
2008
2023
|
register(registration: ExperimentalIconRegistration): void;
|
|
2009
2024
|
}
|
|
@@ -2088,8 +2103,8 @@ interface ComposerCustomization {
|
|
|
2088
2103
|
interface ComposerPlusMenuItem {
|
|
2089
2104
|
id: string;
|
|
2090
2105
|
label: string;
|
|
2091
|
-
/**
|
|
2092
|
-
icon?:
|
|
2106
|
+
/** Drawn only when the manifest declares no `bb.branding.icon`. */
|
|
2107
|
+
icon?: BbIconName;
|
|
2093
2108
|
/** Accessible description for the host-rendered row. */
|
|
2094
2109
|
description?: string;
|
|
2095
2110
|
disabled?: boolean | ((view: ComposerView) => boolean);
|
|
@@ -2142,8 +2157,11 @@ interface PluginComposerTextEffect {
|
|
|
2142
2157
|
}
|
|
2143
2158
|
/** Host-rendered status that temporarily replaces a thread's draft glyph. */
|
|
2144
2159
|
interface PluginComposerThreadRowStatus {
|
|
2145
|
-
/**
|
|
2146
|
-
|
|
2160
|
+
/**
|
|
2161
|
+
* Always drawn as given: unlike the plugin-badged surfaces, this one has no
|
|
2162
|
+
* preference for the plugin's own `bb.branding.icon`.
|
|
2163
|
+
*/
|
|
2164
|
+
icon: BbIconName;
|
|
2147
2165
|
/** Accessible label for the status glyph. */
|
|
2148
2166
|
label: string;
|
|
2149
2167
|
/**
|
|
@@ -2250,6 +2268,82 @@ interface PluginComposerApi {
|
|
|
2250
2268
|
* Experimental: see docs/api_to_audit.md.
|
|
2251
2269
|
*/
|
|
2252
2270
|
experimental_submit(options: ExperimentalComposerSubmitOptions): Promise<void>;
|
|
2271
|
+
/**
|
|
2272
|
+
* Set this composer's pickers as if each value had been picked by hand.
|
|
2273
|
+
*
|
|
2274
|
+
* Every field is optional. An omitted field is left alone. A field this
|
|
2275
|
+
* composer has no picker for is ignored rather than rejected: a thread
|
|
2276
|
+
* composer has no project or environment; a provider without service tiers
|
|
2277
|
+
* has no tier; a fork draft locks its project, provider and environment.
|
|
2278
|
+
* Values travel through the same paths the pickers use, so in the
|
|
2279
|
+
* new-thread composer they become the remembered defaults for the next
|
|
2280
|
+
* thread and are reported as the user's explicit choices, and in a thread
|
|
2281
|
+
* composer a provider change starts the same handoff the picker starts:
|
|
2282
|
+
* the handoff block is prepended to the draft and the next send creates a
|
|
2283
|
+
* new thread. A same-provider model change in a thread does not start a
|
|
2284
|
+
* handoff, exactly like the picker.
|
|
2285
|
+
*
|
|
2286
|
+
* In the new-thread composer the project is switched first and awaited
|
|
2287
|
+
* (attachments are copied to the new project), then the environment and
|
|
2288
|
+
* machine are applied to the new project, then provider, model, reasoning
|
|
2289
|
+
* level, service tier and permission mode. A provider change reloads the
|
|
2290
|
+
* model catalog before the model and reasoning level are applied to it.
|
|
2291
|
+
* Because the project switch remounts plugin surfaces, the returned
|
|
2292
|
+
* promise is owned by the composer and still resolves after the calling
|
|
2293
|
+
* component has unmounted.
|
|
2294
|
+
*
|
|
2295
|
+
* Resolves with the composer's own selection once it has settled: the
|
|
2296
|
+
* applied values have committed and the model catalog for the selected
|
|
2297
|
+
* provider and machine has finished loading, so model, reasoning level and
|
|
2298
|
+
* permission mode have reconciled against it. The catalog wait is bounded;
|
|
2299
|
+
* if it has not finished after 15 seconds the promise resolves with the
|
|
2300
|
+
* selection as it stands. The result carries only the fields this composer
|
|
2301
|
+
* has, so a missing key means "no such picker here" and a value that
|
|
2302
|
+
* differs from the one passed was reconciled (a reasoning level the model
|
|
2303
|
+
* does not support, a permission mode above the machine's ceiling, a model
|
|
2304
|
+
* the provider does not list). A provider the composer does not list is
|
|
2305
|
+
* ignored together with the model and reasoning level meant for it, so the
|
|
2306
|
+
* stored provider preference never names something the picker could not
|
|
2307
|
+
* have chosen. `environment` is absent while the composer
|
|
2308
|
+
* has no submittable environment; `providerId` and `model` are absent
|
|
2309
|
+
* while nothing is selected; `serviceTier` is present only when the
|
|
2310
|
+
* selected provider has tiers and one is chosen.
|
|
2311
|
+
*
|
|
2312
|
+
* Rejects, with a message safe to show to the user, in a composer with no
|
|
2313
|
+
* pickers at all (a queued-message editor, a side chat, a plugin surface
|
|
2314
|
+
* mounted outside any composer), when the calling surface is no longer
|
|
2315
|
+
* active, and when a value is not a known reasoning level, service tier or
|
|
2316
|
+
* permission mode.
|
|
2317
|
+
*
|
|
2318
|
+
* Experimental: see docs/api_to_audit.md.
|
|
2319
|
+
*/
|
|
2320
|
+
experimental_setSelection(selection: ExperimentalComposerSelection): Promise<ExperimentalComposerSelection>;
|
|
2321
|
+
}
|
|
2322
|
+
/**
|
|
2323
|
+
* Picker values for `experimental_setSelection`, and the shape it resolves
|
|
2324
|
+
* with. Field names match `NewThreadRequest` and the `default*` props of
|
|
2325
|
+
* `experimental_NewThreadComposer`, so one routed decision can feed the
|
|
2326
|
+
* composer, the embedded composer and `bb.sdk.threads.spawn` alike.
|
|
2327
|
+
*/
|
|
2328
|
+
interface ExperimentalComposerSelection {
|
|
2329
|
+
/** New-thread composers only. BB's personal-project id means "Don't work in a project". */
|
|
2330
|
+
projectId?: string;
|
|
2331
|
+
/**
|
|
2332
|
+
* New-thread composers only. `{ type: "project-default" }` and a `host`
|
|
2333
|
+
* environment without a `hostId` seed nothing and are ignored. Provider
|
|
2334
|
+
* `inputs` are not applied; the provider's own inputs control keeps its
|
|
2335
|
+
* value, and the result reports what the composer would submit.
|
|
2336
|
+
*/
|
|
2337
|
+
environment?: CreateThreadEnvironmentArgs;
|
|
2338
|
+
/** A provider the composer does not list is ignored, and `model` and `reasoningLevel` with it. */
|
|
2339
|
+
providerId?: string;
|
|
2340
|
+
/** Applied only when the composer ends up on the requested provider (or none was requested). */
|
|
2341
|
+
model?: string;
|
|
2342
|
+
/** Applied only when the composer ends up on the requested provider (or none was requested). */
|
|
2343
|
+
reasoningLevel?: ReasoningLevel;
|
|
2344
|
+
/** Ignored by a provider with no service tiers. */
|
|
2345
|
+
serviceTier?: ServiceTier;
|
|
2346
|
+
permissionMode?: PermissionMode;
|
|
2253
2347
|
}
|
|
2254
2348
|
/**
|
|
2255
2349
|
* What `experimental_submit` does differently from pressing Enter.
|
|
@@ -2276,8 +2370,7 @@ interface ThreadChatMessageAction {
|
|
|
2276
2370
|
id: string;
|
|
2277
2371
|
/** Tooltip / menu label for the action. */
|
|
2278
2372
|
title: string;
|
|
2279
|
-
|
|
2280
|
-
icon?: string;
|
|
2373
|
+
icon?: BbIconName;
|
|
2281
2374
|
/**
|
|
2282
2375
|
* Message roles the action applies to. Omitted = both user and assistant
|
|
2283
2376
|
* messages.
|
|
@@ -2931,4 +3024,4 @@ declare const experimental_useProviders: () => PluginProvidersState;
|
|
|
2931
3024
|
declare const experimental_useCodeTheme: () => PluginCodeThemeState;
|
|
2932
3025
|
|
|
2933
3026
|
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 };
|
|
2934
|
-
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, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, 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, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext,
|
|
3027
|
+
export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppIcons, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSelection, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalIconProps, ExperimentalIconRegistration, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginBrowserPage, ExperimentalPluginBrowserPageEvaluateOptions, ExperimentalPluginBrowserPageWorld, ExperimentalPluginBrowserToolbarActionProps, ExperimentalPluginBrowserToolbarActionRegistration, 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, PluginAppCommands, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandContext, PluginCommandRegistration, PluginCommandShortcut, 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, ReadonlyJsonValue, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps, UseBranchesArgs, UseCheckoutStateArgs };
|
|
@@ -300,6 +300,21 @@ type CallerExecutionInputSource = z.infer<typeof callerExecutionInputSourceSchem
|
|
|
300
300
|
declare const PROVIDER_FORK_VALUES: readonly ["none", "tip", "checkpoint"];
|
|
301
301
|
type ProviderFork = (typeof PROVIDER_FORK_VALUES)[number];
|
|
302
302
|
|
|
303
|
+
declare const threadTurnInitiatorSchema: z.ZodEnum<{
|
|
304
|
+
agent: "agent";
|
|
305
|
+
system: "system";
|
|
306
|
+
user: "user";
|
|
307
|
+
}>;
|
|
308
|
+
type ThreadTurnInitiator = z.infer<typeof threadTurnInitiatorSchema>;
|
|
309
|
+
|
|
310
|
+
declare const threadCreateOriginSchema: z.ZodEnum<{
|
|
311
|
+
app: "app";
|
|
312
|
+
cli: "cli";
|
|
313
|
+
plugin: "plugin";
|
|
314
|
+
sdk: "sdk";
|
|
315
|
+
}>;
|
|
316
|
+
type ThreadCreateOrigin = z.infer<typeof threadCreateOriginSchema>;
|
|
317
|
+
|
|
303
318
|
declare const threadQueuedMessageSchema: z.ZodObject<{
|
|
304
319
|
content: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
305
320
|
mentions: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
@@ -394,6 +409,13 @@ declare const threadQueuedMessageSchema: z.ZodObject<{
|
|
|
394
409
|
user: "user";
|
|
395
410
|
}>;
|
|
396
411
|
model: z.ZodString;
|
|
412
|
+
origin: z.ZodNullable<z.ZodEnum<{
|
|
413
|
+
app: "app";
|
|
414
|
+
cli: "cli";
|
|
415
|
+
plugin: "plugin";
|
|
416
|
+
sdk: "sdk";
|
|
417
|
+
}>>;
|
|
418
|
+
originPluginId: z.ZodNullable<z.ZodString>;
|
|
397
419
|
payload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
398
420
|
kind: z.ZodLiteral<"inline">;
|
|
399
421
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -448,22 +470,7 @@ declare const threadQueuedMessageSchema: z.ZodObject<{
|
|
|
448
470
|
}, z.core.$strip>;
|
|
449
471
|
type ThreadQueuedMessage = z.infer<typeof threadQueuedMessageSchema>;
|
|
450
472
|
|
|
451
|
-
declare const threadCreateOriginSchema: z.ZodEnum<{
|
|
452
|
-
app: "app";
|
|
453
|
-
cli: "cli";
|
|
454
|
-
plugin: "plugin";
|
|
455
|
-
sdk: "sdk";
|
|
456
|
-
}>;
|
|
457
|
-
type ThreadCreateOrigin = z.infer<typeof threadCreateOriginSchema>;
|
|
458
473
|
type ExecutionInputFieldSource = CallerExecutionInputSource;
|
|
459
|
-
declare const startedOnBehalfOfSchema: z.ZodObject<{
|
|
460
|
-
initiator: z.ZodEnum<{
|
|
461
|
-
agent: "agent";
|
|
462
|
-
system: "system";
|
|
463
|
-
}>;
|
|
464
|
-
senderThreadId: z.ZodString;
|
|
465
|
-
}, z.core.$strip>;
|
|
466
|
-
type StartedOnBehalfOf = z.infer<typeof startedOnBehalfOfSchema>;
|
|
467
474
|
declare const threadResponseSchema: z.ZodObject<{
|
|
468
475
|
activeBackgroundAgentCount: z.ZodNumber;
|
|
469
476
|
archivedAt: z.ZodNullable<z.ZodNumber>;
|
|
@@ -1016,8 +1023,26 @@ interface MessageDispatchHookContext {
|
|
|
1016
1023
|
/** Whether this attempt starts a turn or joins a running one. */
|
|
1017
1024
|
attempt: PluginDispatchAttemptKind;
|
|
1018
1025
|
/**
|
|
1019
|
-
* The
|
|
1020
|
-
*
|
|
1026
|
+
* The author category shared by this dispatch's messages: `user`, `agent`,
|
|
1027
|
+
* or `system`. `mixed` means the queued messages have different categories.
|
|
1028
|
+
* Different agents still share the `agent` category; read `queuedMessages`
|
|
1029
|
+
* for each message's author. `mixed` is a hook summary, not a turn initiator.
|
|
1030
|
+
*/
|
|
1031
|
+
initiator: ThreadTurnInitiator | "mixed";
|
|
1032
|
+
/**
|
|
1033
|
+
* The thread that sent every message in this dispatch: a thread id, null
|
|
1034
|
+
* when none of them has a sender, or the literal `"mixed"` when the rows
|
|
1035
|
+
* disagree. A thread-start names its requesting thread; a message a human
|
|
1036
|
+
* typed and a core-driven retry have no sender. Null therefore still means
|
|
1037
|
+
* "nobody sent this" rather than "bb could not tell", so a handler may key
|
|
1038
|
+
* a human-versus-agent policy on it; `queuedMessages` names each row's own
|
|
1039
|
+
* sender. Thread ids are prefixed, so no id collides with `"mixed"`.
|
|
1040
|
+
*/
|
|
1041
|
+
senderThreadId: string | "mixed" | null;
|
|
1042
|
+
/**
|
|
1043
|
+
* All queued rows this attempt is re-trying, in dispatch order. Empty for
|
|
1044
|
+
* an inline attempt. Each row retains its own content, author, and origin; `input`
|
|
1045
|
+
* contains their combined input, and the hook decides for the whole group.
|
|
1021
1046
|
*
|
|
1022
1047
|
* This is how a hook tells a fresh send from a re-attempt of something it
|
|
1023
1048
|
* already decided about — the replacement for the old
|
|
@@ -1025,7 +1050,7 @@ interface MessageDispatchHookContext {
|
|
|
1025
1050
|
* should treat the two identically; a hook that logs should not
|
|
1026
1051
|
* double-count.
|
|
1027
1052
|
*/
|
|
1028
|
-
|
|
1053
|
+
queuedMessages: ThreadQueuedMessage[];
|
|
1029
1054
|
/**
|
|
1030
1055
|
* Opaque JSON supplied by a plugin through the composer's
|
|
1031
1056
|
* `experimental_submit`, paired with that plugin's id. Null for ordinary
|
|
@@ -1036,10 +1061,15 @@ interface MessageDispatchHookContext {
|
|
|
1036
1061
|
pluginId: string;
|
|
1037
1062
|
data: JsonValue;
|
|
1038
1063
|
} | null;
|
|
1039
|
-
/**
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1064
|
+
/**
|
|
1065
|
+
* How the dispatch was requested; null for internal/core-driven sends, which
|
|
1066
|
+
* includes every follow-up, steer and retry. Persisted with the queued row,
|
|
1067
|
+
* so a drained re-attempt reads what its first attempt read. For a grouped
|
|
1068
|
+
* dispatch, each field is its shared value or `"mixed"` when rows differ,
|
|
1069
|
+
* including a value versus null. Each queued row exposes its own origin.
|
|
1070
|
+
*/
|
|
1071
|
+
origin: ThreadCreateOrigin | "mixed" | null;
|
|
1072
|
+
originPluginId: string | "mixed" | null;
|
|
1043
1073
|
parentThreadId: string | null;
|
|
1044
1074
|
}
|
|
1045
1075
|
/**
|
|
@@ -1077,6 +1107,23 @@ interface PluginCliContext {
|
|
|
1077
1107
|
/** Aborted when the invoking CLI HTTP request disconnects. */
|
|
1078
1108
|
signal?: AbortSignal;
|
|
1079
1109
|
}
|
|
1110
|
+
/**
|
|
1111
|
+
* What a submitted form leaves in the thread timeline, chosen by the plugin.
|
|
1112
|
+
* bb never stores the form's payload or the submitted value; it stores only
|
|
1113
|
+
* this description, so a plugin decides what the transcript keeps.
|
|
1114
|
+
*/
|
|
1115
|
+
interface PluginInteractionDescription {
|
|
1116
|
+
/** Row title once submitted; defaults to the presentation's completed label. */
|
|
1117
|
+
title?: string;
|
|
1118
|
+
/** Short Markdown for the expanded row. */
|
|
1119
|
+
detail?: string;
|
|
1120
|
+
/**
|
|
1121
|
+
* Persisted with the row and handed to this plugin's
|
|
1122
|
+
* `experimental_timelineRenderer` registered for `"<pluginId>/<rendererId>"`.
|
|
1123
|
+
* Omit anything the transcript must not keep.
|
|
1124
|
+
*/
|
|
1125
|
+
payload?: JsonValue;
|
|
1126
|
+
}
|
|
1080
1127
|
interface PluginInteractionRequest {
|
|
1081
1128
|
threadId: string;
|
|
1082
1129
|
rendererId: string;
|
|
@@ -1084,6 +1131,19 @@ interface PluginInteractionRequest {
|
|
|
1084
1131
|
payload: JsonValue;
|
|
1085
1132
|
/** Defaults to ten minutes; capped at one hour. */
|
|
1086
1133
|
timeoutMs?: number;
|
|
1134
|
+
/**
|
|
1135
|
+
* How the form reads as a timeline row while it waits and once it settles,
|
|
1136
|
+
* in the same shape as a native tool's presentation. bb fills what is left
|
|
1137
|
+
* out: "Waiting for <title>" / "Submitted <title>" and the plugin's glyph.
|
|
1138
|
+
*/
|
|
1139
|
+
presentation?: PluginRowPresentation;
|
|
1140
|
+
/**
|
|
1141
|
+
* Called once with the submitted value, before the waiting `requestInput`
|
|
1142
|
+
* promise resolves; never for a cancellation, which bb titles itself. Its
|
|
1143
|
+
* return is persisted on the row. A throw or a slow return leaves the row
|
|
1144
|
+
* with its completed label and nothing more.
|
|
1145
|
+
*/
|
|
1146
|
+
describeSubmission?(value: JsonValue): PluginInteractionDescription | Promise<PluginInteractionDescription>;
|
|
1087
1147
|
}
|
|
1088
1148
|
interface PluginCliResult {
|
|
1089
1149
|
exitCode: number;
|
|
@@ -1114,6 +1174,15 @@ interface PluginCliRegistration {
|
|
|
1114
1174
|
/** Subcommand metadata rendered in help and the plugin-commands skill
|
|
1115
1175
|
* without executing plugin code. Parsing argv is plugin-owned. */
|
|
1116
1176
|
commands?: PluginCliCommandInfo[];
|
|
1177
|
+
/**
|
|
1178
|
+
* Set when `run` answers `--help` / `-h` itself, at every level, without
|
|
1179
|
+
* executing a command. The `bb` CLI then forwards help requests to the
|
|
1180
|
+
* plugin instead of printing the one-line `usage` from `commands`.
|
|
1181
|
+
* `defineCli` sets it. Leave it unset for a hand-written `run`:
|
|
1182
|
+
* the host cannot know that such a parser will not act on the other
|
|
1183
|
+
* arguments.
|
|
1184
|
+
*/
|
|
1185
|
+
rendersHelp?: boolean;
|
|
1117
1186
|
run(argv: string[], ctx: PluginCliContext): PluginCliResult | Promise<PluginCliResult>;
|
|
1118
1187
|
}
|
|
1119
1188
|
/** Per-turn context handed to bb.agents context providers (design §4.4). */
|
|
@@ -1134,30 +1203,37 @@ type PluginAgentToolResult = string | {
|
|
|
1134
1203
|
interface PluginAgentToolContext {
|
|
1135
1204
|
threadId: string;
|
|
1136
1205
|
projectId: string;
|
|
1137
|
-
/**
|
|
1138
|
-
*
|
|
1206
|
+
/**
|
|
1207
|
+
* Aborts when the tool-call request is cancelled, the thread is stopped or
|
|
1208
|
+
* deleted, or this plugin is disposed. Opening a form with `bb.ui.requestInput`
|
|
1209
|
+
* detaches the call from its request: the agent receives a waiting notice,
|
|
1210
|
+
* and request cancellation no longer aborts this signal. The tool's eventual
|
|
1211
|
+
* result is delivered as a system message (success steers a running turn or
|
|
1212
|
+
* starts a new one; an `isError` result only steers). Thread stop/delete and
|
|
1213
|
+
* plugin disposal still abort the signal after detachment.
|
|
1214
|
+
*/
|
|
1139
1215
|
signal: AbortSignal;
|
|
1140
1216
|
}
|
|
1141
1217
|
/**
|
|
1142
|
-
* The
|
|
1218
|
+
* The title of a plugin-owned timeline row while it is pending and once it
|
|
1143
1219
|
* settled. Each label is capped at 80 characters and rendered as plain text.
|
|
1144
1220
|
*/
|
|
1145
|
-
interface
|
|
1146
|
-
/** Label shown while the
|
|
1221
|
+
interface PluginRowLabels {
|
|
1222
|
+
/** Label shown while the row is pending. */
|
|
1147
1223
|
pending: string;
|
|
1148
|
-
/** Label shown after the
|
|
1224
|
+
/** Label shown after the row completes successfully. */
|
|
1149
1225
|
completed: string;
|
|
1150
1226
|
}
|
|
1151
1227
|
/**
|
|
1152
|
-
* How
|
|
1153
|
-
*
|
|
1154
|
-
*
|
|
1155
|
-
* glyph, then `Toolbox`) and hands one complete
|
|
1156
|
-
*
|
|
1228
|
+
* How something a plugin owns reads as a timeline row (grammar v3): a native
|
|
1229
|
+
* tool's calls, or the row a `bb.ui.requestInput` form leaves behind. Every
|
|
1230
|
+
* field is optional: the server fills what the plugin leaves out (a generic
|
|
1231
|
+
* label; the plugin's branding glyph, then `Toolbox`) and hands one complete
|
|
1232
|
+
* presentation to whatever renders the row.
|
|
1157
1233
|
*/
|
|
1158
|
-
interface
|
|
1159
|
-
/** Row title while the
|
|
1160
|
-
label?:
|
|
1234
|
+
interface PluginRowPresentation {
|
|
1235
|
+
/** Row title while the row is pending and once it settled. */
|
|
1236
|
+
label?: PluginRowLabels;
|
|
1161
1237
|
/**
|
|
1162
1238
|
* A named host glyph (`{ glyph: "Workflow" }`), or one of this plugin's
|
|
1163
1239
|
* own declared icons by its namespaced glyph (`{ glyph: "<pluginId>/<name>" }`,
|
|
@@ -1549,6 +1625,12 @@ interface PluginMentionItem {
|
|
|
1549
1625
|
id: string;
|
|
1550
1626
|
title: string;
|
|
1551
1627
|
subtitle?: string;
|
|
1628
|
+
/**
|
|
1629
|
+
* BB icon name: a built-in name, or a name the plugin's app bundle
|
|
1630
|
+
* registered with `app.experimental_icons.register()`. The row prefers the
|
|
1631
|
+
* plugin's own branding icon when it ships one; unknown names fall back to
|
|
1632
|
+
* the generic plugin icon.
|
|
1633
|
+
*/
|
|
1552
1634
|
icon?: string;
|
|
1553
1635
|
}
|
|
1554
1636
|
/** Agent-only image context resolved with a plugin mention. */
|
|
@@ -1765,7 +1847,7 @@ declare function publishRpcMethod(method: string, contract: PluginRpcMethodContr
|
|
|
1765
1847
|
* in a plugin unit test registers in bb, and one bb rejects is rejected
|
|
1766
1848
|
* with the same message.
|
|
1767
1849
|
*/
|
|
1768
|
-
declare function
|
|
1850
|
+
declare function parsePluginRowPresentation(subject: string, value: unknown): PluginRowPresentation | null;
|
|
1769
1851
|
/** Compact issue summary from a (possibly foreign-instance) zod error. */
|
|
1770
1852
|
declare function summarizeStandardIssues(issues: readonly StandardSchemaV1Issue[]): string;
|
|
1771
1853
|
declare function enforcePluginCliOutputLimit(result: Omit<PluginCliExecutionResult, "error">, jsonOutput: boolean): PluginCliExecutionResult;
|
|
@@ -1919,6 +2001,7 @@ declare function normalizeCliRegistration(registration: PluginCliRegistration, a
|
|
|
1919
2001
|
name: string;
|
|
1920
2002
|
summary: string;
|
|
1921
2003
|
commands: PluginCliCommandInfo[];
|
|
2004
|
+
rendersHelp: boolean;
|
|
1922
2005
|
run: PluginCliRegistration["run"];
|
|
1923
2006
|
};
|
|
1924
2007
|
type AgentToolExecute = (params: unknown, ctx: PluginAgentToolContext) => PluginAgentToolResult | Promise<PluginAgentToolResult>;
|
|
@@ -1936,14 +2019,14 @@ declare function normalizeAgentToolRegistration(args: {
|
|
|
1936
2019
|
name: string;
|
|
1937
2020
|
description: string;
|
|
1938
2021
|
instructions?: string;
|
|
1939
|
-
presentation?:
|
|
2022
|
+
presentation?: PluginRowPresentation;
|
|
1940
2023
|
parameters: unknown;
|
|
1941
2024
|
execute(params: never, ctx: PluginAgentToolContext): PluginAgentToolResult | Promise<PluginAgentToolResult>;
|
|
1942
2025
|
};
|
|
1943
2026
|
}): {
|
|
1944
2027
|
name: string;
|
|
1945
2028
|
description: string;
|
|
1946
|
-
presentation:
|
|
2029
|
+
presentation: PluginRowPresentation | null;
|
|
1947
2030
|
instructions: string | null;
|
|
1948
2031
|
inputSchema: unknown;
|
|
1949
2032
|
parse: AgentToolParse;
|
|
@@ -1958,13 +2041,16 @@ declare function normalizeMentionProviderRegistration(provider: PluginMentionPro
|
|
|
1958
2041
|
search: PluginMentionProviderRegistration["search"];
|
|
1959
2042
|
resolve: PluginMentionProviderRegistration["resolve"];
|
|
1960
2043
|
};
|
|
1961
|
-
|
|
2044
|
+
interface NormalizedPluginInteractionRequest {
|
|
1962
2045
|
threadId: string;
|
|
1963
2046
|
rendererId: string;
|
|
1964
2047
|
title: string;
|
|
1965
2048
|
payload: JsonValue;
|
|
1966
2049
|
timeoutMs: number;
|
|
1967
|
-
|
|
2050
|
+
presentation: PluginRowPresentation | null;
|
|
2051
|
+
describeSubmission: NonNullable<PluginInteractionRequest["describeSubmission"]> | null;
|
|
2052
|
+
}
|
|
2053
|
+
declare function normalizeInteractionRequest(request: PluginInteractionRequest): NormalizedPluginInteractionRequest;
|
|
1968
2054
|
declare function validateProviderEnvContribution(label: "provider environment contribution" | "provider environment health contribution", providerId: string, resolve: unknown, registered: ReadonlyMap<string, unknown>): void;
|
|
1969
2055
|
declare function normalizePluginAgentConfiguration(args: {
|
|
1970
2056
|
knownSkillIds: ReadonlySet<string>;
|
|
@@ -1980,5 +2066,5 @@ declare function normalizePluginAgentConfiguration(args: {
|
|
|
1980
2066
|
declare function validateRpcValue(schema: StandardSchemaV1, value: unknown, phase: "input" | "output", fail: (error: PluginRpcError) => never): Promise<unknown>;
|
|
1981
2067
|
declare function normalizeRpcJsonResult(value: unknown, fail: (error: PluginRpcError) => never): JsonValue;
|
|
1982
2068
|
|
|
1983
|
-
export { 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, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, 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, SERVER_DIRECT_AI_SERVICE_IDS, SETTING_KEY_PATTERN, adoptHttpRouteResponse, aiServiceAlreadyRegisteredMessage, assertAiServiceRegistrable, coerceStoredPluginSettingValue, deriveValidatedProviderOptions, enforcePluginCliOutputLimit, environmentCompositionSchema, isPluginMentionTrigger, isStandardSchema, normalizeAgentToolRegistration, normalizeCliRegistration, normalizeHttpRouteRegistration, normalizeInteractionRequest, normalizeMentionProviderRegistration, normalizePluginAgentConfiguration, normalizeRealtimePayload, normalizeRpcJsonResult, normalizeRpcRegistration, normalizeWebSocketRouteRegistration,
|
|
1984
|
-
export type { AiServiceHostBinding, NormalizedPluginEnvironmentComposition, NormalizedPluginEnvironmentProvider, NormalizedPluginEnvironmentProviderRequirements, NormalizedPluginMachineProvider, NormalizedPluginProviderDeclaration };
|
|
2069
|
+
export { 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, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, 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, SERVER_DIRECT_AI_SERVICE_IDS, SETTING_KEY_PATTERN, adoptHttpRouteResponse, aiServiceAlreadyRegisteredMessage, assertAiServiceRegistrable, coerceStoredPluginSettingValue, deriveValidatedProviderOptions, enforcePluginCliOutputLimit, environmentCompositionSchema, isPluginMentionTrigger, isStandardSchema, normalizeAgentToolRegistration, normalizeCliRegistration, normalizeHttpRouteRegistration, normalizeInteractionRequest, normalizeMentionProviderRegistration, normalizePluginAgentConfiguration, normalizeRealtimePayload, normalizeRpcJsonResult, normalizeRpcRegistration, normalizeWebSocketRouteRegistration, parsePluginRowPresentation, pluginCliCollisionWarning, pluginHookAlreadyRegisteredMessage, providerAlreadyRegisteredMessage, providerIconRefusalMessage, providerWithoutBridgeMessage, publishRpcMethod, readRpcPublicationOptions, registerSettingDescriptors, runPluginStorageMigrations, storePluginHook, summarizeStandardIssues, undeclaredIconProblem, validateBackgroundServiceRegistration, validatePluginAiServiceDeclaration, validatePluginEnvironmentProviderDeclaration, validatePluginMachineProviderDeclaration, validatePluginProviderDeclaration, validatePluginProviderEnvEntries, validateProviderEnvContribution, validateRpcValue, validateScheduleRegistration, validateServerAccessProviderDeclaration, validateSettingsUpdate };
|
|
2070
|
+
export type { AiServiceHostBinding, NormalizedPluginEnvironmentComposition, NormalizedPluginEnvironmentProvider, NormalizedPluginEnvironmentProviderRequirements, NormalizedPluginInteractionRequest, NormalizedPluginMachineProvider, NormalizedPluginProviderDeclaration };
|
|
@@ -3589,6 +3589,7 @@ declare const threadEventSchema: z.ZodPipe<z.ZodUnknown, z.ZodUnion<readonly [z.
|
|
|
3589
3589
|
"child-outcome-batch": "child-outcome-batch";
|
|
3590
3590
|
"ownership-assigned": "ownership-assigned";
|
|
3591
3591
|
"ownership-removed": "ownership-removed";
|
|
3592
|
+
"tool-result-delivered": "tool-result-delivered";
|
|
3592
3593
|
unlabeled: "unlabeled";
|
|
3593
3594
|
}>>;
|
|
3594
3595
|
systemMessageSubject: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -3598,6 +3599,10 @@ declare const threadEventSchema: z.ZodPipe<z.ZodUnknown, z.ZodUnion<readonly [z.
|
|
|
3598
3599
|
}, z.core.$strip>, z.ZodObject<{
|
|
3599
3600
|
count: z.ZodNumber;
|
|
3600
3601
|
kind: z.ZodLiteral<"thread-batch">;
|
|
3602
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3603
|
+
kind: z.ZodLiteral<"tool-call">;
|
|
3604
|
+
suppress: z.ZodBoolean;
|
|
3605
|
+
toolName: z.ZodString;
|
|
3601
3606
|
}, z.core.$strip>], "kind">>>;
|
|
3602
3607
|
target: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
3603
3608
|
kind: z.ZodLiteral<"thread-start">;
|
|
@@ -3851,9 +3856,39 @@ declare const threadEventSchema: z.ZodPipe<z.ZodUnknown, z.ZodUnion<readonly [z.
|
|
|
3851
3856
|
}, z.core.$strip>;
|
|
3852
3857
|
payload: z.ZodObject<{
|
|
3853
3858
|
kind: z.ZodLiteral<"plugin">;
|
|
3859
|
+
presentation: z.ZodOptional<z.ZodObject<{
|
|
3860
|
+
badge: z.ZodOptional<z.ZodObject<{
|
|
3861
|
+
glyph: z.ZodString;
|
|
3862
|
+
hint: z.ZodString;
|
|
3863
|
+
label: z.ZodString;
|
|
3864
|
+
tone: z.ZodEnum<{
|
|
3865
|
+
destructive: "destructive";
|
|
3866
|
+
neutral: "neutral";
|
|
3867
|
+
}>;
|
|
3868
|
+
}, z.core.$strip>>;
|
|
3869
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
3870
|
+
icon: z.ZodObject<{
|
|
3871
|
+
glyph: z.ZodString;
|
|
3872
|
+
}, z.core.$strip>;
|
|
3873
|
+
label: z.ZodObject<{
|
|
3874
|
+
completed: z.ZodString;
|
|
3875
|
+
pending: z.ZodString;
|
|
3876
|
+
}, z.core.$strip>;
|
|
3877
|
+
suppress: z.ZodOptional<z.ZodBoolean>;
|
|
3878
|
+
tint: z.ZodOptional<z.ZodObject<{
|
|
3879
|
+
dark: z.ZodString;
|
|
3880
|
+
light: z.ZodString;
|
|
3881
|
+
}, z.core.$strip>>;
|
|
3882
|
+
title: z.ZodOptional<z.ZodString>;
|
|
3883
|
+
}, z.core.$strip>>;
|
|
3854
3884
|
title: z.ZodString;
|
|
3855
3885
|
}, z.core.$strip>;
|
|
3856
3886
|
resolution: z.ZodNullable<z.ZodObject<{
|
|
3887
|
+
description: z.ZodOptional<z.ZodObject<{
|
|
3888
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
3889
|
+
payload: z.ZodOptional<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
3890
|
+
title: z.ZodOptional<z.ZodString>;
|
|
3891
|
+
}, z.core.$strip>>;
|
|
3857
3892
|
kind: z.ZodLiteral<"plugin_submitted">;
|
|
3858
3893
|
}, z.core.$strip>>;
|
|
3859
3894
|
status: z.ZodEnum<{
|