mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
Add AgentBBS connector plugin (#131)
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:
parent
647f204f1d
commit
1bb7ba6e60
13 changed files with 133 additions and 5 deletions
22
plugins/agentbbs/README.md
Normal file
22
plugins/agentbbs/README.md
Normal 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 |
|
||||
18
plugins/agentbbs/package.json
Normal file
18
plugins/agentbbs/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
11
plugins/agentbbs/src/index.test.ts
Normal file
11
plugins/agentbbs/src/index.test.ts
Normal 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"]);
|
||||
});
|
||||
});
|
||||
27
plugins/agentbbs/src/index.ts
Normal file
27
plugins/agentbbs/src/index.ts
Normal 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 };
|
||||
22
plugins/agentbbs/src/manifest.ts
Normal file
22
plugins/agentbbs/src/manifest.ts
Normal 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"]
|
||||
};
|
||||
8
plugins/agentbbs/tsconfig.json
Normal file
8
plugins/agentbbs/tsconfig.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue