feat: Fabric channel plugin for OpenClaw (Phase 1, B1)

OpenClaw channel plugin: defineChannelPluginEntry + createChatChannelPlugin.
Inbound via channel-turn kernel (wakeup -> admission: true=dispatch,
else drop+recordHistory). One Fabric socket per agent identity in the
plugin runtime (no sidecar). Center API-key agent auth. Tools:
fabric-register, create-{chat,work,report,discussion}-channel,
discussion-complete (post summary + close channel).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
h z
2026-05-15 17:13:26 +01:00
parent 21475eb72b
commit 9221664428
11 changed files with 735 additions and 0 deletions

51
openclaw.plugin.json Normal file
View File

@@ -0,0 +1,51 @@
{
"id": "fabric",
"kind": "channel",
"channels": ["fabric"],
"name": "Fabric",
"description": "Fabric channel plugin — OpenClaw agents speak in Fabric guilds",
"activation": {
"onStartup": true
},
"contracts": {
"tools": [
"fabric-register",
"create-chat-channel",
"create-work-channel",
"create-report-channel",
"create-discussion-channel",
"discussion-complete"
]
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"identityFilePath": {
"type": "string",
"description": "Path to the agent identity registry JSON (agentId -> Fabric API key). Default ~/.openclaw/fabric-identity.json"
},
"debugMode": { "type": "boolean", "default": false }
},
"required": []
},
"channelConfigs": {
"fabric": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"centerApiBase": {
"type": "string",
"description": "Fabric Center API base, e.g. http://localhost:7001/api"
},
"dmSecurity": { "type": "string" },
"allowFrom": { "type": "array", "items": { "type": "string" } }
}
},
"uiHints": {
"centerApiBase": { "label": "Center API base" }
}
}
}
}