import type { OpenClawPluginApi } from "openclaw/plugin-sdk"; import { createTaskPickupTool } from "./lib/tools/task-pickup.js"; import { createTaskCompleteTool } from "./lib/tools/task-complete.js"; import { createQueueStatusTool } from "./lib/tools/queue-status.js"; import { createSessionHealthTool } from "./lib/tools/session-health.js"; import { createProjectRegisterTool } from "./lib/tools/project-register.js"; import { createTaskCreateTool } from "./lib/tools/task-create.js"; import { createSetupTool } from "./lib/tools/devclaw-setup.js"; import { registerCli } from "./lib/cli.js"; const plugin = { id: "devclaw", name: "DevClaw", description: "Multi-project dev/qa pipeline orchestration with GitHub/GitLab integration, developer tiers, and audit logging.", configSchema: { type: "object", properties: { models: { type: "object", description: "Model mapping per developer tier", properties: { junior: { type: "string", description: "Junior dev model" }, medior: { type: "string", description: "Medior dev model" }, senior: { type: "string", description: "Senior dev model" }, qa: { type: "string", description: "QA engineer model" }, }, }, glabPath: { type: "string", description: "Path to glab CLI binary. Defaults to 'glab' on PATH.", }, ghPath: { type: "string", description: "Path to gh CLI binary. Defaults to 'gh' on PATH.", }, }, }, register(api: OpenClawPluginApi) { // Agent tools (primary interface — agent calls these directly) api.registerTool(createTaskPickupTool(api), { names: ["task_pickup"], }); api.registerTool(createTaskCompleteTool(api), { names: ["task_complete"], }); api.registerTool(createQueueStatusTool(api), { names: ["queue_status"], }); api.registerTool(createSessionHealthTool(api), { names: ["session_health"], }); api.registerTool(createProjectRegisterTool(api), { names: ["project_register"], }); api.registerTool(createTaskCreateTool(api), { names: ["task_create"], }); api.registerTool(createSetupTool(api), { names: ["devclaw_setup"], }); // CLI: `openclaw devclaw setup` api.registerCli(({ program }: { program: any }) => registerCli(program), { commands: ["devclaw"], }); api.logger.info("DevClaw plugin registered (7 tools, 1 CLI command)"); }, }; export default plugin;