mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-22 18:41:16 +00:00
* feat(workboard): refresh control ui from live changes * refactor(workboard): tighten live invalidation path * chore(workboard): preserve locale catalog state * refactor(gateway): keep broadcaster runtime object * refactor(plugin-sdk): own gateway event types * test(workboard): bind reconciliation mocks * test(release): declare recovery helpers * fix(workboard): cancel direct loads on teardown
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
// Workboard plugin entrypoint registers its OpenClaw integration.
|
|
import { definePluginEntry } from "./api.js";
|
|
import { registerWorkboardGatewayMethods } from "./runtime-api.js";
|
|
import { createWorkboardChangeEventService } from "./src/change-events.js";
|
|
import { registerWorkboardCommand } from "./src/command.js";
|
|
import { cleanupWorkboardRunWorktree } from "./src/dispatcher-workspace.js";
|
|
import { WorkboardStore } from "./src/store.js";
|
|
import { createWorkboardTools } from "./src/tools.js";
|
|
import {
|
|
guardWorkboardToolsForWorkspaceAccess,
|
|
WORKBOARD_TOOL_NAMES,
|
|
} from "./src/workspace-access.js";
|
|
|
|
export default definePluginEntry({
|
|
id: "workboard",
|
|
name: "Workboard",
|
|
description: "Dashboard workboard for agent-owned issues and sessions.",
|
|
register(api) {
|
|
const store = WorkboardStore.openSqlite();
|
|
registerWorkboardGatewayMethods({ api, store });
|
|
registerWorkboardCommand({ api, store });
|
|
api.registerService(createWorkboardChangeEventService(store));
|
|
api.on("subagent_ended", async (event) => {
|
|
if (event.runId) {
|
|
await cleanupWorkboardRunWorktree({
|
|
store,
|
|
worktrees: api.runtime.worktrees,
|
|
runId: event.runId,
|
|
});
|
|
}
|
|
});
|
|
api.registerCli(
|
|
async ({ program }) => {
|
|
const { registerWorkboardCli } = await import("./src/cli.js");
|
|
registerWorkboardCli({ program, store });
|
|
},
|
|
{
|
|
descriptors: [
|
|
{
|
|
name: "workboard",
|
|
description: "Manage Workboard cards and worker dispatch",
|
|
hasSubcommands: true,
|
|
},
|
|
],
|
|
},
|
|
);
|
|
api.registerTool(
|
|
(context) =>
|
|
guardWorkboardToolsForWorkspaceAccess(
|
|
createWorkboardTools({ api, context, store }),
|
|
context,
|
|
api.runtime.sandbox.resolveWorkspaceAuthority,
|
|
),
|
|
{
|
|
names: [...WORKBOARD_TOOL_NAMES],
|
|
optional: true,
|
|
},
|
|
);
|
|
},
|
|
});
|