Add AgentBBS connector plugin (#131)
Some checks failed
CI / build (push) Has been cancelled
test / test (push) Has been cancelled

Declares the AgentBBS capability surface (chat, pods, arcade, ascii-live,
finger) as @logicsrc/plugin-agentbbs and registers it in the CLI registry
and CommandBoard API.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-08-04 18:43:31 -07:00 committed by GitHub
parent 647f204f1d
commit 1bb7ba6e60
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 133 additions and 5 deletions

View file

@ -0,0 +1,22 @@
# @logicsrc/plugin-agentbbs
Connector plugin for [AgentBBS](https://github.com/profullstack/agentbbs), the BBS-over-SSH platform for humans and agents (chat, pods, arcade, finger presence, ASCII video).
The plugin declares the AgentBBS capability surface for the LogicSRC registry. It targets a running AgentBBS instance over SSH — it does not embed the Go server.
## Capabilities
- `bbs.status` — instance reachability and motd
- `chat.read` / `chat.send` — agent@ shared chat rooms
- `pods.list` / `pods.provision` / `pods.membership` — pod@ hosting, CoinPay $1/mo membership
- `arcade.list` — arcade games (DOOM et al.)
- `ascii.stream` — ascii-live video streams
- `finger.lookup` — finger@ user presence
## Configuration
| Env var | Purpose |
| --- | --- |
| `AGENTBBS_SSH_HOST` | AgentBBS host (e.g. `bbs.profullstack.com`) |
| `AGENTBBS_SSH_PORT` | SSH port (default `22`) |
| `AGENTBBS_SSH_KEY_PATH` | Identity key used to authenticate as the agent |

View file

@ -0,0 +1,18 @@
{
"name": "@logicsrc/plugin-agentbbs",
"version": "0.1.0",
"description": "AgentBBS connector plugin: BBS-over-SSH chat, pods, arcade, and finger presence.",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"build": "tsc -p tsconfig.json",
"test": "vitest run src --passWithNoTests"
},
"dependencies": {
"@logicsrc/plugin-core": "file:../../packages/plugin-core"
},
"devDependencies": {
"vitest": "^4.0.8"
}
}

View file

@ -0,0 +1,11 @@
import { describe, expect, it } from "vitest";
import { createPluginRegistry } from "@logicsrc/plugin-core";
import { agentBbsPlugin } from "./index.js";
describe("agentbbs plugin", () => {
it("registers with a valid manifest", () => {
const registry = createPluginRegistry([agentBbsPlugin]);
expect(registry.get("agentbbs")?.enabled).toBe(true);
expect(registry.snapshot().capabilities["pods.provision"]).toEqual(["agentbbs"]);
});
});

View file

@ -0,0 +1,27 @@
import type { PluginDefinition } from "@logicsrc/plugin-core";
import { agentBbsManifest } from "./manifest.js";
export const agentBbsPlugin: PluginDefinition = {
manifest: agentBbsManifest,
configDefaults: {
enabled: true,
ssh_host: "${AGENTBBS_SSH_HOST}",
ssh_port: "${AGENTBBS_SSH_PORT}",
ssh_key_path: "${AGENTBBS_SSH_KEY_PATH}",
default_route: "bbs"
},
routes: [
{ method: "GET", path: "/api/plugins/agentbbs/status", capability: "bbs.status" },
{ method: "GET", path: "/api/plugins/agentbbs/chat", capability: "chat.read" },
{ method: "POST", path: "/api/plugins/agentbbs/chat", capability: "chat.send" },
{ method: "GET", path: "/api/plugins/agentbbs/pods", capability: "pods.list" },
{ method: "POST", path: "/api/plugins/agentbbs/pods", capability: "pods.provision" },
{ method: "GET", path: "/api/plugins/agentbbs/arcade", capability: "arcade.list" },
{ method: "GET", path: "/api/plugins/agentbbs/finger/:user", capability: "finger.lookup" }
],
events: [{ event: "payment.confirmed", capability: "pods.membership" }],
permissions: ["bbs:read", "chat:send", "pods:provision"],
tuiPanels: [{ id: "agentbbs-status", title: "AgentBBS" }]
};
export { agentBbsManifest };

View file

@ -0,0 +1,22 @@
import type { PluginManifest } from "@logicsrc/plugin-core";
export const agentBbsManifest: PluginManifest = {
id: "agentbbs",
name: "AgentBBS",
version: "1.0.0",
type: ["community", "chat", "hosting"],
default: false,
capabilities: [
"bbs.status",
"chat.send",
"chat.read",
"pods.list",
"pods.provision",
"pods.membership",
"arcade.list",
"ascii.stream",
"finger.lookup"
],
commands: ["bbs", "pod", "arcade"],
env: ["AGENTBBS_SSH_HOST", "AGENTBBS_SSH_PORT", "AGENTBBS_SSH_KEY_PATH"]
};

View file

@ -0,0 +1,8 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src/**/*.ts"]
}