Skip to content
Merged
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
15 changes: 15 additions & 0 deletions docs/plugin-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,21 @@ active registered types appear there; plugin activation remains owned by
Settings → Plugins → Manage plugins. Provider defaults are versioned device preferences, not
agent-record migrations; blank per-agent values inherit them.

An installed harness plugin gets the Buzz side of each turn from
`ctx.agents.harness`, as the bundled harnesses do it, and keeps its own
process, sessions and saved state. `conversation(delivery, scope)` admits a
mention or wake (undefined means the harness ignores it: not the owner's own
or attested by them, or with no conversation to go to) and freezes where
it goes. `systemPrompt` and `turnPrompt` give Buzz's prompts, `turnPrompt`
showing what the session has not seen and taking plugins' notes. Its
`cursor` is opaque: save it with the session and give it to the next
`turnPrompt`, which keeps a mark for each thread of a channel conversation.
`reply` posts as the agent there. `tools(agent, conversation, { read })`
answers the Buzz tools over MCP for `ctx.host.serveMcp`, so the manifest
declares `host.mcp`; `read` is the plugin's own file access (`host.files`),
which uploads of local files use. The kit grants nothing `ctx.agents` and
`ctx.host` do not already give the plugin.

A plugin, bundled or installed, can add a tab to the settings of agents
running on this device, whatever their type, with
`ctx.agents.registerTab({ id, title, component, when, subscribe })`. The component receives
Expand Down
1 change: 1 addition & 0 deletions src/bundled/agents/AgentsPage.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ function setup(
addedTabs: () => [],
registerTab: () => {},
controlAttention: () => {},
harness: {} as Agents["harness"],
} satisfies Agents;
const disconnected = { status: "disconnected", generation: 0 };
const relay = {
Expand Down
Loading
Loading