@get-bb/plugin-sdk 0.4.35 → 0.4.40
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 +10 -0
- package/bundled-types/bb-plugin-sdk-app.d.ts +31 -2
- package/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts +7 -1
- package/bundled-types/bb-plugin-sdk-internal-plugin-app-collector.d.ts +2 -1
- package/bundled-types/bb-plugin-sdk-testing-app.d.ts +3 -2
- package/bundled-types/bb-plugin-sdk-testing.d.ts +5 -1
- package/bundled-types/bb-plugin-sdk.d.ts +269 -85
- package/dist/internal/host-policy.js +25 -1
- package/dist/internal/plugin-app-collector.js +11 -0
- package/dist/provider-bridge-acp.js +135 -26
- package/dist/testing/app.js +11 -0
- package/dist/testing/index.js +43 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,6 +65,16 @@ action id, or a surface with no side panel). A decline is a return value, never
|
|
|
65
65
|
a thrown error, so a plugin registering several kinds of action can share one
|
|
66
66
|
open routine and branch on the result.
|
|
67
67
|
|
|
68
|
+
Use `app.slots.experimental_appOverlay({ id, component })` for additive,
|
|
69
|
+
app-wide floating React UI. BB mounts the component once per app window through
|
|
70
|
+
the normal plugin slot boundary, so SDK hooks and plugin CSS work and React
|
|
71
|
+
context survives portals. This app-level boundary includes the sidebar thread
|
|
72
|
+
data and action hooks. Hooks whose contract requires a particular surface,
|
|
73
|
+
including `useComposer` and `useComposerView`, remain limited to that surface.
|
|
74
|
+
The plugin owns the overlay's chrome, positioning, visibility, focus, and
|
|
75
|
+
responsive behavior; a crashing overlay is hidden without affecting siblings.
|
|
76
|
+
Use a content script for app-wide DOM behavior that does not need React context.
|
|
77
|
+
|
|
68
78
|
See the
|
|
69
79
|
[`composer-customization` reference plugin](../../examples/plugins/composer-customization/README.md)
|
|
70
80
|
for every region in one small app. The deprecated pre-1.0
|
|
@@ -341,6 +341,14 @@ interface PluginHomepageSectionProps {
|
|
|
341
341
|
*/
|
|
342
342
|
interface PluginSettingsSectionProps {
|
|
343
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Props passed to an `experimental_appOverlay` component.
|
|
346
|
+
*
|
|
347
|
+
* Deliberately empty while the component reads live app state through SDK
|
|
348
|
+
* hooks; versioned additive like the other slot props.
|
|
349
|
+
*/
|
|
350
|
+
interface ExperimentalAppOverlayProps {
|
|
351
|
+
}
|
|
344
352
|
/** Props passed to a `navPanel` component (it owns its whole route). */
|
|
345
353
|
interface PluginNavPanelProps {
|
|
346
354
|
/**
|
|
@@ -705,6 +713,21 @@ interface PluginSettingsSectionRegistration {
|
|
|
705
713
|
description?: string;
|
|
706
714
|
component: ComponentType<PluginSettingsSectionProps>;
|
|
707
715
|
}
|
|
716
|
+
/**
|
|
717
|
+
* Render app-wide plugin UI outside BB's layout regions.
|
|
718
|
+
*
|
|
719
|
+
* The host mounts each registration once per app window through the ordinary
|
|
720
|
+
* plugin React boundary. The component therefore keeps PluginContext, router,
|
|
721
|
+
* query, realtime, and other app-level SDK contexts when it renders fixed UI
|
|
722
|
+
* or creates a React portal. BB supplies no chrome, positioning, visibility,
|
|
723
|
+
* or interaction policy; the plugin owns those details and responsive
|
|
724
|
+
* behavior. Registrations are additive and a crash hides only that overlay.
|
|
725
|
+
*/
|
|
726
|
+
interface ExperimentalAppOverlayRegistration {
|
|
727
|
+
/** Unique within the plugin; letters, digits, `-`, `_`. */
|
|
728
|
+
id: string;
|
|
729
|
+
component: ComponentType<ExperimentalAppOverlayProps>;
|
|
730
|
+
}
|
|
708
731
|
/**
|
|
709
732
|
* Owner-defined validator for a fixed tab's transient target. The host first
|
|
710
733
|
* verifies that the value is JSON-safe, then calls this validator before
|
|
@@ -1522,6 +1545,12 @@ interface PluginTimelineRendererRegistration {
|
|
|
1522
1545
|
interface PluginAppSlots {
|
|
1523
1546
|
homepageSection(registration: PluginHomepageSectionRegistration): void;
|
|
1524
1547
|
settingsSection(registration: PluginSettingsSectionRegistration): void;
|
|
1548
|
+
/**
|
|
1549
|
+
* Render one app-wide overlay component (see
|
|
1550
|
+
* {@link ExperimentalAppOverlayRegistration}). Experimental: see
|
|
1551
|
+
* docs/api_to_audit.md.
|
|
1552
|
+
*/
|
|
1553
|
+
experimental_appOverlay(registration: ExperimentalAppOverlayRegistration): void;
|
|
1525
1554
|
navPanel(registration: PluginNavPanelRegistration): void;
|
|
1526
1555
|
/**
|
|
1527
1556
|
* Add an action to an existing thread's panel launcher. This slot is
|
|
@@ -1661,7 +1690,7 @@ interface PluginSettingsState {
|
|
|
1661
1690
|
* Effective non-secret setting values (secret settings are excluded —
|
|
1662
1691
|
* read them server-side). Undefined while loading or unavailable.
|
|
1663
1692
|
*/
|
|
1664
|
-
values: Record<string, string | boolean> | undefined;
|
|
1693
|
+
values: Record<string, string | number | boolean> | undefined;
|
|
1665
1694
|
isLoading: boolean;
|
|
1666
1695
|
}
|
|
1667
1696
|
/** State of the app's shared realtime connection to the bb server. */
|
|
@@ -2441,4 +2470,4 @@ declare const experimental_useProviders: () => PluginProvidersState;
|
|
|
2441
2470
|
declare const experimental_useCodeTheme: () => PluginCodeThemeState;
|
|
2442
2471
|
|
|
2443
2472
|
export { Markdown, ThreadChat, UrlLink, definePluginApp, experimental_Diff, experimental_FileLink, experimental_NewThreadComposer, experimental_PermissionModePicker, experimental_ProviderModelPicker, experimental_SourceCode, experimental_useAppPanel, experimental_useCodeTheme, experimental_useFixedTabTarget, experimental_useProviders, experimental_useSidebarThreadActions, experimental_useSidebarThreadPullRequest, experimental_useSidebarThreadSplit, experimental_useSidebarThreads, useBbContext, useBbNavigate, useComposer, useComposerView, useRealtime, useRealtimeConnectionState, useRpc, useSettings };
|
|
2444
|
-
export type { BbContext, BbNavigate, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderIconRegistration, PluginProvidersState, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps };
|
|
2473
|
+
export type { BbContext, BbNavigate, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderIconRegistration, PluginProvidersState, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginTargetedPanelActionOpenOptions, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps };
|
|
@@ -512,6 +512,12 @@ type PluginSettingDescriptor = {
|
|
|
512
512
|
/** Synchronously validate without transforming a proposed value. */
|
|
513
513
|
experimental_schema?: StandardSchemaV1<boolean, boolean>;
|
|
514
514
|
default?: boolean;
|
|
515
|
+
} | {
|
|
516
|
+
type: "number";
|
|
517
|
+
label: string;
|
|
518
|
+
description?: string;
|
|
519
|
+
experimental_schema?: StandardSchemaV1<number, number>;
|
|
520
|
+
default?: number;
|
|
515
521
|
} | {
|
|
516
522
|
type: "select";
|
|
517
523
|
label: string;
|
|
@@ -529,7 +535,7 @@ type PluginSettingDescriptor = {
|
|
|
529
535
|
default?: string;
|
|
530
536
|
};
|
|
531
537
|
type PluginSettingDescriptors = Record<string, PluginSettingDescriptor>;
|
|
532
|
-
type PluginSettingValue = string | boolean;
|
|
538
|
+
type PluginSettingValue = string | number | boolean;
|
|
533
539
|
/**
|
|
534
540
|
* What a `message.dispatch` hook answers.
|
|
535
541
|
*
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
// Confused by the API, or need a symbol that isn't here? Clone the BB repo
|
|
6
6
|
// and read the real source: https://github.com/get-bb/bb
|
|
7
7
|
|
|
8
|
-
import { PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginCommandPaletteActionRegistration, PluginProviderIconRegistration, PluginTimelineRendererRegistration, PluginContentScriptRegistration, PluginAppDefinition } from '@get-bb/plugin-sdk';
|
|
8
|
+
import { PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, ExperimentalAppOverlayRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginCommandPaletteActionRegistration, PluginProviderIconRegistration, PluginTimelineRendererRegistration, PluginContentScriptRegistration, PluginAppDefinition } from '@get-bb/plugin-sdk';
|
|
9
9
|
|
|
10
10
|
/** Validated registrations produced by one plugin app setup execution. */
|
|
11
11
|
interface CollectedPluginAppRegistrations {
|
|
12
12
|
homepageSections: PluginHomepageSectionRegistration[];
|
|
13
13
|
settingsSections: PluginSettingsSectionRegistration[];
|
|
14
|
+
appOverlays: ExperimentalAppOverlayRegistration[];
|
|
14
15
|
navPanels: PluginNavPanelRegistration[];
|
|
15
16
|
threadPanelActions: PluginThreadPanelActionRegistration[];
|
|
16
17
|
newThreadPanelActions: PluginNewThreadPanelActionRegistration[];
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { ReactNode, ComponentType } from 'react';
|
|
9
9
|
import { RenderResult } from '@testing-library/react';
|
|
10
|
-
import { PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginProviderIconRegistration, PluginTimelineRendererRegistration, PluginContentScriptRegistration, PluginComposerScope, PluginComposerTextEffect, PluginComposerMention, PluginComposerThreadRowStatus, ExperimentalOpenFixedTabOptions, JsonValue, BbNavigate, ExperimentalFileOpenOptions, PluginAppDefinition, PluginRpcContract, StandardSchemaV1InferInput, PluginRpcResult, PluginRealtimeConnectionState, PluginSidebarThreadsState, PluginProvidersState, PluginCodeThemeState, PluginSidebarPullRequest, PluginSidebarThreadActions } from '@get-bb/plugin-sdk';
|
|
10
|
+
import { PluginHomepageSectionRegistration, PluginSettingsSectionRegistration, ExperimentalAppOverlayRegistration, PluginNavPanelRegistration, PluginThreadPanelActionRegistration, PluginNewThreadPanelActionRegistration, ComposerCustomization, PluginPendingInteractionRegistration, PluginSidebarFooterActionRegistration, ExperimentalSidebarNavigationRegistration, PluginThreadListRegistration, PluginThreadHeaderActionRegistration, PluginFileOpenerRegistration, PluginSourceCodeRendererRegistration, PluginDiffRendererRegistration, PluginMessageDirectiveRegistration, PluginMessageActionRegistration, PluginProviderIconRegistration, PluginTimelineRendererRegistration, PluginContentScriptRegistration, PluginComposerScope, PluginComposerTextEffect, PluginComposerMention, PluginComposerThreadRowStatus, ExperimentalOpenFixedTabOptions, JsonValue, BbNavigate, ExperimentalFileOpenOptions, PluginAppDefinition, PluginRpcContract, StandardSchemaV1InferInput, PluginRpcResult, PluginRealtimeConnectionState, PluginSidebarThreadsState, PluginProvidersState, PluginCodeThemeState, PluginSidebarPullRequest, PluginSidebarThreadActions } from '@get-bb/plugin-sdk';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* `@get-bb/plugin-sdk/testing/app` — the frontend plugin test harness. Tests a
|
|
@@ -118,6 +118,7 @@ declare function installTestPluginRuntime(): void;
|
|
|
118
118
|
interface CapturedPluginApp {
|
|
119
119
|
homepageSections: PluginHomepageSectionRegistration[];
|
|
120
120
|
settingsSections: PluginSettingsSectionRegistration[];
|
|
121
|
+
appOverlays: ExperimentalAppOverlayRegistration[];
|
|
121
122
|
navPanels: PluginNavPanelRegistration[];
|
|
122
123
|
threadPanelActions: PluginThreadPanelActionRegistration[];
|
|
123
124
|
newThreadPanelActions: PluginNewThreadPanelActionRegistration[];
|
|
@@ -192,7 +193,7 @@ interface RenderSlotOptions<Contract extends PluginRpcContract = PluginRpcContra
|
|
|
192
193
|
*/
|
|
193
194
|
rpc?: PluginRpcTestHandlers<Contract>;
|
|
194
195
|
/** `useSettings()` values; omitted → `{ values: undefined, isLoading: false }`. */
|
|
195
|
-
settings?: Record<string, string | boolean>;
|
|
196
|
+
settings?: Record<string, string | number | boolean>;
|
|
196
197
|
/** `useBbContext()` selection; both default to null. */
|
|
197
198
|
context?: {
|
|
198
199
|
projectId?: string | null;
|
|
@@ -102,7 +102,7 @@ interface StandardSchemaV1Issue {
|
|
|
102
102
|
})[];
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
type PluginSettingValue = string | boolean;
|
|
105
|
+
type PluginSettingValue = string | number | boolean;
|
|
106
106
|
/**
|
|
107
107
|
* Permission modes a provider can run a session in — BB's own permission
|
|
108
108
|
* vocabulary, ordered least ("accept-edits") to most ("full") privileged.
|
|
@@ -770,6 +770,10 @@ interface FakePluginHarness extends FakePluginInspectionState, FakePluginBehavio
|
|
|
770
770
|
interface CreateFakePluginHostOptions {
|
|
771
771
|
/** Defaults to "test-plugin". */
|
|
772
772
|
pluginId?: string;
|
|
773
|
+
/**
|
|
774
|
+
* Value served by `bb.server.experimental_appUrl`. Defaults to `null`.
|
|
775
|
+
*/
|
|
776
|
+
appUrl?: string | null;
|
|
773
777
|
/**
|
|
774
778
|
* Value served by `bb.server.loopbackBaseUrl` (always bound here, like
|
|
775
779
|
* `bb.sdk`). Defaults to "http://127.0.0.1:38886".
|
|
@@ -4464,15 +4464,6 @@ declare const commitActionResponseSchema: z$1.ZodObject<{
|
|
|
4464
4464
|
ok: z$1.ZodLiteral<true>;
|
|
4465
4465
|
}, z$1.core.$strip>;
|
|
4466
4466
|
type CommitActionResponse = z$1.infer<typeof commitActionResponseSchema>;
|
|
4467
|
-
declare const squashMergeActionResponseSchema: z$1.ZodObject<{
|
|
4468
|
-
action: z$1.ZodLiteral<"squash_merge">;
|
|
4469
|
-
commitSha: z$1.ZodString;
|
|
4470
|
-
commitSubject: z$1.ZodString;
|
|
4471
|
-
merged: z$1.ZodBoolean;
|
|
4472
|
-
message: z$1.ZodString;
|
|
4473
|
-
ok: z$1.ZodLiteral<true>;
|
|
4474
|
-
}, z$1.core.$strip>;
|
|
4475
|
-
type SquashMergeActionResponse = z$1.infer<typeof squashMergeActionResponseSchema>;
|
|
4476
4467
|
declare const pullRequestReadyActionResponseSchema: z$1.ZodObject<{
|
|
4477
4468
|
action: z$1.ZodLiteral<"pull_request_ready">;
|
|
4478
4469
|
message: z$1.ZodString;
|
|
@@ -6086,24 +6077,6 @@ declare const hostDaemonCommandRegistry: {
|
|
|
6086
6077
|
commitSha: z$1.ZodString;
|
|
6087
6078
|
commitSubject: z$1.ZodString;
|
|
6088
6079
|
}, z$1.core.$strip>, "settled", false>;
|
|
6089
|
-
"workspace.squash_merge": HostDaemonCommandDescriptor<"workspace.squash_merge", z$1.ZodObject<{
|
|
6090
|
-
commitMessage: z$1.ZodString;
|
|
6091
|
-
environmentId: z$1.ZodString;
|
|
6092
|
-
targetBranch: z$1.ZodString;
|
|
6093
|
-
type: z$1.ZodLiteral<"workspace.squash_merge">;
|
|
6094
|
-
workspaceContext: z$1.ZodObject<{
|
|
6095
|
-
workspacePath: z$1.ZodString;
|
|
6096
|
-
workspaceProvisionType: z$1.ZodEnum<{
|
|
6097
|
-
"managed-worktree": "managed-worktree";
|
|
6098
|
-
personal: "personal";
|
|
6099
|
-
unmanaged: "unmanaged";
|
|
6100
|
-
}>;
|
|
6101
|
-
}, z$1.core.$strip>;
|
|
6102
|
-
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
6103
|
-
commitSha: z$1.ZodString;
|
|
6104
|
-
commitSubject: z$1.ZodString;
|
|
6105
|
-
merged: z$1.ZodBoolean;
|
|
6106
|
-
}, z$1.core.$strip>, "settled", false>;
|
|
6107
6080
|
"workspace.pull_request_action": HostDaemonCommandDescriptor<"workspace.pull_request_action", z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
6108
6081
|
environmentId: z$1.ZodString;
|
|
6109
6082
|
operation: z$1.ZodLiteral<"ready">;
|
|
@@ -7581,10 +7554,16 @@ declare const installedPluginSchema: z$1.ZodObject<{
|
|
|
7581
7554
|
}, z$1.core.$strip>>>;
|
|
7582
7555
|
catalogEntryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7583
7556
|
catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;
|
|
7557
|
+
category: z$1.ZodOptional<z$1.ZodString>;
|
|
7558
|
+
categoryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7584
7559
|
cliCommand: z$1.ZodNullable<z$1.ZodObject<{
|
|
7585
7560
|
name: z$1.ZodString;
|
|
7586
7561
|
summary: z$1.ZodString;
|
|
7587
7562
|
}, z$1.core.$strip>>;
|
|
7563
|
+
collections: z$1.ZodArray<z$1.ZodObject<{
|
|
7564
|
+
id: z$1.ZodString;
|
|
7565
|
+
rank: z$1.ZodNumber;
|
|
7566
|
+
}, z$1.core.$strip>>;
|
|
7588
7567
|
description: z$1.ZodNullable<z$1.ZodString>;
|
|
7589
7568
|
enabled: z$1.ZodBoolean;
|
|
7590
7569
|
handlerStats: z$1.ZodObject<{
|
|
@@ -7608,6 +7587,7 @@ declare const installedPluginSchema: z$1.ZodObject<{
|
|
|
7608
7587
|
direct: "direct";
|
|
7609
7588
|
}>;
|
|
7610
7589
|
providerIds: z$1.ZodArray<z$1.ZodString>;
|
|
7590
|
+
publishedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7611
7591
|
publisherLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7612
7592
|
rootDir: z$1.ZodString;
|
|
7613
7593
|
schedules: z$1.ZodArray<z$1.ZodObject<{
|
|
@@ -7622,6 +7602,7 @@ declare const installedPluginSchema: z$1.ZodObject<{
|
|
|
7622
7602
|
name: z$1.ZodString;
|
|
7623
7603
|
nextRunAt: z$1.ZodNumber;
|
|
7624
7604
|
}, z$1.core.$strip>>;
|
|
7605
|
+
screenshots: z$1.ZodArray<z$1.ZodString>;
|
|
7625
7606
|
services: z$1.ZodArray<z$1.ZodObject<{
|
|
7626
7607
|
name: z$1.ZodString;
|
|
7627
7608
|
state: z$1.ZodEnum<{
|
|
@@ -7661,6 +7642,7 @@ declare const installedPluginSchema: z$1.ZodObject<{
|
|
|
7661
7642
|
unavailable: "unavailable";
|
|
7662
7643
|
}>>;
|
|
7663
7644
|
}, z$1.core.$strip>;
|
|
7645
|
+
updatedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7664
7646
|
version: z$1.ZodString;
|
|
7665
7647
|
}, z$1.core.$strip>;
|
|
7666
7648
|
type InstalledPlugin = z$1.infer<typeof installedPluginSchema>;
|
|
@@ -7691,10 +7673,16 @@ declare const pluginListResponseSchema: z$1.ZodObject<{
|
|
|
7691
7673
|
}, z$1.core.$strip>>>;
|
|
7692
7674
|
catalogEntryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7693
7675
|
catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;
|
|
7676
|
+
category: z$1.ZodOptional<z$1.ZodString>;
|
|
7677
|
+
categoryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7694
7678
|
cliCommand: z$1.ZodNullable<z$1.ZodObject<{
|
|
7695
7679
|
name: z$1.ZodString;
|
|
7696
7680
|
summary: z$1.ZodString;
|
|
7697
7681
|
}, z$1.core.$strip>>;
|
|
7682
|
+
collections: z$1.ZodArray<z$1.ZodObject<{
|
|
7683
|
+
id: z$1.ZodString;
|
|
7684
|
+
rank: z$1.ZodNumber;
|
|
7685
|
+
}, z$1.core.$strip>>;
|
|
7698
7686
|
description: z$1.ZodNullable<z$1.ZodString>;
|
|
7699
7687
|
enabled: z$1.ZodBoolean;
|
|
7700
7688
|
handlerStats: z$1.ZodObject<{
|
|
@@ -7718,6 +7706,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{
|
|
|
7718
7706
|
direct: "direct";
|
|
7719
7707
|
}>;
|
|
7720
7708
|
providerIds: z$1.ZodArray<z$1.ZodString>;
|
|
7709
|
+
publishedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7721
7710
|
publisherLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7722
7711
|
rootDir: z$1.ZodString;
|
|
7723
7712
|
schedules: z$1.ZodArray<z$1.ZodObject<{
|
|
@@ -7732,6 +7721,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{
|
|
|
7732
7721
|
name: z$1.ZodString;
|
|
7733
7722
|
nextRunAt: z$1.ZodNumber;
|
|
7734
7723
|
}, z$1.core.$strip>>;
|
|
7724
|
+
screenshots: z$1.ZodArray<z$1.ZodString>;
|
|
7735
7725
|
services: z$1.ZodArray<z$1.ZodObject<{
|
|
7736
7726
|
name: z$1.ZodString;
|
|
7737
7727
|
state: z$1.ZodEnum<{
|
|
@@ -7771,6 +7761,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{
|
|
|
7771
7761
|
unavailable: "unavailable";
|
|
7772
7762
|
}>>;
|
|
7773
7763
|
}, z$1.core.$strip>;
|
|
7764
|
+
updatedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7774
7765
|
version: z$1.ZodString;
|
|
7775
7766
|
}, z$1.core.$strip>>;
|
|
7776
7767
|
}, z$1.core.$strip>;
|
|
@@ -7803,10 +7794,16 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{
|
|
|
7803
7794
|
}, z$1.core.$strip>>>;
|
|
7804
7795
|
catalogEntryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7805
7796
|
catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;
|
|
7797
|
+
category: z$1.ZodOptional<z$1.ZodString>;
|
|
7798
|
+
categoryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7806
7799
|
cliCommand: z$1.ZodNullable<z$1.ZodObject<{
|
|
7807
7800
|
name: z$1.ZodString;
|
|
7808
7801
|
summary: z$1.ZodString;
|
|
7809
7802
|
}, z$1.core.$strip>>;
|
|
7803
|
+
collections: z$1.ZodArray<z$1.ZodObject<{
|
|
7804
|
+
id: z$1.ZodString;
|
|
7805
|
+
rank: z$1.ZodNumber;
|
|
7806
|
+
}, z$1.core.$strip>>;
|
|
7810
7807
|
description: z$1.ZodNullable<z$1.ZodString>;
|
|
7811
7808
|
enabled: z$1.ZodBoolean;
|
|
7812
7809
|
handlerStats: z$1.ZodObject<{
|
|
@@ -7830,6 +7827,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{
|
|
|
7830
7827
|
direct: "direct";
|
|
7831
7828
|
}>;
|
|
7832
7829
|
providerIds: z$1.ZodArray<z$1.ZodString>;
|
|
7830
|
+
publishedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7833
7831
|
publisherLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7834
7832
|
rootDir: z$1.ZodString;
|
|
7835
7833
|
schedules: z$1.ZodArray<z$1.ZodObject<{
|
|
@@ -7844,6 +7842,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{
|
|
|
7844
7842
|
name: z$1.ZodString;
|
|
7845
7843
|
nextRunAt: z$1.ZodNumber;
|
|
7846
7844
|
}, z$1.core.$strip>>;
|
|
7845
|
+
screenshots: z$1.ZodArray<z$1.ZodString>;
|
|
7847
7846
|
services: z$1.ZodArray<z$1.ZodObject<{
|
|
7848
7847
|
name: z$1.ZodString;
|
|
7849
7848
|
state: z$1.ZodEnum<{
|
|
@@ -7883,6 +7882,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{
|
|
|
7883
7882
|
unavailable: "unavailable";
|
|
7884
7883
|
}>>;
|
|
7885
7884
|
}, z$1.core.$strip>;
|
|
7885
|
+
updatedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7886
7886
|
version: z$1.ZodString;
|
|
7887
7887
|
}, z$1.core.$strip>>;
|
|
7888
7888
|
}, z$1.core.$strip>;
|
|
@@ -7905,6 +7905,11 @@ declare const pluginSettingsResponseSchema: z$1.ZodObject<{
|
|
|
7905
7905
|
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7906
7906
|
label: z$1.ZodString;
|
|
7907
7907
|
type: z$1.ZodLiteral<"boolean">;
|
|
7908
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7909
|
+
default: z$1.ZodOptional<z$1.ZodNumber>;
|
|
7910
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7911
|
+
label: z$1.ZodString;
|
|
7912
|
+
type: z$1.ZodLiteral<"number">;
|
|
7908
7913
|
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7909
7914
|
default: z$1.ZodOptional<z$1.ZodString>;
|
|
7910
7915
|
description: z$1.ZodOptional<z$1.ZodString>;
|
|
@@ -7931,32 +7936,48 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{
|
|
|
7931
7936
|
pluginCount: z$1.ZodNumber;
|
|
7932
7937
|
}, z$1.core.$strip>;
|
|
7933
7938
|
type PluginCatalogStatus = z$1.infer<typeof pluginCatalogStatusSchema>;
|
|
7934
|
-
declare const
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7939
|
+
declare const pluginCatalogSearchResponseSchema: z$1.ZodObject<{
|
|
7940
|
+
collections: z$1.ZodArray<z$1.ZodObject<{
|
|
7941
|
+
displayName: z$1.ZodString;
|
|
7942
|
+
id: z$1.ZodString;
|
|
7943
|
+
pluginIds: z$1.ZodArray<z$1.ZodString>;
|
|
7944
|
+
}, z$1.core.$strip>>;
|
|
7945
|
+
results: z$1.ZodArray<z$1.ZodObject<{
|
|
7946
|
+
author: z$1.ZodNullable<z$1.ZodObject<{
|
|
7947
|
+
github: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7948
|
+
name: z$1.ZodString;
|
|
7949
|
+
url: z$1.ZodNullable<z$1.ZodString>;
|
|
7950
|
+
}, z$1.core.$strip>>;
|
|
7951
|
+
category: z$1.ZodOptional<z$1.ZodString>;
|
|
7952
|
+
categoryId: z$1.ZodOptional<z$1.ZodString>;
|
|
7953
|
+
collections: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7954
|
+
id: z$1.ZodString;
|
|
7955
|
+
rank: z$1.ZodNumber;
|
|
7956
|
+
}, z$1.core.$strip>>>;
|
|
7957
|
+
compatible: z$1.ZodBoolean;
|
|
7958
|
+
description: z$1.ZodString;
|
|
7959
|
+
displayName: z$1.ZodString;
|
|
7960
|
+
entryId: z$1.ZodString;
|
|
7961
|
+
icon: z$1.ZodNullable<z$1.ZodString>;
|
|
7962
|
+
iconTinted: z$1.ZodDefault<z$1.ZodBoolean>;
|
|
7963
|
+
iconUrl: z$1.ZodNullable<z$1.ZodString>;
|
|
7964
|
+
incompatibleReason: z$1.ZodNullable<z$1.ZodString>;
|
|
7965
|
+
installed: z$1.ZodBoolean;
|
|
7966
|
+
installs: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodNumber>>;
|
|
7967
|
+
marketplace: z$1.ZodString;
|
|
7968
|
+
marketplaceDisplayName: z$1.ZodString;
|
|
7969
|
+
official: z$1.ZodBoolean;
|
|
7970
|
+
pluginId: z$1.ZodString;
|
|
7971
|
+
publishedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7972
|
+
publisherKey: z$1.ZodString;
|
|
7973
|
+
publisherLabel: z$1.ZodString;
|
|
7974
|
+
repositoryUrl: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7975
|
+
screenshots: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;
|
|
7976
|
+
source: z$1.ZodString;
|
|
7977
|
+
updatedAt: z$1.ZodOptional<z$1.ZodISODateTime>;
|
|
7938
7978
|
}, z$1.core.$strip>>;
|
|
7939
|
-
category: z$1.ZodString;
|
|
7940
|
-
compatible: z$1.ZodBoolean;
|
|
7941
|
-
description: z$1.ZodString;
|
|
7942
|
-
displayName: z$1.ZodString;
|
|
7943
|
-
entryId: z$1.ZodString;
|
|
7944
|
-
icon: z$1.ZodNullable<z$1.ZodString>;
|
|
7945
|
-
iconTinted: z$1.ZodDefault<z$1.ZodBoolean>;
|
|
7946
|
-
iconUrl: z$1.ZodNullable<z$1.ZodString>;
|
|
7947
|
-
incompatibleReason: z$1.ZodNullable<z$1.ZodString>;
|
|
7948
|
-
installed: z$1.ZodBoolean;
|
|
7949
|
-
installs: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodNumber>>;
|
|
7950
|
-
marketplace: z$1.ZodString;
|
|
7951
|
-
marketplaceDisplayName: z$1.ZodString;
|
|
7952
|
-
official: z$1.ZodBoolean;
|
|
7953
|
-
pluginId: z$1.ZodString;
|
|
7954
|
-
publisherKey: z$1.ZodString;
|
|
7955
|
-
publisherLabel: z$1.ZodString;
|
|
7956
|
-
repositoryUrl: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7957
|
-
source: z$1.ZodString;
|
|
7958
7979
|
}, z$1.core.$strip>;
|
|
7959
|
-
type
|
|
7980
|
+
type PluginCatalogSearchResponse = z$1.infer<typeof pluginCatalogSearchResponseSchema>;
|
|
7960
7981
|
declare const pluginCatalogResolvedSourceSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7961
7982
|
kind: z$1.ZodLiteral<"npm">;
|
|
7962
7983
|
package: z$1.ZodString;
|
|
@@ -7988,6 +8009,7 @@ declare const pluginCatalogInstallPlanSchema: z$1.ZodDiscriminatedUnion<[z$1.Zod
|
|
|
7988
8009
|
source: z$1.ZodString;
|
|
7989
8010
|
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
7990
8011
|
author: z$1.ZodObject<{
|
|
8012
|
+
github: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;
|
|
7991
8013
|
name: z$1.ZodString;
|
|
7992
8014
|
url: z$1.ZodNullable<z$1.ZodString>;
|
|
7993
8015
|
}, z$1.core.$strip>;
|
|
@@ -10280,26 +10302,143 @@ declare const sendMessageResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObjec
|
|
|
10280
10302
|
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10281
10303
|
delivery: z$1.ZodLiteral<"queued">;
|
|
10282
10304
|
ok: z$1.ZodLiteral<true>;
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
|
|
10288
|
-
|
|
10289
|
-
|
|
10290
|
-
|
|
10291
|
-
|
|
10292
|
-
|
|
10293
|
-
|
|
10294
|
-
|
|
10295
|
-
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
10300
|
-
|
|
10301
|
-
|
|
10302
|
-
|
|
10305
|
+
queuedMessage: z$1.ZodObject<{
|
|
10306
|
+
content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
10307
|
+
mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
10308
|
+
end: z$1.ZodNumber;
|
|
10309
|
+
resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
10310
|
+
kind: z$1.ZodLiteral<"thread">;
|
|
10311
|
+
label: z$1.ZodString;
|
|
10312
|
+
projectId: z$1.ZodOptional<z$1.ZodString>;
|
|
10313
|
+
threadId: z$1.ZodString;
|
|
10314
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10315
|
+
kind: z$1.ZodLiteral<"project">;
|
|
10316
|
+
label: z$1.ZodString;
|
|
10317
|
+
projectId: z$1.ZodString;
|
|
10318
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10319
|
+
kind: z$1.ZodLiteral<"section">;
|
|
10320
|
+
label: z$1.ZodString;
|
|
10321
|
+
sectionId: z$1.ZodString;
|
|
10322
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10323
|
+
entryKind: z$1.ZodEnum<{
|
|
10324
|
+
directory: "directory";
|
|
10325
|
+
file: "file";
|
|
10326
|
+
}>;
|
|
10327
|
+
kind: z$1.ZodLiteral<"path">;
|
|
10328
|
+
label: z$1.ZodString;
|
|
10329
|
+
path: z$1.ZodString;
|
|
10330
|
+
source: z$1.ZodEnum<{
|
|
10331
|
+
"thread-storage": "thread-storage";
|
|
10332
|
+
workspace: "workspace";
|
|
10333
|
+
}>;
|
|
10334
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10335
|
+
argumentHint: z$1.ZodNullable<z$1.ZodString>;
|
|
10336
|
+
kind: z$1.ZodLiteral<"command">;
|
|
10337
|
+
label: z$1.ZodString;
|
|
10338
|
+
name: z$1.ZodString;
|
|
10339
|
+
origin: z$1.ZodEnum<{
|
|
10340
|
+
builtin: "builtin";
|
|
10341
|
+
project: "project";
|
|
10342
|
+
user: "user";
|
|
10343
|
+
}>;
|
|
10344
|
+
source: z$1.ZodEnum<{
|
|
10345
|
+
command: "command";
|
|
10346
|
+
skill: "skill";
|
|
10347
|
+
}>;
|
|
10348
|
+
trigger: z$1.ZodEnum<{
|
|
10349
|
+
"/": "/";
|
|
10350
|
+
}>;
|
|
10351
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10352
|
+
icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
10353
|
+
itemId: z$1.ZodString;
|
|
10354
|
+
kind: z$1.ZodLiteral<"plugin">;
|
|
10355
|
+
label: z$1.ZodString;
|
|
10356
|
+
pluginId: z$1.ZodString;
|
|
10357
|
+
}, z$1.core.$strip>], "kind">>;
|
|
10358
|
+
start: z$1.ZodNumber;
|
|
10359
|
+
}, z$1.core.$strip>>>;
|
|
10360
|
+
text: z$1.ZodString;
|
|
10361
|
+
type: z$1.ZodLiteral<"text">;
|
|
10362
|
+
visibility: z$1.ZodOptional<z$1.ZodEnum<{
|
|
10363
|
+
"agent-only": "agent-only";
|
|
10364
|
+
}>>;
|
|
10365
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10366
|
+
type: z$1.ZodLiteral<"image">;
|
|
10367
|
+
url: z$1.ZodString;
|
|
10368
|
+
visibility: z$1.ZodOptional<z$1.ZodEnum<{
|
|
10369
|
+
"agent-only": "agent-only";
|
|
10370
|
+
}>>;
|
|
10371
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10372
|
+
path: z$1.ZodString;
|
|
10373
|
+
type: z$1.ZodLiteral<"localImage">;
|
|
10374
|
+
visibility: z$1.ZodOptional<z$1.ZodEnum<{
|
|
10375
|
+
"agent-only": "agent-only";
|
|
10376
|
+
}>>;
|
|
10377
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10378
|
+
mimeType: z$1.ZodOptional<z$1.ZodString>;
|
|
10379
|
+
name: z$1.ZodOptional<z$1.ZodString>;
|
|
10380
|
+
path: z$1.ZodString;
|
|
10381
|
+
sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;
|
|
10382
|
+
type: z$1.ZodLiteral<"localFile">;
|
|
10383
|
+
visibility: z$1.ZodOptional<z$1.ZodEnum<{
|
|
10384
|
+
"agent-only": "agent-only";
|
|
10385
|
+
}>>;
|
|
10386
|
+
}, z$1.core.$strip>], "type">>;
|
|
10387
|
+
createdAt: z$1.ZodNumber;
|
|
10388
|
+
editable: z$1.ZodBoolean;
|
|
10389
|
+
failureReason: z$1.ZodNullable<z$1.ZodString>;
|
|
10390
|
+
groupWithNext: z$1.ZodBoolean;
|
|
10391
|
+
id: z$1.ZodString;
|
|
10392
|
+
model: z$1.ZodString;
|
|
10393
|
+
payload: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
10394
|
+
kind: z$1.ZodLiteral<"inline">;
|
|
10395
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10396
|
+
attempt: z$1.ZodNumber;
|
|
10397
|
+
kind: z$1.ZodLiteral<"retry">;
|
|
10398
|
+
reason: z$1.ZodString;
|
|
10399
|
+
retryOfTurnRequestId: z$1.ZodString;
|
|
10400
|
+
}, z$1.core.$strip>], "kind">;
|
|
10401
|
+
permissionMode: z$1.ZodEnum<{
|
|
10402
|
+
"accept-edits": "accept-edits";
|
|
10403
|
+
auto: "auto";
|
|
10404
|
+
full: "full";
|
|
10405
|
+
}>;
|
|
10406
|
+
reasoningLevel: z$1.ZodEnum<{
|
|
10407
|
+
high: "high";
|
|
10408
|
+
low: "low";
|
|
10409
|
+
max: "max";
|
|
10410
|
+
medium: "medium";
|
|
10411
|
+
none: "none";
|
|
10412
|
+
ultra: "ultra";
|
|
10413
|
+
ultracode: "ultracode";
|
|
10414
|
+
xhigh: "xhigh";
|
|
10415
|
+
}>;
|
|
10416
|
+
sendAt: z$1.ZodNullable<z$1.ZodNumber>;
|
|
10417
|
+
serviceTier: z$1.ZodEnum<{
|
|
10418
|
+
default: "default";
|
|
10419
|
+
fast: "fast";
|
|
10420
|
+
}>;
|
|
10421
|
+
threadId: z$1.ZodString;
|
|
10422
|
+
updatedAt: z$1.ZodNumber;
|
|
10423
|
+
waitingOn: z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
10424
|
+
kind: z$1.ZodLiteral<"time">;
|
|
10425
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10426
|
+
kind: z$1.ZodLiteral<"thread-busy">;
|
|
10427
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10428
|
+
kind: z$1.ZodLiteral<"turn-starting">;
|
|
10429
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10430
|
+
kind: z$1.ZodLiteral<"provisioning">;
|
|
10431
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10432
|
+
hostName: z$1.ZodString;
|
|
10433
|
+
kind: z$1.ZodLiteral<"host-offline">;
|
|
10434
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10435
|
+
kind: z$1.ZodLiteral<"interaction">;
|
|
10436
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10437
|
+
kind: z$1.ZodLiteral<"plugin">;
|
|
10438
|
+
pluginId: z$1.ZodString;
|
|
10439
|
+
reason: z$1.ZodString;
|
|
10440
|
+
}, z$1.core.$strip>], "kind">>;
|
|
10441
|
+
}, z$1.core.$strip>;
|
|
10303
10442
|
}, z$1.core.$strip>], "delivery">;
|
|
10304
10443
|
type SendMessageResponse = z$1.infer<typeof sendMessageResponseSchema>;
|
|
10305
10444
|
declare const editMessageRequestSchema: z$1.ZodObject<{
|
|
@@ -10698,7 +10837,11 @@ declare const setQueuedMessageGroupBoundaryRequestSchema: z$1.ZodObject<{
|
|
|
10698
10837
|
groupBoundaryQueuedMessageId: z$1.ZodString;
|
|
10699
10838
|
}, z$1.core.$strip>;
|
|
10700
10839
|
type SetQueuedMessageGroupBoundaryRequest = z$1.infer<typeof setQueuedMessageGroupBoundaryRequestSchema>;
|
|
10701
|
-
declare const sendQueuedMessageResponseSchema: z$1.ZodObject<{
|
|
10840
|
+
declare const sendQueuedMessageResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
10841
|
+
delivery: z$1.ZodLiteral<"sent">;
|
|
10842
|
+
ok: z$1.ZodLiteral<true>;
|
|
10843
|
+
}, z$1.core.$strip>, z$1.ZodObject<{
|
|
10844
|
+
delivery: z$1.ZodLiteral<"queued">;
|
|
10702
10845
|
ok: z$1.ZodLiteral<true>;
|
|
10703
10846
|
queuedMessage: z$1.ZodObject<{
|
|
10704
10847
|
content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
@@ -10837,7 +10980,7 @@ declare const sendQueuedMessageResponseSchema: z$1.ZodObject<{
|
|
|
10837
10980
|
reason: z$1.ZodString;
|
|
10838
10981
|
}, z$1.core.$strip>], "kind">>;
|
|
10839
10982
|
}, z$1.core.$strip>;
|
|
10840
|
-
}, z$1.core.$strip>;
|
|
10983
|
+
}, z$1.core.$strip>], "delivery">;
|
|
10841
10984
|
type SendQueuedMessageResponse = z$1.infer<typeof sendQueuedMessageResponseSchema>;
|
|
10842
10985
|
declare const threadListResponseSchema: z$1.ZodArray<z$1.ZodObject<{
|
|
10843
10986
|
activity: z$1.ZodObject<{
|
|
@@ -12487,6 +12630,14 @@ interface PluginHomepageSectionProps {
|
|
|
12487
12630
|
*/
|
|
12488
12631
|
interface PluginSettingsSectionProps {
|
|
12489
12632
|
}
|
|
12633
|
+
/**
|
|
12634
|
+
* Props passed to an `experimental_appOverlay` component.
|
|
12635
|
+
*
|
|
12636
|
+
* Deliberately empty while the component reads live app state through SDK
|
|
12637
|
+
* hooks; versioned additive like the other slot props.
|
|
12638
|
+
*/
|
|
12639
|
+
interface ExperimentalAppOverlayProps {
|
|
12640
|
+
}
|
|
12490
12641
|
/** Props passed to a `navPanel` component (it owns its whole route). */
|
|
12491
12642
|
interface PluginNavPanelProps {
|
|
12492
12643
|
/**
|
|
@@ -12851,6 +13002,21 @@ interface PluginSettingsSectionRegistration {
|
|
|
12851
13002
|
description?: string;
|
|
12852
13003
|
component: ComponentType<PluginSettingsSectionProps>;
|
|
12853
13004
|
}
|
|
13005
|
+
/**
|
|
13006
|
+
* Render app-wide plugin UI outside BB's layout regions.
|
|
13007
|
+
*
|
|
13008
|
+
* The host mounts each registration once per app window through the ordinary
|
|
13009
|
+
* plugin React boundary. The component therefore keeps PluginContext, router,
|
|
13010
|
+
* query, realtime, and other app-level SDK contexts when it renders fixed UI
|
|
13011
|
+
* or creates a React portal. BB supplies no chrome, positioning, visibility,
|
|
13012
|
+
* or interaction policy; the plugin owns those details and responsive
|
|
13013
|
+
* behavior. Registrations are additive and a crash hides only that overlay.
|
|
13014
|
+
*/
|
|
13015
|
+
interface ExperimentalAppOverlayRegistration {
|
|
13016
|
+
/** Unique within the plugin; letters, digits, `-`, `_`. */
|
|
13017
|
+
id: string;
|
|
13018
|
+
component: ComponentType<ExperimentalAppOverlayProps>;
|
|
13019
|
+
}
|
|
12854
13020
|
/**
|
|
12855
13021
|
* Owner-defined validator for a fixed tab's transient target. The host first
|
|
12856
13022
|
* verifies that the value is JSON-safe, then calls this validator before
|
|
@@ -13668,6 +13834,12 @@ interface PluginTimelineRendererRegistration {
|
|
|
13668
13834
|
interface PluginAppSlots {
|
|
13669
13835
|
homepageSection(registration: PluginHomepageSectionRegistration): void;
|
|
13670
13836
|
settingsSection(registration: PluginSettingsSectionRegistration): void;
|
|
13837
|
+
/**
|
|
13838
|
+
* Render one app-wide overlay component (see
|
|
13839
|
+
* {@link ExperimentalAppOverlayRegistration}). Experimental: see
|
|
13840
|
+
* docs/api_to_audit.md.
|
|
13841
|
+
*/
|
|
13842
|
+
experimental_appOverlay(registration: ExperimentalAppOverlayRegistration): void;
|
|
13671
13843
|
navPanel(registration: PluginNavPanelRegistration): void;
|
|
13672
13844
|
/**
|
|
13673
13845
|
* Add an action to an existing thread's panel launcher. This slot is
|
|
@@ -13807,7 +13979,7 @@ interface PluginSettingsState {
|
|
|
13807
13979
|
* Effective non-secret setting values (secret settings are excluded —
|
|
13808
13980
|
* read them server-side). Undefined while loading or unavailable.
|
|
13809
13981
|
*/
|
|
13810
|
-
values: Record<string, string | boolean> | undefined;
|
|
13982
|
+
values: Record<string, string | number | boolean> | undefined;
|
|
13811
13983
|
isLoading: boolean;
|
|
13812
13984
|
}
|
|
13813
13985
|
/** State of the app's shared realtime connection to the bb server. */
|
|
@@ -14598,10 +14770,6 @@ interface EnvironmentDiffBranchesArgs extends EnvironmentDiffBranchesQuery {
|
|
|
14598
14770
|
interface EnvironmentCommitArgs {
|
|
14599
14771
|
environmentId: string;
|
|
14600
14772
|
}
|
|
14601
|
-
interface EnvironmentSquashMergeArgs {
|
|
14602
|
-
environmentId: string;
|
|
14603
|
-
mergeBaseBranch: string;
|
|
14604
|
-
}
|
|
14605
14773
|
interface EnvironmentPullRequestMergeArgs {
|
|
14606
14774
|
environmentId: string;
|
|
14607
14775
|
method: PullRequestMergeMethod;
|
|
@@ -14627,7 +14795,6 @@ type EnvironmentMarkPullRequestReadyResult = PullRequestReadyActionResponse;
|
|
|
14627
14795
|
type EnvironmentMergePullRequestResult = PullRequestMergeActionResponse;
|
|
14628
14796
|
type EnvironmentPathsResult = WorkspacePathListResponse;
|
|
14629
14797
|
type EnvironmentPullRequestResult = EnvironmentPullRequestResponse;
|
|
14630
|
-
type EnvironmentSquashMergeResult = SquashMergeActionResponse;
|
|
14631
14798
|
type EnvironmentStatusResult = EnvironmentStatusResponse;
|
|
14632
14799
|
type EnvironmentUpdateResult = Environment;
|
|
14633
14800
|
interface EnvironmentsArea {
|
|
@@ -14644,7 +14811,6 @@ interface EnvironmentsArea {
|
|
|
14644
14811
|
markPullRequestReady(args: EnvironmentActionArgs): Promise<EnvironmentMarkPullRequestReadyResult>;
|
|
14645
14812
|
mergePullRequest(args: EnvironmentPullRequestMergeArgs): Promise<EnvironmentMergePullRequestResult>;
|
|
14646
14813
|
paths(args: EnvironmentPathsArgs): Promise<EnvironmentPathsResult>;
|
|
14647
|
-
squashMerge(args: EnvironmentSquashMergeArgs): Promise<EnvironmentSquashMergeResult>;
|
|
14648
14814
|
status(args: EnvironmentStatusArgs): Promise<EnvironmentStatusResult>;
|
|
14649
14815
|
update(args: EnvironmentUpdateArgs): Promise<EnvironmentUpdateResult>;
|
|
14650
14816
|
}
|
|
@@ -15057,7 +15223,7 @@ type PluginGetSourceResult = PluginSourceDetail;
|
|
|
15057
15223
|
type PluginCheckUpdatesResult = PluginUpdateCheckEntry[];
|
|
15058
15224
|
type PluginApplyUpdateResult = PluginApplyUpdateResult$1;
|
|
15059
15225
|
type PluginCatalogStatusResult = PluginCatalogStatus;
|
|
15060
|
-
type PluginCatalogSearchResult =
|
|
15226
|
+
type PluginCatalogSearchResult = PluginCatalogSearchResponse;
|
|
15061
15227
|
type PluginCatalogInstallPlanResult = PluginCatalogInstallPlan;
|
|
15062
15228
|
type PluginMarketplaceListResult = PluginMarketplace[];
|
|
15063
15229
|
type PluginMarketplaceAddResult = PluginMarketplace;
|
|
@@ -16004,6 +16170,12 @@ type PluginSettingDescriptor = {
|
|
|
16004
16170
|
/** Synchronously validate without transforming a proposed value. */
|
|
16005
16171
|
experimental_schema?: StandardSchemaV1<boolean, boolean>;
|
|
16006
16172
|
default?: boolean;
|
|
16173
|
+
} | {
|
|
16174
|
+
type: "number";
|
|
16175
|
+
label: string;
|
|
16176
|
+
description?: string;
|
|
16177
|
+
experimental_schema?: StandardSchemaV1<number, number>;
|
|
16178
|
+
default?: number;
|
|
16007
16179
|
} | {
|
|
16008
16180
|
type: "select";
|
|
16009
16181
|
label: string;
|
|
@@ -16021,16 +16193,18 @@ type PluginSettingDescriptor = {
|
|
|
16021
16193
|
default?: string;
|
|
16022
16194
|
};
|
|
16023
16195
|
type PluginSettingDescriptors = Record<string, PluginSettingDescriptor>;
|
|
16024
|
-
type PluginSettingValue = string | boolean;
|
|
16196
|
+
type PluginSettingValue = string | number | boolean;
|
|
16025
16197
|
/** `default` present → non-optional value; absent → `T | undefined`. */
|
|
16026
16198
|
type PluginSettingsValues<Ds extends Record<string, PluginSettingDescriptor>> = {
|
|
16027
16199
|
[K in keyof Ds]: Ds[K] extends {
|
|
16028
|
-
default: string | boolean;
|
|
16200
|
+
default: string | number | boolean;
|
|
16029
16201
|
} ? PluginSettingValueOf<Ds[K]> : PluginSettingValueOf<Ds[K]> | undefined;
|
|
16030
16202
|
};
|
|
16031
16203
|
type PluginSettingValueOf<D extends PluginSettingDescriptor> = D extends {
|
|
16032
16204
|
type: "boolean";
|
|
16033
|
-
} ? boolean :
|
|
16205
|
+
} ? boolean : D extends {
|
|
16206
|
+
type: "number";
|
|
16207
|
+
} ? number : string;
|
|
16034
16208
|
interface PluginSettingsHandle<Ds extends Record<string, PluginSettingDescriptor>> {
|
|
16035
16209
|
/** Load-safe: callable inside the factory. */
|
|
16036
16210
|
get(): Promise<PluginSettingsValues<Ds>>;
|
|
@@ -16161,6 +16335,11 @@ interface PluginThreadEventPayloads {
|
|
|
16161
16335
|
"thread.deleted": {
|
|
16162
16336
|
thread: ThreadResponse;
|
|
16163
16337
|
};
|
|
16338
|
+
/** Fired after a pending interaction row is committed. */
|
|
16339
|
+
"interaction.pending": {
|
|
16340
|
+
thread: ThreadResponse;
|
|
16341
|
+
interaction: PendingInteraction;
|
|
16342
|
+
};
|
|
16164
16343
|
/**
|
|
16165
16344
|
* Fired after a dispatch attempt is queued as a row — by a `message.dispatch`
|
|
16166
16345
|
* hook's `wait` decision, by a `sendAt` in the future, or by a core wait (the
|
|
@@ -17187,6 +17366,11 @@ interface PluginEvents {
|
|
|
17187
17366
|
on<E extends PluginThreadEventName>(event: E, handler: PluginThreadEventHandler<E>): void;
|
|
17188
17367
|
}
|
|
17189
17368
|
interface PluginServerApi {
|
|
17369
|
+
/**
|
|
17370
|
+
* The operator-configured public app URL from `BB_APP_URL`, or `null` when
|
|
17371
|
+
* the operator has not configured one. This value is not bind-gated.
|
|
17372
|
+
*/
|
|
17373
|
+
readonly experimental_appUrl: string | null;
|
|
17190
17374
|
/**
|
|
17191
17375
|
* This BB server's own loopback base URL (e.g. "http://127.0.0.1:38886"),
|
|
17192
17376
|
* which serves the SPA + /api + /ws. For plugins that proxy or relay
|
|
@@ -17351,4 +17535,4 @@ interface BbPluginApi {
|
|
|
17351
17535
|
}
|
|
17352
17536
|
|
|
17353
17537
|
export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract, experimental_defineHostEntry };
|
|
17354
|
-
export type { BbContext, BbNavigate, BbPluginApi, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue, MarkdownProps, MessageDispatchHookContext, MessageDispatchHookDecision, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolLabels, PluginAgentToolPresentation, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAiServiceDeclaration, PluginAiServiceKind, PluginAiServices, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginDispatchAttemptKind, PluginDispatchExecution, PluginDispatchExecutionSources, PluginDispatchInput, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHookHandler, PluginHookName, PluginHookSignatures, PluginHooks, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderExtensionKindDeclaration, PluginProviderFallbackModel, PluginProviderIconRegistration, PluginProviderMaintenance, PluginProviderModelCatalogScope, PluginProviderNativeRootEntry, PluginProviderNativeRoots, PluginProviderOptionDescriptor, PluginProviderOptionsContext, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginProviderStrings, PluginProviders, PluginProvidersState, PluginRealtime, PluginRealtimeConnectionState, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginStatusApi, PluginStorage, PluginTargetedPanelActionOpenOptions, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, PluginTurnFailedEvent, PluginUi, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps };
|
|
17538
|
+
export type { BbContext, BbNavigate, BbPluginApi, CodeOverflowMode, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, DiffProps, DiffViewMode, ExperimentalAppOverlayProps, ExperimentalAppOverlayRegistration, ExperimentalAppPanel, ExperimentalAppPanelSurface, ExperimentalComposerSubmitOptions, ExperimentalDiffFileContent, ExperimentalDiffFullFileContents, ExperimentalFileLinkProps, ExperimentalFileLocation, ExperimentalFileOpenOptions, ExperimentalFixedTabTargetContract, ExperimentalFixedTabTargetState, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, ExperimentalLiveFileTarget, ExperimentalOpenFixedTabOptions, ExperimentalPermissionModePickerProps, ExperimentalPluginFixedTabReference, ExperimentalProviderModelPickerProps, ExperimentalProviderModelPickerRouting, ExperimentalProviderModelPickerValue, ExperimentalSidebarNavigationAction, ExperimentalSidebarNavigationActivationOptions, ExperimentalSidebarNavigationIcon, ExperimentalSidebarNavigationItem, ExperimentalSidebarNavigationProps, ExperimentalSidebarNavigationRegistration, ExperimentalSidebarNavigationShortcut, JsonValue, MarkdownProps, MessageDispatchHookContext, MessageDispatchHookDecision, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolLabels, PluginAgentToolPresentation, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAiServiceDeclaration, PluginAiServiceKind, PluginAiServices, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginCodeThemeData, PluginCodeThemeState, PluginCodeThemeTokenRule, PluginCommandPaletteActionContext, PluginCommandPaletteActionRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginDiffRendererProps, PluginDiffRendererRegistration, PluginDispatchAttemptKind, PluginDispatchExecution, PluginDispatchExecutionSources, PluginDispatchInput, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginFixedTabDeclaration, PluginFixedTabRegistration, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHookHandler, PluginHookName, PluginHookSignatures, PluginHooks, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPanelActionOpenOptions, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderExtensionKindDeclaration, PluginProviderFallbackModel, PluginProviderIconRegistration, PluginProviderMaintenance, PluginProviderModelCatalogScope, PluginProviderNativeRootEntry, PluginProviderNativeRoots, PluginProviderOptionDescriptor, PluginProviderOptionsContext, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginProviderStrings, PluginProviders, PluginProvidersState, PluginRealtime, PluginRealtimeConnectionState, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginSourceCodeRendererProps, PluginSourceCodeRendererRegistration, PluginStatusApi, PluginStorage, PluginTargetedPanelActionOpenOptions, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginTimelineRendererProps, PluginTimelineRendererRegistration, PluginTimelineRendererRow, PluginTimelineRowPresentation, PluginTimelineRowStatus, PluginTurnFailedEvent, PluginUi, SourceCodeLineRange, SourceCodeProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps, UrlLinkProps };
|
|
@@ -276,7 +276,7 @@ var PLUGIN_HTTP_METHODS = /* @__PURE__ */ new Set([
|
|
|
276
276
|
"HEAD",
|
|
277
277
|
"OPTIONS"
|
|
278
278
|
]);
|
|
279
|
-
var RPC_METHOD_PATTERN = /^[a-zA-Z0-9_-]
|
|
279
|
+
var RPC_METHOD_PATTERN = /^[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*$/;
|
|
280
280
|
var BACKGROUND_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
281
281
|
var CLI_COMMAND_NAME_PATTERN = /^[a-z0-9-]+$/;
|
|
282
282
|
var AGENT_TOOL_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
@@ -299,6 +299,9 @@ var stringSettingSchemaSchema = z3.custom(
|
|
|
299
299
|
var booleanSettingSchemaSchema = z3.custom(
|
|
300
300
|
(value) => isStandardSchema(value)
|
|
301
301
|
);
|
|
302
|
+
var numberSettingSchemaSchema = z3.custom(
|
|
303
|
+
(value) => isStandardSchema(value)
|
|
304
|
+
);
|
|
302
305
|
var settingDescriptorSchema = z3.discriminatedUnion("type", [
|
|
303
306
|
z3.object({
|
|
304
307
|
type: z3.literal("string"),
|
|
@@ -320,6 +323,12 @@ var settingDescriptorSchema = z3.discriminatedUnion("type", [
|
|
|
320
323
|
experimental_schema: booleanSettingSchemaSchema.optional(),
|
|
321
324
|
default: z3.boolean().optional()
|
|
322
325
|
}).strict(),
|
|
326
|
+
z3.object({
|
|
327
|
+
type: z3.literal("number"),
|
|
328
|
+
...settingsBaseFields,
|
|
329
|
+
experimental_schema: numberSettingSchemaSchema.optional(),
|
|
330
|
+
default: z3.number().finite().optional()
|
|
331
|
+
}).strict(),
|
|
323
332
|
z3.object({
|
|
324
333
|
type: z3.literal("select"),
|
|
325
334
|
...settingsBaseFields,
|
|
@@ -416,6 +425,21 @@ function validateSettingsUpdate(descriptors, values) {
|
|
|
416
425
|
}
|
|
417
426
|
continue;
|
|
418
427
|
}
|
|
428
|
+
if (descriptor.type === "number") {
|
|
429
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
430
|
+
errors.push(`setting "${key}" expects a finite number`);
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
const validationError2 = settingSchemaError(
|
|
434
|
+
key,
|
|
435
|
+
descriptor.experimental_schema,
|
|
436
|
+
value
|
|
437
|
+
);
|
|
438
|
+
if (validationError2 !== null) {
|
|
439
|
+
errors.push(validationError2);
|
|
440
|
+
}
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
419
443
|
if (typeof value !== "string") {
|
|
420
444
|
errors.push(`setting "${key}" expects a string`);
|
|
421
445
|
continue;
|
|
@@ -246,6 +246,7 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
246
246
|
const collected = {
|
|
247
247
|
homepageSections: [],
|
|
248
248
|
settingsSections: [],
|
|
249
|
+
appOverlays: [],
|
|
249
250
|
navPanels: [],
|
|
250
251
|
threadPanelActions: [],
|
|
251
252
|
newThreadPanelActions: [],
|
|
@@ -268,6 +269,7 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
268
269
|
const seenIds = {
|
|
269
270
|
homepageSection: /* @__PURE__ */ new Set(),
|
|
270
271
|
settingsSection: /* @__PURE__ */ new Set(),
|
|
272
|
+
appOverlay: /* @__PURE__ */ new Set(),
|
|
271
273
|
navPanel: /* @__PURE__ */ new Set(),
|
|
272
274
|
threadPanelAction: /* @__PURE__ */ new Set(),
|
|
273
275
|
newThreadPanelAction: /* @__PURE__ */ new Set(),
|
|
@@ -316,6 +318,15 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
316
318
|
component: requireComponent(kind, registration.component)
|
|
317
319
|
});
|
|
318
320
|
},
|
|
321
|
+
experimental_appOverlay(registration) {
|
|
322
|
+
const kind = "slots.experimental_appOverlay";
|
|
323
|
+
const id = requireSlotId(kind, registration?.id);
|
|
324
|
+
requireUniqueId(kind, seenIds.appOverlay, id);
|
|
325
|
+
collected.appOverlays.push({
|
|
326
|
+
id,
|
|
327
|
+
component: requireComponent(kind, registration.component)
|
|
328
|
+
});
|
|
329
|
+
},
|
|
319
330
|
navPanel(registration) {
|
|
320
331
|
const kind = "slots.navPanel";
|
|
321
332
|
const id = requireSlotId(kind, registration?.id);
|
|
@@ -4189,6 +4189,11 @@ var acpCompactionCompletedNotificationParamsSchema = z34.discriminatedUnion("sta
|
|
|
4189
4189
|
threadId: z34.string().min(1),
|
|
4190
4190
|
status: z34.literal("interrupted")
|
|
4191
4191
|
}).passthrough(),
|
|
4192
|
+
z34.object({
|
|
4193
|
+
threadId: z34.string().min(1),
|
|
4194
|
+
status: z34.literal("skipped"),
|
|
4195
|
+
detail: z34.string().min(1)
|
|
4196
|
+
}).passthrough(),
|
|
4192
4197
|
z34.object({
|
|
4193
4198
|
threadId: z34.string().min(1),
|
|
4194
4199
|
status: z34.literal("failed"),
|
|
@@ -4820,6 +4825,18 @@ function ompCommandResult(event) {
|
|
|
4820
4825
|
...output.length === 0 ? {} : { output }
|
|
4821
4826
|
};
|
|
4822
4827
|
}
|
|
4828
|
+
var OMP_COMPACTION_FAILURE_PATTERN = /\bcompaction failed\b/i;
|
|
4829
|
+
var OMP_COMPACTION_NOOP_PATTERN = /\b(?:nothing to compact|already compacted)\b/i;
|
|
4830
|
+
function compactionOutcomeForEndTurn(dialect, agentMessage) {
|
|
4831
|
+
if (dialect.id !== "omp") {
|
|
4832
|
+
return { status: "completed" };
|
|
4833
|
+
}
|
|
4834
|
+
const text = agentMessage.trim();
|
|
4835
|
+
if (!OMP_COMPACTION_FAILURE_PATTERN.test(text)) {
|
|
4836
|
+
return { status: "completed" };
|
|
4837
|
+
}
|
|
4838
|
+
return OMP_COMPACTION_NOOP_PATTERN.test(text) ? { status: "skipped", detail: text } : { status: "failed", error: text };
|
|
4839
|
+
}
|
|
4823
4840
|
var OMP_ACP_DIALECT = {
|
|
4824
4841
|
id: "omp",
|
|
4825
4842
|
commandResult: ompCommandResult
|
|
@@ -6022,12 +6039,22 @@ function createAcpDeltaTranslator(options = {}) {
|
|
|
6022
6039
|
return [];
|
|
6023
6040
|
}
|
|
6024
6041
|
const status = params.data.status;
|
|
6042
|
+
const turnStatus = status === "skipped" ? "completed" : status;
|
|
6025
6043
|
return [
|
|
6026
|
-
...flushOpenTurnWork(context,
|
|
6044
|
+
...flushOpenTurnWork(context, itemStatusForTurnStatus(turnStatus)),
|
|
6027
6045
|
...status === "completed" ? [{ kind: "context.compacted" }] : [],
|
|
6046
|
+
...status === "skipped" ? [
|
|
6047
|
+
{
|
|
6048
|
+
kind: "provider.warning",
|
|
6049
|
+
category: "compaction-skipped",
|
|
6050
|
+
summary: "Context compaction skipped",
|
|
6051
|
+
details: params.data.detail,
|
|
6052
|
+
vouchedTurn: true
|
|
6053
|
+
}
|
|
6054
|
+
] : [],
|
|
6028
6055
|
{
|
|
6029
6056
|
kind: "turn.boundary",
|
|
6030
|
-
status,
|
|
6057
|
+
status: turnStatus,
|
|
6031
6058
|
...status === "failed" ? { error: { message: params.data.error } } : {}
|
|
6032
6059
|
}
|
|
6033
6060
|
];
|
|
@@ -6663,6 +6690,93 @@ function splitPrimaryModels(catalogModels, primaryModels) {
|
|
|
6663
6690
|
};
|
|
6664
6691
|
}
|
|
6665
6692
|
|
|
6693
|
+
// ../provider-bridge-acp/src/cursor-model-selection.ts
|
|
6694
|
+
var CURSOR_LEGACY_FAMILY_SELECTIONS = {
|
|
6695
|
+
"claude-4-sonnet": { modelId: "claude-sonnet-4" },
|
|
6696
|
+
"claude-4.5-opus": { modelId: "claude-opus-4-5" },
|
|
6697
|
+
"claude-4.5-sonnet": { modelId: "claude-sonnet-4-5" },
|
|
6698
|
+
"claude-4.6-opus": { modelId: "claude-opus-4-6" },
|
|
6699
|
+
"claude-4.6-sonnet": { modelId: "claude-sonnet-4-6" },
|
|
6700
|
+
"gemini-3.6-flash-minimal": {
|
|
6701
|
+
modelId: "gemini-3.6-flash",
|
|
6702
|
+
reasoningLevel: "low"
|
|
6703
|
+
},
|
|
6704
|
+
"gpt-5.1-codex-max": { modelId: "gpt-5.1" }
|
|
6705
|
+
};
|
|
6706
|
+
function bareCursorFamilyId(model) {
|
|
6707
|
+
const familyId = model === "auto" ? "default" : agentModelFamilyId(model);
|
|
6708
|
+
return familyId.startsWith("cursor-") ? familyId.slice("cursor-".length) : familyId;
|
|
6709
|
+
}
|
|
6710
|
+
function cursorParameterizedSelection(model, reasoningLevel) {
|
|
6711
|
+
const familyId = bareCursorFamilyId(model);
|
|
6712
|
+
const selection = CURSOR_LEGACY_FAMILY_SELECTIONS[familyId] ?? {
|
|
6713
|
+
modelId: familyId
|
|
6714
|
+
};
|
|
6715
|
+
return selection.reasoningLevel !== void 0 || reasoningLevel === void 0 ? selection : { ...selection, reasoningLevel };
|
|
6716
|
+
}
|
|
6717
|
+
function cursorCatalogModel(model) {
|
|
6718
|
+
const selection = cursorParameterizedSelection(
|
|
6719
|
+
model.id,
|
|
6720
|
+
model.defaultReasoningEffort
|
|
6721
|
+
);
|
|
6722
|
+
const efforts = /* @__PURE__ */ new Map();
|
|
6723
|
+
for (const effort of model.supportedReasoningEfforts) {
|
|
6724
|
+
const level = cursorParameterizedSelection(model.id, effort.reasoningEffort).reasoningLevel ?? effort.reasoningEffort;
|
|
6725
|
+
if (!efforts.has(level)) {
|
|
6726
|
+
efforts.set(level, { ...effort, reasoningEffort: level });
|
|
6727
|
+
}
|
|
6728
|
+
}
|
|
6729
|
+
return {
|
|
6730
|
+
model: {
|
|
6731
|
+
...model,
|
|
6732
|
+
id: selection.modelId,
|
|
6733
|
+
model: selection.modelId,
|
|
6734
|
+
supportedReasoningEfforts: [...efforts.values()].sort(
|
|
6735
|
+
(a, b) => reasoningLevelValues.indexOf(a.reasoningEffort) - reasoningLevelValues.indexOf(b.reasoningEffort)
|
|
6736
|
+
),
|
|
6737
|
+
defaultReasoningEffort: selection.reasoningLevel ?? model.defaultReasoningEffort
|
|
6738
|
+
},
|
|
6739
|
+
directFamily: bareCursorFamilyId(model.id) === selection.modelId
|
|
6740
|
+
};
|
|
6741
|
+
}
|
|
6742
|
+
function buildCursorParameterizedModelCatalog(models) {
|
|
6743
|
+
const normalized = /* @__PURE__ */ new Map();
|
|
6744
|
+
for (const model of models) {
|
|
6745
|
+
const candidate = cursorCatalogModel(model);
|
|
6746
|
+
const current = normalized.get(candidate.model.id);
|
|
6747
|
+
if (current === void 0) {
|
|
6748
|
+
normalized.set(candidate.model.id, candidate);
|
|
6749
|
+
continue;
|
|
6750
|
+
}
|
|
6751
|
+
const preferred = candidate.directFamily && !current.directFamily ? candidate : current;
|
|
6752
|
+
const efforts = new Map(
|
|
6753
|
+
preferred.model.supportedReasoningEfforts.map((effort) => [
|
|
6754
|
+
effort.reasoningEffort,
|
|
6755
|
+
effort
|
|
6756
|
+
])
|
|
6757
|
+
);
|
|
6758
|
+
for (const effort of [
|
|
6759
|
+
...current.model.supportedReasoningEfforts,
|
|
6760
|
+
...candidate.model.supportedReasoningEfforts
|
|
6761
|
+
]) {
|
|
6762
|
+
if (!efforts.has(effort.reasoningEffort)) {
|
|
6763
|
+
efforts.set(effort.reasoningEffort, effort);
|
|
6764
|
+
}
|
|
6765
|
+
}
|
|
6766
|
+
normalized.set(candidate.model.id, {
|
|
6767
|
+
model: {
|
|
6768
|
+
...preferred.model,
|
|
6769
|
+
supportedReasoningEfforts: [...efforts.values()].sort(
|
|
6770
|
+
(a, b) => reasoningLevelValues.indexOf(a.reasoningEffort) - reasoningLevelValues.indexOf(b.reasoningEffort)
|
|
6771
|
+
),
|
|
6772
|
+
isDefault: current.model.isDefault || candidate.model.isDefault
|
|
6773
|
+
},
|
|
6774
|
+
directFamily: preferred.directFamily
|
|
6775
|
+
});
|
|
6776
|
+
}
|
|
6777
|
+
return [...normalized.values()].map((entry) => entry.model);
|
|
6778
|
+
}
|
|
6779
|
+
|
|
6666
6780
|
// ../provider-bridge-acp/src/session-params.ts
|
|
6667
6781
|
function sanitizeAcpSkillDescription(description) {
|
|
6668
6782
|
const sanitized = description.replace(/[\r\n]+/gu, " ").replace(/\s+/gu, " ").replace(/[<>]/gu, "").trim();
|
|
@@ -6751,26 +6865,6 @@ function buildAcpModelListParams(launchSpec, options) {
|
|
|
6751
6865
|
...launchSpec.nativeReasoning !== void 0 ? { nativeReasoning: launchSpec.nativeReasoning } : {}
|
|
6752
6866
|
};
|
|
6753
6867
|
}
|
|
6754
|
-
var CURSOR_LEGACY_FAMILY_SELECTIONS = {
|
|
6755
|
-
"claude-4-sonnet": { modelId: "claude-sonnet-4" },
|
|
6756
|
-
"claude-4.5-opus": { modelId: "claude-opus-4-5" },
|
|
6757
|
-
"claude-4.5-sonnet": { modelId: "claude-sonnet-4-5" },
|
|
6758
|
-
"claude-4.6-opus": { modelId: "claude-opus-4-6" },
|
|
6759
|
-
"claude-4.6-sonnet": { modelId: "claude-sonnet-4-6" },
|
|
6760
|
-
"gemini-3.6-flash-minimal": {
|
|
6761
|
-
modelId: "gemini-3.6-flash",
|
|
6762
|
-
reasoningLevel: "low"
|
|
6763
|
-
},
|
|
6764
|
-
"gpt-5.1-codex-max": { modelId: "gpt-5.1" }
|
|
6765
|
-
};
|
|
6766
|
-
function cursorParameterizedSelection(model, reasoningLevel) {
|
|
6767
|
-
const familyId = model === "auto" ? "default" : agentModelFamilyId(model);
|
|
6768
|
-
const bareFamilyId = familyId.startsWith("cursor-") ? familyId.slice("cursor-".length) : familyId;
|
|
6769
|
-
const selection = CURSOR_LEGACY_FAMILY_SELECTIONS[bareFamilyId] ?? {
|
|
6770
|
-
modelId: bareFamilyId
|
|
6771
|
-
};
|
|
6772
|
-
return selection.reasoningLevel !== void 0 || reasoningLevel === void 0 ? selection : { ...selection, reasoningLevel };
|
|
6773
|
-
}
|
|
6774
6868
|
function buildAcpModelSelectionParam(launchSpec, options, parameterizedModelPicker, dialectId) {
|
|
6775
6869
|
const model = options.model;
|
|
6776
6870
|
const listCommand = buildAcpModelListCommand(launchSpec);
|
|
@@ -8636,6 +8730,7 @@ async function startAgentSession(request) {
|
|
|
8636
8730
|
},
|
|
8637
8731
|
pendingInstructions: params.instructions,
|
|
8638
8732
|
activePromptKind: null,
|
|
8733
|
+
compactionAgentMessage: "",
|
|
8639
8734
|
queuedInputs: [],
|
|
8640
8735
|
promptRequestPending: false,
|
|
8641
8736
|
cancelRequested: false,
|
|
@@ -8977,6 +9072,7 @@ function runTurn(session, firstInput) {
|
|
|
8977
9072
|
}
|
|
8978
9073
|
function startCompaction(session, pending) {
|
|
8979
9074
|
session.activePromptKind = "compaction";
|
|
9075
|
+
session.compactionAgentMessage = "";
|
|
8980
9076
|
emitForSession(session, ACP_COMPACTION_STARTED_METHOD, {
|
|
8981
9077
|
threadId: session.bbThreadId
|
|
8982
9078
|
});
|
|
@@ -8994,7 +9090,10 @@ function startCompaction(session, pending) {
|
|
|
8994
9090
|
acceptTurnInput(session, pending);
|
|
8995
9091
|
session.turnSettled = promptResult.then((result) => {
|
|
8996
9092
|
finish(
|
|
8997
|
-
result.stopReason === "end_turn" ?
|
|
9093
|
+
result.stopReason === "end_turn" ? compactionOutcomeForEndTurn(
|
|
9094
|
+
session.dialect,
|
|
9095
|
+
session.compactionAgentMessage
|
|
9096
|
+
) : result.stopReason === "cancelled" ? { status: "interrupted" } : {
|
|
8998
9097
|
status: "failed",
|
|
8999
9098
|
error: `Agent stopped compaction: ${result.stopReason}`
|
|
9000
9099
|
}
|
|
@@ -9080,6 +9179,14 @@ function handleAgentNotification(session, method, params) {
|
|
|
9080
9179
|
if (parsed.data.sessionId !== session.providerThreadId) {
|
|
9081
9180
|
return;
|
|
9082
9181
|
}
|
|
9182
|
+
if (session.activePromptKind === "compaction") {
|
|
9183
|
+
const chunk = acpAgentMessageChunkUpdateSchema.safeParse(
|
|
9184
|
+
parsed.data.update
|
|
9185
|
+
);
|
|
9186
|
+
if (chunk.success) {
|
|
9187
|
+
session.compactionAgentMessage += extractAcpContentText(chunk.data.content) ?? "";
|
|
9188
|
+
}
|
|
9189
|
+
}
|
|
9083
9190
|
emitForSession(session, ACP_UPDATE_METHOD, update);
|
|
9084
9191
|
}
|
|
9085
9192
|
function decodeAcpBridgeJsonRpcRequest(raw) {
|
|
@@ -9113,13 +9220,14 @@ function decodeAcpBridgeJsonRpcRequest(raw) {
|
|
|
9113
9220
|
issues: command.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; ")
|
|
9114
9221
|
};
|
|
9115
9222
|
}
|
|
9116
|
-
async function handleModelList(id, params) {
|
|
9223
|
+
async function handleModelList(id, params, dialectId) {
|
|
9117
9224
|
const catalog = params.listCommand ? await loadAgentModelCatalog(params.listCommand) : null;
|
|
9118
9225
|
if (catalog) {
|
|
9226
|
+
const catalogModels = params.parameterizedModelPicker && dialectId === "cursor" ? buildCursorParameterizedModelCatalog(catalog.models) : catalog.models;
|
|
9119
9227
|
sendResult(
|
|
9120
9228
|
id,
|
|
9121
9229
|
splitPrimaryModels(
|
|
9122
|
-
applyConfiguredReasoningToModels(
|
|
9230
|
+
applyConfiguredReasoningToModels(catalogModels, {
|
|
9123
9231
|
reasoningCli: params.reasoningCli,
|
|
9124
9232
|
nativeReasoning: params.nativeReasoning
|
|
9125
9233
|
}),
|
|
@@ -9221,7 +9329,8 @@ async function handleRequest2(request) {
|
|
|
9221
9329
|
buildAcpModelListParams(
|
|
9222
9330
|
decodeLaunchSpec(request.params.providerOptions),
|
|
9223
9331
|
modelPicker
|
|
9224
|
-
)
|
|
9332
|
+
),
|
|
9333
|
+
decodeDialectId(request.params.providerOptions)
|
|
9225
9334
|
);
|
|
9226
9335
|
return;
|
|
9227
9336
|
}
|
package/dist/testing/app.js
CHANGED
|
@@ -425,6 +425,7 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
425
425
|
const collected = {
|
|
426
426
|
homepageSections: [],
|
|
427
427
|
settingsSections: [],
|
|
428
|
+
appOverlays: [],
|
|
428
429
|
navPanels: [],
|
|
429
430
|
threadPanelActions: [],
|
|
430
431
|
newThreadPanelActions: [],
|
|
@@ -447,6 +448,7 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
447
448
|
const seenIds = {
|
|
448
449
|
homepageSection: /* @__PURE__ */ new Set(),
|
|
449
450
|
settingsSection: /* @__PURE__ */ new Set(),
|
|
451
|
+
appOverlay: /* @__PURE__ */ new Set(),
|
|
450
452
|
navPanel: /* @__PURE__ */ new Set(),
|
|
451
453
|
threadPanelAction: /* @__PURE__ */ new Set(),
|
|
452
454
|
newThreadPanelAction: /* @__PURE__ */ new Set(),
|
|
@@ -495,6 +497,15 @@ function collectPluginAppRegistrations(definition, onComposerCustomizationReject
|
|
|
495
497
|
component: requireComponent(kind, registration.component)
|
|
496
498
|
});
|
|
497
499
|
},
|
|
500
|
+
experimental_appOverlay(registration) {
|
|
501
|
+
const kind = "slots.experimental_appOverlay";
|
|
502
|
+
const id = requireSlotId(kind, registration?.id);
|
|
503
|
+
requireUniqueId(kind, seenIds.appOverlay, id);
|
|
504
|
+
collected.appOverlays.push({
|
|
505
|
+
id,
|
|
506
|
+
component: requireComponent(kind, registration.component)
|
|
507
|
+
});
|
|
508
|
+
},
|
|
498
509
|
navPanel(registration) {
|
|
499
510
|
const kind = "slots.navPanel";
|
|
500
511
|
const id = requireSlotId(kind, registration?.id);
|
package/dist/testing/index.js
CHANGED
|
@@ -289,7 +289,7 @@ var PLUGIN_HTTP_METHODS = /* @__PURE__ */ new Set([
|
|
|
289
289
|
"HEAD",
|
|
290
290
|
"OPTIONS"
|
|
291
291
|
]);
|
|
292
|
-
var RPC_METHOD_PATTERN = /^[a-zA-Z0-9_-]
|
|
292
|
+
var RPC_METHOD_PATTERN = /^[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*$/;
|
|
293
293
|
var BACKGROUND_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
294
294
|
var CLI_COMMAND_NAME_PATTERN = /^[a-z0-9-]+$/;
|
|
295
295
|
var AGENT_TOOL_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
@@ -312,6 +312,9 @@ var stringSettingSchemaSchema = z3.custom(
|
|
|
312
312
|
var booleanSettingSchemaSchema = z3.custom(
|
|
313
313
|
(value) => isStandardSchema(value)
|
|
314
314
|
);
|
|
315
|
+
var numberSettingSchemaSchema = z3.custom(
|
|
316
|
+
(value) => isStandardSchema(value)
|
|
317
|
+
);
|
|
315
318
|
var settingDescriptorSchema = z3.discriminatedUnion("type", [
|
|
316
319
|
z3.object({
|
|
317
320
|
type: z3.literal("string"),
|
|
@@ -333,6 +336,12 @@ var settingDescriptorSchema = z3.discriminatedUnion("type", [
|
|
|
333
336
|
experimental_schema: booleanSettingSchemaSchema.optional(),
|
|
334
337
|
default: z3.boolean().optional()
|
|
335
338
|
}).strict(),
|
|
339
|
+
z3.object({
|
|
340
|
+
type: z3.literal("number"),
|
|
341
|
+
...settingsBaseFields,
|
|
342
|
+
experimental_schema: numberSettingSchemaSchema.optional(),
|
|
343
|
+
default: z3.number().finite().optional()
|
|
344
|
+
}).strict(),
|
|
336
345
|
z3.object({
|
|
337
346
|
type: z3.literal("select"),
|
|
338
347
|
...settingsBaseFields,
|
|
@@ -429,6 +438,21 @@ function validateSettingsUpdate(descriptors, values) {
|
|
|
429
438
|
}
|
|
430
439
|
continue;
|
|
431
440
|
}
|
|
441
|
+
if (descriptor.type === "number") {
|
|
442
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
443
|
+
errors.push(`setting "${key}" expects a finite number`);
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
const validationError2 = settingSchemaError(
|
|
447
|
+
key,
|
|
448
|
+
descriptor.experimental_schema,
|
|
449
|
+
value
|
|
450
|
+
);
|
|
451
|
+
if (validationError2 !== null) {
|
|
452
|
+
errors.push(validationError2);
|
|
453
|
+
}
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
432
456
|
if (typeof value !== "string") {
|
|
433
457
|
errors.push(`setting "${key}" expects a string`);
|
|
434
458
|
continue;
|
|
@@ -1766,7 +1790,14 @@ function readSettingsValues(descriptors, stored) {
|
|
|
1766
1790
|
const values = {};
|
|
1767
1791
|
for (const [key, descriptor] of Object.entries(descriptors)) {
|
|
1768
1792
|
let value = stored.get(key);
|
|
1769
|
-
|
|
1793
|
+
if (descriptor.type === "number" && typeof value === "string") {
|
|
1794
|
+
const legacyNumber = Number(value.trim());
|
|
1795
|
+
value = value.trim().length > 0 && Number.isFinite(legacyNumber) ? legacyNumber : void 0;
|
|
1796
|
+
}
|
|
1797
|
+
if (descriptor.type === "number" && typeof value === "number" && !Number.isFinite(value)) {
|
|
1798
|
+
value = void 0;
|
|
1799
|
+
}
|
|
1800
|
+
const expected = descriptor.type === "boolean" ? "boolean" : descriptor.type === "number" ? "number" : "string";
|
|
1770
1801
|
if (typeof value !== expected) value = void 0;
|
|
1771
1802
|
if (descriptor.type === "select" && typeof value === "string" && !descriptor.options.includes(value)) {
|
|
1772
1803
|
value = void 0;
|
|
@@ -2143,9 +2174,7 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
2143
2174
|
"ALTER TABLE _bb_migrations ADD COLUMN statement_hash TEXT"
|
|
2144
2175
|
);
|
|
2145
2176
|
}
|
|
2146
|
-
const rows = database.prepare(
|
|
2147
|
-
"SELECT id, statement_hash FROM _bb_migrations ORDER BY id"
|
|
2148
|
-
).all();
|
|
2177
|
+
const rows = database.prepare("SELECT id, statement_hash FROM _bb_migrations ORDER BY id").all();
|
|
2149
2178
|
const applied = /* @__PURE__ */ new Map();
|
|
2150
2179
|
for (const row of rows) applied.set(row.id, row.statement_hash);
|
|
2151
2180
|
const statementHashes = statements.map(migrationStatementHash);
|
|
@@ -2190,7 +2219,7 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
2190
2219
|
const prev = readSettingsValues(settingsDescriptors, storedSettings);
|
|
2191
2220
|
for (const [key, value] of Object.entries(values)) {
|
|
2192
2221
|
if (value === null) storedSettings.delete(key);
|
|
2193
|
-
else if (typeof value === "string" || typeof value === "boolean") {
|
|
2222
|
+
else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
2194
2223
|
storedSettings.set(key, value);
|
|
2195
2224
|
} else {
|
|
2196
2225
|
throw new Error(`setting "${key}" has an unsupported value`);
|
|
@@ -2302,7 +2331,7 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
2302
2331
|
for (const [name, contractValue] of contractEntries) {
|
|
2303
2332
|
if (!RPC_METHOD_PATTERN.test(name)) {
|
|
2304
2333
|
throw new Error(
|
|
2305
|
-
`invalid rpc method name "${name}" \u2014 use letters, digits, "-" and "_"`
|
|
2334
|
+
`invalid rpc method name "${name}" \u2014 use dot-separated segments with letters, digits, "-" and "_"`
|
|
2306
2335
|
);
|
|
2307
2336
|
}
|
|
2308
2337
|
const methodContract = readRpcMethodContract(name, contractValue);
|
|
@@ -2652,9 +2681,14 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
2652
2681
|
);
|
|
2653
2682
|
}
|
|
2654
2683
|
};
|
|
2684
|
+
const appUrl = options.appUrl ?? null;
|
|
2655
2685
|
const loopbackBaseUrl = options.loopbackBaseUrl ?? "http://127.0.0.1:38886";
|
|
2656
2686
|
const dataDir = options.dataDir ?? "/tmp/bb-fake-data-dir";
|
|
2657
2687
|
const server = {
|
|
2688
|
+
get experimental_appUrl() {
|
|
2689
|
+
assertLive();
|
|
2690
|
+
return appUrl;
|
|
2691
|
+
},
|
|
2658
2692
|
get loopbackBaseUrl() {
|
|
2659
2693
|
assertLive();
|
|
2660
2694
|
return loopbackBaseUrl;
|
|
@@ -2675,6 +2709,7 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
2675
2709
|
"thread.failed": [],
|
|
2676
2710
|
"thread.archived": [],
|
|
2677
2711
|
"thread.deleted": [],
|
|
2712
|
+
"interaction.pending": [],
|
|
2678
2713
|
"message.queued": [],
|
|
2679
2714
|
"message.dispatched": [],
|
|
2680
2715
|
"turn.failed": []
|
|
@@ -3014,6 +3049,7 @@ function createFakePluginHostInternal(options, sharedState) {
|
|
|
3014
3049
|
"thread.failed": threadEventHandlers["thread.failed"].length,
|
|
3015
3050
|
"thread.archived": threadEventHandlers["thread.archived"].length,
|
|
3016
3051
|
"thread.deleted": threadEventHandlers["thread.deleted"].length,
|
|
3052
|
+
"interaction.pending": threadEventHandlers["interaction.pending"].length,
|
|
3017
3053
|
"message.queued": threadEventHandlers["message.queued"].length,
|
|
3018
3054
|
"message.dispatched": threadEventHandlers["message.dispatched"].length,
|
|
3019
3055
|
"turn.failed": threadEventHandlers["turn.failed"].length
|