diff --git a/catalog/plugins.json b/catalog/plugins.json index 00376e3..addfcfe 100644 --- a/catalog/plugins.json +++ b/catalog/plugins.json @@ -6,6 +6,7 @@ "name": "Design Doctrine", "packageName": "bb-plugin-design-doctrine", "pluginId": "design-doctrine", + "bbPluginSdk": "^0.4.0", "purpose": "Turns repeated product-design feedback into reusable rules.", "whenToUse": "When designing, building, or reviewing product UI against personal design judgment.", "surfaces": ["Sidebar panel", "bb doctrine", "Agent skill"], @@ -22,6 +23,7 @@ "name": "Improve Prompt", "packageName": "bb-plugin-prompt-shaper", "pluginId": "prompt-shaper", + "bbPluginSdk": "^0.4.1", "purpose": "Rewrites a rough composer draft into a context-complete prompt.", "whenToUse": "When a request is underspecified or needs a clearer handoff before sending.", "surfaces": ["Composer action", "Hidden helper thread", "Agent skill"], @@ -38,6 +40,7 @@ "name": "Omegacode", "packageName": "bb-plugin-omega", "pluginId": "omega", + "bbPluginSdk": "^0.4.1", "purpose": "Monitors Omegacode workflows globally while keeping live composer progress owner-scoped.", "whenToUse": "When scanning workflows across threads or following the run owned by the current thread.", "surfaces": ["Sidebar plugin page", "Composer banner", "bb omegacode"], @@ -54,6 +57,7 @@ "name": "Thread Hover Cards", "packageName": "bb-plugin-thread-hover-cards", "pluginId": "thread-hover-cards", + "bbPluginSdk": "^0.4.0", "purpose": "Previews thread status and repository context from the sidebar.", "whenToUse": "When scanning several active threads without opening each one.", "surfaces": ["Sidebar thread rows", "Thread summary RPC"], @@ -70,6 +74,7 @@ "name": "UI Patterns", "packageName": "bb-plugin-ui-patterns", "pluginId": "ui-patterns", + "bbPluginSdk": "^0.4.0", "purpose": "Browses and queries approved-source UI components and interaction patterns.", "whenToUse": "When choosing, comparing, or citing established UI patterns.", "surfaces": ["Thread panel", "bb ui-patterns", "Agent skill"], diff --git a/docs/provenance.md b/docs/provenance.md index 01ac373..d5643a1 100644 --- a/docs/provenance.md +++ b/docs/provenance.md @@ -12,4 +12,4 @@ All five installed or recovered personal plugins were copied into this repositor Design Loop was excluded because it was stale local source and was not installed. The Design Doctrine, Improve Prompt, and Thread Hover Cards repositories now remain as read-only GitHub archives with migration pointers to this monorepo. No local checkout was deleted. Omegacode and UI Patterns had no legacy remote repository to archive. -The vendored `@bb/plugin-sdk` testing archive comes from official bb `main` commit `6e72cd0276947b400b4e5862668d855051ba2060`; its exact archive hash is recorded in `tooling/vendor/sdk-provenance.json`. +The vendored `@bb/plugin-sdk` testing archive comes from official bb commit `86dab37a706db82cd8a1e6015703b917de8c0e5f`; its exact archive hash is recorded in `tooling/vendor/sdk-provenance.json`. diff --git a/package-lock.json b/package-lock.json index 5bd0500..bdcdd7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "packages/*" ], "devDependencies": { - "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "bb-app": "0.0.32" }, "engines": { @@ -310,9 +310,9 @@ } }, "node_modules/@bb/plugin-sdk": { - "version": "0.4.0", - "resolved": "file:tooling/vendor/bb-plugin-sdk-0.4.0.tgz", - "integrity": "sha512-ehE6qzOsEt1mauA9ttKK6RvB4N4nwpY7uM9IoVDxPHXNwyBKnPNN/IhywrAHsH+EiCZQBthKPBzj46KzTcSJIg==", + "version": "0.4.1", + "resolved": "file:tooling/vendor/bb-plugin-sdk-0.4.1.tgz", + "integrity": "sha512-JTbJMNhwEQWNbxfaJpl2lvgAOxUd8q8j0Qc0zF7X16FKAij30EDhweqv2j62HOdWZXiCl1eDfjrturVhAkmwKg==", "dev": true, "peerDependencies": { "@testing-library/react": "^16.3.2", @@ -7252,7 +7252,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@types/better-sqlite3": "^7.6.12", "@types/node": "^22.0.0", "@types/react": "^19.0.0", @@ -7281,7 +7281,7 @@ "tailwind-merge": "^3.4.0" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@radix-ui/react-dialog": "^1.1.19", "@radix-ui/react-tooltip": "^1.2.12", "@testing-library/react": "^16.3.2", @@ -7302,7 +7302,7 @@ }, "engines": { "bb": ">=0.0.32", - "bbPluginSdk": "^0.4.0" + "bbPluginSdk": "^0.4.1" } }, "plugins/omegacode": { @@ -7318,7 +7318,7 @@ "tailwind-merge": "^3.4.0" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@radix-ui/react-dialog": "^1.1.19", "@testing-library/react": "^16.3.2", "@types/better-sqlite3": "^7.6.12", @@ -7338,7 +7338,7 @@ }, "engines": { "bb": ">=0.0.32", - "bbPluginSdk": "^0.4.0" + "bbPluginSdk": "^0.4.1" } }, "plugins/thread-hover-cards": { @@ -7394,7 +7394,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@radix-ui/react-dialog": "^1.1.19", "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", diff --git a/package.json b/package.json index 8918b17..fe4266f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "typecheck": "npm run typecheck --workspaces --if-present" }, "devDependencies": { - "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "bb-app": "0.0.32" } } diff --git a/plugins/design-doctrine/package.json b/plugins/design-doctrine/package.json index 20ea498..9c8509c 100644 --- a/plugins/design-doctrine/package.json +++ b/plugins/design-doctrine/package.json @@ -41,7 +41,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@types/better-sqlite3": "^7.6.12", "@types/node": "^22.0.0", "@types/react": "^19.0.0", diff --git a/plugins/design-doctrine/types/bb-plugin-sdk-app.d.ts b/plugins/design-doctrine/types/bb-plugin-sdk-app.d.ts index ca38030..3957233 100644 --- a/plugins/design-doctrine/types/bb-plugin-sdk-app.d.ts +++ b/plugins/design-doctrine/types/bb-plugin-sdk-app.d.ts @@ -123,6 +123,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -290,8 +306,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -351,6 +367,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -389,37 +406,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -457,19 +478,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -502,16 +527,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -546,4 +588,4 @@ declare const useBbNavigate: () => BbNavigate; declare const useComposer: () => PluginComposerApi; export { definePluginApp, useBbContext, useBbNavigate, useComposer, useRealtime, useRealtimeConnectionState, useRpc, useSettings }; -export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/design-doctrine/types/bb-plugin-sdk.d.ts b/plugins/design-doctrine/types/bb-plugin-sdk.d.ts index 21632b7..fdbb978 100644 --- a/plugins/design-doctrine/types/bb-plugin-sdk.d.ts +++ b/plugins/design-doctrine/types/bb-plugin-sdk.d.ts @@ -129,6 +129,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -288,6 +295,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -296,8 +312,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -357,6 +373,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -395,37 +412,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -463,19 +484,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -508,16 +533,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -739,9 +781,9 @@ declare const environmentSchema: z$1.ZodObject<{ isGitRepo: z$1.ZodBoolean; isWorktree: z$1.ZodBoolean; workspaceProvisionType: z$1.ZodEnum<{ - personal: "personal"; - "managed-worktree": "managed-worktree"; unmanaged: "unmanaged"; + "managed-worktree": "managed-worktree"; + personal: "personal"; }>; branchName: z$1.ZodNullable; baseBranch: z$1.ZodNullable; @@ -834,8 +876,8 @@ declare const providerPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -972,8 +1014,8 @@ declare const pluginPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -1116,8 +1158,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -1161,10 +1203,10 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1294,17 +1336,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1320,8 +1362,8 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1522,17 +1564,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1548,8 +1590,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1677,8 +1719,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1749,8 +1791,8 @@ declare const threadEventSchema: z$1.ZodPipe>; }, z$1.core.$strip>>; explanation: z$1.ZodOptional; @@ -2228,8 +2270,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2280,8 +2322,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2450,8 +2492,8 @@ declare const threadTimelinePendingTodosSchema: z$1.ZodObject<{ id: z$1.ZodString; text: z$1.ZodString; status: z$1.ZodEnum<{ - completed: "completed"; pending: "pending"; + completed: "completed"; in_progress: "in_progress"; }>; }, z$1.core.$strip>>; @@ -2868,6 +2910,41 @@ declare const projectCommandsQuerySchema: z$1.ZodObject<{ environmentId: z$1.ZodOptional, z$1.ZodOptional>>; }, z$1.core.$strict>; type ProjectCommandsQuery = z$1.infer; +declare const skillListResponseSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + provider: z$1.ZodNullable>; + scope: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-builtin": "bb-builtin"; + "bb-user": "bb-user"; + "bb-project": "bb-project"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + pluginId: z$1.ZodNullable; + filePath: z$1.ZodString; + manageable: z$1.ZodBoolean; + }, z$1.core.$strip>>; +}, z$1.core.$strip>; +type SkillListResponse = z$1.infer; +declare const skillContentResponseSchema: z$1.ZodObject<{ + content: z$1.ZodString; + revision: z$1.ZodString; +}, z$1.core.$strip>; +type SkillContentResponse = z$1.infer; +declare const skillFilesResponseSchema: z$1.ZodObject<{ + files: z$1.ZodArray; + truncated: z$1.ZodBoolean; +}, z$1.core.$strip>; +type SkillFilesResponse = z$1.infer; declare const projectResponseSchema: z$1.ZodObject<{ id: z$1.ZodString; kind: z$1.ZodEnum<{ @@ -3020,6 +3097,57 @@ declare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{ }, z$1.core.$strict>; type CopyProjectAttachmentsRequest = z$1.infer; +declare const registrySkillSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + name: z$1.ZodString; + installs: z$1.ZodNumber; + stars: z$1.ZodNullable; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; +}, z$1.core.$strip>; +type RegistrySkill = z$1.infer; +declare const registrySkillsPageSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; + }, z$1.core.$strip>>; + pagination: z$1.ZodObject<{ + page: z$1.ZodNumber; + perPage: z$1.ZodNumber; + total: z$1.ZodNumber; + hasMore: z$1.ZodBoolean; + }, z$1.core.$strip>; +}, z$1.core.$strip>; +type RegistrySkillsPage = z$1.infer; +declare const registrySkillDetailSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + hash: z$1.ZodNullable; + files: z$1.ZodNullable>>; +}, z$1.core.$strip>; +type RegistrySkillDetail = z$1.infer; +declare const registrySkillInstallResponseSchema: z$1.ZodObject<{ + ok: z$1.ZodLiteral; + filePath: z$1.ZodString; +}, z$1.core.$strip>; +type RegistrySkillInstallResponse = z$1.infer; + declare const updateEnvironmentRequestSchema: z$1.ZodObject<{ mergeBaseBranch: z$1.ZodOptional>; name: z$1.ZodOptional>; @@ -3145,8 +3273,8 @@ declare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{ type EnvironmentArchiveThreadsResponse = z$1.infer; declare const pullRequestMergeMethodSchema: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; type PullRequestMergeMethod = z$1.infer; declare const commitActionResponseSchema: z$1.ZodObject<{ @@ -3177,8 +3305,8 @@ declare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{ action: z$1.ZodLiteral<"pull_request_merge">; method: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; message: z$1.ZodString; }, z$1.core.$strip>; @@ -3339,10 +3467,10 @@ declare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z mergeability: z$1.ZodObject<{ state: z$1.ZodEnum<{ unknown: "unknown"; - blocked: "blocked"; draft: "draft"; mergeable: "mergeable"; conflicts: "conflicts"; + blocked: "blocked"; }>; mergeStateStatus: z$1.ZodNullable; attention: z$1.ZodEnum<{ none: "none"; - blocked: "blocked"; merged: "merged"; draft: "draft"; closed: "closed"; changes_requested: "changes_requested"; review_requested: "review_requested"; conflicts: "conflicts"; + blocked: "blocked"; checks_failed: "checks_failed"; checks_pending: "checks_pending"; ready_to_merge: "ready_to_merge"; @@ -3787,8 +3915,8 @@ declare const hostDaemonCommandRegistry: { }, z$1.core.$strict>], "kind">>; disallowedTools: z$1.ZodOptional>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; type: z$1.ZodLiteral<"thread.start">; requestId: z$1.ZodString; @@ -4276,8 +4404,8 @@ declare const hostDaemonCommandRegistry: { }>; }, z$1.core.$strip>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; projectId: z$1.ZodString; providerId: z$1.ZodString; @@ -5090,6 +5218,67 @@ declare const hostDaemonCommandRegistry: { argumentHint: z$1.ZodNullable; }, z$1.core.$strip>>; }, z$1.core.$strip>, "onlineRpc", true>; + "host.list_skills": HostDaemonCommandDescriptor<"host.list_skills", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.list_skills">; + providerId: z$1.ZodString; + cwd: z$1.ZodNullable; + }, z$1.core.$strip>, z$1.ZodObject<{ + skills: z$1.ZodArray; + filePath: z$1.ZodString; + rootKind: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-project": "bb-project"; + "bb-data-dir": "bb-data-dir"; + "bb-builtin": "bb-builtin"; + "provider-project": "provider-project"; + "provider-user": "provider-user"; + }>; + }, z$1.core.$strip>>; + }, z$1.core.$strip>, "onlineRpc", true>; + "host.install_registry_skill": HostDaemonCommandDescriptor<"host.install_registry_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.install_registry_skill">; + packageRef: z$1.ZodString; + skillId: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodObject<{ + filePath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.delete_skill": HostDaemonCommandDescriptor<"host.delete_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.delete_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + rootPath: z$1.ZodNullable; + }, z$1.core.$strict>, z$1.ZodObject<{ + deletedPath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.write_skill": HostDaemonCommandDescriptor<"host.write_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.write_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + content: z$1.ZodString; + expectedSha256: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"written">; + filePath: z$1.ZodString; + sha256: z$1.ZodString; + }, z$1.core.$strip>, z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"conflict">; + currentSha256: z$1.ZodNullable; + }, z$1.core.$strip>], "outcome">, "onlineRpc", false>; "host.list_branches": HostDaemonCommandDescriptor<"host.list_branches", z$1.ZodObject<{ type: z$1.ZodLiteral<"host.list_branches">; path: z$1.ZodString; @@ -5475,9 +5664,9 @@ declare const hostDaemonCommandRegistry: { executablePath: z$1.ZodNullable; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -5650,13 +5839,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5700,13 +5889,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5762,13 +5951,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5810,13 +5999,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5934,9 +6123,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -6087,11 +6276,11 @@ type HostProviderCliInstallEvent = ProviderCliInstallEvent; declare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{ id: z$1.ZodString; outcome: z$1.ZodEnum<{ + unavailable: "unavailable"; incompatible: "incompatible"; current: "current"; "update-available": "update-available"; pinned: "pinned"; - unavailable: "unavailable"; }>; devMode: z$1.ZodOptional>; installed: z$1.ZodObject<{ @@ -6158,11 +6347,11 @@ declare const installedPluginSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6178,6 +6367,7 @@ declare const installedPluginSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6251,11 +6441,11 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6271,6 +6461,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6345,11 +6536,11 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6365,6 +6556,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6465,6 +6657,7 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{ type PluginCatalogStatus = z$1.infer; declare const pluginCatalogSearchResultSchema: z$1.ZodObject<{ entryId: z$1.ZodString; + pluginId: z$1.ZodString; displayName: z$1.ZodString; description: z$1.ZodString; icon: z$1.ZodNullable; @@ -6948,9 +7141,9 @@ declare const terminalSessionSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -6979,9 +7172,9 @@ declare const terminalListResponseSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -9178,8 +9371,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ activePromptMode: z$1.ZodNullable; providerId: z$1.ZodEnum<{ - codex: "codex"; "claude-code": "claude-code"; + codex: "codex"; }>; prompt: z$1.ZodString; }, z$1.core.$strict>>; @@ -9355,8 +9548,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ updatedAt: z$1.ZodNumber; objective: z$1.ZodString; status: z$1.ZodEnum<{ - paused: "paused"; active: "active"; + paused: "paused"; budgetLimited: "budgetLimited"; complete: "complete"; }>; @@ -10228,6 +10421,62 @@ interface StatusArea { get(args?: StatusGetArgs): Promise; } +interface SkillWorkspaceArgs { + projectId: string; + environmentId: string | null; +} +interface SkillListArgs extends SkillWorkspaceArgs { + signal?: AbortSignal; +} +interface SkillIdentityArgs extends SkillListArgs { + skillId: string; +} +interface SkillContentArgs extends SkillIdentityArgs { + path: string; +} +interface SkillUpdateArgs extends SkillWorkspaceArgs { + skillId: string; + content: string; + revision: string; +} +interface SkillDeleteArgs extends SkillWorkspaceArgs { + skillId: string; +} +interface RegistrySkillsSearchArgs { + query?: string; + page?: number; + perPage?: number; +} +interface RegistrySkillIdArgs { + registrySkillId: string; +} +interface RegistrySkillSourceArgs { + source: string; + skillId: string; +} +interface RegistrySkillInstallArgs extends RegistrySkillIdArgs { + projectId: string; +} +interface SkillsRegistryArea { + detail(args: RegistrySkillSourceArgs): Promise; + get(args: RegistrySkillIdArgs): Promise; + install(args: RegistrySkillInstallArgs): Promise; + search(args?: RegistrySkillsSearchArgs): Promise; +} +interface SkillsArea { + getContent(args: SkillContentArgs): Promise; + list(args: SkillListArgs): Promise; + listFiles(args: SkillIdentityArgs): Promise; + registry: SkillsRegistryArea; + remove(args: SkillDeleteArgs): Promise<{ + deletedPath: string; + }>; + update(args: SkillUpdateArgs): Promise<{ + filePath: string; + revision: string; + }>; +} + type ThemeGetResult = AppTheme; type ThemeCatalogResult = ThemeCatalogResponse; type ThemeSetInput = AppThemeSelection; @@ -10699,6 +10948,7 @@ interface BbSdk extends BbRealtime { projects: ProjectsArea; plugins: PluginsArea; providers: ProvidersArea; + skills: SkillsArea; status: StatusArea; system: SystemArea; terminals: TerminalsArea; @@ -11306,4 +11556,4 @@ interface BbPluginApi { } export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract }; -export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/improve-prompt/app.tsx b/plugins/improve-prompt/app.tsx index 095d229..948882a 100644 --- a/plugins/improve-prompt/app.tsx +++ b/plugins/improve-prompt/app.tsx @@ -206,9 +206,15 @@ function PromptShaperAction({ }, [composerScopeKey, rpc]); useEffect(() => { - composer.setTextEffect?.(isRunning ? "shimmer" : null); - composer.setThreadRowStatus?.(isRunning ? THREAD_ROW_STATUS : null); - }, [composer.setTextEffect, composer.setThreadRowStatus, isRunning]); + composer.experimental_setTextEffect(isRunning ? "shimmer" : null); + composer.experimental_setThreadRowStatus( + isRunning ? THREAD_ROW_STATUS : null, + ); + }, [ + composer.experimental_setTextEffect, + composer.experimental_setThreadRowStatus, + isRunning, + ]); useEffect(() => { if ( @@ -222,10 +228,14 @@ function PromptShaperAction({ useEffect(() => { return () => { - composer.setTextEffect?.(null); - composer.setThreadRowStatus?.(null); + composer.experimental_setTextEffect(null); + composer.experimental_setThreadRowStatus(null); }; - }, [composer.setTextEffect, composer.setThreadRowStatus, composerScopeKey]); + }, [ + composer.experimental_setTextEffect, + composer.experimental_setThreadRowStatus, + composerScopeKey, + ]); useEffect(() => { const recoveredRequest = loadPendingRequest( @@ -245,8 +255,8 @@ function PromptShaperAction({ }, []); const clearLoadingEffects = useCallback(() => { - composerRef.current.setTextEffect?.(null); - composerRef.current.setThreadRowStatus?.(null); + composerRef.current.experimental_setTextEffect(null); + composerRef.current.experimental_setThreadRowStatus(null); }, []); const applyEnhancement = useCallback((enhancedPrompt: string) => { @@ -398,8 +408,8 @@ function PromptShaperAction({ startup: "starting", }; setUndoState(null); - composer.setTextEffect?.("shimmer"); - composer.setThreadRowStatus?.(THREAD_ROW_STATUS); + composer.experimental_setTextEffect("shimmer"); + composer.experimental_setThreadRowStatus(THREAD_ROW_STATUS); setPendingRequest(request); locallyStartingRequestIds.add(request.requestId); diff --git a/plugins/improve-prompt/dist/app.css b/plugins/improve-prompt/dist/app.css index 4ab7bd0..c044ee3 100644 --- a/plugins/improve-prompt/dist/app.css +++ b/plugins/improve-prompt/dist/app.css @@ -1,4 +1,4 @@ -/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */ @layer properties; @layer theme, utilities; @layer theme { @@ -153,10 +153,10 @@ position: sticky; } .inset-0 { - inset: 0px; + inset: calc(var(--spacing) * 0); } .inset-x-0 { - inset-inline: 0px; + inset-inline: calc(var(--spacing) * 0); } .top-4 { top: calc(var(--spacing) * 4); @@ -168,7 +168,7 @@ right: calc(var(--spacing) * 4); } .bottom-0 { - bottom: 0px; + bottom: calc(var(--spacing) * 0); } .left-\[50\%\] { left: 50%; @@ -204,7 +204,7 @@ margin-top: calc(var(--spacing) * 24); } .mb-1 { - margin-bottom: var(--spacing); + margin-bottom: calc(var(--spacing) * 1); } .block { display: block; @@ -248,7 +248,7 @@ height: auto; } .h-1 { - height: var(--spacing); + height: calc(var(--spacing) * 1); } .h-3\.5 { height: calc(var(--spacing) * 3.5); @@ -352,7 +352,7 @@ justify-content: center; } .gap-1 { - gap: var(--spacing); + gap: calc(var(--spacing) * 1); } .gap-2 { gap: calc(var(--spacing) * 2); @@ -447,13 +447,13 @@ background-color: transparent; } .p-0 { - padding: 0px; + padding: calc(var(--spacing) * 0); } .p-6 { padding: calc(var(--spacing) * 6); } .px-0 { - padding-inline: 0px; + padding-inline: calc(var(--spacing) * 0); } .px-1\.5 { padding-inline: calc(var(--spacing) * 1.5); @@ -471,7 +471,7 @@ padding-inline: calc(var(--spacing) * 8); } .py-1 { - padding-block: var(--spacing); + padding-block: calc(var(--spacing) * 1); } .py-1\.5 { padding-block: calc(var(--spacing) * 1.5); @@ -480,7 +480,7 @@ padding-block: calc(var(--spacing) * 2); } .pt-0 { - padding-top: 0px; + padding-top: calc(var(--spacing) * 0); } .pt-2 { padding-top: calc(var(--spacing) * 2); diff --git a/plugins/improve-prompt/dist/app.js b/plugins/improve-prompt/dist/app.js index f7b15a2..545edd4 100644 --- a/plugins/improve-prompt/dist/app.js +++ b/plugins/improve-prompt/dist/app.js @@ -110,6 +110,8 @@ if (runtime2 == null || runtime2.pluginSdkApp == null) { var mod2 = runtime2.pluginSdkApp; var { definePluginApp, + experimental_Markdown, + experimental_ThreadChat, useBbContext, useBbNavigate, useComposer, @@ -131,7 +133,7 @@ var { useSonner } = mod3; -// ../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@radix-ui/react-compose-refs/dist/index.mjs function setRef(ref, value) { if (typeof ref === "function") { return ref(value); @@ -167,7 +169,7 @@ function useComposedRefs(...refs) { return useCallback(composeRefs(...refs), refs); } -// ../../node_modules/@radix-ui/react-slot/dist/index.mjs +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@radix-ui/react-slot/dist/index.mjs // @__NO_SIDE_EFFECTS__ function createSlot(ownerName) { const Slot2 = forwardRef((props, forwardedRef) => { @@ -287,7 +289,7 @@ var createSlottableError = (ownerName) => { }; var use2 = react_exports[" use ".trim().toString()]; -// ../../node_modules/clsx/dist/clsx.mjs +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/clsx/dist/clsx.mjs function r(e) { var t, f, n = ""; if ("string" == typeof e || "number" == typeof e) n += e; @@ -302,7 +304,7 @@ function clsx() { return n; } -// ../../node_modules/class-variance-authority/dist/index.mjs +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/class-variance-authority/dist/index.mjs var falsyToString = (value) => typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value; var cx = clsx; var cva = (base, config) => (props) => { @@ -344,7 +346,7 @@ var cva = (base, config) => (props) => { return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className); }; -// ../../node_modules/tailwind-merge/dist/bundle-mjs.mjs +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/tailwind-merge/dist/bundle-mjs.mjs var concatArrays = (array1, array2) => { const combinedArray = new Array(array1.length + array2.length); for (let i = 0; i < array1.length; i++) { @@ -3598,12 +3600,12 @@ var getDefaultConfig = () => { }; var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig); -// lib/utils.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/lib/utils.ts function cn(...inputs) { return twMerge(clsx(inputs)); } -// components/ui/motion.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/components/ui/motion.ts var CONTROL_HOVER_TRANSITION = "transition-colors duration-150 hover:duration-0"; // bb-plugin-runtime-shim:react/jsx-runtime @@ -3618,7 +3620,7 @@ var { jsxs } = mod4; -// components/ui/button.tsx +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/components/ui/button.tsx var buttonVariants = cva( `inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ${CONTROL_HOVER_TRANSITION} focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`, { @@ -3659,7 +3661,7 @@ var Button = forwardRef( ); Button.displayName = "Button"; -// ../../node_modules/@hugeicons/react/dist/esm/HugeiconsIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/react/dist/esm/HugeiconsIcon.js var defaultAttributes = { xmlns: "http://www.w3.org/2000/svg", width: 24, @@ -3710,75 +3712,75 @@ var HugeiconsIcon = forwardRef(({ color = "currentColor", size = 24, strokeWidth }); HugeiconsIcon.displayName = "HugeiconsIcon"; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/AiContentGenerator01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/AiContentGenerator01Icon.js var AiContentGenerator01Icon = [ ["path", { d: "M11 21H10C6.22876 21 4.34315 21 3.17157 19.8284C2 18.6569 2 16.7712 2 13V10C2 6.22876 2 4.34315 3.17157 3.17157C4.34315 2 6.22876 2 10 2H12C15.7712 2 17.6569 2 18.8284 3.17157C20 4.34315 20 6.22876 20 10V10.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17.4069 14.4036C17.6192 13.8655 18.3808 13.8655 18.5931 14.4036L18.6298 14.4969C19.1482 15.8113 20.1887 16.8518 21.5031 17.3702L21.5964 17.4069C22.1345 17.6192 22.1345 18.3808 21.5964 18.5931L21.5031 18.6298C20.1887 19.1482 19.1482 20.1887 18.6298 21.5031L18.5931 21.5964C18.3808 22.1345 17.6192 22.1345 17.4069 21.5964L17.3702 21.5031C16.8518 20.1887 15.8113 19.1482 14.4969 18.6298L14.4036 18.5931C13.8655 18.3808 13.8655 17.6192 14.4036 17.4069L14.4969 17.3702C15.8113 16.8518 16.8518 15.8113 17.3702 14.4969L17.4069 14.4036Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M7 7H15M7 11.5H15M7 16H11", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Alert02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Alert02Icon.js var Alert02Icon = [ ["path", { d: "M13.9248 21H10.0752C5.44476 21 3.12955 21 2.27636 19.4939C1.42317 17.9879 2.60736 15.9914 4.97574 11.9985L6.90057 8.75333C9.17559 4.91778 10.3131 3 12 3C13.6869 3 14.8244 4.91777 17.0994 8.75332L19.0243 11.9985C21.3926 15.9914 22.5768 17.9879 21.7236 19.4939C20.8704 21 18.5552 21 13.9248 21Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 9V13", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.125 16.75H12M12.25 16.75C12.25 16.8881 12.1381 17 12 17C11.8619 17 11.75 16.8881 11.75 16.75C11.75 16.6119 11.8619 16.5 12 16.5C12.1381 16.5 12.25 16.6119 12.25 16.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/AlertCircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/AlertCircleIcon.js var AlertCircleIcon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 8V12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.125 15.75H12M12.25 15.75C12.25 15.8881 12.1381 16 12 16C11.8619 16 11.75 15.8881 11.75 15.75C11.75 15.6119 11.8619 15.5 12 15.5C12.1381 15.5 12.25 15.6119 12.25 15.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Archive03Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Archive03Icon.js var Archive03Icon = [ ["path", { d: "M21 7H3V13C3 16.7712 3 18.6569 4.17157 19.8284C5.34315 21 7.22876 21 11 21H13C16.7712 21 18.6569 21 19.8284 19.8284C21 18.6569 21 16.7712 21 13V7Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M21 7H3L4.2 5.4C5.08328 4.22229 5.52492 3.63344 6.15836 3.31672C6.7918 3 7.52786 3 9 3H15C16.4721 3 17.2082 3 17.8416 3.31672C18.4751 3.63344 18.9167 4.22229 19.8 5.4L21 7Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12 17L12 10.5M9 14.5C9.58984 15.1068 11.1597 17.5 12 17.5C12.8403 17.5 14.4102 15.1068 15 14.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDown01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDown01Icon.js var ArrowDown01Icon = [ ["path", { d: "M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDown02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDown02Icon.js var ArrowDown02Icon = [ ["path", { d: "M12 18.502V5.00195", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 13.002C18 13.002 13.5811 19.0019 12 19.002C10.4188 19.002 6 13.002 6 13.002", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDownDoubleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDownDoubleIcon.js var ArrowDownDoubleIcon = [ ["path", { d: "M17.9997 12.5C17.9997 12.5 13.5807 18.5 11.9996 18.5C10.4185 18.5 5.99966 12.5 5.99966 12.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17.9997 5.50005C17.9997 5.50005 13.5807 11.5 11.9996 11.5C10.4185 11.5 5.99966 5.5 5.99966 5.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowExpand01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowExpand01Icon.js var ArrowExpand01Icon = [ ["path", { d: "M16.4999 3.26621C17.3443 3.25421 20.1408 2.67328 20.7337 3.26621C21.3266 3.85913 20.7457 6.65559 20.7337 7.5M20.5059 3.49097L13.5021 10.4961", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3.26636 16.5001C3.25436 17.3445 2.67343 20.141 3.26636 20.7339C3.85928 21.3268 6.65574 20.7459 7.50015 20.7339M10.502 13.4976L3.49824 20.5027", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowLeft01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowLeft01Icon.js var ArrowLeft01Icon = [ ["path", { d: "M15 6C15 6 9.00001 10.4189 9 12C8.99999 13.5812 15 18 15 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowMoveDownLeftIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowMoveDownLeftIcon.js var ArrowMoveDownLeftIcon = [ ["path", { d: "M20 3V5.07692C20 7.07786 20 8.07833 19.8547 8.91545C19.0547 13.5235 15.0934 17.1376 10.0426 17.8674C9.12509 18 7.19318 18 5 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M7 21C6.39316 20.4102 4 18.8403 4 18C4 17.1597 6.39316 15.5898 7 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowMoveDownRightIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowMoveDownRightIcon.js var ArrowMoveDownRightIcon = [ ["path", { d: "M4 3V5.07692C4 7.07786 4 8.07833 4.14533 8.91545C4.94529 13.5235 8.90656 17.1376 13.9574 17.8674C14.8749 18 16.8068 18 19 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17 21C17.6068 20.4102 20 18.8403 20 18C20 17.1597 17.6068 15.5898 17 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowReloadHorizontalIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowReloadHorizontalIcon.js var ArrowReloadHorizontalIcon = [ ["path", { d: "M20.5 5.5H9.5C5.78672 5.5 3 8.18503 3 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3.5 18.5H14.5C18.2133 18.5 21 15.815 21 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -3786,52 +3788,52 @@ var ArrowReloadHorizontalIcon = [ ["path", { d: "M5.49998 16C5.49998 16 3.00001 17.8412 3 18.5C2.99999 19.1588 5.5 21 5.5 21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowRight01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowRight01Icon.js var ArrowRight01Icon = [ ["path", { d: "M9.00005 6C9.00005 6 15 10.4189 15 12C15 13.5812 9 18 9 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowRight02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowRight02Icon.js var ArrowRight02Icon = [ ["path", { d: "M18.5 12L4.99997 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13 18C13 18 19 13.5811 19 12C19 10.4188 13 6 13 6", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowShrink01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowShrink01Icon.js var ArrowShrink01Icon = [ ["path", { d: "M6.5023 10.7365C7.34671 10.7485 10.1432 11.3294 10.7361 10.7365C11.329 10.1436 10.7481 7.34708 10.7361 6.50267M13.2685 17.5027C13.2565 16.6583 12.6756 13.8618 13.2685 13.2689C13.8614 12.676 16.6579 13.2569 17.5023 13.2689M20.9991 21.001L13.6102 13.6188M10.3691 10.3763L2.99998 2.99902", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowTurnBackwardIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowTurnBackwardIcon.js var ArrowTurnBackwardIcon = [ ["path", { d: "M11 6H15.5C17.9853 6 20 8.01472 20 10.5C20 12.9853 17.9853 15 15.5 15H4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M6.99998 12C6.99998 12 4.00001 14.2095 4 15C3.99999 15.7906 7 18 7 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowTurnForwardIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowTurnForwardIcon.js var ArrowTurnForwardIcon = [ ["path", { d: "M13 6H8.5C6.01472 6 4 8.01472 4 10.5C4 12.9853 6.01472 15 8.5 15H20", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17 12C17 12 20 14.2095 20 15C20 15.7906 17 18 17 18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUp01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUp01Icon.js var ArrowUp01Icon = [ ["path", { d: "M17.9998 15C17.9998 15 13.5809 9.00001 11.9998 9C10.4187 8.99999 5.99985 15 5.99985 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUp02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUp02Icon.js var ArrowUp02Icon = [ ["path", { d: "M12 5.5V19", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 11C18 11 13.5811 5.00001 12 5C10.4188 4.99999 6 11 6 11", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpDoubleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpDoubleIcon.js var ArrowUpDoubleIcon = [ ["path", { d: "M18 11.5C18 11.5 13.5811 5.50001 12 5.5C10.4188 5.49999 6 11.5 6 11.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 18.5C18 18.5 13.5811 12.5 12 12.5C10.4188 12.5 6 18.5 6 18.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpDownIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpDownIcon.js var ArrowUpDownIcon = [ ["path", { d: "M7 4V20", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17 19L17 4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -3839,17 +3841,17 @@ var ArrowUpDownIcon = [ ["path", { d: "M20 17C20 17 17.7905 20 17 20C16.2094 20 14 17 14 17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpRight01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUpRight01Icon.js var ArrowUpRight01Icon = [ ["path", { d: "M9 6.65032C9 6.65032 15.9383 6.10759 16.9154 7.08463C17.8924 8.06167 17.3496 15 17.3496 15M16.5 7.5L6.5 17.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/AttachmentIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/AttachmentIcon.js var AttachmentIcon = [ ["path", { d: "M19.5 12.0001V13.5001C19.5 17.6422 16.1421 21.0001 12 21.0001C7.85786 21.0001 4.5 17.6422 4.5 13.5001V8C4.5 5.23858 6.73858 3 9.5 3C12.2614 3 14.5 5.23858 14.5 8V13.5C14.5 14.8807 13.3807 16 12 16C10.6193 16 9.5 14.8807 9.5 13.5V9.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/AudioWave01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/AudioWave01Icon.js var AudioWave01Icon = [ ["path", { d: "M9 3V21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M6 7V17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -3860,45 +3862,45 @@ var AudioWave01Icon = [ ["path", { d: "M3 11L3 13", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "6" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Book02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Book02Icon.js var Book02Icon = [ ["path", { d: "M15.5 7H8.5M12.499 11H8.49902", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M20 22H6C4.89543 22 4 21.1046 4 20M4 20C4 18.8954 4.89543 18 6 18H20V6C20 4.11438 20 3.17157 19.4142 2.58579C18.8284 2 17.8856 2 16 2H10C7.17157 2 5.75736 2 4.87868 2.87868C4 3.75736 4 5.17157 4 8V20Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M19.5 18C19.5 18 18.5 18.7628 18.5 20C18.5 21.2372 19.5 22 19.5 22", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/BrainIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/BrainIcon.js var BrainIcon = [ ["path", { d: "M16.998 7.12652C17.3182 7.04393 17.654 7 18 7C20.2091 7 22 8.79086 22 11C22 13.2091 20.2091 15 18 15C17.6451 15 17.3009 14.9538 16.9733 14.867M16.998 7.12652C16.9993 7.08451 17 7.04233 17 7C17 4.79086 15.2091 3 13 3C11.0824 3 9.47994 4.34939 9.09041 6.15043M16.998 7.12652C16.9769 7.80763 16.7854 8.44584 16.4649 9M16.9733 14.867C16.9909 14.7472 17 14.6247 17 14.5C17 13.2905 16.1411 12.2816 15 12.05M16.9733 14.867C16.7957 16.0737 15.756 17 14.5 17H14C11.7909 17 10 18.7909 10 21M9.09041 6.15043C8.74377 6.05243 8.37801 6 8 6C5.79086 6 4 7.79086 4 10C4 10.3886 4.05542 10.7643 4.15878 11.1195M9.09041 6.15043C10.1015 6.43625 10.9498 7.10965 11.4649 8M4.15878 11.1195C2.9114 11.4832 2 12.6352 2 14C2 15.6569 3.34315 17 5 17C6.30622 17 7.41746 16.1652 7.82929 15M4.15878 11.1195C4.24921 11.4303 4.37632 11.7255 4.53513 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11.8361 11.7435C11.3257 12.2353 10.453 12.3202 9.70713 11.9008C8.9612 11.4814 8.58031 10.6917 8.73535 10", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/BrowserIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/BrowserIcon.js var BrowserIcon = [ ["path", { d: "M3 12C3 7.75736 3 5.63604 4.31802 4.31802C5.63604 3 7.75736 3 12 3C16.2426 3 18.364 3 19.682 4.31802C21 5.63604 21 7.75736 21 12C21 16.2426 21 18.364 19.682 19.682C18.364 21 16.2426 21 12 21C7.75736 21 5.63604 21 4.31802 19.682C3 18.364 3 16.2426 3 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3 9H21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatAddIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatAddIcon.js var BubbleChatAddIcon = [ ["path", { d: "M21.5 12C21.5 17.2467 17.2467 21.5 12 21.5C10.3719 21.5 8.8394 21.0904 7.5 20.3687C5.63177 19.362 4.37462 20.2979 3.26592 20.4658C3.09774 20.4913 2.93024 20.4302 2.80997 20.31C2.62741 20.1274 2.59266 19.8451 2.6935 19.6074C3.12865 18.5818 3.5282 16.6382 2.98341 15C2.6698 14.057 2.5 13.0483 2.5 12C2.5 6.75329 6.75329 2.5 12 2.5C17.2467 2.5 21.5 6.75329 21.5 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M15.5 12H8.5M12 8.5V15.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatQuestionIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatQuestionIcon.js var BubbleChatQuestionIcon = [ ["path", { d: "M21.5 12C21.5 17.2467 17.2467 21.5 12 21.5C10.3719 21.5 8.8394 21.0904 7.5 20.3687C5.63177 19.362 4.37462 20.2979 3.26592 20.4658C3.09774 20.4913 2.93024 20.4302 2.80997 20.31C2.62741 20.1274 2.59266 19.8451 2.6935 19.6074C3.12865 18.5818 3.5282 16.6382 2.98341 15C2.6698 14.057 2.5 13.0483 2.5 12C2.5 6.75329 6.75329 2.5 12 2.5C17.2467 2.5 21.5 6.75329 21.5 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M9.5 9.5C9.5 8.11929 10.6193 7 12 7C13.3807 7 14.5 8.11929 14.5 9.5C14.5 10.3569 14.0689 11.1131 13.4117 11.5636C12.7283 12.0319 12 12.6716 12 13.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.125 16.75H12M12.25 16.75C12.25 16.8881 12.1381 17 12 17C11.8619 17 11.75 16.8881 11.75 16.75C11.75 16.6119 11.8619 16.5 12 16.5C12.1381 16.5 12.25 16.6119 12.25 16.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/BubbleChatIcon.js var BubbleChatIcon = [ ["path", { d: "M21.5 12C21.5 17.2467 17.2467 21.5 12 21.5C10.3719 21.5 8.8394 21.0904 7.5 20.3687C5.63177 19.362 4.37462 20.2979 3.26592 20.4658C3.09774 20.4913 2.93024 20.4302 2.80997 20.31C2.62741 20.1274 2.59266 19.8451 2.6935 19.6074C3.12865 18.5818 3.5282 16.6382 2.98341 15C2.6698 14.057 2.5 13.0483 2.5 12C2.5 6.75329 6.75329 2.5 12 2.5C17.2467 2.5 21.5 6.75329 21.5 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12.1257 12H12.0007M8.125 12H8M16.125 12H16M12.2507 12C12.2507 12.1381 12.1388 12.25 12.0007 12.25C11.8627 12.25 11.7507 12.1381 11.7507 12C11.7507 11.8619 11.8627 11.75 12.0007 11.75C12.1388 11.75 12.2507 11.8619 12.2507 12ZM8.25 12C8.25 12.1381 8.13807 12.25 8 12.25C7.86193 12.25 7.75 12.1381 7.75 12C7.75 11.8619 7.86193 11.75 8 11.75C8.13807 11.75 8.25 11.8619 8.25 12ZM16.25 12C16.25 12.1381 16.1381 12.25 16 12.25C15.8619 12.25 15.75 12.1381 15.75 12C15.75 11.8619 15.8619 11.75 16 11.75C16.1381 11.75 16.25 11.8619 16.25 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Bug01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Bug01Icon.js var Bug01Icon = [ ["path", { d: "M3.01309 4.99084C2.89323 6.05084 3.55249 8.42285 6.48923 8.42285", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17.5951 8.38081C18.8357 8.57881 21.1132 7.49881 20.9957 5.00281", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], @@ -3910,7 +3912,7 @@ var Bug01Icon = [ ["path", { d: "M12.0033 16.4988L12.0033 20.2788", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "7" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Calendar03Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Calendar03Icon.js var Calendar03Icon = [ ["path", { d: "M16 2V6M8 2V6", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13 4H11C7.22876 4 5.34315 4 4.17157 5.17157C3 6.34315 3 8.22876 3 12V14C3 17.7712 3 19.6569 4.17157 20.8284C5.34315 22 7.22876 22 11 22H13C16.7712 22 18.6569 22 19.8284 20.8284C21 19.6569 21 17.7712 21 14V12C21 8.22876 21 6.34315 19.8284 5.17157C18.6569 4 16.7712 4 13 4Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -3918,18 +3920,18 @@ var Calendar03Icon = [ ["path", { d: "M12.1258 14H12.0008M12.1258 18H12.0008M7.625 14H7.5M7.625 18H7.5M16.625 14H16.5M12.2508 14C12.2508 14.1381 12.1389 14.25 12.0008 14.25C11.8628 14.25 11.7508 14.1381 11.7508 14C11.7508 13.8619 11.8628 13.75 12.0008 13.75C12.1389 13.75 12.2508 13.8619 12.2508 14ZM12.2508 18C12.2508 18.1381 12.1389 18.25 12.0008 18.25C11.8628 18.25 11.7508 18.1381 11.7508 18C11.7508 17.8619 11.8628 17.75 12.0008 17.75C12.1389 17.75 12.2508 17.8619 12.2508 18ZM7.75 14C7.75 14.1381 7.63807 14.25 7.5 14.25C7.36193 14.25 7.25 14.1381 7.25 14C7.25 13.8619 7.36193 13.75 7.5 13.75C7.63807 13.75 7.75 13.8619 7.75 14ZM7.75 18C7.75 18.1381 7.63807 18.25 7.5 18.25C7.36193 18.25 7.25 18.1381 7.25 18C7.25 17.8619 7.36193 17.75 7.5 17.75C7.63807 17.75 7.75 17.8619 7.75 18ZM16.75 14C16.75 14.1381 16.6381 14.25 16.5 14.25C16.3619 14.25 16.25 14.1381 16.25 14C16.25 13.8619 16.3619 13.75 16.5 13.75C16.6381 13.75 16.75 13.8619 16.75 14Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Cancel01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Cancel01Icon.js var Cancel01Icon = [ ["path", { d: "M18 6L6.00081 17.9992M17.9992 18L6 6.00085", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CancelCircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CancelCircleIcon.js var CancelCircleIcon = [ ["path", { d: "M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14.9994 15L9 9M9.00064 15L15 9", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ChartColumnIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ChartColumnIcon.js var ChartColumnIcon = [ ["path", { d: "M8 9V17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13 5V17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -3937,13 +3939,13 @@ var ChartColumnIcon = [ ["path", { d: "M3 3V13C3 16.7712 3 18.6569 4.17157 19.8284C5.34315 21 7.22876 21 11 21H21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ChatFeedback01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ChatFeedback01Icon.js var ChatFeedback01Icon = [ ["path", { d: "M7.5 8.5H16.5M7.5 12.5H13", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M22 10.5C22 9.72921 21.9865 8.97679 21.9609 8.2503C21.8772 5.87683 21.8353 4.69009 20.8699 3.71745C19.9046 2.74481 18.6843 2.6926 16.2438 2.58819C14.9048 2.5309 13.4791 2.5 12 2.5C10.5209 2.5 9.09517 2.5309 7.7562 2.58819C5.3157 2.6926 4.09545 2.74481 3.13007 3.71745C2.16469 4.69009 2.12282 5.87683 2.03909 8.2503C2.01346 8.97679 2 9.72921 2 10.5C2 11.2708 2.01346 12.0232 2.03909 12.7497C2.12282 15.1232 2.16469 16.3099 3.13007 17.2826C4.09545 18.2552 5.31573 18.3074 7.7563 18.4118C8.4902 18.4432 9.25016 18.4667 10.0307 18.4815C10.7718 18.4955 11.1424 18.5026 11.468 18.6266C11.7936 18.7506 12.0675 18.9855 12.6155 19.4553L14.795 21.3242C14.9273 21.4376 15.0958 21.5 15.2701 21.5C15.6732 21.5 16 21.1732 16 20.7701V18.4219C16.0816 18.4186 16.1629 18.4153 16.2438 18.4118C18.6843 18.3074 19.9046 18.2552 20.8699 17.2825C21.8353 16.3099 21.8772 15.1232 21.9609 12.7497C21.9865 12.0232 22 11.2708 22 10.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CheckListIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CheckListIcon.js var CheckListIcon = [ ["path", { d: "M11 6L21 6", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11 12L21 12", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], @@ -3952,58 +3954,58 @@ var CheckListIcon = [ ["path", { d: "M3 18.3929C3 18.3929 4 19.0447 4.5 20C4.5 20 6 16.25 8 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CheckmarkCircle02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CheckmarkCircle02Icon.js var CheckmarkCircle02Icon = [ ["path", { d: "M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M8 12.5L10.5 15L16 9", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CircleArrowShrink01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CircleArrowShrink01Icon.js var CircleArrowShrink01Icon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11.115 11.1151C11.6324 10.5977 11.5463 8.4 11.5463 8.4M11.115 11.1151C10.5977 11.6324 8.4 11.5462 8.4 11.5462M11.115 11.1151L7.5 7.5M12.8882 12.8882C13.4055 12.3708 15.6032 12.4569 15.6032 12.4569M12.8882 12.8882C12.3709 13.4055 12.457 15.6032 12.457 15.6032M12.8882 12.8882L16.5 16.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CircleIcon.js var CircleIcon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Clock01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Clock01Icon.js var Clock01Icon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 8V12L14 14", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/CloudIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/CloudIcon.js var CloudIcon = [ ["path", { d: "M17.4776 10.0001C17.485 10 17.4925 10 17.5 10C19.9853 10 22 12.0147 22 14.5C22 16.9853 19.9853 19 17.5 19H7C4.23858 19 2 16.7614 2 14C2 11.4003 3.98398 9.26407 6.52042 9.0227M17.4776 10.0001C17.4924 9.83536 17.5 9.66856 17.5 9.5C17.5 6.46243 15.0376 4 12 4C9.12324 4 6.76233 6.20862 6.52042 9.0227M17.4776 10.0001C17.3753 11.1345 16.9286 12.1696 16.2428 13M6.52042 9.0227C6.67826 9.00768 6.83823 9 7 9C8.12582 9 9.16474 9.37209 10.0005 10", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ComputerTerminal01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ComputerTerminal01Icon.js var ComputerTerminal01Icon = [ ["path", { d: "M7.5 7.5L8.72654 8.55719C9.24218 9.00163 9.5 9.22386 9.5 9.5C9.5 9.77614 9.24218 9.99836 8.72654 10.4428L7.5 11.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11.5 12.5H15.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12 21C15.7497 21 17.6246 21 18.9389 20.0451C19.3634 19.7367 19.7367 19.3634 20.0451 18.9389C21 17.6246 21 15.7497 21 12C21 8.25027 21 6.3754 20.0451 5.06107C19.7367 4.6366 19.3634 4.26331 18.9389 3.95491C17.6246 3 15.7497 3 12 3C8.25027 3 6.3754 3 5.06107 3.95491C4.6366 4.26331 4.26331 4.6366 3.95491 5.06107C3 6.3754 3 8.25027 3 12C3 15.7497 3 17.6246 3.95491 18.9389C4.26331 19.3634 4.6366 19.7367 5.06107 20.0451C6.3754 21 8.25027 21 12 21Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Copy01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Copy01Icon.js var Copy01Icon = [ ["path", { d: "M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/DashedLine02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/DashedLine02Icon.js var DashedLine02Icon = [ ["path", { d: "M6.3 2.75143C5.26076 2.94471 4.49591 3.28657 3.89124 3.89124C3.28657 4.49591 2.94471 5.26076 2.75143 6.3M17.7 2.75143C18.7392 2.94471 19.5041 3.28657 20.1088 3.89124C20.7134 4.49591 21.0553 5.26076 21.2486 6.3M13.9 2.50495C13.3156 2.5 12.6839 2.5 12 2.5C11.3161 2.5 10.6844 2.5 10.1 2.50495M21.495 10.1C21.5 10.6844 21.5 11.3161 21.5 12C21.5 12.6839 21.5 13.3156 21.495 13.9001M2.50495 10.1C2.5 10.6844 2.5 11.3161 2.5 12C2.5 12.6839 2.5 13.3156 2.50496 13.9001M2.75143 17.7C2.94471 18.7392 3.28657 19.5041 3.89124 20.1088C4.49591 20.7134 5.26076 21.0553 6.3 21.2486M21.2486 17.7C21.0553 18.7392 20.7134 19.5041 20.1088 20.1088C19.5041 20.7134 18.7392 21.0553 17.7 21.2486M13.9 21.495C13.3156 21.5 12.6839 21.5 12 21.5C11.3162 21.5 10.6845 21.5 10.1002 21.495", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/DashedLineCircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/DashedLineCircleIcon.js var DashedLineCircleIcon = [ ["path", { d: "M14 2.20004C13.3538 2.06886 12.6849 2 12 2C11.3151 2 10.6462 2.06886 10 2.20004M21.8 10C21.9311 10.6462 22 11.3151 22 12C22 12.6849 21.9311 13.3538 21.8 14M14 21.8C13.3538 21.9311 12.6849 22 12 22C11.3151 22 10.6462 21.9311 10 21.8M2.20004 14C2.06886 13.3538 2 12.6849 2 12C2 11.3151 2.06886 10.6462 2.20004 10M17.5 3.64702C18.6332 4.39469 19.6053 5.36678 20.353 6.5M20.353 17.5C19.6053 18.6332 18.6332 19.6053 17.5 20.353M6.5 20.353C5.36678 19.6053 4.39469 18.6332 3.64702 17.5M3.64702 6.5C4.39469 5.36678 5.36678 4.39469 6.5 3.64702", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Delete02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Delete02Icon.js var Delete02Icon = [ ["path", { d: "M19.5 5.5L18.8803 15.5251C18.7219 18.0864 18.6428 19.3671 18.0008 20.2879C17.6833 20.7431 17.2747 21.1273 16.8007 21.416C15.8421 22 14.559 22 11.9927 22C9.42312 22 8.1383 22 7.17905 21.4149C6.7048 21.1257 6.296 20.7408 5.97868 20.2848C5.33688 19.3626 5.25945 18.0801 5.10461 15.5152L4.5 5.5", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3 5.5H21M16.0557 5.5L15.3731 4.09173C14.9196 3.15626 14.6928 2.68852 14.3017 2.39681C14.215 2.3321 14.1231 2.27454 14.027 2.2247C13.5939 2 13.0741 2 12.0345 2C10.9688 2 10.436 2 9.99568 2.23412C9.8981 2.28601 9.80498 2.3459 9.71729 2.41317C9.32164 2.7167 9.10063 3.20155 8.65861 4.17126L8.05292 5.5", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], @@ -4011,7 +4013,7 @@ var Delete02Icon = [ ["path", { d: "M14.5 16.5L14.5 10.5", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/DiscordIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/DiscordIcon.js var DiscordIcon = [ ["path", { d: "M15.5 17.5C16.5 19 17.3333 19.6667 18 20C19.3333 19.6667 22 18.2 22 15C22 11.8 20.6667 7.33333 20 5.5C18 4.3 15.8333 4 15 4L14.198 5.60393C13.4135 5.28708 12.4058 5.25438 12 5.27763C11.5942 5.25438 10.5865 5.28708 9.80197 5.60393L9 4C8.16667 4 6 4.3 4 5.5C3.33333 7.33333 2 11.8 2 15C2 18.2 4.66667 19.6667 6 20C6.66667 19.6667 7.5 19 8.5 17.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17.3652 11.5C17.3652 12.6046 16.5817 13.5 15.6152 13.5C14.6487 13.5 13.8652 12.6046 13.8652 11.5C13.8652 10.3954 14.6487 9.5 15.6152 9.5C16.5817 9.5 17.3652 10.3954 17.3652 11.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4019,13 +4021,13 @@ var DiscordIcon = [ ["path", { d: "M17.5 16.5C16.4022 17.3967 14.3502 18 12 18C9.64981 18 7.59785 17.3967 6.5 16.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Download01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Download01Icon.js var Download01Icon = [ ["path", { d: "M2.99969 17.0002C2.99969 17.9302 2.99969 18.3952 3.10192 18.7767C3.37932 19.8119 4.18796 20.6206 5.22324 20.898C5.60474 21.0002 6.06972 21.0002 6.99969 21.0002L16.9997 21.0002C17.9297 21.0002 18.3947 21.0002 18.7762 20.898C19.8114 20.6206 20.6201 19.8119 20.8975 18.7767C20.9997 18.3952 20.9997 17.9302 20.9997 17.0002", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M16.4998 11.5002C16.4998 11.5002 13.1856 16.0002 11.9997 16.0002C10.8139 16.0002 7.49976 11.5002 7.49976 11.5002M11.9997 15.0002V3.00016", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/DragDropHorizontalIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/DragDropHorizontalIcon.js var DragDropHorizontalIcon = [ ["path", { d: "M6 8C6.55228 8 7 8.44772 7 9C7 9.55228 6.55228 10 6 10C5.44772 10 5 9.55228 5 9C5 8.44772 5.44772 8 6 8Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M6 14C6.55228 14 7 14.4477 7 15C7 15.5523 6.55228 16 6 16C5.44772 16 5 15.5523 5 15C5 14.4477 5.44772 14 6 14Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4035,7 +4037,7 @@ var DragDropHorizontalIcon = [ ["path", { d: "M12 14C12.5523 14 13 14.4477 13 15C13 15.5523 12.5523 16 12 16C11.4477 16 11 15.5523 11 15C11 14.4477 11.4477 14 12 14Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "5" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/DragDropVerticalIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/DragDropVerticalIcon.js var DragDropVerticalIcon = [ ["path", { d: "M16 6C16 6.55228 15.5523 7 15 7C14.4477 7 14 6.55228 14 6C14 5.44772 14.4477 5 15 5C15.5523 5 16 5.44772 16 6Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M10 6C10 6.55228 9.55228 7 9 7C8.44772 7 8 6.55228 8 6C8 5.44772 8.44772 5 9 5C9.55228 5 10 5.44772 10 6Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4045,21 +4047,21 @@ var DragDropVerticalIcon = [ ["path", { d: "M10 12C10 12.5523 9.55228 13 9 13C8.44772 13 8 12.5523 8 12C8 11.4477 8.44772 11 9 11C9.55228 11 10 11.4477 10 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "5" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Edit02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Edit02Icon.js var Edit02Icon = [ ["path", { d: "M14.0737 3.88545C14.8189 3.07808 15.1915 2.6744 15.5874 2.43893C16.5427 1.87076 17.7191 1.85309 18.6904 2.39232C19.0929 2.6158 19.4769 3.00812 20.245 3.79276C21.0131 4.5774 21.3972 4.96972 21.6159 5.38093C22.1438 6.37312 22.1265 7.57479 21.5703 8.5507C21.3398 8.95516 20.9446 9.33578 20.1543 10.097L10.7506 19.1543C9.25288 20.5969 8.504 21.3182 7.56806 21.6837C6.63212 22.0493 5.6032 22.0224 3.54536 21.9686L3.26538 21.9613C2.63891 21.9449 2.32567 21.9367 2.14359 21.73C1.9615 21.5234 1.98636 21.2043 2.03608 20.5662L2.06308 20.2197C2.20301 18.4235 2.27297 17.5255 2.62371 16.7182C2.97444 15.9109 3.57944 15.2555 4.78943 13.9445L14.0737 3.88545Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13 4L20 11", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M14 22L22 22", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Edit04Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Edit04Icon.js var Edit04Icon = [ ["path", { d: "M8.17151 19.8284L19.8284 8.17157C20.3736 7.62632 20.6462 7.3537 20.792 7.0596C21.0693 6.50005 21.0693 5.8431 20.792 5.28354C20.6462 4.98945 20.3736 4.71682 19.8284 4.17157C19.2831 3.62632 19.0105 3.3537 18.7164 3.20796C18.1568 2.93068 17.4999 2.93068 16.9403 3.20796C16.6462 3.3537 16.3736 3.62632 15.8284 4.17157L4.17151 15.8284C3.59345 16.4064 3.30442 16.6955 3.15218 17.063C2.99994 17.4305 2.99994 17.8393 2.99994 18.6568V20.9999H5.34308C6.16059 20.9999 6.56934 20.9999 6.93688 20.8477C7.30442 20.6955 7.59345 20.4064 8.17151 19.8284Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 21H18", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M14.5 5.5L18.5 9.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ElectricPlugsIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ElectricPlugsIcon.js var ElectricPlugsIcon = [ ["path", { d: "M9 2L9 5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M15 2L15 5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4068,55 +4070,55 @@ var ElectricPlugsIcon = [ ["path", { d: "M14.3066 5L9.69342 5C7.5551 5 6.48594 5 5.89527 5.69774C5.3046 6.39548 5.46717 7.46639 5.79232 9.60823L6.31604 13.0581C6.83606 16.4836 8.28588 18 12 18C15.7141 18 17.1639 16.4836 17.684 13.0581L18.2077 9.60823C18.5328 7.46639 18.6954 6.39548 18.1047 5.69774C17.5141 5 16.4449 5 14.3066 5Z", stroke: "currentColor", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/File01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/File01Icon.js var File01Icon = [ ["path", { d: "M8 7L16 7", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M8 11L12 11", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M13 21.5V21C13 18.1716 13 16.7574 13.8787 15.8787C14.7574 15 16.1716 15 19 15H19.5M20 13.3431V10C20 6.22876 20 4.34315 18.8284 3.17157C17.6569 2 15.7712 2 12 2C8.22877 2 6.34315 2 5.17157 3.17157C4 4.34314 4 6.22876 4 10L4 14.5442C4 17.7892 4 19.4117 4.88607 20.5107C5.06508 20.7327 5.26731 20.9349 5.48933 21.1139C6.58831 22 8.21082 22 11.4558 22C12.1614 22 12.5141 22 12.8372 21.886C12.9044 21.8623 12.9702 21.835 13.0345 21.8043C13.3436 21.6564 13.593 21.407 14.0919 20.9081L18.8284 16.1716C19.4065 15.5935 19.6955 15.3045 19.8478 14.9369C20 14.5694 20 14.1606 20 13.3431Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FileAttachmentIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FileAttachmentIcon.js var FileAttachmentIcon = [ ["path", { d: "M4 12.0004L4 14.5446C4 17.7896 4 19.4121 4.88607 20.5111C5.06508 20.7331 5.26731 20.9354 5.48933 21.1144C6.58831 22.0004 8.21082 22.0004 11.4558 22.0004C12.1614 22.0004 12.5141 22.0004 12.8372 21.8864C12.9044 21.8627 12.9702 21.8354 13.0345 21.8047C13.3436 21.6569 13.593 21.4074 14.0919 20.9085L18.8284 16.172C19.4065 15.5939 19.6955 15.3049 19.8478 14.9374C20 14.5698 20 14.1611 20 13.3436V10.0004C20 6.22919 20 4.34358 18.8284 3.172C17.7693 2.11284 16.1265 2.01122 13.0345 2.00146M13 21.5004V21.0004C13 18.172 13 16.7578 13.8787 15.8791C14.7574 15.0004 16.1716 15.0004 19 15.0004H19.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M4 8.23028V5.46105C4 3.54929 5.567 1.99951 7.5 1.99951C9.433 1.99951 11 3.54929 11 5.46105V9.26874C11 10.2246 10.2165 10.9995 9.25 10.9995C8.2835 10.9995 7.5 10.2246 7.5 9.26874V5.46105", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FileEmpty02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FileEmpty02Icon.js var FileEmpty02Icon = [ ["path", { d: "M13 2.5V3C13 5.82843 13 7.24264 13.8787 8.12132C14.7574 9 16.1716 9 19 9H19.5M20 10.6569V14C20 17.7712 20 19.6569 18.8284 20.8284C17.6569 22 15.7712 22 12 22C8.22876 22 6.34315 22 5.17157 20.8284C4 19.6569 4 17.7712 4 14V9.45584C4 6.21082 4 4.58831 4.88607 3.48933C5.06508 3.26731 5.26731 3.06508 5.48933 2.88607C6.58831 2 8.21082 2 11.4558 2C12.1614 2 12.5141 2 12.8372 2.11401C12.9044 2.13772 12.9702 2.165 13.0345 2.19575C13.3436 2.34355 13.593 2.593 14.0919 3.09188L18.8284 7.82843C19.4065 8.40649 19.6955 8.69552 19.8478 9.06306C20 9.4306 20 9.83935 20 10.6569Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FileQuestionMarkIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FileQuestionMarkIcon.js var FileQuestionMarkIcon = [ ["path", { d: "M3.5 14.5C3.5 13.1193 4.6193 12 6 12C7.3807 12 8.5 13.1193 8.5 14.5C8.5 15.3569 8.06886 16.1131 7.41166 16.5636C6.72833 17.0319 6 17.6716 6 18.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M6.125 21.75H6M6.25 21.75C6.25 21.8881 6.13807 22 6 22C5.86193 22 5.75 21.8881 5.75 21.75C5.75 21.6119 5.86193 21.5 6 21.5C6.13807 21.5 6.25 21.6119 6.25 21.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M13.5 2.5V3C13.5 5.82843 13.5 7.24264 14.3787 8.12132C15.2574 9 16.6716 9 19.5 9H20M4.50394 7.98123C4.52397 5.69117 4.64575 4.40752 5.38607 3.48933C5.56507 3.26731 5.76731 3.06508 5.98932 2.88607C7.0883 2 8.71081 2 11.9558 2C12.6614 2 13.0141 2 13.3372 2.11401C13.4044 2.13772 13.4702 2.165 13.5345 2.19575C13.8435 2.34355 14.093 2.593 14.5919 3.09188L19.3284 7.82843C19.9065 8.40649 20.1955 8.69552 20.3478 9.06306C20.5 9.4306 20.5 9.83935 20.5 10.6569V14C20.5 17.7712 20.5 19.6569 19.3284 20.8284C18.1568 22 16.2712 22 12.5 22C11.7645 22 11.1007 22 10.5 21.9913", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FileXIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FileXIcon.js var FileXIcon = [ ["path", { d: "M14.4834 13L11.9917 15.4958M11.9917 15.4958L9.49168 18M11.9917 15.4958L14.4917 18M11.9917 15.4958L9.5 13", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13 2.5V3C13 5.82843 13 7.24264 13.8787 8.12132C14.7574 9 16.1716 9 19 9H19.5M20 10.6569V14C20 17.7712 20 19.6569 18.8284 20.8284C17.6569 22 15.7712 22 12 22C8.22876 22 6.34315 22 5.17157 20.8284C4 19.6569 4 17.7712 4 14V9.45584C4 6.21082 4 4.58831 4.88607 3.48933C5.06508 3.26731 5.26731 3.06508 5.48933 2.88607C6.58831 2 8.21082 2 11.4558 2C12.1614 2 12.5141 2 12.8372 2.11401C12.9044 2.13772 12.9702 2.165 13.0345 2.19575C13.3436 2.34355 13.593 2.593 14.0919 3.09188L18.8284 7.82843C19.4065 8.40649 19.6955 8.69552 19.8478 9.06306C20 9.4306 20 9.83935 20 10.6569Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Folder01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Folder01Icon.js var Folder01Icon = [ ["path", { d: "M8 7H16.75C18.8567 7 19.91 7 20.6667 7.50559C20.9943 7.72447 21.2755 8.00572 21.4944 8.33329C22 9.08996 22 10.1433 22 12.25C22 15.7612 22 17.5167 21.1573 18.7779C20.7926 19.3238 20.3238 19.7926 19.7779 20.1573C18.5167 21 16.7612 21 13.25 21H12C7.28595 21 4.92893 21 3.46447 19.5355C2 18.0711 2 15.714 2 11V7.94427C2 6.1278 2 5.21956 2.38032 4.53806C2.65142 4.05227 3.05227 3.65142 3.53806 3.38032C4.21956 3 5.1278 3 6.94427 3C8.10802 3 8.6899 3 9.19926 3.19101C10.3622 3.62712 10.8418 4.68358 11.3666 5.73313L12 7", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Folder02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Folder02Icon.js var Folder02Icon = [ ["path", { d: "M2 19V7.54902C2 6.10516 2 5.38322 2.24332 4.81647C2.5467 4.10985 3.10985 3.5467 3.81647 3.24332C4.38322 3 5.09805 3 6.54902 3H7.04311C7.64819 3 8.22075 3.27394 8.60041 3.74509L10.4175 6M10.4175 6H16C17.4001 6 18.1002 6 18.635 6.27248C19.1054 6.51217 19.4878 6.89462 19.7275 7.36502C20 7.8998 20 8.59987 20 10V11M10.4175 6H7", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3.15802 15.5144L3.45643 14.7717C4.19029 12.9449 4.55723 12.0316 5.3224 11.5158C6.08757 11 7.07557 11 9.05157 11H17.1119C19.8004 11 21.1446 11 21.7422 11.8787C22.3397 12.7575 21.8405 14.0002 20.842 16.4856L20.5436 17.2283C19.8097 19.0551 19.4428 19.9684 18.6776 20.4842C17.9124 21 16.9244 21 14.9484 21H6.88812C4.19961 21 2.85535 21 2.25782 20.1213C1.66029 19.2425 2.15953 17.9998 3.15802 15.5144Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FolderAddIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FolderAddIcon.js var FolderAddIcon = [ ["path", { d: "M13 21H12C7.28595 21 4.92893 21 3.46447 19.5355C2 18.0711 2 15.714 2 11V7.94427C2 6.1278 2 5.21956 2.38032 4.53806C2.65142 4.05227 3.05227 3.65142 3.53806 3.38032C4.21956 3 5.1278 3 6.94427 3C8.10802 3 8.6899 3 9.19926 3.19101C10.3622 3.62712 10.8418 4.68358 11.3666 5.73313L12 7M8 7H16.75C18.8567 7 19.91 7 20.6667 7.50559C20.9943 7.72447 21.2755 8.00572 21.4944 8.33329C21.9796 9.05942 21.9992 10.0588 22 12", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 13V21M22 17H14", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FolderGitTwoIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FolderGitTwoIcon.js var FolderGitTwoIcon = [ ["path", { d: "M8 6.50116H16.75C18.8567 6.50116 19.91 6.50116 20.6667 7.0069C20.9943 7.22584 21.2755 7.50717 21.4944 7.83484C22 8.59173 22 9.64538 22 11.7527C22 12.0122 22 12.2621 21.9997 12.5029M12 6.50116L11.3666 5.23392C10.8418 4.18406 10.3622 3.1273 9.19926 2.69106C8.6899 2.5 8.10802 2.5 6.94427 2.5C5.1278 2.5 4.21956 2.5 3.53806 2.88043C3.05227 3.15161 2.65142 3.55257 2.38032 4.03851C2 4.72021 2 5.62871 2 7.44571V10.5023C2 15.2177 2 17.5754 3.46447 19.0403C4.70529 20.2815 6.58687 20.4711 10 20.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["circle", { cx: "14", cy: "12.5", r: "2", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4125,13 +4127,13 @@ var FolderGitTwoIcon = [ ["path", { d: "M14 14.5V21.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/FolderRemoveIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/FolderRemoveIcon.js var FolderRemoveIcon = [ ["path", { d: "M13 21H12C7.28595 21 4.92893 21 3.46447 19.5355C2 18.0711 2 15.714 2 11V7.94427C2 6.1278 2 5.21956 2.38032 4.53806C2.65142 4.05227 3.05227 3.65142 3.53806 3.38032C4.21956 3 5.1278 3 6.94427 3C8.10802 3 8.6899 3 9.19926 3.19101C10.3622 3.62712 10.8418 4.68358 11.3666 5.73313L12 7M8 7H16.75C18.8567 7 19.91 7 20.6667 7.50559C20.9943 7.72447 21.2755 8.00572 21.4944 8.33329C21.9796 9.05942 21.9992 10.0588 22 12", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M22 15L16 21M22 21L16 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GitBranchIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GitBranchIcon.js var GitBranchIcon = [ ["path", { d: "M7 19H13C15.8284 19 17.2426 19 18.1213 18.1213C19 17.2426 19 15.8284 19 13V10M19 10C19.7002 10 21.0085 11.9943 21.5 12.5M19 10C18.2998 10 16.9915 11.9943 16.5 12.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M5 7L5 17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4140,7 +4142,7 @@ var GitBranchIcon = [ ["circle", { cx: "5", cy: "19", r: "2", stroke: "currentColor", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GitMergeIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GitMergeIcon.js var GitMergeIcon = [ ["path", { d: "M7 20C8.10457 20 9 19.1046 9 18C9 16.8954 8.10457 16 7 16C5.89543 16 5 16.8954 5 18C5 19.1046 5.89543 20 7 20Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M7 8C8.10457 8 9 7.10457 9 6C9 4.89543 8.10457 4 7 4C5.89543 4 5 4.89543 5 6C5 7.10457 5.89543 8 7 8Z", stroke: "currentColor", strokeWidth: "1.5", key: "1" }], @@ -4148,7 +4150,7 @@ var GitMergeIcon = [ ["path", { d: "M7.02116 8.2793V15.4073M14.4113 12.0047L10.0193 12.0048C8.92158 12.0048 6.86182 11.1254 7.01818 8.78001", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestClosedIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestClosedIcon.js var GitPullRequestClosedIcon = [ ["path", { d: "M6 8L6 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 11L18 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4158,7 +4160,7 @@ var GitPullRequestClosedIcon = [ ["path", { d: "M20 4L18 6M18 6L16 8M18 6L20 8M18 6L16 4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "5" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestDraftIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestDraftIcon.js var GitPullRequestDraftIcon = [ ["path", { d: "M6 8L6 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["circle", { cx: "6", cy: "18", r: "2", stroke: "currentColor", strokeWidth: "1.5", key: "1" }], @@ -4168,7 +4170,7 @@ var GitPullRequestDraftIcon = [ ["path", { d: "M18.125 6H18M18.25 6C18.25 6.13807 18.1381 6.25 18 6.25C17.8619 6.25 17.75 6.13807 17.75 6C17.75 5.86193 17.8619 5.75 18 5.75C18.1381 5.75 18.25 5.86193 18.25 6Z", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "5" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GitPullRequestIcon.js var GitPullRequestIcon = [ ["path", { d: "M6 8L6 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M18 16V12C18 9.17156 18 7.75735 17.1213 6.87867C16.2426 5.99999 14.8284 5.99999 12 5.99999L11 5.99999M11 5.99999C11 5.29976 12.9943 3.99152 13.5 3.49999M11 5.99999C11 6.70022 12.9943 8.00846 13.5 8.49999", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4177,13 +4179,13 @@ var GitPullRequestIcon = [ ["circle", { cx: "18", cy: "18", r: "2", stroke: "currentColor", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GithubIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GithubIcon.js var GithubIcon = [ ["path", { d: "M10 20.5675C6.57143 21.7248 3.71429 20.5675 2 17", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M10 22V18.7579C10 18.1596 10.1839 17.6396 10.4804 17.1699C10.6838 16.8476 10.5445 16.3904 10.1771 16.2894C7.13394 15.4528 5 14.1077 5 9.64606C5 8.48611 5.38005 7.39556 6.04811 6.4464C6.21437 6.21018 6.29749 6.09208 6.31748 5.9851C6.33746 5.87813 6.30272 5.73852 6.23322 5.45932C5.95038 4.32292 5.96871 3.11619 6.39322 2.02823C6.39322 2.02823 7.27042 1.74242 9.26698 2.98969C9.72282 3.27447 9.95075 3.41686 10.1515 3.44871C10.3522 3.48056 10.6206 3.41384 11.1573 3.28041C11.8913 3.09795 12.6476 3 13.5 3C14.3524 3 15.1087 3.09795 15.8427 3.28041C16.3794 3.41384 16.6478 3.48056 16.8485 3.44871C17.0493 3.41686 17.2772 3.27447 17.733 2.98969C19.7296 1.74242 20.6068 2.02823 20.6068 2.02823C21.0313 3.11619 21.0496 4.32292 20.7668 5.45932C20.6973 5.73852 20.6625 5.87813 20.6825 5.9851C20.7025 6.09207 20.7856 6.21019 20.9519 6.4464C21.6199 7.39556 22 8.48611 22 9.64606C22 14.1077 19.8661 15.4528 16.8229 16.2894C16.4555 16.3904 16.3162 16.8476 16.5196 17.1699C16.8161 17.6396 17 18.1596 17 18.7579V22", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/GridViewIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/GridViewIcon.js var GridViewIcon = [ ["path", { d: "M3.88884 9.66294C4.39329 10 5.09552 10 6.49998 10C7.90445 10 8.60668 10 9.11113 9.66294C9.32951 9.51702 9.51701 9.32952 9.66292 9.11114C9.99998 8.60669 9.99998 7.90446 9.99998 6.5C9.99998 5.09554 9.99998 4.39331 9.66292 3.88886C9.51701 3.67048 9.32951 3.48298 9.11113 3.33706C8.60668 3 7.90445 3 6.49998 3C5.09552 3 4.39329 3 3.88884 3.33706C3.67046 3.48298 3.48296 3.67048 3.33705 3.88886C2.99998 4.39331 2.99998 5.09554 2.99998 6.5C2.99998 7.90446 2.99998 8.60669 3.33705 9.11114C3.48296 9.32952 3.67046 9.51702 3.88884 9.66294Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14.8888 9.66294C15.3933 10 16.0955 10 17.5 10C18.9044 10 19.6067 10 20.1111 9.66294C20.3295 9.51702 20.517 9.32952 20.6629 9.11114C21 8.60669 21 7.90446 21 6.5C21 5.09554 21 4.39331 20.6629 3.88886C20.517 3.67048 20.3295 3.48298 20.1111 3.33706C19.6067 3 18.9044 3 17.5 3C16.0955 3 15.3933 3 14.8888 3.33706C14.6705 3.48298 14.483 3.67048 14.337 3.88886C14 4.39331 14 5.09554 14 6.5C14 7.90446 14 8.60669 14.337 9.11114C14.483 9.32952 14.6705 9.51702 14.8888 9.66294Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4191,66 +4193,66 @@ var GridViewIcon = [ ["path", { d: "M14.8888 20.6629C15.3933 21 16.0955 21 17.5 21C18.9044 21 19.6067 21 20.1111 20.6629C20.3295 20.517 20.517 20.3295 20.6629 20.1111C21 19.6067 21 18.9045 21 17.5C21 16.0955 21 15.3933 20.6629 14.8889C20.517 14.6705 20.3295 14.483 20.1111 14.3371C19.6067 14 18.9044 14 17.5 14C16.0955 14 15.3933 14 14.8888 14.3371C14.6705 14.483 14.483 14.6705 14.337 14.8889C14 15.3933 14 16.0955 14 17.5C14 18.9045 14 19.6067 14.337 20.1111C14.483 20.3295 14.6705 20.517 14.8888 20.6629Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/HelpCircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/HelpCircleIcon.js var HelpCircleIcon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M9.5 9.5C9.5 8.11929 10.6193 7 12 7C13.3807 7 14.5 8.11929 14.5 9.5C14.5 10.3569 14.0689 11.1131 13.4117 11.5636C12.7283 12.0319 12 12.6716 12 13.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.125 16.75H12M12.25 16.75C12.25 16.8881 12.1381 17 12 17C11.8619 17 11.75 16.8881 11.75 16.75C11.75 16.6119 11.8619 16.5 12 16.5C12.1381 16.5 12.25 16.6119 12.25 16.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/InformationCircleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/InformationCircleIcon.js var InformationCircleIcon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 16V12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.125 8.25H12M12.25 8.25C12.25 8.11193 12.1381 8 12 8C11.8619 8 11.75 8.11193 11.75 8.25C11.75 8.38807 11.8619 8.5 12 8.5C12.1381 8.5 12.25 8.38807 12.25 8.25Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/InternetIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/InternetIcon.js var InternetIcon = [ ["circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["ellipse", { cx: "12", cy: "12", rx: "4", ry: "10", stroke: "currentColor", strokeWidth: "1.5", key: "1" }], ["path", { d: "M2 12H22", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/LaptopIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/LaptopIcon.js var LaptopIcon = [ ["path", { d: "M20.4999 16.5V8.5C20.4999 6.14298 20.4999 4.96447 19.7676 4.23223C19.0354 3.5 17.8569 3.5 15.4999 3.5H8.49988C6.14286 3.5 4.96434 3.5 4.23211 4.23223C3.49988 4.96447 3.49988 6.14298 3.49988 8.5V16.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M21.9841 20.5H2.01567C1.63273 20.5 1.38367 20.1088 1.55493 19.7764L3.49988 16.5H20.4999L22.4448 19.7764C22.6161 20.1088 22.367 20.5 21.9841 20.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Layers01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Layers01Icon.js var Layers01Icon = [ ["path", { d: "M8.64298 3.14559L6.93816 3.93362C4.31272 5.14719 3 5.75397 3 6.75C3 7.74603 4.31272 8.35281 6.93817 9.56638L8.64298 10.3544C10.2952 11.1181 11.1214 11.5 12 11.5C12.8786 11.5 13.7048 11.1181 15.357 10.3544L17.0618 9.56638C19.6873 8.35281 21 7.74603 21 6.75C21 5.75397 19.6873 5.14719 17.0618 3.93362L15.357 3.14559C13.7048 2.38186 12.8786 2 12 2C11.1214 2 10.2952 2.38186 8.64298 3.14559Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M20.788 11.0972C20.9293 11.2959 21 11.5031 21 11.7309C21 12.7127 19.6873 13.3109 17.0618 14.5072L15.357 15.284C13.7048 16.0368 12.8786 16.4133 12 16.4133C11.1214 16.4133 10.2952 16.0368 8.64298 15.284L6.93817 14.5072C4.31272 13.3109 3 12.7127 3 11.7309C3 11.5031 3.07067 11.2959 3.212 11.0972", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M20.3767 16.2661C20.7922 16.5971 21 16.927 21 17.3176C21 18.2995 19.6873 18.8976 17.0618 20.0939L15.357 20.8707C13.7048 21.6236 12.8786 22 12 22C11.1214 22 10.2952 21.6236 8.64298 20.8707L6.93817 20.0939C4.31272 18.8976 3 18.2995 3 17.3176C3 16.927 3.20778 16.5971 3.62334 16.2661", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/LayoutTwoColumnIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/LayoutTwoColumnIcon.js var LayoutTwoColumnIcon = [ ["path", { d: "M3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 2.5V21.5", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/LayoutTwoRowIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/LayoutTwoRowIcon.js var LayoutTwoRowIcon = [ ["path", { d: "M20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M21.5 12L2.50078 12", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/LinkSquare02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/LinkSquare02Icon.js var LinkSquare02Icon = [ ["path", { d: "M11.0991 3.00012C7.45013 3.00669 5.53932 3.09629 4.31817 4.31764C3.00034 5.63568 3.00034 7.75704 3.00034 11.9997C3.00034 16.2424 3.00034 18.3638 4.31817 19.6818C5.63599 20.9999 7.75701 20.9999 11.9991 20.9999C16.241 20.9999 18.3621 20.9999 19.6799 19.6818C20.901 18.4605 20.9906 16.5493 20.9972 12.8998", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M20.556 3.49612L11.0487 13.0586M20.556 3.49612C20.062 3.00151 16.7343 3.04761 16.0308 3.05762M20.556 3.49612C21.05 3.99074 21.0039 7.32273 20.9939 8.02714", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ListViewIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ListViewIcon.js var ListViewIcon = [ ["path", { d: "M2 11.4C2 10.2417 2.24173 10 3.4 10H20.6C21.7583 10 22 10.2417 22 11.4V12.6C22 13.7583 21.7583 14 20.6 14H3.4C2.24173 14 2 13.7583 2 12.6V11.4Z", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M2 3.4C2 2.24173 2.24173 2 3.4 2H20.6C21.7583 2 22 2.24173 22 3.4V4.6C22 5.75827 21.7583 6 20.6 6H3.4C2.24173 6 2 5.75827 2 4.6V3.4Z", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M2 19.4C2 18.2417 2.24173 18 3.4 18H20.6C21.7583 18 22 18.2417 22 19.4V20.6C22 21.7583 21.7583 22 20.6 22H3.4C2.24173 22 2 21.7583 2 20.6V19.4Z", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Loading03Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Loading03Icon.js var Loading03Icon = [ ["path", { d: "M12 3V6", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 18V21", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], @@ -4262,63 +4264,63 @@ var Loading03Icon = [ ["path", { d: "M7.75804 7.75804L5.63672 5.63672", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "7" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/LockIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/LockIcon.js var LockIcon = [ ["path", { d: "M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 13C13.1046 13 14 12.1046 14 11C14 9.89543 13.1046 9 12 9C10.8954 9 10 9.89543 10 11C10 12.1046 10.8954 13 12 13ZM12 13L12 16", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Mail02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Mail02Icon.js var Mail02Icon = [ ["path", { d: "M7 8.5L9.94202 10.2394C11.6572 11.2535 12.3428 11.2535 14.058 10.2394L17 8.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M2.01577 13.4756C2.08114 16.5412 2.11383 18.0739 3.24496 19.2094C4.37608 20.3448 5.95033 20.3843 9.09883 20.4634C11.0393 20.5122 12.9607 20.5122 14.9012 20.4634C18.0497 20.3843 19.6239 20.3448 20.7551 19.2094C21.8862 18.0739 21.9189 16.5412 21.9842 13.4756C22.0053 12.4899 22.0053 11.5101 21.9842 10.5244C21.9189 7.45886 21.8862 5.92609 20.7551 4.79066C19.6239 3.65523 18.0497 3.61568 14.9012 3.53657C12.9607 3.48781 11.0393 3.48781 9.09882 3.53656C5.95033 3.61566 4.37608 3.65521 3.24495 4.79065C2.11382 5.92608 2.08114 7.45885 2.01576 10.5244C1.99474 11.5101 1.99475 12.4899 2.01577 13.4756Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/MailOpen01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/MailOpen01Icon.js var MailOpen01Icon = [ ["path", { d: "M2 19L8.91302 14.2905C11.4387 12.5698 12.5613 12.5698 15.087 14.2905L22 19", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M2.01592 14.551C2.08186 17.5843 2.11484 19.1009 3.24611 20.2241C4.37738 21.3473 5.95183 21.3862 9.10072 21.4641C11.0393 21.512 12.9607 21.512 14.8993 21.4641C18.0482 21.3862 19.6226 21.3473 20.7539 20.2241C21.8852 19.1009 21.9181 17.5843 21.9841 14.551C22.0164 13.0649 21.9995 11.5934 21.9334 10.0921C21.8924 9.15964 21.8719 8.69341 21.6354 8.27984C21.3989 7.86628 20.9913 7.59935 20.176 7.0655L16.4152 4.60286C14.2742 3.20096 13.2038 2.5 12 2.5C10.7962 2.5 9.72577 3.20095 7.58483 4.60286L3.82397 7.0655C3.00869 7.59935 2.60106 7.86628 2.36459 8.27984C2.12812 8.69341 2.1076 9.15965 2.06656 10.0921C2.00049 11.5934 1.98361 13.0649 2.01592 14.551Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M22 9.5L17.7346 12.6072C16.7004 13.3606 15.8504 14 14.5 14M2 9.5L6.26538 12.6072C7.29955 13.3606 8.14961 14 9.5 14", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Menu02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Menu02Icon.js var Menu02Icon = [ ["path", { d: "M4 5L16 5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M4 12L20 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M4 19L12 19", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/MessageAdd02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/MessageAdd02Icon.js var MessageAdd02Icon = [ ["path", { d: "M13 3.02144C12.6777 3.00721 12.3445 2.99998 12 2.99998C4.13281 2.99998 2 7.02942 2 12C2 14.0712 2.37034 15.979 3.37161 17.5C4.63281 19.5 3.99253 21.3333 3 22C4.61547 22 5.70211 21.4858 6.39239 20.9766C6.88252 20.615 7.50688 20.4364 8.0984 20.5814C9.20689 20.8533 10.4991 21 12 21C19.1328 21 22 16.9705 22 12C22 11.3126 21.9643 10.6432 21.8812 9.99998", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12.1248 12H11.9998M16.125 12H16M8.125 12H8M12.2498 12C12.2498 12.1381 12.1379 12.25 11.9998 12.25C11.8618 12.25 11.7498 12.1381 11.7498 12C11.7498 11.8619 11.8618 11.75 11.9998 11.75C12.1379 11.75 12.2498 11.8619 12.2498 12ZM16.25 12C16.25 12.1381 16.1381 12.25 16 12.25C15.8619 12.25 15.75 12.1381 15.75 12C15.75 11.8619 15.8619 11.75 16 11.75C16.1381 11.75 16.25 11.8619 16.25 12ZM8.25 12C8.25 12.1381 8.13807 12.25 8 12.25C7.86193 12.25 7.75 12.1381 7.75 12C7.75 11.8619 7.86193 11.75 8 11.75C8.13807 11.75 8.25 11.8619 8.25 12Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M16 4.99998H22M19 1.99998L19 7.99998", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/MessageQuestionIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/MessageQuestionIcon.js var MessageQuestionIcon = [ ["path", { d: "M12 20.5C19.1328 20.5 22 16.4706 22 11.5C22 6.52944 20.1328 2.5 12 2.5C4.13281 2.5 2 6.52944 2 11.5C2 13.5712 2.37034 15.4791 3.37161 17C4.63281 19 3.99253 20.8333 3 21.5C4.61547 21.5 5.70211 20.9858 6.39239 20.4766C6.88252 20.115 7.50688 19.9364 8.0984 20.0815C9.20689 20.3533 10.4991 20.5 12 20.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M10 9C10 7.89543 10.8954 7 12 7C13.1046 7 14 7.89543 14 9C14 9.57777 13.755 10.0983 13.3632 10.4634C12.7572 11.0282 12 11.6716 12 12.5M12.125 15.75H12M12.25 15.75C12.25 15.8881 12.1381 16 12 16C11.8619 16 11.75 15.8881 11.75 15.75C11.75 15.6119 11.8619 15.5 12 15.5C12.1381 15.5 12.25 15.6119 12.25 15.75Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Mic02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Mic02Icon.js var Mic02Icon = [ ["path", { d: "M17 7V11C17 13.7614 14.7614 16 12 16C9.23858 16 7 13.7614 7 11V7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M20 11C20 15.4183 16.4183 19 12 19M12 19C7.58172 19 4 15.4183 4 11M12 19V22M12 22H15M12 22H9", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/MoreHorizontalIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/MoreHorizontalIcon.js var MoreHorizontalIcon = [ ["path", { d: "M6.00449 12.5V12M18.0045 12.5V12M12.0045 12.5V12M7.00449 12.5C7.00449 11.9477 6.55677 11.5 6.00449 11.5C5.4522 11.5 5.00449 11.9477 5.00449 12.5C5.00449 13.0523 5.4522 13.5 6.00449 13.5C6.55677 13.5 7.00449 13.0523 7.00449 12.5ZM19.0045 12.5C19.0045 11.9477 18.5568 11.5 18.0045 11.5C17.4522 11.5 17.0045 11.9477 17.0045 12.5C17.0045 13.0523 17.4522 13.5 18.0045 13.5C18.5568 13.5 19.0045 13.0523 19.0045 12.5ZM13.0045 12.5C13.0045 11.9477 12.5568 11.5 12.0045 11.5C11.4522 11.5 11.0045 11.9477 11.0045 12.5C11.0045 13.0523 11.4522 13.5 12.0045 13.5C12.5568 13.5 13.0045 13.0523 13.0045 12.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PauseIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PauseIcon.js var PauseIcon = [ ["path", { d: "M4 7C4 5.58579 4 4.87868 4.43934 4.43934C4.87868 4 5.58579 4 7 4C8.41421 4 9.12132 4 9.56066 4.43934C10 4.87868 10 5.58579 10 7V17C10 18.4142 10 19.1213 9.56066 19.5607C9.12132 20 8.41421 20 7 20C5.58579 20 4.87868 20 4.43934 19.5607C4 19.1213 4 18.4142 4 17V7Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14 7C14 5.58579 14 4.87868 14.4393 4.43934C14.8787 4 15.5858 4 17 4C18.4142 4 19.1213 4 19.5607 4.43934C20 4.87868 20 5.58579 20 7V17C20 18.4142 20 19.1213 19.5607 19.5607C19.1213 20 18.4142 20 17 20C15.5858 20 14.8787 20 14.4393 19.5607C14 19.1213 14 18.4142 14 17V7Z", stroke: "currentColor", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PinOffIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PinOffIcon.js var PinOffIcon = [ ["path", { d: "M7.5 8C6.95863 8.1281 6.49932 8.14239 5.99268 8.45891C5.07234 9.03388 4.85108 9.71674 5.08821 10.7612C5.94028 14.5139 9.48599 18.0596 13.2388 18.9117C14.2834 19.1489 14.9661 18.928 15.5416 18.0077C15.8411 17.5288 15.8716 17.0081 16 16.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 7.79915C12.1776 7.77794 12.3182 7.74034 12.4295 7.68235C13.3997 7.17686 13.9291 5.53361 14.4498 4.60009C14.9311 3.73715 15.1718 3.30567 15.7379 3.10227C16.3041 2.89888 16.6448 3.02205 17.3262 3.26839C18.9197 3.8445 20.1555 5.08032 20.7316 6.6738C20.9779 7.35521 21.1011 7.69591 20.8977 8.26204C20.6943 8.82817 20.2628 9.06884 19.3999 9.55018C18.4608 10.074 16.7954 10.6108 16.2905 11.5898C16.2345 11.6983 16.1978 11.8327 16.1769 12", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4326,85 +4328,85 @@ var PinOffIcon = [ ["path", { d: "M3 3L21 21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PinIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PinIcon.js var PinIcon = [ ["path", { d: "M3 21L8 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M13.2585 18.8714C9.51516 18.0215 5.97844 14.4848 5.12853 10.7415C4.99399 10.1489 4.92672 9.85266 5.12161 9.37197C5.3165 8.89129 5.55457 8.74255 6.03071 8.44509C7.10705 7.77265 8.27254 7.55888 9.48209 7.66586C11.1793 7.81598 12.0279 7.89104 12.4512 7.67048C12.8746 7.44991 13.1622 6.93417 13.7376 5.90269L14.4664 4.59604C14.9465 3.73528 15.1866 3.3049 15.7513 3.10202C16.316 2.89913 16.6558 3.02199 17.3355 3.26771C18.9249 3.84236 20.1576 5.07505 20.7323 6.66449C20.978 7.34417 21.1009 7.68401 20.898 8.2487C20.6951 8.8134 20.2647 9.05346 19.4039 9.53358L18.0672 10.2792C17.0376 10.8534 16.5229 11.1406 16.3024 11.568C16.0819 11.9955 16.162 12.8256 16.3221 14.4859C16.4399 15.7068 16.2369 16.88 15.5555 17.9697C15.2577 18.4458 15.1088 18.6839 14.6283 18.8786C14.1477 19.0733 13.8513 19.006 13.2585 18.8714Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PlayIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PlayIcon.js var PlayIcon = [ ["path", { d: "M18.8906 12.846C18.5371 14.189 16.8667 15.138 13.5257 17.0361C10.296 18.8709 8.6812 19.7884 7.37983 19.4196C6.8418 19.2671 6.35159 18.9776 5.95624 18.5787C5 17.6139 5 15.7426 5 12C5 8.2574 5 6.3861 5.95624 5.42132C6.35159 5.02245 6.8418 4.73288 7.37983 4.58042C8.6812 4.21165 10.296 5.12907 13.5257 6.96393C16.8667 8.86197 18.5371 9.811 18.8906 11.154C19.0365 11.7084 19.0365 12.2916 18.8906 12.846Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PlusMinusSquare01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PlusMinusSquare01Icon.js var PlusMinusSquare01Icon = [ ["path", { d: "M12 7.5V13.8636M15.5 10.6818H8.5M15.5 16.5H8.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PlusSignIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PlusSignIcon.js var PlusSignIcon = [ ["path", { d: "M12 4V20M20 12H4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/PuzzleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/PuzzleIcon.js var PuzzleIcon = [ ["path", { d: "M12.828 6.00096C12.9388 5.68791 12.999 5.35099 12.999 5C12.999 3.34315 11.6559 2 9.99904 2C8.34219 2 6.99904 3.34315 6.99904 5C6.99904 5.35099 7.05932 5.68791 7.17008 6.00096C4.88532 6.0093 3.66601 6.09039 2.87772 6.87868C2.08951 7.66689 2.00836 8.88603 2 11.1704C2.31251 11.06 2.64876 11 2.99904 11C4.6559 11 5.99904 12.3431 5.99904 14C5.99904 15.6569 4.6559 17 2.99904 17C2.64876 17 2.31251 16.94 2 16.8296C2.00836 19.114 2.08951 20.3331 2.87772 21.1213C3.66593 21.9095 4.88508 21.9907 7.16941 21.999C7.05908 21.6865 6.99904 21.3503 6.99904 21C6.99904 19.3431 8.34219 18 9.99904 18C11.6559 18 12.999 19.3431 12.999 21C12.999 21.3503 12.939 21.6865 12.8287 21.999C15.113 21.9907 16.3322 21.9095 17.1204 21.1213C17.9086 20.333 17.9897 19.1137 17.9981 16.829C18.3111 16.9397 18.648 17 18.999 17C20.6559 17 21.999 15.6569 21.999 14C21.999 12.3431 20.6559 11 18.999 11C18.648 11 18.3111 11.0603 17.9981 11.171C17.9897 8.88627 17.9086 7.66697 17.1204 6.87868C16.3321 6.09039 15.1128 6.0093 12.828 6.00096Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Refresh01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Refresh01Icon.js var Refresh01Icon = [ ["path", { d: "M20.4879 15C19.2524 18.4956 15.9187 21 12 21C7.02943 21 3 16.9706 3 12C3 7.02943 7.02943 3 12 3C15.7292 3 18.9286 5.26806 20.2941 8.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M15 9H18C19.4142 9 20.1213 9 20.5607 8.56066C21 8.12132 21 7.41421 21 6V3", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/RepeatIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/RepeatIcon.js var RepeatIcon = [ ["path", { d: "M16.3884 3L17.3913 3.97574C17.8393 4.41165 18.0633 4.62961 17.9844 4.81481C17.9056 5 17.5888 5 16.9552 5H9.19422C5.22096 5 2 8.13401 2 12C2 13.4872 2.47668 14.8662 3.2895 16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M7.61156 21L6.60875 20.0243C6.16074 19.5883 5.93673 19.3704 6.01557 19.1852C6.09441 19 6.4112 19 7.04478 19H14.8058C18.779 19 22 15.866 22 12C22 10.5128 21.5233 9.13383 20.7105 8", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Search01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Search01Icon.js var Search01Icon = [ ["path", { d: "M17 17L21 21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19C15.4183 19 19 15.4183 19 11Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SentIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SentIcon.js var SentIcon = [ ["path", { d: "M21.0477 3.05293C18.8697 0.707363 2.48648 6.4532 2.50001 8.551C2.51535 10.9299 8.89809 11.6617 10.6672 12.1581C11.7311 12.4565 12.016 12.7625 12.2613 13.8781C13.3723 18.9305 13.9301 21.4435 15.2014 21.4996C17.2278 21.5892 23.1733 5.342 21.0477 3.05293Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11.4999 12.5L14.9999 9", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Settings01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Settings01Icon.js var Settings01Icon = [ ["path", { d: "M21.3175 7.14139L20.8239 6.28479C20.4506 5.63696 20.264 5.31305 19.9464 5.18388C19.6288 5.05472 19.2696 5.15664 18.5513 5.36048L17.3311 5.70418C16.8725 5.80994 16.3913 5.74994 15.9726 5.53479L15.6357 5.34042C15.2766 5.11043 15.0004 4.77133 14.8475 4.37274L14.5136 3.37536C14.294 2.71534 14.1842 2.38533 13.9228 2.19657C13.6615 2.00781 13.3143 2.00781 12.6199 2.00781H11.5051C10.8108 2.00781 10.4636 2.00781 10.2022 2.19657C9.94085 2.38533 9.83106 2.71534 9.61149 3.37536L9.27753 4.37274C9.12465 4.77133 8.84845 5.11043 8.48937 5.34042L8.15249 5.53479C7.73374 5.74994 7.25259 5.80994 6.79398 5.70418L5.57375 5.36048C4.85541 5.15664 4.49625 5.05472 4.17867 5.18388C3.86109 5.31305 3.67445 5.63696 3.30115 6.28479L2.80757 7.14139C2.45766 7.74864 2.2827 8.05227 2.31666 8.37549C2.35061 8.69871 2.58483 8.95918 3.05326 9.48012L4.0843 10.6328C4.3363 10.9518 4.51521 11.5078 4.51521 12.0077C4.51521 12.5078 4.33636 13.0636 4.08433 13.3827L3.05326 14.5354C2.58483 15.0564 2.35062 15.3168 2.31666 15.6401C2.2827 15.9633 2.45766 16.2669 2.80757 16.8741L3.30114 17.7307C3.67443 18.3785 3.86109 18.7025 4.17867 18.8316C4.49625 18.9608 4.85542 18.8589 5.57377 18.655L6.79394 18.3113C7.25263 18.2055 7.73387 18.2656 8.15267 18.4808L8.4895 18.6752C8.84851 18.9052 9.12464 19.2442 9.2775 19.6428L9.61149 20.6403C9.83106 21.3003 9.94085 21.6303 10.2022 21.8191C10.4636 22.0078 10.8108 22.0078 11.5051 22.0078H12.6199C13.3143 22.0078 13.6615 22.0078 13.9228 21.8191C14.1842 21.6303 14.294 21.3003 14.5136 20.6403L14.8476 19.6428C15.0004 19.2442 15.2765 18.9052 15.6356 18.6752L15.9724 18.4808C16.3912 18.2656 16.8724 18.2055 17.3311 18.3113L18.5513 18.655C19.2696 18.8589 19.6288 18.9608 19.9464 18.8316C20.264 18.7025 20.4506 18.3785 20.8239 17.7307L21.3175 16.8741C21.6674 16.2669 21.8423 15.9633 21.8084 15.6401C21.7744 15.3168 21.5402 15.0564 21.0718 14.5354L20.0407 13.3827C19.7887 13.0636 19.6098 12.5078 19.6098 12.0077C19.6098 11.5078 19.7888 10.9518 20.0407 10.6328L21.0718 9.48012C21.5402 8.95918 21.7744 8.69871 21.8084 8.37549C21.8423 8.05227 21.6674 7.74864 21.3175 7.14139Z", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M15.5195 12C15.5195 13.933 13.9525 15.5 12.0195 15.5C10.0865 15.5 8.51953 13.933 8.51953 12C8.51953 10.067 10.0865 8.5 12.0195 8.5C13.9525 8.5 15.5195 10.067 15.5195 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SidebarBottomIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SidebarBottomIcon.js var SidebarBottomIcon = [ ["path", { d: "M2 12C2 8.31087 2 6.4663 2.81382 5.15877C3.1149 4.67502 3.48891 4.25427 3.91891 3.91555C5.08116 3 6.72077 3 10 3H14C17.2792 3 18.9188 3 20.0811 3.91555C20.5111 4.25427 20.8851 4.67502 21.1862 5.15877C22 6.4663 22 8.31087 22 12C22 15.6891 22 17.5337 21.1862 18.8412C20.8851 19.325 20.5111 19.7457 20.0811 20.0845C18.9188 21 17.2792 21 14 21H10C6.72077 21 5.08116 21 3.91891 20.0845C3.48891 19.7457 3.1149 19.325 2.81382 18.8412C2 17.5337 2 15.6891 2 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M2 14.5L22 14.5", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M6 18H7M10 18H11", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SidebarLeftIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SidebarLeftIcon.js var SidebarLeftIcon = [ ["path", { d: "M2 12C2 8.31087 2 6.4663 2.81382 5.15877C3.1149 4.67502 3.48891 4.25427 3.91891 3.91554C5.08116 3 6.72077 3 10 3H14C17.2792 3 18.9188 3 20.0811 3.91554C20.5111 4.25427 20.8851 4.67502 21.1862 5.15877C22 6.4663 22 8.31087 22 12C22 15.6891 22 17.5337 21.1862 18.8412C20.8851 19.325 20.5111 19.7457 20.0811 20.0845C18.9188 21 17.2792 21 14 21H10C6.72077 21 5.08116 21 3.91891 20.0845C3.48891 19.7457 3.1149 19.325 2.81382 18.8412C2 17.5337 2 15.6891 2 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M9.5 3L9.5 21", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M5 7H6M5 10H6", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SidebarRightIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SidebarRightIcon.js var SidebarRightIcon = [ ["path", { d: "M2 12C2 8.3109 2 6.46633 2.81382 5.1588C3.1149 4.67505 3.48891 4.2543 3.91891 3.91557C5.08116 3.00003 6.72077 3.00003 10 3.00003H14C17.2792 3.00003 18.9188 3.00003 20.0811 3.91557C20.5111 4.2543 20.8851 4.67505 21.1862 5.1588C22 6.46633 22 8.3109 22 12C22 15.6892 22 17.5337 21.1862 18.8413C20.8851 19.325 20.5111 19.7458 20.0811 20.0845C18.9188 21 17.2792 21 14 21H10C6.72077 21 5.08116 21 3.91891 20.0845C3.48891 19.7458 3.1149 19.325 2.81382 18.8413C2 17.5337 2 15.6892 2 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14.5 3.00003L14.5 21", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M18 7.00006H19M18 10.0001H19", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SlidersHorizontalIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SlidersHorizontalIcon.js var SlidersHorizontalIcon = [ ["path", { d: "M3.99963 5.00055L9.99963 5.00031", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12.9996 5.00031L19.9996 5.00031", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], @@ -4417,13 +4419,13 @@ var SlidersHorizontalIcon = [ ["path", { d: "M3.99963 19.0005L8.99963 19.0003", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "8" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SmartPhone01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SmartPhone01Icon.js var SmartPhone01Icon = [ ["path", { d: "M13.5 2H10.5C8.14298 2 6.96447 2 6.23223 2.73223C5.5 3.46447 5.5 4.64298 5.5 7V17C5.5 19.357 5.5 20.5355 6.23223 21.2678C6.96447 22 8.14298 22 10.5 22H13.5C15.857 22 17.0355 22 17.7678 21.2678C18.5 20.5355 18.5 19.357 18.5 17V7C18.5 4.64298 18.5 3.46447 17.7678 2.73223C17.0355 2 15.857 2 13.5 2Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12.125 19H12M12.25 19C12.25 19.1381 12.1381 19.25 12 19.25C11.8619 19.25 11.75 19.1381 11.75 19C11.75 18.8619 11.8619 18.75 12 18.75C12.1381 18.75 12.25 18.8619 12.25 19Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Sorting01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Sorting01Icon.js var Sorting01Icon = [ ["path", { d: "M11.0001 8L19.0001 8.00006", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M11.0001 12H16.0001", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4432,31 +4434,31 @@ var Sorting01Icon = [ ["path", { d: "M5.5 21V3M5.5 21C4.79977 21 3.49153 19.0057 3 18.5M5.5 21C6.20023 21 7.50847 19.0057 8 18.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SourceCodeIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SourceCodeIcon.js var SourceCodeIcon = [ ["path", { d: "M17 8L18.8398 9.85008C19.6133 10.6279 20 11.0168 20 11.5C20 11.9832 19.6133 12.3721 18.8398 13.1499L17 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M7 8L5.16019 9.85008C4.38673 10.6279 4 11.0168 4 11.5C4 11.9832 4.38673 12.3721 5.16019 13.1499L7 15", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M14.5 4L9.5 20", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/SquareIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/SquareIcon.js var SquareIcon = [ ["path", { d: "M2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/StarIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/StarIcon.js var StarIcon = [ ["path", { d: "M13.7276 3.44418L15.4874 6.99288C15.7274 7.48687 16.3673 7.9607 16.9073 8.05143L20.0969 8.58575C22.1367 8.92853 22.6167 10.4206 21.1468 11.8925L18.6671 14.3927C18.2471 14.8161 18.0172 15.6327 18.1471 16.2175L18.8571 19.3125C19.417 21.7623 18.1271 22.71 15.9774 21.4296L12.9877 19.6452C12.4478 19.3226 11.5579 19.3226 11.0079 19.6452L8.01827 21.4296C5.8785 22.71 4.57865 21.7522 5.13859 19.3125L5.84851 16.2175C5.97849 15.6327 5.74852 14.8161 5.32856 14.3927L2.84884 11.8925C1.389 10.4206 1.85895 8.92853 3.89872 8.58575L7.08837 8.05143C7.61831 7.9607 8.25824 7.48687 8.49821 6.99288L10.258 3.44418C11.2179 1.51861 12.7777 1.51861 13.7276 3.44418Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Target02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Target02Icon.js var Target02Icon = [ ["path", { d: "M17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14 2.20004C13.3538 2.06886 12.6849 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.3151 21.9311 10.6462 21.8 10", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12.0303 11.9625L16.5832 7.4096M19.7404 4.34462L19.1872 2.35748C19.0853 2.03011 18.6914 1.89965 18.4259 2.11662C16.9898 3.29018 15.4254 4.87091 16.703 7.36419C19.2771 8.56455 20.7466 6.94584 21.8733 5.5853C22.0975 5.3146 21.9623 4.90767 21.6247 4.81005L19.7404 4.34462Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/TestTube01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/TestTube01Icon.js var TestTube01Icon = [ ["path", { d: "M8 2H16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M16.2187 13.0044L15.9921 13.6151C15.5219 14.65 14.1115 15.7439 11.7609 14.3182C10.2471 13.4001 8.93663 12.6631 7.9997 13.16L7.21891 13.5412", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4465,7 +4467,7 @@ var TestTube01Icon = [ ["path", { d: "M10.125 17H10M10.25 17C10.25 17.1381 10.1381 17.25 10 17.25C9.86193 17.25 9.75 17.1381 9.75 17C9.75 16.8619 9.86193 16.75 10 16.75C10.1381 16.75 10.25 16.8619 10.25 17Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/TextWrapIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/TextWrapIcon.js var TextWrapIcon = [ ["path", { d: "M3 3H21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3 15H9", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4473,19 +4475,19 @@ var TextWrapIcon = [ ["path", { d: "M3 9H16.5C18.9853 9 21 11.0147 21 13.5C21 15.9853 18.9853 18 16.5 18H12M12 18C12 17.1597 14.3932 15.5898 15 15M12 18C12 18.8403 14.3932 20.4102 15 21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Tick02Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Tick02Icon.js var Tick02Icon = [ ["path", { d: "M5 14L8.5 17.5L19 6.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/TimeScheduleIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/TimeScheduleIcon.js var TimeScheduleIcon = [ ["path", { d: "M12 8V12L13.5 13.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M19.5454 16.4534C21.1818 17.337 22 17.7789 22 18.5C22 19.2211 21.1818 19.663 19.5454 20.5466L18.4311 21.1484C17.1744 21.827 16.5461 22.1663 16.2439 21.9196C15.504 21.3154 16.6567 19.7561 16.9403 19.2037C17.2277 18.644 17.2225 18.3459 16.9403 17.7963C16.6567 17.2439 15.504 15.6846 16.2439 15.0804C16.5461 14.8337 17.1744 15.173 18.4311 15.8516L19.5454 16.4534Z", stroke: "currentColor", strokeWidth: "1.5", key: "1" }], ["path", { d: "M13.0261 21.948C12.6888 21.9824 12.3464 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 12.6849 21.9311 13.3538 21.8 14", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ToolboxIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ToolboxIcon.js var ToolboxIcon = [ ["path", { d: "M3 15V14H21V15C21 17.8284 21 19.2426 20.1213 20.1213C19.2426 21 17.8284 21 15 21H9C6.17157 21 4.75736 21 3.87868 20.1213C3 19.2426 3 17.8284 3 15Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M3 14L3.00001 12.9999C3.00003 11.5278 3.00004 10.7918 3.31675 10.1584C3.63347 9.52493 4.22231 9.08329 5.39999 8.20002C6.19297 7.60528 6.58946 7.30791 7.05132 7.15395C7.51317 7 8.00879 7 9.00002 7H15C15.9912 7 16.4868 7 16.9487 7.15395C17.4105 7.3079 17.807 7.60527 18.6 8.2C19.7777 9.08328 20.3666 9.52492 20.6833 10.1584C21 10.7918 21 11.5279 21 13V14H3Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4494,34 +4496,34 @@ var ToolboxIcon = [ ["path", { d: "M8.49997 7.00006V6.50006C8.49997 5.0956 8.49997 4.39337 8.83703 3.88892C8.98295 3.67054 9.17045 3.48304 9.38883 3.33712C9.89328 3.00006 10.5955 3.00006 12 3.00006C13.4044 3.00006 14.1067 3.00006 14.6111 3.33712C14.8295 3.48304 15.017 3.67054 15.1629 3.88892C15.5 4.39337 15.5 5.0956 15.5 6.50006V7.00006", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "4" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/TrendingUpDownIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/TrendingUpDownIcon.js var TrendingUpDownIcon = [ ["path", { d: "M3 14.001L7 10.001C7.88256 9.11841 8.32385 8.67713 8.86543 8.62835C8.95496 8.62028 9.04504 8.62028 9.13457 8.62835C9.67615 8.67713 10.1174 9.11841 11 10.001C11.8826 10.8835 12.3238 11.3248 12.8654 11.3736C12.955 11.3817 13.045 11.3817 13.1346 11.3736C13.6762 11.3248 14.1174 10.8835 15 10.001L20 5.00098M16 15.001L20 19.001", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M16 19.7244C16 19.7244 20.101 20.3467 20.7234 19.7244C21.3458 19.102 20.7234 15.001 20.7234 15.001", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M16 4.27682C16 4.27682 20.101 3.6545 20.7234 4.27685C21.3458 4.8992 20.7234 9.00024 20.7234 9.00024", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/Unarchive03Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/Unarchive03Icon.js var Unarchive03Icon = [ ["path", { d: "M21 7H3V13C3 16.7712 3 18.6569 4.17157 19.8284C5.34315 21 7.22876 21 11 21H13C16.7712 21 18.6569 21 19.8284 19.8284C21 18.6569 21 16.7712 21 13V7Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M21 7H3L4.2 5.4C5.08328 4.22229 5.52492 3.63344 6.15836 3.31672C6.7918 3 7.52786 3 9 3H15C16.4721 3 17.2082 3 17.8416 3.31672C18.4751 3.63344 18.9167 4.22229 19.8 5.4L21 7Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M12 11L12 17.5M9 13.5C9.58984 12.8932 11.1597 10.5 12 10.5C12.8403 10.5 14.4102 12.8932 15 13.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/UserAdd01Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/UserAdd01Icon.js var UserAdd01Icon = [ ["path", { d: "M15 8C15 5.23858 12.7614 3 10 3C7.23858 3 5 5.23858 5 8C5 10.7614 7.23858 13 10 13C12.7614 13 15 10.7614 15 8Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M17.5 21L17.5 14M14 17.5H21", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M3 20C3 16.134 6.13401 13 10 13C11.4872 13 12.8662 13.4638 14 14.2547", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/UserIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/UserIcon.js var UserIcon = [ ["path", { d: "M17 8.5C17 5.73858 14.7614 3.5 12 3.5C9.23858 3.5 7 5.73858 7 8.5C7 11.2614 9.23858 13.5 12 13.5C14.7614 13.5 17 11.2614 17 8.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M19 20.5C19 16.634 15.866 13.5 12 13.5C8.13401 13.5 5 16.634 5 20.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/WorkflowCircle03Icon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/WorkflowCircle03Icon.js var WorkflowCircle03Icon = [ ["path", { d: "M15 5C15 6.65685 13.6569 8 12 8C10.3431 8 9 6.65685 9 5C9 3.34315 10.3431 2 12 2C13.6569 2 15 3.34315 15 5Z", stroke: "currentColor", strokeWidth: "1.5", key: "0" }], ["path", { d: "M12 8V9M12 9C12 9.93188 12 10.3978 12.1776 10.7654C12.4144 11.2554 12.8687 11.6448 13.4404 11.8478C13.8692 12 14.4128 12 15.5 12C16.5872 12 17.1308 12 17.5596 12.1522C18.1313 12.3552 18.5856 12.7446 18.8224 13.2346C19 13.6022 19 14.0681 19 15V16M12 9C12 9.93188 12 10.3978 11.8224 10.7654C11.5856 11.2554 11.1313 11.6448 10.5596 11.8478C10.1308 12 9.5872 12 8.5 12C7.4128 12 6.8692 12 6.44041 12.1522C5.86867 12.3552 5.41443 12.7446 5.17761 13.2346C5 13.6022 5 14.0681 5 15V16", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], @@ -4529,26 +4531,26 @@ var WorkflowCircle03Icon = [ ["path", { d: "M22 19C22 20.6569 20.6569 22 19 22C17.3431 22 16 20.6569 16 19C16 17.3431 17.3431 16 19 16C20.6569 16 22 17.3431 22 19Z", stroke: "currentColor", strokeWidth: "1.5", key: "3" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ZapIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ZapIcon.js var ZapIcon = [ ["path", { d: "M8.62814 12.6736H8.16918C6.68545 12.6736 5.94358 12.6736 5.62736 12.1844C5.31114 11.6953 5.61244 11.0138 6.21504 9.65083L8.02668 5.55323C8.57457 4.314 8.84852 3.69438 9.37997 3.34719C9.91142 3 10.5859 3 11.935 3H14.0244C15.6632 3 16.4826 3 16.7916 3.53535C17.1007 4.0707 16.6942 4.78588 15.8811 6.21623L14.8092 8.10188C14.405 8.81295 14.2029 9.16849 14.2057 9.45952C14.2094 9.83775 14.4105 10.1862 14.7354 10.377C14.9854 10.5239 15.3927 10.5239 16.2074 10.5239C17.2373 10.5239 17.7523 10.5239 18.0205 10.7022C18.3689 10.9338 18.5513 11.3482 18.4874 11.7632C18.4382 12.0826 18.0918 12.4656 17.399 13.2317L11.8639 19.3523C10.7767 20.5545 10.2331 21.1556 9.86807 20.9654C9.50303 20.7751 9.67833 19.9822 10.0289 18.3962L10.7157 15.2896C10.9826 14.082 11.1161 13.4782 10.7951 13.0759C10.4741 12.6736 9.85877 12.6736 8.62814 12.6736Z", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ZoomInAreaIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ZoomInAreaIcon.js var ZoomInAreaIcon = [ ["path", { d: "M18.5016 19.1217L21 21.6217M20 15.1217C20 12.0842 17.5376 9.62173 14.5 9.62173C11.4624 9.62173 9 12.0842 9 15.1217C9 18.1593 11.4624 20.6217 14.5 20.6217C17.5376 20.6217 20 18.1593 20 15.1217Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M14.5 13.1217V17.1217M16.5 15.1217H12.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M10 3.62173H14M3 10.6217V14.6217M6.5 21.6217C4.567 21.6217 3 20.0547 3 18.1217M17.5 3.62173C19.433 3.62173 21 5.18873 21 7.12173M3 7.12173C3 5.18873 4.567 3.62173 6.5 3.62173", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// ../../node_modules/@hugeicons/core-free-icons/dist/esm/ZoomOutAreaIcon.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/@hugeicons/core-free-icons/dist/esm/ZoomOutAreaIcon.js var ZoomOutAreaIcon = [ ["path", { d: "M18.5016 18.5L21 21M20 14.5C20 11.4624 17.5376 9 14.5 9C11.4624 9 9 11.4624 9 14.5C9 17.5376 11.4624 20 14.5 20C17.5376 20 20 17.5376 20 14.5Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "0" }], ["path", { d: "M16.5 14.5H12.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "1" }], ["path", { d: "M10 3H14M3 10V14M6.5 21C4.567 21 3 19.433 3 17.5M17.5 3C19.433 3 21 4.567 21 6.5M3 6.5C3 4.567 4.567 3 6.5 3", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", key: "2" }] ]; -// components/ui/icon.tsx +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/components/ui/icon.tsx var PaletteStrokeRoundedIcon = [ [ "path", @@ -4846,7 +4848,7 @@ var { createTooltipScope } = mod5; -// lib/portal-scope.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/lib/portal-scope.ts function usePortalScopeProps() { return { "data-bb-portaled-overlay": "", @@ -4854,7 +4856,7 @@ function usePortalScopeProps() { }; } -// components/ui/tooltip.tsx +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/components/ui/tooltip.tsx var TooltipProvider2 = Provider; var Tooltip2 = Root; var TooltipTrigger2 = Trigger; @@ -4883,7 +4885,7 @@ var TooltipContent2 = forwardRef(function TooltipContentComponent({ }); TooltipContent2.displayName = Content.displayName; -// core.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/core.ts function scopeKey(scope) { if (scope.kind === "thread") { return `thread:${scope.threadId ?? ""}`; @@ -4897,7 +4899,7 @@ function scopeKey(scope) { return `new-thread:${scope.projectId ?? ""}`; } -// app.tsx +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/app.tsx var PENDING_STORAGE_PREFIX = "bb-plugin-prompt-shaper:pending:"; var STARTUP_GRACE_MS = 3e4; var locallyStartingRequestIds = /* @__PURE__ */ new Set(); @@ -5012,9 +5014,15 @@ function PromptShaperAction({ setPending(recoveredRequest); }, [composerScopeKey, rpc]); useEffect(() => { - composer.setTextEffect?.(isRunning ? "shimmer" : null); - composer.setThreadRowStatus?.(isRunning ? THREAD_ROW_STATUS : null); - }, [composer.setTextEffect, composer.setThreadRowStatus, isRunning]); + composer.experimental_setTextEffect(isRunning ? "shimmer" : null); + composer.experimental_setThreadRowStatus( + isRunning ? THREAD_ROW_STATUS : null + ); + }, [ + composer.experimental_setTextEffect, + composer.experimental_setThreadRowStatus, + isRunning + ]); useEffect(() => { if (undoState !== null && (undoState.scopeKey !== composerScopeKey || composer.text !== undoState.enhancedPrompt)) { setUndoState(null); @@ -5022,10 +5030,14 @@ function PromptShaperAction({ }, [composer.text, composerScopeKey, undoState]); useEffect(() => { return () => { - composer.setTextEffect?.(null); - composer.setThreadRowStatus?.(null); + composer.experimental_setTextEffect(null); + composer.experimental_setThreadRowStatus(null); }; - }, [composer.setTextEffect, composer.setThreadRowStatus, composerScopeKey]); + }, [ + composer.experimental_setTextEffect, + composer.experimental_setThreadRowStatus, + composerScopeKey + ]); useEffect(() => { const recoveredRequest = loadPendingRequest( composerScopeKeyRef.current @@ -5039,8 +5051,8 @@ function PromptShaperAction({ }; }, []); const clearLoadingEffects = useCallback(() => { - composerRef.current.setTextEffect?.(null); - composerRef.current.setThreadRowStatus?.(null); + composerRef.current.experimental_setTextEffect(null); + composerRef.current.experimental_setThreadRowStatus(null); }, []); const applyEnhancement = useCallback((enhancedPrompt) => { const activeComposer = composerRef.current; @@ -5149,8 +5161,8 @@ function PromptShaperAction({ startup: "starting" }; setUndoState(null); - composer.setTextEffect?.("shimmer"); - composer.setThreadRowStatus?.(THREAD_ROW_STATUS); + composer.experimental_setTextEffect("shimmer"); + composer.experimental_setThreadRowStatus(THREAD_ROW_STATUS); setPendingRequest(request); locallyStartingRequestIds.add(request.requestId); try { diff --git a/plugins/improve-prompt/dist/app.meta.json b/plugins/improve-prompt/dist/app.meta.json index c59899c..0d13651 100644 --- a/plugins/improve-prompt/dist/app.meta.json +++ b/plugins/improve-prompt/dist/app.meta.json @@ -1,11 +1,11 @@ { "sdkMajor": 0, - "sdkVersion": "0.4.0", + "sdkVersion": "0.4.1", "artifactFormatVersion": 1, "pluginId": "prompt-shaper", "pluginVersion": "0.1.0", "builtWith": { "bbVersion": "0.0.32", - "pluginSdkVersion": "0.4.0" + "pluginSdkVersion": "0.4.1" } } diff --git a/plugins/improve-prompt/dist/server.js b/plugins/improve-prompt/dist/server.js index b268af1..5e238d2 100644 --- a/plugins/improve-prompt/dist/server.js +++ b/plugins/improve-prompt/dist/server.js @@ -10,7 +10,7 @@ var __export = (target, all) => { __defProp(target, name, { get: all[name], enumerable: true }); }; -// ../../node_modules/zod/v4/classic/external.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/external.js var external_exports = {}; __export(external_exports, { $brand: () => $brand, @@ -253,7 +253,7 @@ __export(external_exports, { xor: () => xor }); -// ../../node_modules/zod/v4/core/index.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/index.js var core_exports2 = {}; __export(core_exports2, { $ZodAny: () => $ZodAny, @@ -532,7 +532,7 @@ __export(core_exports2, { version: () => version }); -// ../../node_modules/zod/v4/core/core.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/core.js var _a; var NEVER = /* @__PURE__ */ Object.freeze({ status: "aborted" @@ -609,7 +609,7 @@ function config(newConfig) { return globalConfig; } -// ../../node_modules/zod/v4/core/util.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/util.js var util_exports = {}; __export(util_exports, { BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES, @@ -1305,7 +1305,7 @@ var Class = class { } }; -// ../../node_modules/zod/v4/core/errors.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/errors.js var initializer = (inst, def) => { inst.name = "$ZodError"; Object.defineProperty(inst, "_zod", { @@ -1444,7 +1444,7 @@ function prettifyError(error51) { return lines.join("\n"); } -// ../../node_modules/zod/v4/core/parse.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/parse.js var _parse = (_Err) => (schema, value, _ctx, _params) => { const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; const result = schema._zod.run({ value, issues: [] }, ctx); @@ -1532,7 +1532,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => { }; var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); -// ../../node_modules/zod/v4/core/regexes.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/regexes.js var regexes_exports = {}; __export(regexes_exports, { base64: () => base64, @@ -1691,7 +1691,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/; var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "=="); var sha512_base64url = /* @__PURE__ */ fixedBase64url(86); -// ../../node_modules/zod/v4/core/checks.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/checks.js var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { var _a3; inst._zod ?? (inst._zod = {}); @@ -2239,7 +2239,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins }; }); -// ../../node_modules/zod/v4/core/doc.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/doc.js var Doc = class { constructor(args = []) { this.content = []; @@ -2275,14 +2275,14 @@ var Doc = class { } }; -// ../../node_modules/zod/v4/core/versions.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/versions.js var version = { major: 4, minor: 4, patch: 3 }; -// ../../node_modules/zod/v4/core/schemas.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/schemas.js var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { var _a3; inst ?? (inst = {}); @@ -4375,7 +4375,7 @@ function handleRefineResult(result, payload, input, inst) { } } -// ../../node_modules/zod/v4/locales/index.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/index.js var locales_exports = {}; __export(locales_exports, { ar: () => ar_default, @@ -4432,7 +4432,7 @@ __export(locales_exports, { zhTW: () => zh_TW_default }); -// ../../node_modules/zod/v4/locales/ar.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ar.js var error = () => { const Sizable = { string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, @@ -4539,7 +4539,7 @@ function ar_default() { }; } -// ../../node_modules/zod/v4/locales/az.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/az.js var error2 = () => { const Sizable = { string: { unit: "simvol", verb: "olmal\u0131d\u0131r" }, @@ -4645,7 +4645,7 @@ function az_default() { }; } -// ../../node_modules/zod/v4/locales/be.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/be.js function getBelarusianPlural(count, one, few, many) { const absCount = Math.abs(count); const lastDigit = absCount % 10; @@ -4802,7 +4802,7 @@ function be_default() { }; } -// ../../node_modules/zod/v4/locales/bg.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/bg.js var error4 = () => { const Sizable = { string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, @@ -4923,7 +4923,7 @@ function bg_default() { }; } -// ../../node_modules/zod/v4/locales/ca.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ca.js var error5 = () => { const Sizable = { string: { unit: "car\xE0cters", verb: "contenir" }, @@ -5032,7 +5032,7 @@ function ca_default() { }; } -// ../../node_modules/zod/v4/locales/cs.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/cs.js var error6 = () => { const Sizable = { string: { unit: "znak\u016F", verb: "m\xEDt" }, @@ -5144,7 +5144,7 @@ function cs_default() { }; } -// ../../node_modules/zod/v4/locales/da.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/da.js var error7 = () => { const Sizable = { string: { unit: "tegn", verb: "havde" }, @@ -5260,7 +5260,7 @@ function da_default() { }; } -// ../../node_modules/zod/v4/locales/de.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/de.js var error8 = () => { const Sizable = { string: { unit: "Zeichen", verb: "zu haben" }, @@ -5369,7 +5369,7 @@ function de_default() { }; } -// ../../node_modules/zod/v4/locales/el.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/el.js var error9 = () => { const Sizable = { string: { unit: "\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" }, @@ -5479,7 +5479,7 @@ function el_default() { }; } -// ../../node_modules/zod/v4/locales/en.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/en.js var error10 = () => { const Sizable = { string: { unit: "characters", verb: "to have" }, @@ -5592,7 +5592,7 @@ function en_default() { }; } -// ../../node_modules/zod/v4/locales/eo.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/eo.js var error11 = () => { const Sizable = { string: { unit: "karaktrojn", verb: "havi" }, @@ -5702,7 +5702,7 @@ function eo_default() { }; } -// ../../node_modules/zod/v4/locales/es.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/es.js var error12 = () => { const Sizable = { string: { unit: "caracteres", verb: "tener" }, @@ -5835,7 +5835,7 @@ function es_default() { }; } -// ../../node_modules/zod/v4/locales/fa.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/fa.js var error13 = () => { const Sizable = { string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, @@ -5950,7 +5950,7 @@ function fa_default() { }; } -// ../../node_modules/zod/v4/locales/fi.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/fi.js var error14 = () => { const Sizable = { string: { unit: "merkki\xE4", subject: "merkkijonon" }, @@ -6063,7 +6063,7 @@ function fi_default() { }; } -// ../../node_modules/zod/v4/locales/fr.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/fr.js var error15 = () => { const Sizable = { string: { unit: "caract\xE8res", verb: "avoir" }, @@ -6189,7 +6189,7 @@ function fr_default() { }; } -// ../../node_modules/zod/v4/locales/fr-CA.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/fr-CA.js var error16 = () => { const Sizable = { string: { unit: "caract\xE8res", verb: "avoir" }, @@ -6297,7 +6297,7 @@ function fr_CA_default() { }; } -// ../../node_modules/zod/v4/locales/he.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/he.js var error17 = () => { const TypeNames = { string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" }, @@ -6492,7 +6492,7 @@ function he_default() { }; } -// ../../node_modules/zod/v4/locales/hr.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/hr.js var error18 = () => { const Sizable = { string: { unit: "znakova", verb: "imati" }, @@ -6615,7 +6615,7 @@ function hr_default() { }; } -// ../../node_modules/zod/v4/locales/hu.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/hu.js var error19 = () => { const Sizable = { string: { unit: "karakter", verb: "legyen" }, @@ -6724,7 +6724,7 @@ function hu_default() { }; } -// ../../node_modules/zod/v4/locales/hy.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/hy.js function getArmenianPlural(count, one, many) { return Math.abs(count) === 1 ? one : many; } @@ -6872,7 +6872,7 @@ function hy_default() { }; } -// ../../node_modules/zod/v4/locales/id.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/id.js var error21 = () => { const Sizable = { string: { unit: "karakter", verb: "memiliki" }, @@ -6979,7 +6979,7 @@ function id_default() { }; } -// ../../node_modules/zod/v4/locales/is.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/is.js var error22 = () => { const Sizable = { string: { unit: "stafi", verb: "a\xF0 hafa" }, @@ -7089,7 +7089,7 @@ function is_default() { }; } -// ../../node_modules/zod/v4/locales/it.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/it.js var error23 = () => { const Sizable = { string: { unit: "caratteri", verb: "avere" }, @@ -7198,7 +7198,7 @@ function it_default() { }; } -// ../../node_modules/zod/v4/locales/ja.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ja.js var error24 = () => { const Sizable = { string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" }, @@ -7306,7 +7306,7 @@ function ja_default() { }; } -// ../../node_modules/zod/v4/locales/ka.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ka.js var error25 = () => { const Sizable = { string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, @@ -7419,7 +7419,7 @@ function ka_default() { }; } -// ../../node_modules/zod/v4/locales/km.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/km.js var error26 = () => { const Sizable = { string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, @@ -7530,12 +7530,12 @@ function km_default() { }; } -// ../../node_modules/zod/v4/locales/kh.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/kh.js function kh_default() { return km_default(); } -// ../../node_modules/zod/v4/locales/ko.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ko.js var error27 = () => { const Sizable = { string: { unit: "\uBB38\uC790", verb: "to have" }, @@ -7647,7 +7647,7 @@ function ko_default() { }; } -// ../../node_modules/zod/v4/locales/lt.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/lt.js var capitalizeFirstCharacter = (text) => { return text.charAt(0).toUpperCase() + text.slice(1); }; @@ -7851,7 +7851,7 @@ function lt_default() { }; } -// ../../node_modules/zod/v4/locales/mk.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/mk.js var error29 = () => { const Sizable = { string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, @@ -7961,7 +7961,7 @@ function mk_default() { }; } -// ../../node_modules/zod/v4/locales/ms.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ms.js var error30 = () => { const Sizable = { string: { unit: "aksara", verb: "mempunyai" }, @@ -8069,7 +8069,7 @@ function ms_default() { }; } -// ../../node_modules/zod/v4/locales/nl.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/nl.js var error31 = () => { const Sizable = { string: { unit: "tekens", verb: "heeft" }, @@ -8180,7 +8180,7 @@ function nl_default() { }; } -// ../../node_modules/zod/v4/locales/no.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/no.js var error32 = () => { const Sizable = { string: { unit: "tegn", verb: "\xE5 ha" }, @@ -8289,7 +8289,7 @@ function no_default() { }; } -// ../../node_modules/zod/v4/locales/ota.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ota.js var error33 = () => { const Sizable = { string: { unit: "harf", verb: "olmal\u0131d\u0131r" }, @@ -8399,7 +8399,7 @@ function ota_default() { }; } -// ../../node_modules/zod/v4/locales/ps.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ps.js var error34 = () => { const Sizable = { string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, @@ -8514,7 +8514,7 @@ function ps_default() { }; } -// ../../node_modules/zod/v4/locales/pl.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/pl.js var error35 = () => { const Sizable = { string: { unit: "znak\xF3w", verb: "mie\u0107" }, @@ -8624,7 +8624,7 @@ function pl_default() { }; } -// ../../node_modules/zod/v4/locales/pt.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/pt.js var error36 = () => { const Sizable = { string: { unit: "caracteres", verb: "ter" }, @@ -8733,7 +8733,7 @@ function pt_default() { }; } -// ../../node_modules/zod/v4/locales/ro.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ro.js var error37 = () => { const Sizable = { string: { unit: "caractere", verb: "s\u0103 aib\u0103" }, @@ -8853,7 +8853,7 @@ function ro_default() { }; } -// ../../node_modules/zod/v4/locales/ru.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ru.js function getRussianPlural(count, one, few, many) { const absCount = Math.abs(count); const lastDigit = absCount % 10; @@ -9010,7 +9010,7 @@ function ru_default() { }; } -// ../../node_modules/zod/v4/locales/sl.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/sl.js var error39 = () => { const Sizable = { string: { unit: "znakov", verb: "imeti" }, @@ -9120,7 +9120,7 @@ function sl_default() { }; } -// ../../node_modules/zod/v4/locales/sv.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/sv.js var error40 = () => { const Sizable = { string: { unit: "tecken", verb: "att ha" }, @@ -9231,7 +9231,7 @@ function sv_default() { }; } -// ../../node_modules/zod/v4/locales/ta.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ta.js var error41 = () => { const Sizable = { string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, @@ -9342,7 +9342,7 @@ function ta_default() { }; } -// ../../node_modules/zod/v4/locales/th.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/th.js var error42 = () => { const Sizable = { string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, @@ -9453,7 +9453,7 @@ function th_default() { }; } -// ../../node_modules/zod/v4/locales/tr.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/tr.js var error43 = () => { const Sizable = { string: { unit: "karakter", verb: "olmal\u0131" }, @@ -9559,7 +9559,7 @@ function tr_default() { }; } -// ../../node_modules/zod/v4/locales/uk.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/uk.js var error44 = () => { const Sizable = { string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, @@ -9668,12 +9668,12 @@ function uk_default() { }; } -// ../../node_modules/zod/v4/locales/ua.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ua.js function ua_default() { return uk_default(); } -// ../../node_modules/zod/v4/locales/ur.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/ur.js var error45 = () => { const Sizable = { string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" }, @@ -9784,7 +9784,7 @@ function ur_default() { }; } -// ../../node_modules/zod/v4/locales/uz.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/uz.js var error46 = () => { const Sizable = { string: { unit: "belgi", verb: "bo\u2018lishi kerak" }, @@ -9895,7 +9895,7 @@ function uz_default() { }; } -// ../../node_modules/zod/v4/locales/vi.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/vi.js var error47 = () => { const Sizable = { string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" }, @@ -10004,7 +10004,7 @@ function vi_default() { }; } -// ../../node_modules/zod/v4/locales/zh-CN.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/zh-CN.js var error48 = () => { const Sizable = { string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" }, @@ -10114,7 +10114,7 @@ function zh_CN_default() { }; } -// ../../node_modules/zod/v4/locales/zh-TW.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/zh-TW.js var error49 = () => { const Sizable = { string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" }, @@ -10222,7 +10222,7 @@ function zh_TW_default() { }; } -// ../../node_modules/zod/v4/locales/yo.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/locales/yo.js var error50 = () => { const Sizable = { string: { unit: "\xE0mi", verb: "n\xED" }, @@ -10330,7 +10330,7 @@ function yo_default() { }; } -// ../../node_modules/zod/v4/core/registries.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/registries.js var _a2; var $output = /* @__PURE__ */ Symbol("ZodOutput"); var $input = /* @__PURE__ */ Symbol("ZodInput"); @@ -10380,7 +10380,7 @@ function registry() { (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry()); var globalRegistry = globalThis.__zod_globalRegistry; -// ../../node_modules/zod/v4/core/api.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/api.js // @__NO_SIDE_EFFECTS__ function _string(Class2, params) { return new Class2({ @@ -11419,7 +11419,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) { return inst; } -// ../../node_modules/zod/v4/core/to-json-schema.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/to-json-schema.js function initializeContext(params) { let target = params?.target ?? "draft-2020-12"; if (target === "draft-4") @@ -11778,7 +11778,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) = return finalize(ctx, schema); }; -// ../../node_modules/zod/v4/core/json-schema-processors.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/json-schema-processors.js var formatMap = { guid: "uuid", url: "uri", @@ -12322,7 +12322,7 @@ function toJSONSchema(input, params) { return finalize(ctx, input); } -// ../../node_modules/zod/v4/core/json-schema-generator.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/json-schema-generator.js var JSONSchemaGenerator = class { /** @deprecated Access via ctx instead */ get metadataRegistry() { @@ -12397,10 +12397,10 @@ var JSONSchemaGenerator = class { } }; -// ../../node_modules/zod/v4/core/json-schema.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/core/json-schema.js var json_schema_exports = {}; -// ../../node_modules/zod/v4/classic/schemas.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/schemas.js var schemas_exports2 = {}; __export(schemas_exports2, { ZodAny: () => ZodAny, @@ -12571,7 +12571,7 @@ __export(schemas_exports2, { xor: () => xor }); -// ../../node_modules/zod/v4/classic/checks.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/checks.js var checks_exports2 = {}; __export(checks_exports2, { endsWith: () => _endsWith, @@ -12605,7 +12605,7 @@ __export(checks_exports2, { uppercase: () => _uppercase }); -// ../../node_modules/zod/v4/classic/iso.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/iso.js var iso_exports = {}; __export(iso_exports, { ZodISODate: () => ZodISODate, @@ -12646,7 +12646,7 @@ function duration2(params) { return _isoDuration(ZodISODuration, params); } -// ../../node_modules/zod/v4/classic/errors.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/errors.js var initializer2 = (inst, issues) => { $ZodError.init(inst, issues); inst.name = "ZodError"; @@ -12686,7 +12686,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, { Parent: Error }); -// ../../node_modules/zod/v4/classic/parse.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/parse.js var parse2 = /* @__PURE__ */ _parse(ZodRealError); var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError); var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError); @@ -12700,7 +12700,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError); var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); -// ../../node_modules/zod/v4/classic/schemas.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/schemas.js var _installedGroups = /* @__PURE__ */ new WeakMap(); function _installLazyMethods(inst, group, methods) { const proto = Object.getPrototypeOf(inst); @@ -13990,7 +13990,7 @@ function preprocess(fn, schema) { }); } -// ../../node_modules/zod/v4/classic/compat.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/compat.js var ZodIssueCode = { invalid_type: "invalid_type", too_big: "too_big", @@ -14016,7 +14016,7 @@ var ZodFirstPartyTypeKind; /* @__PURE__ */ (function(ZodFirstPartyTypeKind2) { })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); -// ../../node_modules/zod/v4/classic/from-json-schema.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/from-json-schema.js var z = { ...schemas_exports2, ...checks_exports2, @@ -14496,7 +14496,7 @@ function fromJSONSchema(schema, params) { return convertSchema(normalized, ctx); } -// ../../node_modules/zod/v4/classic/coerce.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/coerce.js var coerce_exports = {}; __export(coerce_exports, { bigint: () => bigint3, @@ -14521,10 +14521,10 @@ function date4(params) { return _coercedDate(ZodDate, params); } -// ../../node_modules/zod/v4/classic/external.js +// ../../worktrees/bb-plugins-omegacode-owned-icon/node_modules/zod/v4/classic/external.js config(en_default()); -// core.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/core.ts function sectionAfterHeading(output, heading) { const pattern = new RegExp(`^##\\s+${heading}\\s*$`, "im"); const match = pattern.exec(output); @@ -14567,7 +14567,7 @@ function buildWorkerPrompt(input) { ].join("\n"); } -// server.ts +// ../../worktrees/bb-plugins-omegacode-owned-icon/plugins/improve-prompt/server.ts var REQUEST_TTL_MS = 24 * 60 * 60 * 1e3; var REQUEST_PREFIX = "request:"; var THREAD_PREFIX = "thread:"; diff --git a/plugins/improve-prompt/dist/server.meta.json b/plugins/improve-prompt/dist/server.meta.json index c59899c..0d13651 100644 --- a/plugins/improve-prompt/dist/server.meta.json +++ b/plugins/improve-prompt/dist/server.meta.json @@ -1,11 +1,11 @@ { "sdkMajor": 0, - "sdkVersion": "0.4.0", + "sdkVersion": "0.4.1", "artifactFormatVersion": 1, "pluginId": "prompt-shaper", "pluginVersion": "0.1.0", "builtWith": { "bbVersion": "0.0.32", - "pluginSdkVersion": "0.4.0" + "pluginSdkVersion": "0.4.1" } } diff --git a/plugins/improve-prompt/package.json b/plugins/improve-prompt/package.json index 2d50a3e..a4b5756 100644 --- a/plugins/improve-prompt/package.json +++ b/plugins/improve-prompt/package.json @@ -10,7 +10,7 @@ ], "engines": { "bb": ">=0.0.32", - "bbPluginSdk": "^0.4.0" + "bbPluginSdk": "^0.4.1" }, "bb": { "name": "Improve Prompt", @@ -33,7 +33,7 @@ "tailwind-merge": "^3.4.0" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@testing-library/react": "^16.3.2", "@types/better-sqlite3": "^7.6.12", "@types/node": "^22.0.0", diff --git a/plugins/improve-prompt/test/plugin-sdk-app.ts b/plugins/improve-prompt/test/plugin-sdk-app.ts index d1b8aac..0b02621 100644 --- a/plugins/improve-prompt/test/plugin-sdk-app.ts +++ b/plugins/improve-prompt/test/plugin-sdk-app.ts @@ -20,6 +20,7 @@ type ThreadRowStatus = { icon: string; label: string; effect: "shimmer" | null; + tone: "default" | "success"; } | null; type RpcHandler = (input: unknown) => unknown | Promise; @@ -125,11 +126,11 @@ export function useComposer() { runtime.text = ""; notify(); }, - setTextEffect(effect: TextEffect) { + experimental_setTextEffect(effect: TextEffect) { runtime.textEffect = effect; runtime.textEffectCalls.push(effect); }, - setThreadRowStatus(status: ThreadRowStatus) { + experimental_setThreadRowStatus(status: ThreadRowStatus) { runtime.threadRowStatus = status; runtime.threadRowStatusCalls.push(status); }, diff --git a/plugins/improve-prompt/types/bb-plugin-sdk-app.d.ts b/plugins/improve-prompt/types/bb-plugin-sdk-app.d.ts index ca38030..3957233 100644 --- a/plugins/improve-prompt/types/bb-plugin-sdk-app.d.ts +++ b/plugins/improve-prompt/types/bb-plugin-sdk-app.d.ts @@ -123,6 +123,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -290,8 +306,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -351,6 +367,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -389,37 +406,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -457,19 +478,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -502,16 +527,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -546,4 +588,4 @@ declare const useBbNavigate: () => BbNavigate; declare const useComposer: () => PluginComposerApi; export { definePluginApp, useBbContext, useBbNavigate, useComposer, useRealtime, useRealtimeConnectionState, useRpc, useSettings }; -export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/improve-prompt/types/bb-plugin-sdk.d.ts b/plugins/improve-prompt/types/bb-plugin-sdk.d.ts index 21632b7..fdbb978 100644 --- a/plugins/improve-prompt/types/bb-plugin-sdk.d.ts +++ b/plugins/improve-prompt/types/bb-plugin-sdk.d.ts @@ -129,6 +129,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -288,6 +295,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -296,8 +312,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -357,6 +373,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -395,37 +412,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -463,19 +484,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -508,16 +533,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -739,9 +781,9 @@ declare const environmentSchema: z$1.ZodObject<{ isGitRepo: z$1.ZodBoolean; isWorktree: z$1.ZodBoolean; workspaceProvisionType: z$1.ZodEnum<{ - personal: "personal"; - "managed-worktree": "managed-worktree"; unmanaged: "unmanaged"; + "managed-worktree": "managed-worktree"; + personal: "personal"; }>; branchName: z$1.ZodNullable; baseBranch: z$1.ZodNullable; @@ -834,8 +876,8 @@ declare const providerPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -972,8 +1014,8 @@ declare const pluginPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -1116,8 +1158,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -1161,10 +1203,10 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1294,17 +1336,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1320,8 +1362,8 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1522,17 +1564,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1548,8 +1590,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1677,8 +1719,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1749,8 +1791,8 @@ declare const threadEventSchema: z$1.ZodPipe>; }, z$1.core.$strip>>; explanation: z$1.ZodOptional; @@ -2228,8 +2270,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2280,8 +2322,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2450,8 +2492,8 @@ declare const threadTimelinePendingTodosSchema: z$1.ZodObject<{ id: z$1.ZodString; text: z$1.ZodString; status: z$1.ZodEnum<{ - completed: "completed"; pending: "pending"; + completed: "completed"; in_progress: "in_progress"; }>; }, z$1.core.$strip>>; @@ -2868,6 +2910,41 @@ declare const projectCommandsQuerySchema: z$1.ZodObject<{ environmentId: z$1.ZodOptional, z$1.ZodOptional>>; }, z$1.core.$strict>; type ProjectCommandsQuery = z$1.infer; +declare const skillListResponseSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + provider: z$1.ZodNullable>; + scope: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-builtin": "bb-builtin"; + "bb-user": "bb-user"; + "bb-project": "bb-project"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + pluginId: z$1.ZodNullable; + filePath: z$1.ZodString; + manageable: z$1.ZodBoolean; + }, z$1.core.$strip>>; +}, z$1.core.$strip>; +type SkillListResponse = z$1.infer; +declare const skillContentResponseSchema: z$1.ZodObject<{ + content: z$1.ZodString; + revision: z$1.ZodString; +}, z$1.core.$strip>; +type SkillContentResponse = z$1.infer; +declare const skillFilesResponseSchema: z$1.ZodObject<{ + files: z$1.ZodArray; + truncated: z$1.ZodBoolean; +}, z$1.core.$strip>; +type SkillFilesResponse = z$1.infer; declare const projectResponseSchema: z$1.ZodObject<{ id: z$1.ZodString; kind: z$1.ZodEnum<{ @@ -3020,6 +3097,57 @@ declare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{ }, z$1.core.$strict>; type CopyProjectAttachmentsRequest = z$1.infer; +declare const registrySkillSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + name: z$1.ZodString; + installs: z$1.ZodNumber; + stars: z$1.ZodNullable; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; +}, z$1.core.$strip>; +type RegistrySkill = z$1.infer; +declare const registrySkillsPageSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; + }, z$1.core.$strip>>; + pagination: z$1.ZodObject<{ + page: z$1.ZodNumber; + perPage: z$1.ZodNumber; + total: z$1.ZodNumber; + hasMore: z$1.ZodBoolean; + }, z$1.core.$strip>; +}, z$1.core.$strip>; +type RegistrySkillsPage = z$1.infer; +declare const registrySkillDetailSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + hash: z$1.ZodNullable; + files: z$1.ZodNullable>>; +}, z$1.core.$strip>; +type RegistrySkillDetail = z$1.infer; +declare const registrySkillInstallResponseSchema: z$1.ZodObject<{ + ok: z$1.ZodLiteral; + filePath: z$1.ZodString; +}, z$1.core.$strip>; +type RegistrySkillInstallResponse = z$1.infer; + declare const updateEnvironmentRequestSchema: z$1.ZodObject<{ mergeBaseBranch: z$1.ZodOptional>; name: z$1.ZodOptional>; @@ -3145,8 +3273,8 @@ declare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{ type EnvironmentArchiveThreadsResponse = z$1.infer; declare const pullRequestMergeMethodSchema: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; type PullRequestMergeMethod = z$1.infer; declare const commitActionResponseSchema: z$1.ZodObject<{ @@ -3177,8 +3305,8 @@ declare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{ action: z$1.ZodLiteral<"pull_request_merge">; method: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; message: z$1.ZodString; }, z$1.core.$strip>; @@ -3339,10 +3467,10 @@ declare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z mergeability: z$1.ZodObject<{ state: z$1.ZodEnum<{ unknown: "unknown"; - blocked: "blocked"; draft: "draft"; mergeable: "mergeable"; conflicts: "conflicts"; + blocked: "blocked"; }>; mergeStateStatus: z$1.ZodNullable; attention: z$1.ZodEnum<{ none: "none"; - blocked: "blocked"; merged: "merged"; draft: "draft"; closed: "closed"; changes_requested: "changes_requested"; review_requested: "review_requested"; conflicts: "conflicts"; + blocked: "blocked"; checks_failed: "checks_failed"; checks_pending: "checks_pending"; ready_to_merge: "ready_to_merge"; @@ -3787,8 +3915,8 @@ declare const hostDaemonCommandRegistry: { }, z$1.core.$strict>], "kind">>; disallowedTools: z$1.ZodOptional>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; type: z$1.ZodLiteral<"thread.start">; requestId: z$1.ZodString; @@ -4276,8 +4404,8 @@ declare const hostDaemonCommandRegistry: { }>; }, z$1.core.$strip>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; projectId: z$1.ZodString; providerId: z$1.ZodString; @@ -5090,6 +5218,67 @@ declare const hostDaemonCommandRegistry: { argumentHint: z$1.ZodNullable; }, z$1.core.$strip>>; }, z$1.core.$strip>, "onlineRpc", true>; + "host.list_skills": HostDaemonCommandDescriptor<"host.list_skills", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.list_skills">; + providerId: z$1.ZodString; + cwd: z$1.ZodNullable; + }, z$1.core.$strip>, z$1.ZodObject<{ + skills: z$1.ZodArray; + filePath: z$1.ZodString; + rootKind: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-project": "bb-project"; + "bb-data-dir": "bb-data-dir"; + "bb-builtin": "bb-builtin"; + "provider-project": "provider-project"; + "provider-user": "provider-user"; + }>; + }, z$1.core.$strip>>; + }, z$1.core.$strip>, "onlineRpc", true>; + "host.install_registry_skill": HostDaemonCommandDescriptor<"host.install_registry_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.install_registry_skill">; + packageRef: z$1.ZodString; + skillId: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodObject<{ + filePath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.delete_skill": HostDaemonCommandDescriptor<"host.delete_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.delete_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + rootPath: z$1.ZodNullable; + }, z$1.core.$strict>, z$1.ZodObject<{ + deletedPath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.write_skill": HostDaemonCommandDescriptor<"host.write_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.write_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + content: z$1.ZodString; + expectedSha256: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"written">; + filePath: z$1.ZodString; + sha256: z$1.ZodString; + }, z$1.core.$strip>, z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"conflict">; + currentSha256: z$1.ZodNullable; + }, z$1.core.$strip>], "outcome">, "onlineRpc", false>; "host.list_branches": HostDaemonCommandDescriptor<"host.list_branches", z$1.ZodObject<{ type: z$1.ZodLiteral<"host.list_branches">; path: z$1.ZodString; @@ -5475,9 +5664,9 @@ declare const hostDaemonCommandRegistry: { executablePath: z$1.ZodNullable; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -5650,13 +5839,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5700,13 +5889,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5762,13 +5951,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5810,13 +5999,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5934,9 +6123,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -6087,11 +6276,11 @@ type HostProviderCliInstallEvent = ProviderCliInstallEvent; declare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{ id: z$1.ZodString; outcome: z$1.ZodEnum<{ + unavailable: "unavailable"; incompatible: "incompatible"; current: "current"; "update-available": "update-available"; pinned: "pinned"; - unavailable: "unavailable"; }>; devMode: z$1.ZodOptional>; installed: z$1.ZodObject<{ @@ -6158,11 +6347,11 @@ declare const installedPluginSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6178,6 +6367,7 @@ declare const installedPluginSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6251,11 +6441,11 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6271,6 +6461,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6345,11 +6536,11 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6365,6 +6556,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6465,6 +6657,7 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{ type PluginCatalogStatus = z$1.infer; declare const pluginCatalogSearchResultSchema: z$1.ZodObject<{ entryId: z$1.ZodString; + pluginId: z$1.ZodString; displayName: z$1.ZodString; description: z$1.ZodString; icon: z$1.ZodNullable; @@ -6948,9 +7141,9 @@ declare const terminalSessionSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -6979,9 +7172,9 @@ declare const terminalListResponseSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -9178,8 +9371,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ activePromptMode: z$1.ZodNullable; providerId: z$1.ZodEnum<{ - codex: "codex"; "claude-code": "claude-code"; + codex: "codex"; }>; prompt: z$1.ZodString; }, z$1.core.$strict>>; @@ -9355,8 +9548,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ updatedAt: z$1.ZodNumber; objective: z$1.ZodString; status: z$1.ZodEnum<{ - paused: "paused"; active: "active"; + paused: "paused"; budgetLimited: "budgetLimited"; complete: "complete"; }>; @@ -10228,6 +10421,62 @@ interface StatusArea { get(args?: StatusGetArgs): Promise; } +interface SkillWorkspaceArgs { + projectId: string; + environmentId: string | null; +} +interface SkillListArgs extends SkillWorkspaceArgs { + signal?: AbortSignal; +} +interface SkillIdentityArgs extends SkillListArgs { + skillId: string; +} +interface SkillContentArgs extends SkillIdentityArgs { + path: string; +} +interface SkillUpdateArgs extends SkillWorkspaceArgs { + skillId: string; + content: string; + revision: string; +} +interface SkillDeleteArgs extends SkillWorkspaceArgs { + skillId: string; +} +interface RegistrySkillsSearchArgs { + query?: string; + page?: number; + perPage?: number; +} +interface RegistrySkillIdArgs { + registrySkillId: string; +} +interface RegistrySkillSourceArgs { + source: string; + skillId: string; +} +interface RegistrySkillInstallArgs extends RegistrySkillIdArgs { + projectId: string; +} +interface SkillsRegistryArea { + detail(args: RegistrySkillSourceArgs): Promise; + get(args: RegistrySkillIdArgs): Promise; + install(args: RegistrySkillInstallArgs): Promise; + search(args?: RegistrySkillsSearchArgs): Promise; +} +interface SkillsArea { + getContent(args: SkillContentArgs): Promise; + list(args: SkillListArgs): Promise; + listFiles(args: SkillIdentityArgs): Promise; + registry: SkillsRegistryArea; + remove(args: SkillDeleteArgs): Promise<{ + deletedPath: string; + }>; + update(args: SkillUpdateArgs): Promise<{ + filePath: string; + revision: string; + }>; +} + type ThemeGetResult = AppTheme; type ThemeCatalogResult = ThemeCatalogResponse; type ThemeSetInput = AppThemeSelection; @@ -10699,6 +10948,7 @@ interface BbSdk extends BbRealtime { projects: ProjectsArea; plugins: PluginsArea; providers: ProvidersArea; + skills: SkillsArea; status: StatusArea; system: SystemArea; terminals: TerminalsArea; @@ -11306,4 +11556,4 @@ interface BbPluginApi { } export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract }; -export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/omegacode/app.test.tsx b/plugins/omegacode/app.test.tsx index 20d9449..f84fb7d 100644 --- a/plugins/omegacode/app.test.tsx +++ b/plugins/omegacode/app.test.tsx @@ -1,6 +1,6 @@ // @vitest-environment jsdom -import { cleanup, fireEvent, screen } from "@testing-library/react"; +import { cleanup, fireEvent, screen, within } from "@testing-library/react"; import type { PluginNavPanelProps } from "@bb/plugin-sdk"; import { loadPluginApp, renderSlot } from "@bb/plugin-sdk/testing/app"; import { afterEach, describe, expect, it } from "vitest"; @@ -160,6 +160,48 @@ const RUNS: GlobalRun[] = [ afterEach(() => cleanup()); describe("Omegacode global workflow page", () => { + it("registers the owner-scoped banner only in the host composer-status slot", async () => { + const app = await loadPluginApp(() => import("./app")); + expect(app.composerAccessories).toHaveLength(0); + expect(app.experimental_composerStatuses).toHaveLength(1); + + const status = app.experimental_composerStatuses[0]!; + const threadSlot = renderSlot( + status, + { projectId: "proj_owner", threadId: "thr_owner" }, + { + rpc: { + allRuns: () => ({ runs: [], scannedAt: 300 }), + runs: () => ({ runs: [RUNS[0]!], scannedAt: 300 }), + }, + }, + ); + expect( + await within(threadSlot.container).findByText("Running workflow"), + ).toBeDefined(); + expect(threadSlot.inspection.rpcCalls).toContainEqual({ + method: "runs", + input: { threadId: "thr_owner" }, + }); + threadSlot.lifecycle.unmount(); + + const unscopedSlot = renderSlot( + status, + { projectId: "proj_owner", threadId: null }, + { + rpc: { + allRuns: () => ({ runs: [], scannedAt: 300 }), + runs: () => { + throw new Error("unscoped status must not load runs"); + }, + }, + }, + ); + expect(unscopedSlot.container.textContent).toBe(""); + expect(unscopedSlot.inspection.rpcCalls).toEqual([]); + unscopedSlot.lifecycle.unmount(); + }); + it("prioritizes current and failed work before completed worker history", () => { const summary = workerActivitySummary( run({ @@ -250,7 +292,8 @@ describe("Omegacode global workflow page", () => { expect(app.navPanels).toHaveLength(1); expect(app.navPanels[0]?.title).toBe("Omegacode"); expect(app.navPanels[0]?.icon).toBe("Omega"); - expect(app.composerAccessories).toHaveLength(1); + expect(app.composerAccessories).toHaveLength(0); + expect(app.experimental_composerStatuses).toHaveLength(1); const panel = app.navPanels[0]!; const rendered = renderSlot( diff --git a/plugins/omegacode/app.tsx b/plugins/omegacode/app.tsx index 61bd887..7b352b1 100644 --- a/plugins/omegacode/app.tsx +++ b/plugins/omegacode/app.tsx @@ -1,13 +1,5 @@ // bb-plugin-omega — omegacode command center. -// -// The banner renders ABOVE the composer (like the host's "Running background -// command" banner). The plugin API only exposes a composer-FOOTER accessory -// slot, so the accessory mounts an anchor there, walks up to find its own -// composer box, and portals the banner in as that box's previous sibling. -// If the anchor can't be found (host layout changed), it falls back to -// rendering inline in the footer — never blank. -import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"; -import { createPortal } from "react-dom"; +import { useCallback, useEffect, useRef, useState } from "react"; import { WorkflowCircle03Icon } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; import { @@ -253,103 +245,6 @@ function BannerCard({ runs }: { runs: Run[] }) { ); } -/** - * Find THIS accessory's composer box (nearest ancestor that also contains the - * prompt input), and return a host-inserted div that sits just before it — i.e. - * above the composer. Returns null until found; the caller falls back to inline. - */ -function useAboveComposerTarget(anchor: HTMLElement | null): HTMLElement | null { - const [target, setTarget] = useState(null); - - useLayoutEffect(() => { - if (!anchor) return; - // Match bb's prompt-stack placement: the workflow card is a standalone - // sibling immediately above the composer, outside its managed height. - const holder = document.createElement("div"); - holder.dataset.omegaBanner = "1"; - holder.style.width = "100%"; - holder.style.marginBottom = "8px"; - const mount = () => { - let el: HTMLElement | null = anchor; - let composerBox: HTMLElement | null = null; - let inputAncestor: HTMLElement | null = null; - // Re-resolve from THIS accessory each time: bb may replace the composer - // or its stack wrapper during autosize/provider updates. Prefer bb's - // semantic promptbox form, not an inner overflow/editor wrapper. - while (el && el.parentElement) { - el = el.parentElement; - if (el.querySelector("textarea, [contenteditable='true']")) { - inputAncestor ??= el; - if (el.tagName === "FORM") { - composerBox = el; - break; - } - } - } - composerBox ??= inputAncestor; - if (!composerBox) return; - - // bb keeps native context cards and the composer unit under a spaced - // prompt-stack layout. Mount before the direct composer unit so the - // expanded card contributes to stack height instead of overflowing the - // composer's constrained z-20 wrapper. - let composerUnit = composerBox; - let stack = composerBox.parentElement; - while (stack && stack !== document.body) { - if (stack.classList.contains("space-y-2")) break; - composerUnit = stack; - stack = stack.parentElement; - } - if (!stack || stack === document.body) { - stack = composerBox.parentElement; - composerUnit = composerBox; - } - if (!stack) return; - const nativeCardStack = Array.from(stack.children).find( - (child): child is HTMLElement => - child instanceof HTMLElement && - child !== composerUnit && - child.classList.contains("space-y-2"), - ); - const mountParent = nativeCardStack ?? stack; - const mountBefore = nativeCardStack ? null : composerUnit; - holder.style.marginBottom = mountParent.classList.contains("space-y-2") - ? "0px" - : "8px"; - if ( - holder.parentElement !== mountParent || - holder.nextSibling !== mountBefore - ) { - mountParent.insertBefore(holder, mountBefore); - } - }; - mount(); - setTarget(holder.isConnected ? holder : null); - // The prompt stack is React-owned and may reconcile away foreign siblings - // or replace the wrapper entirely. Coalesce subtree changes and restore the - // scoped mount against the accessory's current ancestry. - let frame = 0; - const observer = new MutationObserver(() => { - if (frame !== 0) return; - frame = requestAnimationFrame(() => { - frame = 0; - mount(); - setTarget(holder.isConnected ? holder : null); - }); - }); - observer.observe(document.body, { childList: true, subtree: true }); - - return () => { - observer.disconnect(); - if (frame !== 0) cancelAnimationFrame(frame); - holder.remove(); - setTarget(null); - }; - }, [anchor]); - - return target; -} - function OmegacodeBanner({ threadId }: { threadId: string | null }) { const rpc = useRpc(); const realtimeState = useRealtimeConnectionState(); @@ -363,7 +258,6 @@ function OmegacodeBanner({ threadId }: { threadId: string | null }) { const loadingThreadId = useRef(null); const previousRealtimeState = useRef(realtimeState); const [, force] = useState(0); - const [anchor, setAnchor] = useState(null); const scoped = typeof threadId === "string" && threadId !== ""; const runs = snapshot?.threadId === threadId ? snapshot.runs : []; @@ -418,21 +312,10 @@ function OmegacodeBanner({ threadId }: { threadId: string | null }) { return () => clearInterval(t); }, [scoped]); - const target = useAboveComposerTarget(scoped ? anchor : null); - if (!scoped) return null; - const card = ; - - // Invisible footer anchor; the visible card is portaled above THIS composer. - // Falls back to inline (footer) if the composer box can't be located. - return ( - - {target ? createPortal(card, target) : card} - - ); + return ; } - export default definePluginApp((app) => { app.slots.navPanel({ id: "workflows", @@ -441,7 +324,7 @@ export default definePluginApp((app) => { path: "omegacode", component: OmegacodeOverview, }); - app.slots.composerAccessory({ + app.slots.experimental_composerStatus({ id: "omegacode-banner", component: OmegacodeBanner, }); diff --git a/plugins/omegacode/assets/icon.svg b/plugins/omegacode/assets/icon.svg new file mode 100644 index 0000000..2cc38a0 --- /dev/null +++ b/plugins/omegacode/assets/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/omegacode/package.json b/plugins/omegacode/package.json index 108c593..d7f850d 100644 --- a/plugins/omegacode/package.json +++ b/plugins/omegacode/package.json @@ -16,13 +16,13 @@ }, "engines": { "bb": ">=0.0.32", - "bbPluginSdk": "^0.4.0" + "bbPluginSdk": "^0.4.1" }, "bb": { "name": "Omegacode", "description": "Monitor Omegacode workflows globally and show owner-scoped progress above each bb composer.", "branding": { - "icon": "Omega", + "icon": "./assets/icon.svg", "logo": { "light": "./assets/logo.svg", "dark": "./assets/logo-dark.svg" @@ -41,7 +41,7 @@ "tailwind-merge": "^3.4.0" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@radix-ui/react-dialog": "^1.1.19", "@testing-library/react": "^16.3.2", "@types/better-sqlite3": "^7.6.12", diff --git a/plugins/omegacode/react-dom.d.ts b/plugins/omegacode/react-dom.d.ts deleted file mode 100644 index 6f9142b..0000000 --- a/plugins/omegacode/react-dom.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -// Minimal shim: bb provides react-dom at runtime (shimmed like react); we only use createPortal. -declare module "react-dom" { - import type { ReactNode } from "react"; - export function createPortal(children: ReactNode, container: Element | DocumentFragment, key?: string | null): ReactNode; -} diff --git a/plugins/omegacode/types/bb-plugin-sdk-app.d.ts b/plugins/omegacode/types/bb-plugin-sdk-app.d.ts index ca38030..3957233 100644 --- a/plugins/omegacode/types/bb-plugin-sdk-app.d.ts +++ b/plugins/omegacode/types/bb-plugin-sdk-app.d.ts @@ -123,6 +123,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -290,8 +306,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -351,6 +367,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -389,37 +406,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -457,19 +478,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -502,16 +527,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -546,4 +588,4 @@ declare const useBbNavigate: () => BbNavigate; declare const useComposer: () => PluginComposerApi; export { definePluginApp, useBbContext, useBbNavigate, useComposer, useRealtime, useRealtimeConnectionState, useRpc, useSettings }; -export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/omegacode/types/bb-plugin-sdk.d.ts b/plugins/omegacode/types/bb-plugin-sdk.d.ts index 21632b7..fdbb978 100644 --- a/plugins/omegacode/types/bb-plugin-sdk.d.ts +++ b/plugins/omegacode/types/bb-plugin-sdk.d.ts @@ -129,6 +129,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -288,6 +295,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -296,8 +312,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -357,6 +373,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -395,37 +412,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -463,19 +484,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -508,16 +533,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -739,9 +781,9 @@ declare const environmentSchema: z$1.ZodObject<{ isGitRepo: z$1.ZodBoolean; isWorktree: z$1.ZodBoolean; workspaceProvisionType: z$1.ZodEnum<{ - personal: "personal"; - "managed-worktree": "managed-worktree"; unmanaged: "unmanaged"; + "managed-worktree": "managed-worktree"; + personal: "personal"; }>; branchName: z$1.ZodNullable; baseBranch: z$1.ZodNullable; @@ -834,8 +876,8 @@ declare const providerPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -972,8 +1014,8 @@ declare const pluginPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -1116,8 +1158,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -1161,10 +1203,10 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1294,17 +1336,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1320,8 +1362,8 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1522,17 +1564,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1548,8 +1590,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1677,8 +1719,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1749,8 +1791,8 @@ declare const threadEventSchema: z$1.ZodPipe>; }, z$1.core.$strip>>; explanation: z$1.ZodOptional; @@ -2228,8 +2270,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2280,8 +2322,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2450,8 +2492,8 @@ declare const threadTimelinePendingTodosSchema: z$1.ZodObject<{ id: z$1.ZodString; text: z$1.ZodString; status: z$1.ZodEnum<{ - completed: "completed"; pending: "pending"; + completed: "completed"; in_progress: "in_progress"; }>; }, z$1.core.$strip>>; @@ -2868,6 +2910,41 @@ declare const projectCommandsQuerySchema: z$1.ZodObject<{ environmentId: z$1.ZodOptional, z$1.ZodOptional>>; }, z$1.core.$strict>; type ProjectCommandsQuery = z$1.infer; +declare const skillListResponseSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + provider: z$1.ZodNullable>; + scope: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-builtin": "bb-builtin"; + "bb-user": "bb-user"; + "bb-project": "bb-project"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + pluginId: z$1.ZodNullable; + filePath: z$1.ZodString; + manageable: z$1.ZodBoolean; + }, z$1.core.$strip>>; +}, z$1.core.$strip>; +type SkillListResponse = z$1.infer; +declare const skillContentResponseSchema: z$1.ZodObject<{ + content: z$1.ZodString; + revision: z$1.ZodString; +}, z$1.core.$strip>; +type SkillContentResponse = z$1.infer; +declare const skillFilesResponseSchema: z$1.ZodObject<{ + files: z$1.ZodArray; + truncated: z$1.ZodBoolean; +}, z$1.core.$strip>; +type SkillFilesResponse = z$1.infer; declare const projectResponseSchema: z$1.ZodObject<{ id: z$1.ZodString; kind: z$1.ZodEnum<{ @@ -3020,6 +3097,57 @@ declare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{ }, z$1.core.$strict>; type CopyProjectAttachmentsRequest = z$1.infer; +declare const registrySkillSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + name: z$1.ZodString; + installs: z$1.ZodNumber; + stars: z$1.ZodNullable; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; +}, z$1.core.$strip>; +type RegistrySkill = z$1.infer; +declare const registrySkillsPageSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; + }, z$1.core.$strip>>; + pagination: z$1.ZodObject<{ + page: z$1.ZodNumber; + perPage: z$1.ZodNumber; + total: z$1.ZodNumber; + hasMore: z$1.ZodBoolean; + }, z$1.core.$strip>; +}, z$1.core.$strip>; +type RegistrySkillsPage = z$1.infer; +declare const registrySkillDetailSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + hash: z$1.ZodNullable; + files: z$1.ZodNullable>>; +}, z$1.core.$strip>; +type RegistrySkillDetail = z$1.infer; +declare const registrySkillInstallResponseSchema: z$1.ZodObject<{ + ok: z$1.ZodLiteral; + filePath: z$1.ZodString; +}, z$1.core.$strip>; +type RegistrySkillInstallResponse = z$1.infer; + declare const updateEnvironmentRequestSchema: z$1.ZodObject<{ mergeBaseBranch: z$1.ZodOptional>; name: z$1.ZodOptional>; @@ -3145,8 +3273,8 @@ declare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{ type EnvironmentArchiveThreadsResponse = z$1.infer; declare const pullRequestMergeMethodSchema: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; type PullRequestMergeMethod = z$1.infer; declare const commitActionResponseSchema: z$1.ZodObject<{ @@ -3177,8 +3305,8 @@ declare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{ action: z$1.ZodLiteral<"pull_request_merge">; method: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; message: z$1.ZodString; }, z$1.core.$strip>; @@ -3339,10 +3467,10 @@ declare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z mergeability: z$1.ZodObject<{ state: z$1.ZodEnum<{ unknown: "unknown"; - blocked: "blocked"; draft: "draft"; mergeable: "mergeable"; conflicts: "conflicts"; + blocked: "blocked"; }>; mergeStateStatus: z$1.ZodNullable; attention: z$1.ZodEnum<{ none: "none"; - blocked: "blocked"; merged: "merged"; draft: "draft"; closed: "closed"; changes_requested: "changes_requested"; review_requested: "review_requested"; conflicts: "conflicts"; + blocked: "blocked"; checks_failed: "checks_failed"; checks_pending: "checks_pending"; ready_to_merge: "ready_to_merge"; @@ -3787,8 +3915,8 @@ declare const hostDaemonCommandRegistry: { }, z$1.core.$strict>], "kind">>; disallowedTools: z$1.ZodOptional>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; type: z$1.ZodLiteral<"thread.start">; requestId: z$1.ZodString; @@ -4276,8 +4404,8 @@ declare const hostDaemonCommandRegistry: { }>; }, z$1.core.$strip>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; projectId: z$1.ZodString; providerId: z$1.ZodString; @@ -5090,6 +5218,67 @@ declare const hostDaemonCommandRegistry: { argumentHint: z$1.ZodNullable; }, z$1.core.$strip>>; }, z$1.core.$strip>, "onlineRpc", true>; + "host.list_skills": HostDaemonCommandDescriptor<"host.list_skills", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.list_skills">; + providerId: z$1.ZodString; + cwd: z$1.ZodNullable; + }, z$1.core.$strip>, z$1.ZodObject<{ + skills: z$1.ZodArray; + filePath: z$1.ZodString; + rootKind: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-project": "bb-project"; + "bb-data-dir": "bb-data-dir"; + "bb-builtin": "bb-builtin"; + "provider-project": "provider-project"; + "provider-user": "provider-user"; + }>; + }, z$1.core.$strip>>; + }, z$1.core.$strip>, "onlineRpc", true>; + "host.install_registry_skill": HostDaemonCommandDescriptor<"host.install_registry_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.install_registry_skill">; + packageRef: z$1.ZodString; + skillId: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodObject<{ + filePath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.delete_skill": HostDaemonCommandDescriptor<"host.delete_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.delete_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + rootPath: z$1.ZodNullable; + }, z$1.core.$strict>, z$1.ZodObject<{ + deletedPath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.write_skill": HostDaemonCommandDescriptor<"host.write_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.write_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + content: z$1.ZodString; + expectedSha256: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"written">; + filePath: z$1.ZodString; + sha256: z$1.ZodString; + }, z$1.core.$strip>, z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"conflict">; + currentSha256: z$1.ZodNullable; + }, z$1.core.$strip>], "outcome">, "onlineRpc", false>; "host.list_branches": HostDaemonCommandDescriptor<"host.list_branches", z$1.ZodObject<{ type: z$1.ZodLiteral<"host.list_branches">; path: z$1.ZodString; @@ -5475,9 +5664,9 @@ declare const hostDaemonCommandRegistry: { executablePath: z$1.ZodNullable; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -5650,13 +5839,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5700,13 +5889,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5762,13 +5951,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5810,13 +5999,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5934,9 +6123,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -6087,11 +6276,11 @@ type HostProviderCliInstallEvent = ProviderCliInstallEvent; declare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{ id: z$1.ZodString; outcome: z$1.ZodEnum<{ + unavailable: "unavailable"; incompatible: "incompatible"; current: "current"; "update-available": "update-available"; pinned: "pinned"; - unavailable: "unavailable"; }>; devMode: z$1.ZodOptional>; installed: z$1.ZodObject<{ @@ -6158,11 +6347,11 @@ declare const installedPluginSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6178,6 +6367,7 @@ declare const installedPluginSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6251,11 +6441,11 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6271,6 +6461,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6345,11 +6536,11 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6365,6 +6556,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6465,6 +6657,7 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{ type PluginCatalogStatus = z$1.infer; declare const pluginCatalogSearchResultSchema: z$1.ZodObject<{ entryId: z$1.ZodString; + pluginId: z$1.ZodString; displayName: z$1.ZodString; description: z$1.ZodString; icon: z$1.ZodNullable; @@ -6948,9 +7141,9 @@ declare const terminalSessionSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -6979,9 +7172,9 @@ declare const terminalListResponseSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -9178,8 +9371,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ activePromptMode: z$1.ZodNullable; providerId: z$1.ZodEnum<{ - codex: "codex"; "claude-code": "claude-code"; + codex: "codex"; }>; prompt: z$1.ZodString; }, z$1.core.$strict>>; @@ -9355,8 +9548,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ updatedAt: z$1.ZodNumber; objective: z$1.ZodString; status: z$1.ZodEnum<{ - paused: "paused"; active: "active"; + paused: "paused"; budgetLimited: "budgetLimited"; complete: "complete"; }>; @@ -10228,6 +10421,62 @@ interface StatusArea { get(args?: StatusGetArgs): Promise; } +interface SkillWorkspaceArgs { + projectId: string; + environmentId: string | null; +} +interface SkillListArgs extends SkillWorkspaceArgs { + signal?: AbortSignal; +} +interface SkillIdentityArgs extends SkillListArgs { + skillId: string; +} +interface SkillContentArgs extends SkillIdentityArgs { + path: string; +} +interface SkillUpdateArgs extends SkillWorkspaceArgs { + skillId: string; + content: string; + revision: string; +} +interface SkillDeleteArgs extends SkillWorkspaceArgs { + skillId: string; +} +interface RegistrySkillsSearchArgs { + query?: string; + page?: number; + perPage?: number; +} +interface RegistrySkillIdArgs { + registrySkillId: string; +} +interface RegistrySkillSourceArgs { + source: string; + skillId: string; +} +interface RegistrySkillInstallArgs extends RegistrySkillIdArgs { + projectId: string; +} +interface SkillsRegistryArea { + detail(args: RegistrySkillSourceArgs): Promise; + get(args: RegistrySkillIdArgs): Promise; + install(args: RegistrySkillInstallArgs): Promise; + search(args?: RegistrySkillsSearchArgs): Promise; +} +interface SkillsArea { + getContent(args: SkillContentArgs): Promise; + list(args: SkillListArgs): Promise; + listFiles(args: SkillIdentityArgs): Promise; + registry: SkillsRegistryArea; + remove(args: SkillDeleteArgs): Promise<{ + deletedPath: string; + }>; + update(args: SkillUpdateArgs): Promise<{ + filePath: string; + revision: string; + }>; +} + type ThemeGetResult = AppTheme; type ThemeCatalogResult = ThemeCatalogResponse; type ThemeSetInput = AppThemeSelection; @@ -10699,6 +10948,7 @@ interface BbSdk extends BbRealtime { projects: ProjectsArea; plugins: PluginsArea; providers: ProvidersArea; + skills: SkillsArea; status: StatusArea; system: SystemArea; terminals: TerminalsArea; @@ -11306,4 +11556,4 @@ interface BbPluginApi { } export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract }; -export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/thread-hover-cards/types/bb-plugin-sdk-app.d.ts b/plugins/thread-hover-cards/types/bb-plugin-sdk-app.d.ts index ca38030..3957233 100644 --- a/plugins/thread-hover-cards/types/bb-plugin-sdk-app.d.ts +++ b/plugins/thread-hover-cards/types/bb-plugin-sdk-app.d.ts @@ -123,6 +123,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -290,8 +306,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -351,6 +367,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -389,37 +406,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -457,19 +478,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -502,16 +527,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -546,4 +588,4 @@ declare const useBbNavigate: () => BbNavigate; declare const useComposer: () => PluginComposerApi; export { definePluginApp, useBbContext, useBbNavigate, useComposer, useRealtime, useRealtimeConnectionState, useRpc, useSettings }; -export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/thread-hover-cards/types/bb-plugin-sdk.d.ts b/plugins/thread-hover-cards/types/bb-plugin-sdk.d.ts index 21632b7..fdbb978 100644 --- a/plugins/thread-hover-cards/types/bb-plugin-sdk.d.ts +++ b/plugins/thread-hover-cards/types/bb-plugin-sdk.d.ts @@ -129,6 +129,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -288,6 +295,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -296,8 +312,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -357,6 +373,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -395,37 +412,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -463,19 +484,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -508,16 +533,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -739,9 +781,9 @@ declare const environmentSchema: z$1.ZodObject<{ isGitRepo: z$1.ZodBoolean; isWorktree: z$1.ZodBoolean; workspaceProvisionType: z$1.ZodEnum<{ - personal: "personal"; - "managed-worktree": "managed-worktree"; unmanaged: "unmanaged"; + "managed-worktree": "managed-worktree"; + personal: "personal"; }>; branchName: z$1.ZodNullable; baseBranch: z$1.ZodNullable; @@ -834,8 +876,8 @@ declare const providerPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -972,8 +1014,8 @@ declare const pluginPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -1116,8 +1158,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -1161,10 +1203,10 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1294,17 +1336,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1320,8 +1362,8 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1522,17 +1564,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1548,8 +1590,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1677,8 +1719,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1749,8 +1791,8 @@ declare const threadEventSchema: z$1.ZodPipe>; }, z$1.core.$strip>>; explanation: z$1.ZodOptional; @@ -2228,8 +2270,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2280,8 +2322,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2450,8 +2492,8 @@ declare const threadTimelinePendingTodosSchema: z$1.ZodObject<{ id: z$1.ZodString; text: z$1.ZodString; status: z$1.ZodEnum<{ - completed: "completed"; pending: "pending"; + completed: "completed"; in_progress: "in_progress"; }>; }, z$1.core.$strip>>; @@ -2868,6 +2910,41 @@ declare const projectCommandsQuerySchema: z$1.ZodObject<{ environmentId: z$1.ZodOptional, z$1.ZodOptional>>; }, z$1.core.$strict>; type ProjectCommandsQuery = z$1.infer; +declare const skillListResponseSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + provider: z$1.ZodNullable>; + scope: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-builtin": "bb-builtin"; + "bb-user": "bb-user"; + "bb-project": "bb-project"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + pluginId: z$1.ZodNullable; + filePath: z$1.ZodString; + manageable: z$1.ZodBoolean; + }, z$1.core.$strip>>; +}, z$1.core.$strip>; +type SkillListResponse = z$1.infer; +declare const skillContentResponseSchema: z$1.ZodObject<{ + content: z$1.ZodString; + revision: z$1.ZodString; +}, z$1.core.$strip>; +type SkillContentResponse = z$1.infer; +declare const skillFilesResponseSchema: z$1.ZodObject<{ + files: z$1.ZodArray; + truncated: z$1.ZodBoolean; +}, z$1.core.$strip>; +type SkillFilesResponse = z$1.infer; declare const projectResponseSchema: z$1.ZodObject<{ id: z$1.ZodString; kind: z$1.ZodEnum<{ @@ -3020,6 +3097,57 @@ declare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{ }, z$1.core.$strict>; type CopyProjectAttachmentsRequest = z$1.infer; +declare const registrySkillSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + name: z$1.ZodString; + installs: z$1.ZodNumber; + stars: z$1.ZodNullable; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; +}, z$1.core.$strip>; +type RegistrySkill = z$1.infer; +declare const registrySkillsPageSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; + }, z$1.core.$strip>>; + pagination: z$1.ZodObject<{ + page: z$1.ZodNumber; + perPage: z$1.ZodNumber; + total: z$1.ZodNumber; + hasMore: z$1.ZodBoolean; + }, z$1.core.$strip>; +}, z$1.core.$strip>; +type RegistrySkillsPage = z$1.infer; +declare const registrySkillDetailSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + hash: z$1.ZodNullable; + files: z$1.ZodNullable>>; +}, z$1.core.$strip>; +type RegistrySkillDetail = z$1.infer; +declare const registrySkillInstallResponseSchema: z$1.ZodObject<{ + ok: z$1.ZodLiteral; + filePath: z$1.ZodString; +}, z$1.core.$strip>; +type RegistrySkillInstallResponse = z$1.infer; + declare const updateEnvironmentRequestSchema: z$1.ZodObject<{ mergeBaseBranch: z$1.ZodOptional>; name: z$1.ZodOptional>; @@ -3145,8 +3273,8 @@ declare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{ type EnvironmentArchiveThreadsResponse = z$1.infer; declare const pullRequestMergeMethodSchema: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; type PullRequestMergeMethod = z$1.infer; declare const commitActionResponseSchema: z$1.ZodObject<{ @@ -3177,8 +3305,8 @@ declare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{ action: z$1.ZodLiteral<"pull_request_merge">; method: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; message: z$1.ZodString; }, z$1.core.$strip>; @@ -3339,10 +3467,10 @@ declare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z mergeability: z$1.ZodObject<{ state: z$1.ZodEnum<{ unknown: "unknown"; - blocked: "blocked"; draft: "draft"; mergeable: "mergeable"; conflicts: "conflicts"; + blocked: "blocked"; }>; mergeStateStatus: z$1.ZodNullable; attention: z$1.ZodEnum<{ none: "none"; - blocked: "blocked"; merged: "merged"; draft: "draft"; closed: "closed"; changes_requested: "changes_requested"; review_requested: "review_requested"; conflicts: "conflicts"; + blocked: "blocked"; checks_failed: "checks_failed"; checks_pending: "checks_pending"; ready_to_merge: "ready_to_merge"; @@ -3787,8 +3915,8 @@ declare const hostDaemonCommandRegistry: { }, z$1.core.$strict>], "kind">>; disallowedTools: z$1.ZodOptional>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; type: z$1.ZodLiteral<"thread.start">; requestId: z$1.ZodString; @@ -4276,8 +4404,8 @@ declare const hostDaemonCommandRegistry: { }>; }, z$1.core.$strip>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; projectId: z$1.ZodString; providerId: z$1.ZodString; @@ -5090,6 +5218,67 @@ declare const hostDaemonCommandRegistry: { argumentHint: z$1.ZodNullable; }, z$1.core.$strip>>; }, z$1.core.$strip>, "onlineRpc", true>; + "host.list_skills": HostDaemonCommandDescriptor<"host.list_skills", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.list_skills">; + providerId: z$1.ZodString; + cwd: z$1.ZodNullable; + }, z$1.core.$strip>, z$1.ZodObject<{ + skills: z$1.ZodArray; + filePath: z$1.ZodString; + rootKind: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-project": "bb-project"; + "bb-data-dir": "bb-data-dir"; + "bb-builtin": "bb-builtin"; + "provider-project": "provider-project"; + "provider-user": "provider-user"; + }>; + }, z$1.core.$strip>>; + }, z$1.core.$strip>, "onlineRpc", true>; + "host.install_registry_skill": HostDaemonCommandDescriptor<"host.install_registry_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.install_registry_skill">; + packageRef: z$1.ZodString; + skillId: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodObject<{ + filePath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.delete_skill": HostDaemonCommandDescriptor<"host.delete_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.delete_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + rootPath: z$1.ZodNullable; + }, z$1.core.$strict>, z$1.ZodObject<{ + deletedPath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.write_skill": HostDaemonCommandDescriptor<"host.write_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.write_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + content: z$1.ZodString; + expectedSha256: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"written">; + filePath: z$1.ZodString; + sha256: z$1.ZodString; + }, z$1.core.$strip>, z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"conflict">; + currentSha256: z$1.ZodNullable; + }, z$1.core.$strip>], "outcome">, "onlineRpc", false>; "host.list_branches": HostDaemonCommandDescriptor<"host.list_branches", z$1.ZodObject<{ type: z$1.ZodLiteral<"host.list_branches">; path: z$1.ZodString; @@ -5475,9 +5664,9 @@ declare const hostDaemonCommandRegistry: { executablePath: z$1.ZodNullable; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -5650,13 +5839,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5700,13 +5889,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5762,13 +5951,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5810,13 +5999,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5934,9 +6123,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -6087,11 +6276,11 @@ type HostProviderCliInstallEvent = ProviderCliInstallEvent; declare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{ id: z$1.ZodString; outcome: z$1.ZodEnum<{ + unavailable: "unavailable"; incompatible: "incompatible"; current: "current"; "update-available": "update-available"; pinned: "pinned"; - unavailable: "unavailable"; }>; devMode: z$1.ZodOptional>; installed: z$1.ZodObject<{ @@ -6158,11 +6347,11 @@ declare const installedPluginSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6178,6 +6367,7 @@ declare const installedPluginSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6251,11 +6441,11 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6271,6 +6461,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6345,11 +6536,11 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6365,6 +6556,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6465,6 +6657,7 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{ type PluginCatalogStatus = z$1.infer; declare const pluginCatalogSearchResultSchema: z$1.ZodObject<{ entryId: z$1.ZodString; + pluginId: z$1.ZodString; displayName: z$1.ZodString; description: z$1.ZodString; icon: z$1.ZodNullable; @@ -6948,9 +7141,9 @@ declare const terminalSessionSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -6979,9 +7172,9 @@ declare const terminalListResponseSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -9178,8 +9371,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ activePromptMode: z$1.ZodNullable; providerId: z$1.ZodEnum<{ - codex: "codex"; "claude-code": "claude-code"; + codex: "codex"; }>; prompt: z$1.ZodString; }, z$1.core.$strict>>; @@ -9355,8 +9548,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ updatedAt: z$1.ZodNumber; objective: z$1.ZodString; status: z$1.ZodEnum<{ - paused: "paused"; active: "active"; + paused: "paused"; budgetLimited: "budgetLimited"; complete: "complete"; }>; @@ -10228,6 +10421,62 @@ interface StatusArea { get(args?: StatusGetArgs): Promise; } +interface SkillWorkspaceArgs { + projectId: string; + environmentId: string | null; +} +interface SkillListArgs extends SkillWorkspaceArgs { + signal?: AbortSignal; +} +interface SkillIdentityArgs extends SkillListArgs { + skillId: string; +} +interface SkillContentArgs extends SkillIdentityArgs { + path: string; +} +interface SkillUpdateArgs extends SkillWorkspaceArgs { + skillId: string; + content: string; + revision: string; +} +interface SkillDeleteArgs extends SkillWorkspaceArgs { + skillId: string; +} +interface RegistrySkillsSearchArgs { + query?: string; + page?: number; + perPage?: number; +} +interface RegistrySkillIdArgs { + registrySkillId: string; +} +interface RegistrySkillSourceArgs { + source: string; + skillId: string; +} +interface RegistrySkillInstallArgs extends RegistrySkillIdArgs { + projectId: string; +} +interface SkillsRegistryArea { + detail(args: RegistrySkillSourceArgs): Promise; + get(args: RegistrySkillIdArgs): Promise; + install(args: RegistrySkillInstallArgs): Promise; + search(args?: RegistrySkillsSearchArgs): Promise; +} +interface SkillsArea { + getContent(args: SkillContentArgs): Promise; + list(args: SkillListArgs): Promise; + listFiles(args: SkillIdentityArgs): Promise; + registry: SkillsRegistryArea; + remove(args: SkillDeleteArgs): Promise<{ + deletedPath: string; + }>; + update(args: SkillUpdateArgs): Promise<{ + filePath: string; + revision: string; + }>; +} + type ThemeGetResult = AppTheme; type ThemeCatalogResult = ThemeCatalogResponse; type ThemeSetInput = AppThemeSelection; @@ -10699,6 +10948,7 @@ interface BbSdk extends BbRealtime { projects: ProjectsArea; plugins: PluginsArea; providers: ProvidersArea; + skills: SkillsArea; status: StatusArea; system: SystemArea; terminals: TerminalsArea; @@ -11306,4 +11556,4 @@ interface BbPluginApi { } export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract }; -export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/ui-patterns/package.json b/plugins/ui-patterns/package.json index 3c2864d..5f5b1fa 100644 --- a/plugins/ui-patterns/package.json +++ b/plugins/ui-patterns/package.json @@ -91,7 +91,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@radix-ui/react-dialog": "^1.1.19", "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", diff --git a/plugins/ui-patterns/types/bb-plugin-sdk-app.d.ts b/plugins/ui-patterns/types/bb-plugin-sdk-app.d.ts index ca38030..3957233 100644 --- a/plugins/ui-patterns/types/bb-plugin-sdk-app.d.ts +++ b/plugins/ui-patterns/types/bb-plugin-sdk-app.d.ts @@ -123,6 +123,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -290,8 +306,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -351,6 +367,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -389,37 +406,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -457,19 +478,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -502,16 +527,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -546,4 +588,4 @@ declare const useBbNavigate: () => BbNavigate; declare const useComposer: () => PluginComposerApi; export { definePluginApp, useBbContext, useBbNavigate, useComposer, useRealtime, useRealtimeConnectionState, useRpc, useSettings }; -export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, JsonValue, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/plugins/ui-patterns/types/bb-plugin-sdk.d.ts b/plugins/ui-patterns/types/bb-plugin-sdk.d.ts index 21632b7..fdbb978 100644 --- a/plugins/ui-patterns/types/bb-plugin-sdk.d.ts +++ b/plugins/ui-patterns/types/bb-plugin-sdk.d.ts @@ -129,6 +129,13 @@ interface PluginComposerAccessoryProps { /** The active composer's thread, or null for a new-thread composer. */ threadId: string | null; } +/** @experimental Props passed to a composer status component. */ +interface experimental_PluginComposerStatusProps { + /** The active composer's project. */ + projectId: string | null; + /** The active composer's thread, or null outside an existing thread. */ + threadId: string | null; +} interface PluginPendingInteractionView { id: string; threadId: string; @@ -288,6 +295,15 @@ interface PluginComposerAccessoryRegistration { id: string; component: ComponentType; } +/** + * @experimental A status card rendered in the host-owned prompt stack, + * immediately before queued messages. + */ +interface experimental_PluginComposerStatusRegistration { + /** Unique within the plugin; letters, digits, `-`, `_`. */ + id: string; + component: ComponentType; +} interface PluginPendingInteractionRegistration { /** Matches `rendererId` passed to `bb.ui.requestInput`. */ id: string; @@ -296,8 +312,8 @@ interface PluginPendingInteractionRegistration { /** Context handed to a `sidebarFooterAction`'s `run`. */ interface PluginSidebarFooterActionContext { /** - * Navigate to this plugin's Settings detail page - * (`/settings/plugins/`), where declarative settings and + * Navigate to this plugin's Plugins detail page + * (`/tools/plugins/`), where declarative settings and * `settingsSection` slots render. */ openSettings(): void; @@ -357,6 +373,7 @@ interface PluginAppSlots { navPanel(registration: PluginNavPanelRegistration): void; threadPanelAction(registration: PluginThreadPanelActionRegistration): void; composerAccessory(registration: PluginComposerAccessoryRegistration): void; + experimental_composerStatus(registration: experimental_PluginComposerStatusRegistration): void; pendingInteraction(registration: PluginPendingInteractionRegistration): void; sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void; fileOpener(registration: PluginFileOpenerRegistration): void; @@ -395,37 +412,41 @@ interface PluginSettingsState { } /** State of the app's shared realtime connection to the bb server. */ type PluginRealtimeConnectionState = "connecting" | "connected" | "reconnecting"; -/** Where `useComposer()` writes. */ -type PluginComposerScope = { - kind: "thread"; - threadId: string; -} | { +/** @experimental Composer scope for an inline queued-message editor. */ +interface experimental_PluginComposerQueuedMessageScope { kind: "queued-message"; threadId: string; queuedMessageId: string; -} | { +} +/** @experimental Composer scope for a side-chat draft. */ +interface experimental_PluginComposerSideChatScope { kind: "side-chat"; projectId: string; parentThreadId: string; tabId: string; childThreadId: string | null; -} | { +} +/** Where `useComposer()` writes. */ +type PluginComposerScope = { + kind: "thread"; + threadId: string; +} | experimental_PluginComposerQueuedMessageScope | experimental_PluginComposerSideChatScope | { kind: "new-thread"; /** Root compose's effective selected project; null only while unresolved. */ projectId: string | null; }; -/** Host-rendered paint applied to the editable composer text. */ -type PluginComposerTextEffect = "shimmer"; -/** Host-rendered status that temporarily replaces a thread's draft glyph. */ -interface PluginComposerThreadRowStatus { +/** @experimental Host-rendered paint applied to the editable composer text. */ +type experimental_PluginComposerTextEffect = "shimmer"; +/** @experimental Status that temporarily replaces a thread's draft glyph. */ +interface experimental_PluginComposerThreadRowStatus { /** BB icon-name hint; unknown names fall back to the generic plugin icon. */ icon: string; /** Accessible label for the status glyph. */ label: string; /** Host-rendered motion treatment for the status glyph, or null. */ - effect: PluginComposerTextEffect | null; - /** Semantic host color for the status glyph. Defaults to the neutral tone. */ - tone?: "default" | "success"; + effect: experimental_PluginComposerTextEffect | null; + /** Semantic host color for the status glyph. */ + tone: "default" | "success"; } /** An @-mention pill bound to one of the calling plugin's mention providers. */ interface PluginComposerMention { @@ -463,19 +484,23 @@ interface PluginComposerApi { /** Clear plain text without clearing independently attached files. */ clear(): void; /** + * @experimental + * * Apply a host-rendered effect to this composer's editable text, or clear it. * Effects are scoped to the calling plugin and automatically clear when the * slot unmounts or its composer scope changes. */ - setTextEffect(effect: PluginComposerTextEffect | null): void; + experimental_setTextEffect(effect: experimental_PluginComposerTextEffect | null): void; /** + * @experimental + * * Replace this composer's thread-row draft glyph with a host-rendered status, * or clear it. New-thread composers have no row, so calls are a no-op. * Side-chat and queued side-chat scopes decorate the visible parent-thread * row. Status is scoped to the calling plugin and automatically clears when * the slot unmounts or its composer scope changes. */ - setThreadRowStatus(status: PluginComposerThreadRowStatus | null): void; + experimental_setThreadRowStatus(status: experimental_PluginComposerThreadRowStatus | null): void; /** * Append text to the draft as a `> ` blockquote block and focus the * composer. Blank text is a no-op. This is the "reference this selection @@ -508,16 +533,33 @@ interface BbNavigate { toPluginPanel(path: string, options?: { subPath?: string; replace?: boolean; + /** @experimental Mark this entry so the experimental exit API returns to its predecessor. */ + experimental_returnOnExit?: boolean; + }): void; + /** + * @experimental + * + * Leave a panel subroute. Entries opened with `experimental_returnOnExit` + * pop back; direct entries replace themselves with this fallback location. + */ + experimental_exitPluginPanel(path: string, options?: { + subPath?: string; }): void; /** * Navigate to the root compose surface (the new-thread screen). Pass * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the * composer on arrival — the pairing behind "Create via chat" style entry - * points that drop the user into chat with a prefilled prompt. + * points that drop the user into chat with a prefilled prompt. Set + * `experimental_replaceInitialPrompt` for an explicit resource action whose + * context must replace any stale root-composer draft. Set + * `experimental_replace` for redirects so the intermediary route does not + * trap browser Back navigation. */ toCompose(options?: { initialPrompt?: string; focusPrompt?: boolean; + experimental_replaceInitialPrompt?: boolean; + experimental_replace?: boolean; }): void; } /** @@ -739,9 +781,9 @@ declare const environmentSchema: z$1.ZodObject<{ isGitRepo: z$1.ZodBoolean; isWorktree: z$1.ZodBoolean; workspaceProvisionType: z$1.ZodEnum<{ - personal: "personal"; - "managed-worktree": "managed-worktree"; unmanaged: "unmanaged"; + "managed-worktree": "managed-worktree"; + personal: "personal"; }>; branchName: z$1.ZodNullable; baseBranch: z$1.ZodNullable; @@ -834,8 +876,8 @@ declare const providerPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -972,8 +1014,8 @@ declare const pluginPendingInteractionSchema: z$1.ZodObject<{ id: z$1.ZodString; threadId: z$1.ZodString; status: z$1.ZodEnum<{ - interrupted: "interrupted"; pending: "pending"; + interrupted: "interrupted"; resolving: "resolving"; resolved: "resolved"; }>; @@ -1116,8 +1158,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -1161,10 +1203,10 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1294,17 +1336,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1320,8 +1362,8 @@ declare const threadEventSchema: z$1.ZodPipe; approvalStatus: z$1.ZodNullable; }, z$1.core.$strip>>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; approvalStatus: z$1.ZodNullable>; status: z$1.ZodEnum<{ + pending: "pending"; completed: "completed"; failed: "failed"; interrupted: "interrupted"; - pending: "pending"; }>; result: z$1.ZodOptional; error: z$1.ZodOptional; @@ -1522,17 +1564,17 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1548,8 +1590,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1677,8 +1719,8 @@ declare const threadEventSchema: z$1.ZodPipe; taskStatus: z$1.ZodEnum<{ - completed: "completed"; - failed: "failed"; - paused: "paused"; pending: "pending"; running: "running"; + paused: "paused"; + completed: "completed"; + failed: "failed"; killed: "killed"; stopped: "stopped"; }>; @@ -1749,8 +1791,8 @@ declare const threadEventSchema: z$1.ZodPipe>; }, z$1.core.$strip>>; explanation: z$1.ZodOptional; @@ -2228,8 +2270,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2280,8 +2322,8 @@ declare const threadEventSchema: z$1.ZodPipe; @@ -2450,8 +2492,8 @@ declare const threadTimelinePendingTodosSchema: z$1.ZodObject<{ id: z$1.ZodString; text: z$1.ZodString; status: z$1.ZodEnum<{ - completed: "completed"; pending: "pending"; + completed: "completed"; in_progress: "in_progress"; }>; }, z$1.core.$strip>>; @@ -2868,6 +2910,41 @@ declare const projectCommandsQuerySchema: z$1.ZodObject<{ environmentId: z$1.ZodOptional, z$1.ZodOptional>>; }, z$1.core.$strict>; type ProjectCommandsQuery = z$1.infer; +declare const skillListResponseSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + provider: z$1.ZodNullable>; + scope: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-builtin": "bb-builtin"; + "bb-user": "bb-user"; + "bb-project": "bb-project"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + pluginId: z$1.ZodNullable; + filePath: z$1.ZodString; + manageable: z$1.ZodBoolean; + }, z$1.core.$strip>>; +}, z$1.core.$strip>; +type SkillListResponse = z$1.infer; +declare const skillContentResponseSchema: z$1.ZodObject<{ + content: z$1.ZodString; + revision: z$1.ZodString; +}, z$1.core.$strip>; +type SkillContentResponse = z$1.infer; +declare const skillFilesResponseSchema: z$1.ZodObject<{ + files: z$1.ZodArray; + truncated: z$1.ZodBoolean; +}, z$1.core.$strip>; +type SkillFilesResponse = z$1.infer; declare const projectResponseSchema: z$1.ZodObject<{ id: z$1.ZodString; kind: z$1.ZodEnum<{ @@ -3020,6 +3097,57 @@ declare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{ }, z$1.core.$strict>; type CopyProjectAttachmentsRequest = z$1.infer; +declare const registrySkillSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + name: z$1.ZodString; + installs: z$1.ZodNumber; + stars: z$1.ZodNullable; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; +}, z$1.core.$strip>; +type RegistrySkill = z$1.infer; +declare const registrySkillsPageSchema: z$1.ZodObject<{ + skills: z$1.ZodArray; + installUrl: z$1.ZodNullable; + url: z$1.ZodString; + topic: z$1.ZodNullable; + summary: z$1.ZodNullable; + }, z$1.core.$strip>>; + pagination: z$1.ZodObject<{ + page: z$1.ZodNumber; + perPage: z$1.ZodNumber; + total: z$1.ZodNumber; + hasMore: z$1.ZodBoolean; + }, z$1.core.$strip>; +}, z$1.core.$strip>; +type RegistrySkillsPage = z$1.infer; +declare const registrySkillDetailSchema: z$1.ZodObject<{ + id: z$1.ZodString; + source: z$1.ZodString; + skillId: z$1.ZodString; + hash: z$1.ZodNullable; + files: z$1.ZodNullable>>; +}, z$1.core.$strip>; +type RegistrySkillDetail = z$1.infer; +declare const registrySkillInstallResponseSchema: z$1.ZodObject<{ + ok: z$1.ZodLiteral; + filePath: z$1.ZodString; +}, z$1.core.$strip>; +type RegistrySkillInstallResponse = z$1.infer; + declare const updateEnvironmentRequestSchema: z$1.ZodObject<{ mergeBaseBranch: z$1.ZodOptional>; name: z$1.ZodOptional>; @@ -3145,8 +3273,8 @@ declare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{ type EnvironmentArchiveThreadsResponse = z$1.infer; declare const pullRequestMergeMethodSchema: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; type PullRequestMergeMethod = z$1.infer; declare const commitActionResponseSchema: z$1.ZodObject<{ @@ -3177,8 +3305,8 @@ declare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{ action: z$1.ZodLiteral<"pull_request_merge">; method: z$1.ZodEnum<{ merge: "merge"; - rebase: "rebase"; squash: "squash"; + rebase: "rebase"; }>; message: z$1.ZodString; }, z$1.core.$strip>; @@ -3339,10 +3467,10 @@ declare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z mergeability: z$1.ZodObject<{ state: z$1.ZodEnum<{ unknown: "unknown"; - blocked: "blocked"; draft: "draft"; mergeable: "mergeable"; conflicts: "conflicts"; + blocked: "blocked"; }>; mergeStateStatus: z$1.ZodNullable; attention: z$1.ZodEnum<{ none: "none"; - blocked: "blocked"; merged: "merged"; draft: "draft"; closed: "closed"; changes_requested: "changes_requested"; review_requested: "review_requested"; conflicts: "conflicts"; + blocked: "blocked"; checks_failed: "checks_failed"; checks_pending: "checks_pending"; ready_to_merge: "ready_to_merge"; @@ -3787,8 +3915,8 @@ declare const hostDaemonCommandRegistry: { }, z$1.core.$strict>], "kind">>; disallowedTools: z$1.ZodOptional>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; type: z$1.ZodLiteral<"thread.start">; requestId: z$1.ZodString; @@ -4276,8 +4404,8 @@ declare const hostDaemonCommandRegistry: { }>; }, z$1.core.$strip>; instructionMode: z$1.ZodEnum<{ - replace: "replace"; append: "append"; + replace: "replace"; }>; projectId: z$1.ZodString; providerId: z$1.ZodString; @@ -5090,6 +5218,67 @@ declare const hostDaemonCommandRegistry: { argumentHint: z$1.ZodNullable; }, z$1.core.$strip>>; }, z$1.core.$strip>, "onlineRpc", true>; + "host.list_skills": HostDaemonCommandDescriptor<"host.list_skills", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.list_skills">; + providerId: z$1.ZodString; + cwd: z$1.ZodNullable; + }, z$1.core.$strip>, z$1.ZodObject<{ + skills: z$1.ZodArray; + filePath: z$1.ZodString; + rootKind: z$1.ZodEnum<{ + plugin: "plugin"; + "bb-project": "bb-project"; + "bb-data-dir": "bb-data-dir"; + "bb-builtin": "bb-builtin"; + "provider-project": "provider-project"; + "provider-user": "provider-user"; + }>; + }, z$1.core.$strip>>; + }, z$1.core.$strip>, "onlineRpc", true>; + "host.install_registry_skill": HostDaemonCommandDescriptor<"host.install_registry_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.install_registry_skill">; + packageRef: z$1.ZodString; + skillId: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodObject<{ + filePath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.delete_skill": HostDaemonCommandDescriptor<"host.delete_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.delete_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + "claude-user": "claude-user"; + "claude-project": "claude-project"; + "codex-user": "codex-user"; + "codex-project": "codex-project"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + rootPath: z$1.ZodNullable; + }, z$1.core.$strict>, z$1.ZodObject<{ + deletedPath: z$1.ZodString; + }, z$1.core.$strip>, "onlineRpc", false>; + "host.write_skill": HostDaemonCommandDescriptor<"host.write_skill", z$1.ZodObject<{ + type: z$1.ZodLiteral<"host.write_skill">; + scope: z$1.ZodEnum<{ + "bb-project": "bb-project"; + "bb-user": "bb-user"; + }>; + name: z$1.ZodString; + cwd: z$1.ZodNullable; + content: z$1.ZodString; + expectedSha256: z$1.ZodString; + }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"written">; + filePath: z$1.ZodString; + sha256: z$1.ZodString; + }, z$1.core.$strip>, z$1.ZodObject<{ + outcome: z$1.ZodLiteral<"conflict">; + currentSha256: z$1.ZodNullable; + }, z$1.core.$strip>], "outcome">, "onlineRpc", false>; "host.list_branches": HostDaemonCommandDescriptor<"host.list_branches", z$1.ZodObject<{ type: z$1.ZodLiteral<"host.list_branches">; path: z$1.ZodString; @@ -5475,9 +5664,9 @@ declare const hostDaemonCommandRegistry: { executablePath: z$1.ZodNullable; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -5650,13 +5839,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5700,13 +5889,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5762,13 +5951,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5810,13 +5999,13 @@ declare const hostDaemonCommandRegistry: { outcome: z$1.ZodLiteral<"unavailable">; failure: z$1.ZodObject<{ code: z$1.ZodEnum<{ - unknown: "unknown"; path_not_found: "path_not_found"; not_git_repo: "not_git_repo"; not_worktree: "not_worktree"; workspace_type_mismatch: "workspace_type_mismatch"; permission_denied: "permission_denied"; unknown_environment: "unknown_environment"; + unknown: "unknown"; }>; workspacePath: z$1.ZodString; message: z$1.ZodString; @@ -5934,9 +6123,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord; installed: z$1.ZodBoolean; installSource: z$1.ZodEnum<{ + external: "external"; notInstalled: "notInstalled"; npmGlobal: "npmGlobal"; - external: "external"; }>; currentVersion: z$1.ZodNullable; latestVersion: z$1.ZodNullable; @@ -6087,11 +6276,11 @@ type HostProviderCliInstallEvent = ProviderCliInstallEvent; declare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{ id: z$1.ZodString; outcome: z$1.ZodEnum<{ + unavailable: "unavailable"; incompatible: "incompatible"; current: "current"; "update-available": "update-available"; pinned: "pinned"; - unavailable: "unavailable"; }>; devMode: z$1.ZodOptional>; installed: z$1.ZodObject<{ @@ -6158,11 +6347,11 @@ declare const installedPluginSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6178,6 +6367,7 @@ declare const installedPluginSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6251,11 +6441,11 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6271,6 +6461,7 @@ declare const pluginListResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6345,11 +6536,11 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ sourceDisplay: z$1.ZodString; updateState: z$1.ZodObject<{ outcome: z$1.ZodOptional>; availableVersion: z$1.ZodOptional; blockedVersion: z$1.ZodOptional; @@ -6365,6 +6556,7 @@ declare const pluginReloadResponseSchema: z$1.ZodObject<{ description: z$1.ZodNullable; name: z$1.ZodNullable; icon: z$1.ZodNullable; + experimental_iconUrl: z$1.ZodDefault>; status: z$1.ZodEnum<{ error: "error"; running: "running"; @@ -6465,6 +6657,7 @@ declare const pluginCatalogStatusSchema: z$1.ZodObject<{ type PluginCatalogStatus = z$1.infer; declare const pluginCatalogSearchResultSchema: z$1.ZodObject<{ entryId: z$1.ZodString; + pluginId: z$1.ZodString; displayName: z$1.ZodString; description: z$1.ZodString; icon: z$1.ZodNullable; @@ -6948,9 +7141,9 @@ declare const terminalSessionSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -6979,9 +7172,9 @@ declare const terminalListResponseSchema: z$1.ZodObject<{ cols: z$1.ZodNumber; rows: z$1.ZodNumber; status: z$1.ZodEnum<{ - running: "running"; starting: "starting"; disconnected: "disconnected"; + running: "running"; exited: "exited"; }>; exitCode: z$1.ZodNullable; @@ -9178,8 +9371,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ activePromptMode: z$1.ZodNullable; providerId: z$1.ZodEnum<{ - codex: "codex"; "claude-code": "claude-code"; + codex: "codex"; }>; prompt: z$1.ZodString; }, z$1.core.$strict>>; @@ -9355,8 +9548,8 @@ declare const threadTimelineResponseSchema: z$1.ZodObject<{ updatedAt: z$1.ZodNumber; objective: z$1.ZodString; status: z$1.ZodEnum<{ - paused: "paused"; active: "active"; + paused: "paused"; budgetLimited: "budgetLimited"; complete: "complete"; }>; @@ -10228,6 +10421,62 @@ interface StatusArea { get(args?: StatusGetArgs): Promise; } +interface SkillWorkspaceArgs { + projectId: string; + environmentId: string | null; +} +interface SkillListArgs extends SkillWorkspaceArgs { + signal?: AbortSignal; +} +interface SkillIdentityArgs extends SkillListArgs { + skillId: string; +} +interface SkillContentArgs extends SkillIdentityArgs { + path: string; +} +interface SkillUpdateArgs extends SkillWorkspaceArgs { + skillId: string; + content: string; + revision: string; +} +interface SkillDeleteArgs extends SkillWorkspaceArgs { + skillId: string; +} +interface RegistrySkillsSearchArgs { + query?: string; + page?: number; + perPage?: number; +} +interface RegistrySkillIdArgs { + registrySkillId: string; +} +interface RegistrySkillSourceArgs { + source: string; + skillId: string; +} +interface RegistrySkillInstallArgs extends RegistrySkillIdArgs { + projectId: string; +} +interface SkillsRegistryArea { + detail(args: RegistrySkillSourceArgs): Promise; + get(args: RegistrySkillIdArgs): Promise; + install(args: RegistrySkillInstallArgs): Promise; + search(args?: RegistrySkillsSearchArgs): Promise; +} +interface SkillsArea { + getContent(args: SkillContentArgs): Promise; + list(args: SkillListArgs): Promise; + listFiles(args: SkillIdentityArgs): Promise; + registry: SkillsRegistryArea; + remove(args: SkillDeleteArgs): Promise<{ + deletedPath: string; + }>; + update(args: SkillUpdateArgs): Promise<{ + filePath: string; + revision: string; + }>; +} + type ThemeGetResult = AppTheme; type ThemeCatalogResult = ThemeCatalogResponse; type ThemeSetInput = AppThemeSelection; @@ -10699,6 +10948,7 @@ interface BbSdk extends BbRealtime { projects: ProjectsArea; plugins: PluginsArea; providers: ProvidersArea; + skills: SkillsArea; status: StatusArea; system: SystemArea; terminals: TerminalsArea; @@ -11306,4 +11556,4 @@ interface BbPluginApi { } export { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract }; -export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result }; +export type { BbContext, BbNavigate, BbPluginApi, JsonValue$1 as JsonValue, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerAccessoryProps, PluginComposerAccessoryRegistration, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenThreadPanel, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginMessageDirectiveThreadPanelOptions, PluginNavPanelProps, PluginNavPanelRegistration, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, 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, PluginStatusApi, PluginStorage, PluginThreadActionContext, PluginThreadActionRegistration, PluginThreadActionResult, PluginThreadActionToast, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, experimental_PluginComposerQueuedMessageScope, experimental_PluginComposerSideChatScope, experimental_PluginComposerStatusProps, experimental_PluginComposerStatusRegistration, experimental_PluginComposerTextEffect, experimental_PluginComposerThreadRowStatus }; diff --git a/tooling/check-repository.mjs b/tooling/check-repository.mjs index f8a8569..f570a81 100644 --- a/tooling/check-repository.mjs +++ b/tooling/check-repository.mjs @@ -106,6 +106,11 @@ export async function checkRepository(repositoryRoot = defaultRoot, options = {} packageNames.add(entry.packageName); pluginIds.add(entry.pluginId); + assert( + typeof entry.bbPluginSdk === "string" && entry.bbPluginSdk.length > 0, + `${entry.slug}: SDK engine metadata missing`, + ); + assert(entry.source === `plugins/${entry.slug}`, `${entry.slug}: source mismatch`); assert(entry.installRef === `plugin/${entry.slug}`, `${entry.slug}: install ref mismatch`); assert(Object.hasOwn(entry, "screenshot"), `${entry.slug}: screenshot metadata missing`); @@ -137,7 +142,10 @@ export async function checkRepository(repositoryRoot = defaultRoot, options = {} ); assert(manifest.files.includes("README.md"), `${entry.slug}: README missing from package files`); assert(manifest.engines?.bb === ">=0.0.32", `${entry.slug}: bb engine drift`); - assert(manifest.engines?.bbPluginSdk === "^0.4.0", `${entry.slug}: SDK engine drift`); + assert( + manifest.engines?.bbPluginSdk === entry.bbPluginSdk, + `${entry.slug}: SDK engine drift`, + ); assert(pluginReadme.startsWith(`# ${entry.name}\n`), `${entry.slug}: README title drift`); for (const heading of ["## Install", "## Use", "## Develop"]) { assert(pluginReadme.includes(heading), `${entry.slug}: README missing ${heading}`); diff --git a/tooling/create-plugin.mjs b/tooling/create-plugin.mjs index 48d9377..02a7a81 100644 --- a/tooling/create-plugin.mjs +++ b/tooling/create-plugin.mjs @@ -80,7 +80,7 @@ function filesFor(options) { skills: [], }, devDependencies: { - "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:../../tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "@types/better-sqlite3": "^7.6.12", "@types/node": "^22.0.0", "better-sqlite3": "^12.10.0", @@ -193,6 +193,7 @@ async function addCatalogEntry(repositoryRoot, options) { name: options.name, packageName: `bb-plugin-${options.slug}`, pluginId: options.slug, + bbPluginSdk: "^0.4.0", purpose: options.description, whenToUse: options.when ?? `When ${options.name}'s focused capability is useful.`, diff --git a/tooling/scaffold-smoke.mjs b/tooling/scaffold-smoke.mjs index 7390294..6118d12 100644 --- a/tooling/scaffold-smoke.mjs +++ b/tooling/scaffold-smoke.mjs @@ -40,7 +40,7 @@ async function createFixtureRepository(directory) { type: "module", workspaces: ["plugins/*", "packages/*"], devDependencies: { - "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.0.tgz", + "@bb/plugin-sdk": "file:tooling/vendor/bb-plugin-sdk-0.4.1.tgz", "bb-app": rootManifest.devDependencies["bb-app"], }, }, null, 2)}\n`, diff --git a/tooling/validate-plugin-artifacts.mjs b/tooling/validate-plugin-artifacts.mjs index 35f62c2..bd717a6 100644 --- a/tooling/validate-plugin-artifacts.mjs +++ b/tooling/validate-plugin-artifacts.mjs @@ -200,6 +200,10 @@ export async function validatePluginArtifacts(pluginDirectory, options = {}) { requirePacked(files, path, directory); } } + const compactIcon = manifest.bb.branding?.icon; + if (typeof compactIcon === "string" && compactIcon.startsWith("./")) { + requirePacked(files, compactIcon, directory); + } for (const path of Object.values(manifest.bb.branding?.logo ?? {})) { requirePacked(files, path, directory); } diff --git a/tooling/vendor/bb-plugin-sdk-0.4.0.tgz b/tooling/vendor/bb-plugin-sdk-0.4.0.tgz deleted file mode 100644 index c0d38ca..0000000 Binary files a/tooling/vendor/bb-plugin-sdk-0.4.0.tgz and /dev/null differ diff --git a/tooling/vendor/bb-plugin-sdk-0.4.1.tgz b/tooling/vendor/bb-plugin-sdk-0.4.1.tgz new file mode 100644 index 0000000..d0a62d5 Binary files /dev/null and b/tooling/vendor/bb-plugin-sdk-0.4.1.tgz differ diff --git a/tooling/vendor/sdk-provenance.json b/tooling/vendor/sdk-provenance.json index f65ddd2..53fa1b8 100644 --- a/tooling/vendor/sdk-provenance.json +++ b/tooling/vendor/sdk-provenance.json @@ -1,8 +1,8 @@ { - "package": "@bb/plugin-sdk@0.4.0", + "package": "@bb/plugin-sdk@0.4.1", "sourceRepository": "https://github.com/ymichael/bb", - "sourceCommit": "6e72cd0276947b400b4e5862668d855051ba2060", + "sourceCommit": "86dab37a706db82cd8a1e6015703b917de8c0e5f", "sourcePath": "packages/plugin-sdk", - "archive": "bb-plugin-sdk-0.4.0.tgz", - "sha256": "e77c2dcc0d21601dec22364b8438f0157a30f3eeeda28c722932775249ee5fa0" + "archive": "bb-plugin-sdk-0.4.1.tgz", + "sha256": "5b498949c7f76b601df4055602b5a4c8694674a2860cde751d749fc3060c7a59" }