feat(plugin): register team-mode tools and expand registry tests
This commit is contained in:
@@ -6,6 +6,21 @@ import type {
|
||||
} from "../agents/dynamic-agent-prompt-builder"
|
||||
import type { OhMyOpenCodeConfig } from "../config"
|
||||
import { isInteractiveBashEnabled } from "../create-runtime-tmux-config"
|
||||
import {
|
||||
createTeamApproveShutdownTool,
|
||||
createTeamCreateTool,
|
||||
createTeamDeleteTool,
|
||||
createTeamRejectShutdownTool,
|
||||
createTeamShutdownRequestTool,
|
||||
} from "../features/team-mode/tools/lifecycle"
|
||||
import { createTeamSendMessageTool } from "../features/team-mode/tools/messaging"
|
||||
import { createTeamListTool, createTeamStatusTool } from "../features/team-mode/tools/query"
|
||||
import {
|
||||
createTeamTaskCreateTool,
|
||||
createTeamTaskGetTool,
|
||||
createTeamTaskListTool,
|
||||
createTeamTaskUpdateTool,
|
||||
} from "../features/team-mode/tools/tasks"
|
||||
import * as openclawRuntimeDispatch from "../openclaw/runtime-dispatch"
|
||||
import type { PluginContext, ToolsRecord } from "./types"
|
||||
|
||||
@@ -56,6 +71,18 @@ type ToolRegistryFactories = {
|
||||
createTaskList: typeof createTaskList
|
||||
createTaskUpdateTool: typeof createTaskUpdateTool
|
||||
createHashlineEditTool: typeof createHashlineEditTool
|
||||
createTeamApproveShutdownTool: typeof createTeamApproveShutdownTool
|
||||
createTeamCreateTool: typeof createTeamCreateTool
|
||||
createTeamDeleteTool: typeof createTeamDeleteTool
|
||||
createTeamRejectShutdownTool: typeof createTeamRejectShutdownTool
|
||||
createTeamShutdownRequestTool: typeof createTeamShutdownRequestTool
|
||||
createTeamSendMessageTool: typeof createTeamSendMessageTool
|
||||
createTeamTaskCreateTool: typeof createTeamTaskCreateTool
|
||||
createTeamTaskGetTool: typeof createTeamTaskGetTool
|
||||
createTeamTaskListTool: typeof createTeamTaskListTool
|
||||
createTeamTaskUpdateTool: typeof createTeamTaskUpdateTool
|
||||
createTeamStatusTool: typeof createTeamStatusTool
|
||||
createTeamListTool: typeof createTeamListTool
|
||||
}
|
||||
|
||||
const defaultToolRegistryFactories: ToolRegistryFactories = {
|
||||
@@ -77,6 +104,18 @@ const defaultToolRegistryFactories: ToolRegistryFactories = {
|
||||
createTaskList,
|
||||
createTaskUpdateTool,
|
||||
createHashlineEditTool,
|
||||
createTeamApproveShutdownTool,
|
||||
createTeamCreateTool,
|
||||
createTeamDeleteTool,
|
||||
createTeamRejectShutdownTool,
|
||||
createTeamShutdownRequestTool,
|
||||
createTeamSendMessageTool,
|
||||
createTeamTaskCreateTool,
|
||||
createTeamTaskGetTool,
|
||||
createTeamTaskListTool,
|
||||
createTeamTaskUpdateTool,
|
||||
createTeamStatusTool,
|
||||
createTeamListTool,
|
||||
}
|
||||
|
||||
export type ToolRegistryResult = {
|
||||
@@ -178,6 +217,8 @@ export function createToolRegistry(args: {
|
||||
)
|
||||
const lookAt = isMultimodalLookerEnabled ? factories.createLookAt(ctx) : null
|
||||
|
||||
const getSisyphusJuniorModelOverride = (agentOverride?: { model?: string }): string | undefined => agentOverride?.model
|
||||
|
||||
const delegateTask = factories.createDelegateTask({
|
||||
manager: managers.backgroundManager,
|
||||
client: ctx.client,
|
||||
@@ -185,9 +226,10 @@ export function createToolRegistry(args: {
|
||||
userCategories: pluginConfig.categories,
|
||||
agentOverrides: pluginConfig.agents,
|
||||
gitMasterConfig: pluginConfig.git_master,
|
||||
sisyphusJuniorModel: pluginConfig.agents?.["sisyphus-junior"]?.model,
|
||||
sisyphusJuniorModel: getSisyphusJuniorModelOverride(pluginConfig.agents?.["sisyphus-junior"]),
|
||||
browserProvider: skillContext.browserProvider,
|
||||
disabledSkills: skillContext.disabledSkills,
|
||||
teamModeEnabled: pluginConfig.team_mode?.enabled ?? false,
|
||||
availableCategories,
|
||||
availableSkills: skillContext.availableSkills,
|
||||
sisyphusAgentConfig: pluginConfig.sisyphus_agent,
|
||||
@@ -243,6 +285,7 @@ export function createToolRegistry(args: {
|
||||
getSessionID: getSessionIDForMcp,
|
||||
gitMasterConfig: pluginConfig.git_master,
|
||||
browserProvider: skillContext.browserProvider,
|
||||
teamModeEnabled: pluginConfig.team_mode?.enabled ?? false,
|
||||
nativeSkills: "skills" in ctx ? (ctx as { skills: SkillLoadOptions["nativeSkills"] }).skills : undefined,
|
||||
})
|
||||
|
||||
@@ -261,6 +304,38 @@ export function createToolRegistry(args: {
|
||||
? { edit: factories.createHashlineEditTool(ctx) }
|
||||
: {}
|
||||
|
||||
const teamModeToolsRecord: Record<string, ToolDefinition> = pluginConfig.team_mode?.enabled
|
||||
? {
|
||||
team_create: factories.createTeamCreateTool(
|
||||
pluginConfig.team_mode,
|
||||
ctx.client,
|
||||
managers.backgroundManager,
|
||||
managers.tmuxSessionManager,
|
||||
{
|
||||
userCategories: pluginConfig.categories,
|
||||
sisyphusJuniorModel: getSisyphusJuniorModelOverride(pluginConfig.agents?.["sisyphus-junior"]),
|
||||
agentOverrides: pluginConfig.agents,
|
||||
},
|
||||
),
|
||||
team_delete: factories.createTeamDeleteTool(
|
||||
pluginConfig.team_mode,
|
||||
ctx.client,
|
||||
managers.backgroundManager,
|
||||
managers.tmuxSessionManager,
|
||||
),
|
||||
team_shutdown_request: factories.createTeamShutdownRequestTool(pluginConfig.team_mode, ctx.client),
|
||||
team_approve_shutdown: factories.createTeamApproveShutdownTool(pluginConfig.team_mode, ctx.client),
|
||||
team_reject_shutdown: factories.createTeamRejectShutdownTool(pluginConfig.team_mode, ctx.client),
|
||||
team_send_message: factories.createTeamSendMessageTool(pluginConfig.team_mode, ctx.client),
|
||||
team_task_create: factories.createTeamTaskCreateTool(pluginConfig.team_mode, ctx.client),
|
||||
team_task_list: factories.createTeamTaskListTool(pluginConfig.team_mode, ctx.client),
|
||||
team_task_update: factories.createTeamTaskUpdateTool(pluginConfig.team_mode, ctx.client),
|
||||
team_task_get: factories.createTeamTaskGetTool(pluginConfig.team_mode, ctx.client),
|
||||
team_status: factories.createTeamStatusTool(pluginConfig.team_mode, ctx.client, managers.backgroundManager),
|
||||
team_list: factories.createTeamListTool(pluginConfig.team_mode, ctx.client),
|
||||
}
|
||||
: {}
|
||||
|
||||
const allTools: Record<string, ToolDefinition> = {
|
||||
...factories.builtinTools,
|
||||
...factories.createGrepTools(ctx),
|
||||
@@ -274,6 +349,7 @@ export function createToolRegistry(args: {
|
||||
skill_mcp: skillMcpTool,
|
||||
skill: skillTool,
|
||||
...(interactiveBashEnabled ? { interactive_bash: factories.interactive_bash } : {}),
|
||||
...teamModeToolsRecord,
|
||||
...taskToolsRecord,
|
||||
...hashlineToolsRecord,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user