@get-bb/plugin-sdk 0.5.31 → 0.6.5
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 +8 -4
- package/bundled-types/bb-plugin-sdk-app.d.ts +261 -102
- package/bundled-types/bb-plugin-sdk-internal-composer-handle.d.ts +457 -0
- package/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts +21 -4
- package/bundled-types/bb-plugin-sdk-testing-app.d.ts +32 -10
- package/bundled-types/bb-plugin-sdk-testing.d.ts +8 -3
- package/bundled-types/bb-plugin-sdk.d.ts +295 -109
- package/dist/app.js +2 -0
- package/dist/internal/composer-customization-validation.js +37 -27
- package/dist/internal/composer-handle.js +531 -0
- package/dist/internal/plugin-app-collector.js +37 -27
- package/dist/testing/app.js +780 -132
- package/dist/testing/index.js +6 -2
- package/package.json +7 -1
|
@@ -285,6 +285,11 @@ declare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{
|
|
|
285
285
|
"window.new": "window.new";
|
|
286
286
|
"workspace.openPreferred": "workspace.openPreferred";
|
|
287
287
|
}>, z$1.ZodTemplateLiteral<`plugin:${string}/${string}`>]>;
|
|
288
|
+
platform: z$1.ZodOptional<z$1.ZodEnum<{
|
|
289
|
+
linux: "linux";
|
|
290
|
+
mac: "mac";
|
|
291
|
+
windows: "windows";
|
|
292
|
+
}>>;
|
|
288
293
|
shortcut: z$1.ZodNullable<z$1.ZodObject<{
|
|
289
294
|
alt: z$1.ZodBoolean;
|
|
290
295
|
control: z$1.ZodBoolean;
|
|
@@ -528,6 +533,7 @@ declare const environmentSchema: z$1.ZodObject<{
|
|
|
528
533
|
type Environment = z$1.infer<typeof environmentSchema>;
|
|
529
534
|
|
|
530
535
|
declare const experimentsSchema: z$1.ZodRecord<z$1.ZodEnum<{
|
|
536
|
+
androidTesting: "androidTesting";
|
|
531
537
|
changelogPreview: "changelogPreview";
|
|
532
538
|
legacyJitiPluginLoader: "legacyJitiPluginLoader";
|
|
533
539
|
mobileApp: "mobileApp";
|
|
@@ -10132,6 +10138,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10132
10138
|
all: z$1.ZodArray<z$1.ZodEnum<{
|
|
10133
10139
|
browserFocus: "browserFocus";
|
|
10134
10140
|
editableFocus: "editableFocus";
|
|
10141
|
+
linuxPlatform: "linuxPlatform";
|
|
10135
10142
|
macPlatform: "macPlatform";
|
|
10136
10143
|
mainSurface: "mainSurface";
|
|
10137
10144
|
modalOpen: "modalOpen";
|
|
@@ -10141,10 +10148,12 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10141
10148
|
splitActive: "splitActive";
|
|
10142
10149
|
terminalFocus: "terminalFocus";
|
|
10143
10150
|
webSurface: "webSurface";
|
|
10151
|
+
windowsPlatform: "windowsPlatform";
|
|
10144
10152
|
}>>;
|
|
10145
10153
|
none: z$1.ZodArray<z$1.ZodEnum<{
|
|
10146
10154
|
browserFocus: "browserFocus";
|
|
10147
10155
|
editableFocus: "editableFocus";
|
|
10156
|
+
linuxPlatform: "linuxPlatform";
|
|
10148
10157
|
macPlatform: "macPlatform";
|
|
10149
10158
|
mainSurface: "mainSurface";
|
|
10150
10159
|
modalOpen: "modalOpen";
|
|
@@ -10154,10 +10163,12 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10154
10163
|
splitActive: "splitActive";
|
|
10155
10164
|
terminalFocus: "terminalFocus";
|
|
10156
10165
|
webSurface: "webSurface";
|
|
10166
|
+
windowsPlatform: "windowsPlatform";
|
|
10157
10167
|
}>>;
|
|
10158
10168
|
}, z$1.core.$strict>;
|
|
10159
10169
|
}, z$1.core.$strict>>;
|
|
10160
10170
|
experiments: z$1.ZodRecord<z$1.ZodEnum<{
|
|
10171
|
+
androidTesting: "androidTesting";
|
|
10161
10172
|
changelogPreview: "changelogPreview";
|
|
10162
10173
|
legacyJitiPluginLoader: "legacyJitiPluginLoader";
|
|
10163
10174
|
mobileApp: "mobileApp";
|
|
@@ -10266,6 +10277,11 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10266
10277
|
"window.new": "window.new";
|
|
10267
10278
|
"workspace.openPreferred": "workspace.openPreferred";
|
|
10268
10279
|
}>, z$1.ZodTemplateLiteral<`plugin:${string}/${string}`>]>;
|
|
10280
|
+
platform: z$1.ZodOptional<z$1.ZodEnum<{
|
|
10281
|
+
linux: "linux";
|
|
10282
|
+
mac: "mac";
|
|
10283
|
+
windows: "windows";
|
|
10284
|
+
}>>;
|
|
10269
10285
|
shortcut: z$1.ZodNullable<z$1.ZodObject<{
|
|
10270
10286
|
alt: z$1.ZodBoolean;
|
|
10271
10287
|
control: z$1.ZodBoolean;
|
|
@@ -10366,6 +10382,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10366
10382
|
all: z$1.ZodArray<z$1.ZodEnum<{
|
|
10367
10383
|
browserFocus: "browserFocus";
|
|
10368
10384
|
editableFocus: "editableFocus";
|
|
10385
|
+
linuxPlatform: "linuxPlatform";
|
|
10369
10386
|
macPlatform: "macPlatform";
|
|
10370
10387
|
mainSurface: "mainSurface";
|
|
10371
10388
|
modalOpen: "modalOpen";
|
|
@@ -10375,10 +10392,12 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10375
10392
|
splitActive: "splitActive";
|
|
10376
10393
|
terminalFocus: "terminalFocus";
|
|
10377
10394
|
webSurface: "webSurface";
|
|
10395
|
+
windowsPlatform: "windowsPlatform";
|
|
10378
10396
|
}>>;
|
|
10379
10397
|
none: z$1.ZodArray<z$1.ZodEnum<{
|
|
10380
10398
|
browserFocus: "browserFocus";
|
|
10381
10399
|
editableFocus: "editableFocus";
|
|
10400
|
+
linuxPlatform: "linuxPlatform";
|
|
10382
10401
|
macPlatform: "macPlatform";
|
|
10383
10402
|
mainSurface: "mainSurface";
|
|
10384
10403
|
modalOpen: "modalOpen";
|
|
@@ -10388,6 +10407,7 @@ declare const systemConfigResponseSchema: z$1.ZodObject<{
|
|
|
10388
10407
|
splitActive: "splitActive";
|
|
10389
10408
|
terminalFocus: "terminalFocus";
|
|
10390
10409
|
webSurface: "webSurface";
|
|
10410
|
+
windowsPlatform: "windowsPlatform";
|
|
10391
10411
|
}>>;
|
|
10392
10412
|
}, z$1.core.$strict>;
|
|
10393
10413
|
}, z$1.core.$strict>>;
|
|
@@ -10655,6 +10675,27 @@ declare const systemMachineProviderSchema: z$1.ZodObject<{
|
|
|
10655
10675
|
supportsSuspend: z$1.ZodBoolean;
|
|
10656
10676
|
}, z$1.core.$strip>;
|
|
10657
10677
|
type SystemMachineProvider = z$1.infer<typeof systemMachineProviderSchema>;
|
|
10678
|
+
declare const androidAppArtifactSchema: z$1.ZodObject<{
|
|
10679
|
+
sha256: z$1.ZodString;
|
|
10680
|
+
size: z$1.ZodNumber;
|
|
10681
|
+
version: z$1.ZodString;
|
|
10682
|
+
versionCode: z$1.ZodNumber;
|
|
10683
|
+
}, z$1.core.$strip>;
|
|
10684
|
+
type AndroidAppArtifact = z$1.infer<typeof androidAppArtifactSchema>;
|
|
10685
|
+
type SystemAndroidAppResponse = AndroidAppArtifact | null;
|
|
10686
|
+
declare const androidAppPrepareRequestSchema: z$1.ZodObject<{
|
|
10687
|
+
source: z$1.ZodEnum<{
|
|
10688
|
+
github: "github";
|
|
10689
|
+
local: "local";
|
|
10690
|
+
}>;
|
|
10691
|
+
}, z$1.core.$strip>;
|
|
10692
|
+
type AndroidAppPrepareRequest = z$1.infer<typeof androidAppPrepareRequestSchema>;
|
|
10693
|
+
interface AndroidAppPreparation {
|
|
10694
|
+
status: "failed" | "idle" | "preparing" | "ready";
|
|
10695
|
+
source: "github" | "local" | null;
|
|
10696
|
+
message: string;
|
|
10697
|
+
artifact: AndroidAppArtifact | null;
|
|
10698
|
+
}
|
|
10658
10699
|
|
|
10659
10700
|
interface UiPreferencesResponse {
|
|
10660
10701
|
preferences: UiPreferenceEntries;
|
|
@@ -12136,6 +12177,7 @@ declare const createThreadRequestSchema: z$1.ZodObject<{
|
|
|
12136
12177
|
auto: "auto";
|
|
12137
12178
|
full: "full";
|
|
12138
12179
|
}>, z$1.ZodLiteral<"workspace-write">]>, z$1.ZodTransform<"accept-edits" | "auto" | "full", "accept-edits" | "auto" | "full" | "workspace-write">>>;
|
|
12180
|
+
pinned: z$1.ZodOptional<z$1.ZodBoolean>;
|
|
12139
12181
|
pluginMetadata: z$1.ZodOptional<z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;
|
|
12140
12182
|
pluginSubmission: z$1.ZodOptional<z$1.ZodObject<{
|
|
12141
12183
|
data: z$1.ZodType<JsonValue, unknown, z$1.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
@@ -15460,6 +15502,9 @@ interface EnvironmentListProvidersArgs {
|
|
|
15460
15502
|
}
|
|
15461
15503
|
type EnvironmentListProvidersResult = SystemEnvironmentProvider[];
|
|
15462
15504
|
interface EnvironmentsArea {
|
|
15505
|
+
experimental_cleanup(args: EnvironmentActionArgs): Promise<{
|
|
15506
|
+
ok: true;
|
|
15507
|
+
}>;
|
|
15463
15508
|
archiveThreads(args: EnvironmentActionArgs): Promise<EnvironmentArchiveThreadsResult>;
|
|
15464
15509
|
commit(args: EnvironmentCommitArgs): Promise<EnvironmentCommitResult>;
|
|
15465
15510
|
diff(args: EnvironmentDiffArgs): Promise<EnvironmentDiffResult>;
|
|
@@ -15609,6 +15654,7 @@ type HostDeleteResult = {
|
|
|
15609
15654
|
type HostDirectoryResult = HostDirectoryListing;
|
|
15610
15655
|
type HostGetResult = Host & {
|
|
15611
15656
|
connectMachineId: string | null;
|
|
15657
|
+
threadStorageRootPath: string | null;
|
|
15612
15658
|
};
|
|
15613
15659
|
type HostEnrollmentCommandResult = HostEnrollmentCommandResponse;
|
|
15614
15660
|
type HostReconnectResult = HostReconnectResponse;
|
|
@@ -16279,6 +16325,9 @@ interface SystemArea {
|
|
|
16279
16325
|
testAiService(args: SystemTestAiServiceArgs): Promise<SystemTestAiServiceResult>;
|
|
16280
16326
|
transcribeVoice(args: SystemVoiceTranscriptionArgs): Promise<SystemVoiceTranscriptionResult>;
|
|
16281
16327
|
uiPreferences: SystemUiPreferencesArea;
|
|
16328
|
+
androidAppPreparation(): Promise<AndroidAppPreparation>;
|
|
16329
|
+
prepareAndroidApp(input: AndroidAppPrepareRequest): Promise<AndroidAppPreparation>;
|
|
16330
|
+
androidApp(): Promise<SystemAndroidAppResponse>;
|
|
16282
16331
|
updateExperiments(args: Experiments): Promise<SystemUpdateExperimentsResult>;
|
|
16283
16332
|
updateGeneralSettings(args: AppSettingsUpdate): Promise<SystemUpdateGeneralSettingsResult>;
|
|
16284
16333
|
updateKeyboardSettings(args: AppKeybindingOverrides): Promise<SystemUpdateKeyboardSettingsResult>;
|
|
@@ -16988,7 +17037,7 @@ type ExperimentalSidebarNavigationAction = {
|
|
|
16988
17037
|
/**
|
|
16989
17038
|
* Semantic icon identity for one sidebar navigation item. Render it with
|
|
16990
17039
|
* {@link PluginSdkApp.experimental_SidebarNavigationIcon} to match bb's
|
|
16991
|
-
* artwork, including plugin branding.
|
|
17040
|
+
* artwork, including panel icons with plugin branding as their fallback.
|
|
16992
17041
|
*/
|
|
16993
17042
|
type ExperimentalSidebarNavigationIcon = {
|
|
16994
17043
|
kind: "host";
|
|
@@ -17514,6 +17563,7 @@ type ExperimentalPluginFixedTabReference<Target extends JsonValue$1 = never> = {
|
|
|
17514
17563
|
/** A fixed tab declared by a plugin nav panel. */
|
|
17515
17564
|
type PluginFixedTabRegistration<Target extends JsonValue$1 = never> = ExperimentalPluginFixedTabReference<Target> & {
|
|
17516
17565
|
title: string;
|
|
17566
|
+
/** Resolved names take precedence over plugin branding; unknown names fall back to branding. */
|
|
17517
17567
|
icon: BbIconName;
|
|
17518
17568
|
component: ComponentType<PluginNavPanelProps>;
|
|
17519
17569
|
/** `flush` lets the component own padding and scrolling. */
|
|
@@ -17525,6 +17575,7 @@ interface PluginNavPanelRegistration {
|
|
|
17525
17575
|
/** Unique within the plugin; letters, digits, `-`, `_`. */
|
|
17526
17576
|
id: string;
|
|
17527
17577
|
title: string;
|
|
17578
|
+
/** Resolved names take precedence over plugin branding in navigation and the header; unknown names fall back to branding. */
|
|
17528
17579
|
icon: BbIconName;
|
|
17529
17580
|
/** URL segment under `/plugins/<pluginId>/`; letters, digits, `-`, `_`. */
|
|
17530
17581
|
path: string;
|
|
@@ -17608,8 +17659,8 @@ interface PluginThreadPanelActionRegistration {
|
|
|
17608
17659
|
/** Label of the action row in the panel's new-tab launcher. */
|
|
17609
17660
|
title: string;
|
|
17610
17661
|
/**
|
|
17611
|
-
*
|
|
17612
|
-
*
|
|
17662
|
+
* Resolved names take precedence over plugin branding in the launcher and
|
|
17663
|
+
* opened tabs. Omitted or unknown names fall back to plugin branding.
|
|
17613
17664
|
*/
|
|
17614
17665
|
icon?: BbIconName;
|
|
17615
17666
|
/** Rendered inside every panel tab this action opens. */
|
|
@@ -17648,7 +17699,7 @@ interface PluginNewThreadPanelActionRegistration {
|
|
|
17648
17699
|
id: string;
|
|
17649
17700
|
/** Label of the action row in the panel's new-tab launcher. */
|
|
17650
17701
|
title: string;
|
|
17651
|
-
/**
|
|
17702
|
+
/** Resolved names take precedence over plugin branding; omitted or unknown names fall back to branding. */
|
|
17652
17703
|
icon?: BbIconName;
|
|
17653
17704
|
/** Rendered inside every panel tab this action opens. */
|
|
17654
17705
|
component: ComponentType<PluginNewThreadPanelProps>;
|
|
@@ -17693,7 +17744,7 @@ interface PluginSidebarFooterActionRegistration {
|
|
|
17693
17744
|
id: string;
|
|
17694
17745
|
/** Tooltip and accessible label for the icon button. */
|
|
17695
17746
|
title: string;
|
|
17696
|
-
/**
|
|
17747
|
+
/** Resolved names take precedence over plugin branding; omitted or unknown names fall back to branding. */
|
|
17697
17748
|
icon: BbIconName;
|
|
17698
17749
|
/**
|
|
17699
17750
|
* Runs when the user activates the action (e.g. call `openSettings()`,
|
|
@@ -18078,7 +18129,7 @@ interface PluginSidebarThreadDraftState {
|
|
|
18078
18129
|
}
|
|
18079
18130
|
/**
|
|
18080
18131
|
* The status another plugin's app-wide script set on a thread's row through
|
|
18081
|
-
* `
|
|
18132
|
+
* the content-script context's `experimental_setThreadRowStatus` (see
|
|
18082
18133
|
* {@link PluginSdkApp.useSidebarThreadRowStatus}). bb's row draws it in
|
|
18083
18134
|
* place of the draft glyph while it is set; a replaced list should do the
|
|
18084
18135
|
* same so a status set by, say, the drafts or workflows plugin does not
|
|
@@ -18118,6 +18169,9 @@ interface PluginSidebarThreadActions {
|
|
|
18118
18169
|
* `sectionId` files the new thread under that section, and
|
|
18119
18170
|
* `environmentId` reuses that environment (the "New thread in
|
|
18120
18171
|
* environment" affordance), both exactly as bb's own list does.
|
|
18172
|
+
* `experimental_placement` explicitly selects the section and pin state,
|
|
18173
|
+
* overriding `sectionId`. Omitting placement starts unpinned, outside sections
|
|
18174
|
+
* unless `sectionId` is supplied; previous composer placement is cleared.
|
|
18121
18175
|
* `hostId` selects a machine for a new environment when it
|
|
18122
18176
|
* is known and supports an environment provider. `environmentId` wins when
|
|
18123
18177
|
* both are supplied.
|
|
@@ -18125,6 +18179,10 @@ interface PluginSidebarThreadActions {
|
|
|
18125
18179
|
openNewThread(options?: {
|
|
18126
18180
|
projectId?: string;
|
|
18127
18181
|
sectionId?: string;
|
|
18182
|
+
experimental_placement?: {
|
|
18183
|
+
sectionId: string | null;
|
|
18184
|
+
pinned: boolean;
|
|
18185
|
+
};
|
|
18128
18186
|
environmentId?: string;
|
|
18129
18187
|
hostId?: string;
|
|
18130
18188
|
focusPrompt?: boolean;
|
|
@@ -18413,12 +18471,19 @@ interface PluginMessageActionContext {
|
|
|
18413
18471
|
* is never thrown: the host logs it and reports it here.
|
|
18414
18472
|
*/
|
|
18415
18473
|
openPanel(options: PluginTargetedPanelActionOpenOptions): boolean;
|
|
18474
|
+
/**
|
|
18475
|
+
* The composer of the thread the message is in, or null when that thread's
|
|
18476
|
+
* composer is not available on this surface. The same handle
|
|
18477
|
+
* `useComposer()` returns there.
|
|
18478
|
+
*/
|
|
18479
|
+
composer: PluginComposerApi | null;
|
|
18416
18480
|
}
|
|
18417
18481
|
/**
|
|
18418
18482
|
* An action on chat messages: an icon button in the per-message action bar
|
|
18419
18483
|
* (user and assistant messages) and an entry in the assistant-message
|
|
18420
18484
|
* text-selection menu. Host-rendered chrome — the plugin supplies title,
|
|
18421
|
-
* icon
|
|
18485
|
+
* icon, and `run` behavior only. Resolved icon names take precedence over
|
|
18486
|
+
* plugin branding; omitted or unknown names fall back to branding.
|
|
18422
18487
|
*/
|
|
18423
18488
|
interface PluginMessageActionRegistration {
|
|
18424
18489
|
/** Unique within the plugin; letters, digits, `-`, `_`. */
|
|
@@ -18928,12 +18993,6 @@ type PluginComposerScope = {
|
|
|
18928
18993
|
kind: "queued-message";
|
|
18929
18994
|
threadId: string;
|
|
18930
18995
|
queuedMessageId: string;
|
|
18931
|
-
} | {
|
|
18932
|
-
kind: "side-chat";
|
|
18933
|
-
projectId: string;
|
|
18934
|
-
parentThreadId: string;
|
|
18935
|
-
tabId: string;
|
|
18936
|
-
childThreadId: string | null;
|
|
18937
18996
|
} | {
|
|
18938
18997
|
kind: "new-thread";
|
|
18939
18998
|
/** Root compose's effective selected project; null only while unresolved. */
|
|
@@ -18956,35 +19015,39 @@ interface ComposerCustomization {
|
|
|
18956
19015
|
component: ComponentType;
|
|
18957
19016
|
}[];
|
|
18958
19017
|
plusMenu?: readonly ComposerPlusMenuItem[];
|
|
19018
|
+
/** Host-rendered rows in the menu next to the composer's send button. */
|
|
19019
|
+
sendMenu?: readonly ComposerSendMenuItem[];
|
|
18959
19020
|
richText?: ComposerRichTextSpec;
|
|
18960
19021
|
}
|
|
18961
19022
|
/** Host-rendered menu row in the composer's `+` menu. */
|
|
18962
19023
|
interface ComposerPlusMenuItem {
|
|
18963
19024
|
id: string;
|
|
18964
19025
|
label: string;
|
|
18965
|
-
/**
|
|
19026
|
+
/** Takes precedence over the plugin's `bb.branding.icon`, which is drawn when this is omitted. */
|
|
18966
19027
|
icon?: BbIconName;
|
|
18967
19028
|
/** Accessible description for the host-rendered row. */
|
|
18968
19029
|
description?: string;
|
|
18969
|
-
disabled?: boolean | ((
|
|
19030
|
+
disabled?: boolean | ((composer: PluginComposerApi) => boolean);
|
|
18970
19031
|
run(context: {
|
|
18971
19032
|
composer: PluginComposerApi;
|
|
18972
|
-
view: ComposerView;
|
|
18973
19033
|
}): void | Promise<void>;
|
|
18974
19034
|
}
|
|
18975
|
-
/**
|
|
18976
|
-
|
|
18977
|
-
|
|
18978
|
-
|
|
18979
|
-
|
|
18980
|
-
|
|
18981
|
-
|
|
18982
|
-
|
|
18983
|
-
|
|
18984
|
-
|
|
18985
|
-
|
|
18986
|
-
|
|
18987
|
-
|
|
19035
|
+
/**
|
|
19036
|
+
* Host-rendered row in the menu next to the composer's send button, for
|
|
19037
|
+
* alternatives to sending right away (save as a draft, send later). The menu
|
|
19038
|
+
* shows only while the composer can submit.
|
|
19039
|
+
*/
|
|
19040
|
+
interface ComposerSendMenuItem {
|
|
19041
|
+
id: string;
|
|
19042
|
+
label: string;
|
|
19043
|
+
/** Takes precedence over the plugin's `bb.branding.icon`, which is drawn when this is omitted. */
|
|
19044
|
+
icon?: BbIconName;
|
|
19045
|
+
/** Accessible description for the host-rendered row. */
|
|
19046
|
+
description?: string;
|
|
19047
|
+
disabled?: boolean | ((composer: PluginComposerApi) => boolean);
|
|
19048
|
+
run(context: {
|
|
19049
|
+
composer: PluginComposerApi;
|
|
19050
|
+
}): void | Promise<void>;
|
|
18988
19051
|
}
|
|
18989
19052
|
interface ComposerRichTextSpec {
|
|
18990
19053
|
/** Content-derived paint: match ranges receive `className`; text is never mutated. */
|
|
@@ -18997,18 +19060,80 @@ interface ComposerRichTextSpec {
|
|
|
18997
19060
|
}[];
|
|
18998
19061
|
className: string;
|
|
18999
19062
|
}[];
|
|
19000
|
-
/** Debounced, read-only observation of the structured draft. */
|
|
19001
|
-
onDraftChange?(draft: ComposerStructuredDraft, view: ComposerView): void;
|
|
19002
19063
|
}
|
|
19003
|
-
|
|
19064
|
+
/** The composer's text and the @-mention pills in it. */
|
|
19065
|
+
interface ComposerDraft {
|
|
19004
19066
|
text: string;
|
|
19005
|
-
mentions: readonly
|
|
19006
|
-
|
|
19007
|
-
|
|
19008
|
-
|
|
19009
|
-
|
|
19010
|
-
|
|
19011
|
-
|
|
19067
|
+
mentions: readonly ComposerMention[];
|
|
19068
|
+
}
|
|
19069
|
+
/** An already uploaded attachment; paths retain their original project or thread ownership. */
|
|
19070
|
+
type ComposerAttachment = UploadedPromptAttachment;
|
|
19071
|
+
/** The complete current draft. Snapshots and their entries are immutable. */
|
|
19072
|
+
interface ComposerDraftSnapshot extends ComposerDraft {
|
|
19073
|
+
readonly attachments: readonly ComposerAttachment[];
|
|
19074
|
+
}
|
|
19075
|
+
/** Atomic text and mention replacement, optionally replacing uploaded attachments too. */
|
|
19076
|
+
interface ComposerDraftReplacement extends ComposerDraft {
|
|
19077
|
+
/** Omit to preserve attachments; supply an empty array to remove them all. Does not upload or copy files. */
|
|
19078
|
+
attachments?: readonly ComposerAttachment[];
|
|
19079
|
+
}
|
|
19080
|
+
/**
|
|
19081
|
+
* One @-mention pill: its range in `ComposerDraft.text` plus everything the
|
|
19082
|
+
* host needs to recreate it, so a mention read from `draft` can be passed
|
|
19083
|
+
* back to `insert` unchanged.
|
|
19084
|
+
*/
|
|
19085
|
+
type ComposerMention = {
|
|
19086
|
+
from: number;
|
|
19087
|
+
to: number;
|
|
19088
|
+
label: string;
|
|
19089
|
+
} & ({
|
|
19090
|
+
kind: "thread";
|
|
19091
|
+
threadId: string;
|
|
19092
|
+
projectId?: string;
|
|
19093
|
+
} | {
|
|
19094
|
+
kind: "project";
|
|
19095
|
+
projectId: string;
|
|
19096
|
+
} | {
|
|
19097
|
+
kind: "section";
|
|
19098
|
+
sectionId: string;
|
|
19099
|
+
} | {
|
|
19100
|
+
kind: "path";
|
|
19101
|
+
path: string;
|
|
19102
|
+
source: "thread-storage" | "workspace";
|
|
19103
|
+
entryKind: "directory" | "file";
|
|
19104
|
+
} | {
|
|
19105
|
+
kind: "command";
|
|
19106
|
+
trigger: "$" | "/";
|
|
19107
|
+
name: string;
|
|
19108
|
+
source: "command" | "skill";
|
|
19109
|
+
origin: "builtin" | "project" | "user";
|
|
19110
|
+
argumentHint: string | null;
|
|
19111
|
+
} | {
|
|
19112
|
+
kind: "plugin";
|
|
19113
|
+
/** The plugin that owns the pill. */
|
|
19114
|
+
pluginId: string;
|
|
19115
|
+
/** The mention provider id that plugin registered. */
|
|
19116
|
+
provider: string;
|
|
19117
|
+
/** The item id the provider's `resolve` receives at send time. */
|
|
19118
|
+
id: string;
|
|
19119
|
+
icon?: string | null;
|
|
19120
|
+
});
|
|
19121
|
+
/**
|
|
19122
|
+
* What `insert` accepts: text, a mention read from `draft` (any kind), or one
|
|
19123
|
+
* of the calling plugin's own mentions (`{ provider, id, label }`, no `kind`).
|
|
19124
|
+
*/
|
|
19125
|
+
type ComposerInsertPart = string | ComposerMention | PluginComposerMention;
|
|
19126
|
+
/** Where `insert` puts its content. */
|
|
19127
|
+
interface ComposerInsertOptions {
|
|
19128
|
+
/**
|
|
19129
|
+
* `"cursor"` (default) inserts at the editor's selection, replacing any
|
|
19130
|
+
* selected text; the selection is kept while focus is elsewhere, and the
|
|
19131
|
+
* composer must be on screen. `"end"` inserts after the last character and
|
|
19132
|
+
* also works for a composer that is not on screen.
|
|
19133
|
+
*/
|
|
19134
|
+
at?: "cursor" | "end";
|
|
19135
|
+
/** Put the content on its own paragraph, adding a paragraph break before and after only where text is adjacent. */
|
|
19136
|
+
block?: boolean;
|
|
19012
19137
|
}
|
|
19013
19138
|
/** Host-rendered paint applied to the editable composer text. */
|
|
19014
19139
|
interface PluginComposerTextEffect {
|
|
@@ -19040,31 +19165,77 @@ interface PluginComposerMention {
|
|
|
19040
19165
|
label: string;
|
|
19041
19166
|
}
|
|
19042
19167
|
/**
|
|
19043
|
-
*
|
|
19044
|
-
*
|
|
19045
|
-
*
|
|
19046
|
-
*
|
|
19047
|
-
* draft.
|
|
19048
|
-
*
|
|
19049
|
-
*
|
|
19168
|
+
* One composer: its state and the writes a plugin can make. `useComposer()`
|
|
19169
|
+
* returns the composer the calling surface belongs to — inside a composer
|
|
19170
|
+
* slot, that composer; in a thread's panels, that thread's composer;
|
|
19171
|
+
* elsewhere, the current route's draft (the thread in view, or the new-thread
|
|
19172
|
+
* draft).
|
|
19173
|
+
*
|
|
19174
|
+
* The handle is stable: the same composer returns the same object across
|
|
19175
|
+
* renders, and its methods always act on the current draft, so it is safe to
|
|
19176
|
+
* keep in effects, callbacks and async work. Its reactive fields (`text`,
|
|
19177
|
+
* `draft`, `selection`, `isEmpty`, …) re-render the calling component when they change;
|
|
19178
|
+
* depend on those fields, not on the handle, in memo dependency lists.
|
|
19179
|
+
*
|
|
19180
|
+
* A handle always writes to its own composer's draft. Thread and new-thread
|
|
19181
|
+
* drafts persist, so a write after the composer left the screen still lands
|
|
19182
|
+
* in that draft. When the draft no longer exists (a queued-message or
|
|
19183
|
+
* sent-message editor that closed), `insert`, `replace`, `removeMention`, `submit` and
|
|
19184
|
+
* `setSelection` throw "This composer is no longer available"; the older
|
|
19185
|
+
* text methods log a warning and do nothing.
|
|
19050
19186
|
*/
|
|
19051
19187
|
interface PluginComposerApi {
|
|
19052
19188
|
scope: PluginComposerScope;
|
|
19189
|
+
/**
|
|
19190
|
+
* Stable identity for this composer's draft: the same across remounts and
|
|
19191
|
+
* reloads for thread and new-thread composers (including a `ThreadChat`),
|
|
19192
|
+
* and per editing session for queued-message and sent-message editors.
|
|
19193
|
+
*/
|
|
19194
|
+
readonly key: string;
|
|
19195
|
+
/** `"compact"` in the collapsed single-line layout, otherwise `"expanded"`. */
|
|
19196
|
+
readonly layout: "compact" | "expanded";
|
|
19197
|
+
/** The thread's agent is running or stopping. Always false in a new-thread composer. */
|
|
19198
|
+
readonly isRunning: boolean;
|
|
19199
|
+
/** The composer is submitting right now. */
|
|
19200
|
+
readonly isSubmitting: boolean;
|
|
19201
|
+
/**
|
|
19202
|
+
* Pressing Enter would not submit right now: the same decision as the
|
|
19203
|
+
* host's send button (empty draft, uploads in progress, loading, a
|
|
19204
|
+
* selection or setup missing, a pending interaction, voice input, …).
|
|
19205
|
+
*/
|
|
19206
|
+
readonly isSubmittingBlocked: boolean;
|
|
19207
|
+
/** The host's message for why submitting is blocked, or null when it is not. */
|
|
19208
|
+
readonly submittingBlockedReason: string | null;
|
|
19209
|
+
/** No text (ignoring whitespace), no mentions and no attachments. */
|
|
19210
|
+
readonly isEmpty: boolean;
|
|
19211
|
+
/** Attachments that have finished uploading. */
|
|
19212
|
+
readonly attachmentCount: number;
|
|
19053
19213
|
/** Current plain text for this composer scope. */
|
|
19054
19214
|
readonly text: string;
|
|
19215
|
+
/** The complete current draft, including uploaded attachments. Stable until the draft changes. */
|
|
19216
|
+
readonly draft: ComposerDraftSnapshot;
|
|
19217
|
+
/** Current picker values, or null when this composer has no pickers. Stable until a picker value changes. */
|
|
19218
|
+
readonly selection: ComposerSelection | null;
|
|
19055
19219
|
/**
|
|
19056
|
-
* Replace
|
|
19057
|
-
*
|
|
19058
|
-
*
|
|
19220
|
+
* Replace text and mentions together in one committed change. An updater
|
|
19221
|
+
* receives the latest immutable snapshot, including attachments, and must
|
|
19222
|
+
* return its result synchronously. Returning that same snapshot is a no-op.
|
|
19223
|
+
* Omitted attachments are preserved; an explicit list replaces them, and
|
|
19224
|
+
* an empty list clears them. Does not infer or rebase mention ranges.
|
|
19225
|
+
* Ranges are non-overlapping UTF-16 offsets into the supplied text.
|
|
19226
|
+
* Invalid results, throwing updaters, and unavailable editors leave the
|
|
19227
|
+
* draft unchanged. Does not focus, submit, upload, or copy files between
|
|
19228
|
+
* projects. Use `insert` for insertion at the editor's cursor.
|
|
19059
19229
|
*/
|
|
19060
|
-
|
|
19230
|
+
replace(next: ComposerDraftReplacement | ((current: ComposerDraftSnapshot) => ComposerDraftReplacement)): void;
|
|
19061
19231
|
/**
|
|
19062
|
-
*
|
|
19063
|
-
*
|
|
19232
|
+
* Insert text and mentions. See {@link ComposerInsertOptions} for placement.
|
|
19233
|
+
* Mentions read from `draft` are recreated exactly; the calling plugin's
|
|
19234
|
+
* own `{ provider, id, label }` resolves through its mention provider.
|
|
19235
|
+
* Throws for another plugin's mention without `kind`, and for
|
|
19236
|
+
* `at: "cursor"` when the composer is not on screen.
|
|
19064
19237
|
*/
|
|
19065
|
-
|
|
19066
|
-
/** Clear plain text without clearing independently attached files. */
|
|
19067
|
-
clear(): void;
|
|
19238
|
+
insert(parts: ComposerInsertPart | readonly ComposerInsertPart[], options?: ComposerInsertOptions): void;
|
|
19068
19239
|
/**
|
|
19069
19240
|
* Apply a host-rendered effect to this composer's editable text, or clear it.
|
|
19070
19241
|
* Effects are scoped to the calling plugin and automatically clear when the
|
|
@@ -19077,38 +19248,22 @@ interface PluginComposerApi {
|
|
|
19077
19248
|
* scope changes.
|
|
19078
19249
|
*/
|
|
19079
19250
|
setInputLock(locked: boolean): void;
|
|
19080
|
-
/**
|
|
19081
|
-
* Append text to the draft as a `> ` blockquote block and focus the
|
|
19082
|
-
* composer. Blank text is a no-op. This is the "reference this selection
|
|
19083
|
-
* in chat" primitive.
|
|
19084
|
-
*/
|
|
19085
|
-
addQuote(text: string): void;
|
|
19086
|
-
/**
|
|
19087
|
-
* Insert an @-mention pill that resolves through this plugin's mention
|
|
19088
|
-
* provider at send time — the durable way to reference an entity whose
|
|
19089
|
-
* content should be fetched fresh when the message is sent.
|
|
19090
|
-
*/
|
|
19091
|
-
insertMention(mention: PluginComposerMention): void;
|
|
19092
|
-
/** Remove this plugin's matching mention pills and their text from the current draft. */
|
|
19093
|
-
experimental_removeMention(mention: {
|
|
19094
|
-
provider: string;
|
|
19095
|
-
id: string;
|
|
19096
|
-
}): void;
|
|
19097
19251
|
/** Subscribe to successful local submissions in this composer scope, including accepted queued messages. Failed sends and draft clearing do not notify. Dispose on unmount. */
|
|
19098
|
-
|
|
19252
|
+
onSubmitted(listener: () => void): () => void;
|
|
19099
19253
|
/** Focus the composer caret at the end of the draft. */
|
|
19100
19254
|
focus(): void;
|
|
19101
19255
|
/**
|
|
19102
|
-
* Submit this composer's draft
|
|
19103
|
-
*
|
|
19104
|
-
*
|
|
19105
|
-
* This is a real submission, not a plugin-issued send: the host builds the
|
|
19106
|
-
* request exactly as pressing Enter would, so the draft's attachments and
|
|
19256
|
+
* Submit this composer's draft exactly as pressing Enter would: the same
|
|
19257
|
+
* checks and the same action (send, or queue while the thread is busy; a
|
|
19258
|
+
* provider handoff creates a new thread). The draft's attachments and
|
|
19107
19259
|
* @-mentions, and — in the new-thread composer — the provider, model,
|
|
19108
19260
|
* reasoning level, service tier, permission mode and environment the user
|
|
19109
|
-
* has selected on screen, all travel with it.
|
|
19110
|
-
*
|
|
19111
|
-
*
|
|
19261
|
+
* has selected on screen, all travel with it.
|
|
19262
|
+
*
|
|
19263
|
+
* While attachments are uploading it waits for them, then checks again; it
|
|
19264
|
+
* rejects if an upload fails. Otherwise, when submitting is blocked it
|
|
19265
|
+
* rejects with `submittingBlockedReason`, a message safe to show to the
|
|
19266
|
+
* user. The queued-message and sent-message editors save edits and reject.
|
|
19112
19267
|
*
|
|
19113
19268
|
* `sendAt` queues the submission until that time. `experimental_data` is
|
|
19114
19269
|
* opaque JSON delivered to dispatch hooks together with the calling plugin's
|
|
@@ -19117,16 +19272,10 @@ interface PluginComposerApi {
|
|
|
19117
19272
|
* later attempts; core does not persist or interpret the opaque data.
|
|
19118
19273
|
*
|
|
19119
19274
|
* Resolves once the host has accepted the submission and cleared the draft.
|
|
19120
|
-
* Rejects when the composer refused to submit — a scope with no submit
|
|
19121
|
-
* pipeline (a queued-message editor, a side chat), an empty draft, or a
|
|
19122
|
-
* composer that is not ready (still loading its execution defaults, missing
|
|
19123
|
-
* an environment). The rejection's message is safe to show to the user.
|
|
19124
19275
|
* Failures of the underlying request are reported by bb's own submit error
|
|
19125
19276
|
* handling and restore the draft, exactly as an interactive failure does.
|
|
19126
|
-
*
|
|
19127
|
-
* Experimental: see docs/api_to_audit.md.
|
|
19128
19277
|
*/
|
|
19129
|
-
|
|
19278
|
+
submit(options: ComposerSubmitOptions): Promise<void>;
|
|
19130
19279
|
/**
|
|
19131
19280
|
* Set this composer's pickers as if each value had been picked by hand.
|
|
19132
19281
|
*
|
|
@@ -19173,18 +19322,15 @@ interface PluginComposerApi {
|
|
|
19173
19322
|
* mounted outside any composer), when the calling surface is no longer
|
|
19174
19323
|
* active, and when a value is not a known reasoning level, service tier or
|
|
19175
19324
|
* permission mode.
|
|
19176
|
-
*
|
|
19177
|
-
* Experimental: see docs/api_to_audit.md.
|
|
19178
19325
|
*/
|
|
19179
|
-
|
|
19326
|
+
setSelection(selection: ComposerSelection): Promise<ComposerSelection>;
|
|
19180
19327
|
}
|
|
19181
19328
|
/**
|
|
19182
|
-
*
|
|
19183
|
-
* with. Field names match `NewThreadRequest` and the `default*` props of
|
|
19329
|
+
* Current picker values in `selection`, input for `setSelection`, and the shape it resolves with. Field names match `NewThreadRequest` and the `default*` props of
|
|
19184
19330
|
* `experimental_NewThreadComposer`, so one routed decision can feed the
|
|
19185
19331
|
* composer, the embedded composer and `bb.sdk.threads.spawn` alike.
|
|
19186
19332
|
*/
|
|
19187
|
-
interface
|
|
19333
|
+
interface ComposerSelection {
|
|
19188
19334
|
/** New-thread composers only. BB's personal-project id means "Don't work in a project". */
|
|
19189
19335
|
projectId?: string;
|
|
19190
19336
|
/**
|
|
@@ -19205,13 +19351,13 @@ interface ExperimentalComposerSelection {
|
|
|
19205
19351
|
permissionMode?: PermissionMode;
|
|
19206
19352
|
}
|
|
19207
19353
|
/**
|
|
19208
|
-
* What `
|
|
19354
|
+
* What `submit` does differently from pressing Enter.
|
|
19209
19355
|
*
|
|
19210
19356
|
* `experimental_data` is opaque JSON delivered to dispatch hooks. The runtime
|
|
19211
19357
|
* associates it with the calling plugin automatically for the initial
|
|
19212
19358
|
* dispatch attempt.
|
|
19213
19359
|
*/
|
|
19214
|
-
type
|
|
19360
|
+
type ComposerSubmitOptions = {
|
|
19215
19361
|
sendAt: number;
|
|
19216
19362
|
experimental_data?: JsonValue$1;
|
|
19217
19363
|
} | {
|
|
@@ -19436,7 +19582,7 @@ interface NewThreadRequest {
|
|
|
19436
19582
|
input: PromptInput[];
|
|
19437
19583
|
/**
|
|
19438
19584
|
* Epoch ms the first turn should dispatch at. Present only when the
|
|
19439
|
-
* submission came from `useComposer().
|
|
19585
|
+
* submission came from `useComposer().submit` — a scheduled
|
|
19440
19586
|
* create — and absent otherwise, which is what makes an ordinary submission
|
|
19441
19587
|
* start work at once. Forward it to `threads.spawn` unchanged: the thread is
|
|
19442
19588
|
* created `pending` and its first message is queued as a row until then.
|
|
@@ -19740,6 +19886,20 @@ interface PluginSdkApp {
|
|
|
19740
19886
|
/** Read or clear the owning tab's validated, session-scoped target. */
|
|
19741
19887
|
experimental_useFixedTabTarget<Target extends JsonValue$1>(tab: ExperimentalPluginFixedTabReference<Target>): ExperimentalFixedTabTargetState<Target> | null;
|
|
19742
19888
|
useComposer(): PluginComposerApi;
|
|
19889
|
+
/**
|
|
19890
|
+
* Every composer on screen that plugin composer customizations mount in,
|
|
19891
|
+
* oldest first: the thread page's composer, a `ThreadChat`'s composer, the
|
|
19892
|
+
* new-thread composer and open queued-message editors. Use it from a panel
|
|
19893
|
+
* or page that writes into a composer the user picks — label each by its
|
|
19894
|
+
* `scope`, then call `insert`, `focus` or `submit` on the chosen handle.
|
|
19895
|
+
*
|
|
19896
|
+
* Each handle is stable while its composer stays on screen and follows the
|
|
19897
|
+
* same lifetime rule as `useComposer()`. `setTextEffect` and `setInputLock`
|
|
19898
|
+
* have no effect here; call them from a composer slot's `useComposer()`.
|
|
19899
|
+
* The calling component re-renders when the list or any listed draft
|
|
19900
|
+
* changes.
|
|
19901
|
+
*/
|
|
19902
|
+
useComposers(): readonly PluginComposerApi[];
|
|
19743
19903
|
/**
|
|
19744
19904
|
* The sidebar's live thread view (see {@link PluginSidebarThreadsState}).
|
|
19745
19905
|
* Reads the host's own cache and realtime subscriptions, so it costs no
|
|
@@ -19800,7 +19960,7 @@ interface PluginSdkApp {
|
|
|
19800
19960
|
experimental_useSidebarNavigationSplit(itemId: string, options?: ExperimentalSidebarNavigationSplitOptions): ExperimentalSidebarNavigationSplit;
|
|
19801
19961
|
/**
|
|
19802
19962
|
* bb's artwork for a navigation item's icon: bb's glyphs for its own items,
|
|
19803
|
-
* and the
|
|
19963
|
+
* and the panel's explicit icon, falling back to plugin branding, for plugin panels. Experimental:
|
|
19804
19964
|
* see docs/api_to_audit.md.
|
|
19805
19965
|
*/
|
|
19806
19966
|
experimental_SidebarNavigationIcon: ComponentType<ExperimentalSidebarNavigationIconProps>;
|
|
@@ -19960,7 +20120,6 @@ interface PluginSdkApp {
|
|
|
19960
20120
|
* docs/api_to_audit.md.
|
|
19961
20121
|
*/
|
|
19962
20122
|
experimental_Diff: ComponentType<DiffProps>;
|
|
19963
|
-
useComposerView(): ComposerView;
|
|
19964
20123
|
}
|
|
19965
20124
|
|
|
19966
20125
|
declare const experimental_Icon: react.ComponentType<ExperimentalIconProps>;
|
|
@@ -19989,7 +20148,7 @@ declare const useBbNavigate: () => BbNavigate;
|
|
|
19989
20148
|
declare const experimental_useAppPanel: () => ExperimentalAppPanel;
|
|
19990
20149
|
declare const experimental_useFixedTabTarget: <Target extends JsonValue$1>(tab: ExperimentalPluginFixedTabReference<Target>) => ExperimentalFixedTabTargetState<Target> | null;
|
|
19991
20150
|
declare const useComposer: () => PluginComposerApi;
|
|
19992
|
-
declare const
|
|
20151
|
+
declare const useComposers: () => readonly PluginComposerApi[];
|
|
19993
20152
|
declare const experimental_useSidebarThreads: (options?: {
|
|
19994
20153
|
experimental_lifecycles: readonly ("active" | "archived")[];
|
|
19995
20154
|
}) => PluginSidebarThreadsState;
|
|
@@ -20011,5 +20170,5 @@ declare const useSdk: () => PluginBrowserBbSdk;
|
|
|
20011
20170
|
declare const experimental_useProviders: () => PluginProvidersState;
|
|
20012
20171
|
declare const experimental_useCodeTheme: () => PluginCodeThemeState;
|
|
20013
20172
|
|
|
20014
|
-
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,
|
|
20015
|
-
export type { BbContext, BbNavigate, BranchPickerProps, BranchesState, CheckoutState, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec,
|
|
20173
|
+
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 };
|
|
20174
|
+
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, 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 };
|