Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions catalog/plugins.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
Expand All @@ -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"],
Expand All @@ -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"],
Expand All @@ -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"],
Expand All @@ -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"],
Expand Down
2 changes: 1 addition & 1 deletion docs/provenance.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
20 changes: 10 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
2 changes: 1 addition & 1 deletion plugins/design-doctrine/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
82 changes: 62 additions & 20 deletions plugins/design-doctrine/types/bb-plugin-sdk-app.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -282,6 +289,15 @@ interface PluginComposerAccessoryRegistration {
id: string;
component: ComponentType<PluginComposerAccessoryProps>;
}
/**
* @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<experimental_PluginComposerStatusProps>;
}
interface PluginPendingInteractionRegistration {
/** Matches `rendererId` passed to `bb.ui.requestInput`. */
id: string;
Expand All @@ -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/<pluginId>`), where declarative settings and
* Navigate to this plugin's Plugins detail page
* (`/tools/plugins/<pluginId>`), where declarative settings and
* `settingsSection` slots render.
*/
openSettings(): void;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
/**
Expand Down Expand Up @@ -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 };
Loading
Loading