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
6 changes: 6 additions & 0 deletions apps/server/src/services/plugins/builtin-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,12 @@ export const OFFICIAL_PLUGINS = [
defaultEnabled: true,
category: "Workflow management",
},
{
name: "sceneseed",
pluginId: "sceneseed",
defaultEnabled: true,
category: "Interface",
},
].map(
(plugin): BundledPluginDefinition => ({
...plugin,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -785,7 +785,7 @@ them by mixing ink into canvas), the `--primary` accent, the secondary text tier
(except `side-chat`, which is gated by the **"Side chat plugin"**
experiment); official plugins install from the bundled store on demand.
- **BB Official plugins** (store under `/api/v1/plugin-catalog`):
- BB's official plugins (GitHub, Docs, Memory, and Tasks) ship
- BB's official plugins (GitHub, Docs, Memory, Tasks, and SceneSeed) ship
bundled inside the app and install from the local copy — no network. Installed official
plugins are pinned to the bundled copy and update with BB app releases.
- The store also lists the **BB Community marketplace** catalog: a manifest
Expand Down
8 changes: 7 additions & 1 deletion apps/server/test/services/plugins/builtin-plugins.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,13 @@ describe("builtin plugin reconciliation", () => {

it("keeps official plugins bundled but out of the auto-install builtins", () => {
const optionalNames = OFFICIAL_PLUGINS.map((plugin) => plugin.name);
expect(optionalNames).toEqual(["github", "docs", "memory", "tasks"]);
expect(optionalNames).toEqual([
"github",
"docs",
"memory",
"tasks",
"sceneseed",
]);
for (const name of optionalNames) {
expect(BUILTIN_PLUGINS.map((plugin) => plugin.name)).not.toContain(name);
}
Expand Down
1 change: 1 addition & 0 deletions apps/server/test/services/plugins/official-plugins.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ describe("official plugin registry invariants", () => {
"provider-codex": "Agent interaction",
"provider-pi": "Agent interaction",
"provider-retry": "Agent interaction",
sceneseed: "Interface",
secrets: "Developer tools",
"side-chat": "Agent interaction",
tasks: "Workflow management",
Expand Down
2 changes: 1 addition & 1 deletion docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ Plugin state lives under the data dir:
commands, injected into agent threads)
```

BB's official plugins (GitHub, Docs, Memory, and Tasks) ship bundled
BB's official plugins (GitHub, Docs, Memory, Tasks, and SceneSeed) ship bundled
inside the app and install from the local bundled copy — no network, no remote catalog.
Discover them with `bb plugin search` or Extensions → Plugins → Browse; users
cannot add, remove, or configure the bundled official plugin set. Installed official
Expand Down
13 changes: 7 additions & 6 deletions docs/official-plugin-release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ until a user installs them.

The official plugins are:

| Directory | Package name | Store entry | Plugin id |
| ---------------- | ------------------------ | ----------- | -------------- |
| `plugins/github` | `bb-plugin-github` | `github` | `github` |
| `plugins/docs` | `bb-plugin-simple-notes` | `docs` | `simple-notes` |
| `plugins/memory` | `bb-plugin-memory` | `memory` | `memory` |
| `plugins/tasks` | `bb-plugin-tasks` | `tasks` | `tasks` |
| Directory | Package name | Store entry | Plugin id |
| ------------------- | ------------------------ | ----------- | -------------- |
| `plugins/github` | `bb-plugin-github` | `github` | `github` |
| `plugins/docs` | `bb-plugin-simple-notes` | `docs` | `simple-notes` |
| `plugins/memory` | `bb-plugin-memory` | `memory` | `memory` |
| `plugins/tasks` | `bb-plugin-tasks` | `tasks` | `tasks` |
| `plugins/sceneseed` | `bb-plugin-sceneseed` | `sceneseed` | `sceneseed` |

## Releasing a change

Expand Down
33 changes: 25 additions & 8 deletions packages/templates/src/templates/bb-guide-plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,22 @@ label-link/name change, active-thread change, or project-prefix change invalidat
outstanding cursor; restart without `--cursor` instead of accepting a mixed
snapshot.

The SceneSeed plugin is an opt-in official plugin bundled with the app:
`bb plugin install sceneseed`. It turns prompt cards into bounded, dimensional
scenes and exposes the same durable canvases to agents through its CLI:

bb sceneseed list
bb sceneseed show <canvas-id> --json
bb sceneseed add <canvas-id> --prompt <text> [--x <number>] [--y <number>]
bb sceneseed wait <job-id>
bb sceneseed cancel <job-id>
bb sceneseed remove-object <canvas-id> <object-id>

SceneSeed stores prompts, scene graphs, transforms, and job state in its
private plugin database. Generated scenes cannot contain executable code,
URLs, files, remote assets, or shaders. Use **Delete all canvas data** in its
settings to archive its hidden canvas threads and erase the stored canvases.

The builtin Secrets plugin provides a secure credential form and guarded
dotenv reconciliation:

Expand All @@ -174,7 +190,7 @@ added/updated/unchanged counts.
the app plus every registered marketplace
catalog
bb plugin install <entry> Install a bundled official plugin by name
(github, docs, memory, tasks),
(github, docs, memory, tasks, sceneseed),
<entry-id>@<marketplace>, a Git repository
URL, local path, builtin:<name>,
git:<url>[@<ref|semver-range>], or
Expand Down Expand Up @@ -331,13 +347,14 @@ rollback, and remove keep working per plugin.

BB Official plugins

BB's official plugins — GitHub, Docs, Memory, and Tasks — ship bundled inside
the app itself. They appear in Extensions → Plugins → Browse
BB's official plugins — GitHub, Docs, Memory, Tasks, and SceneSeed — ship
bundled inside the app itself. They appear in Extensions → Plugins → Browse
and install with one click from the local bundled copy: no network, no
download, no separate release. Install from the CLI by bare name
(`bb plugin install github`, `bb plugin install docs`, `bb plugin install
memory`, or `bb plugin install tasks`). Installed official plugins are pinned
to the bundled copy and update automatically when the BB app updates.
memory`, `bb plugin install tasks`, or `bb plugin install sceneseed`). Installed
official plugins are pinned to the bundled copy and update automatically when
the BB app updates.

The BB Community marketplace (reserved name `bb-community`) lists reviewed
plugins that live outside the app bundle. bb reads its manifest from
Expand Down Expand Up @@ -776,9 +793,9 @@ in a checkout). The builtin `inline-vis` plugin renders
path-shaped, sandboxed worktree HTML iframe preview; `height` is optional.
Its card header includes an open-in-sidebar action for the source HTML file.
The `plugins/` directory contains every bundled plugin: the auto-installed
builtins and the store-only BB Official GitHub, Docs, Memory, and Tasks
plugins. The `examples/plugins/` reference plugins cover slack-bot (webhook
bot), agent-enrichment (agent surfaces), and composer-customization (all
builtins and the store-only BB Official GitHub, Docs, Memory, Tasks, and
SceneSeed plugins. The `examples/plugins/` reference plugins cover slack-bot
(webhook bot), agent-enrichment (agent surfaces), and composer-customization (all
composer regions). Thread Hover
Cards installs from the BB Community marketplace (source: the bb-plugins
repo).
62 changes: 62 additions & 0 deletions plugins/sceneseed/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# SceneSeed

SceneSeed is bb's playful prompt-to-object canvas. Write a short prompt on a
card, place it on the stage, and a hidden bb agent interprets it as a bounded,
dimensional Three.js scene.

## Install

Install SceneSeed from the BB Official catalog:

```bash
bb plugin install sceneseed
```

Open **SceneSeed** in bb's navigation, acknowledge the first-run disclosure,
create a canvas, and place a prompt card. Dragging is optional: every ready card
also has a keyboard-accessible **Place on canvas** action.

## Agent access

The same saved records are available through the plugin CLI:

```bash
bb sceneseed list
bb sceneseed show <canvas-id> --json
bb sceneseed add <canvas-id> --prompt "a storm in a teacup" --x 0 --y 0
bb sceneseed wait <job-id>
bb sceneseed cancel <job-id>
bb sceneseed remove-object <canvas-id> <object-id>
```

## Safety and privacy

- Generated output must conform to SceneSeed's strict, versioned scene contract.
It cannot contain executable code, URLs, files, remote assets, or shaders.
- Prompts, generated scene graphs, transforms, job state, and canvas metadata are
stored in the plugin's private SQLite database, not in a project workspace.
- Each canvas uses a hidden, persistent bb thread in the personal project. The
thread uses the normal provider and bb capability envelope; SceneSeed asks it
not to inspect unrelated context, but does not claim structural isolation.
- Disabling or uninstalling the plugin does not erase its database or spawned
threads. Use **Delete all canvas data** in SceneSeed settings to archive canvas
threads and clear the stored canvases.

## MVP limits

A canvas accepts at most 12 cards in flight, 25 active objects, and 100 active
scene-cost units. Jobs run serially per canvas. Sharing, export, collaboration,
raw mesh editing, remote model loading, and image generation are intentionally
out of scope.

`fixtures/prompt-scenes.json` is the fixed 32-prompt evaluation set for future
agent-quality runs: eight literal, metaphorical, spatial, and abstract prompts,
each with nearby-scene context and observable interpretation cues. It is test
data, not bundled executable content.

## Develop

```bash
pnpm exec turbo run test typecheck build --filter=bb-plugin-sceneseed
bb plugin dev ./plugins/sceneseed
```
Loading
Loading