Roo-Code/src/core/webview/generateSystemPrompt.ts
Roo Code 5c1123a9bf feat: add A2A (Agent-to-Agent) protocol support - Phase 1
Implements Phase 1 of A2A protocol support as discussed in #12007:
- A2A types (agent config, task, message, artifact types)
- A2aHub service for managing agent connections
- delegate_to_agent tool for delegating tasks to external agents
- Manual configuration via a2a_settings.json (global/project)
- Configurable headers for authentication (JSON key-value pairs)
- Integration with system prompt, tool parser, and ClineProvider
- A2A tool group added to code mode
- Tests for A2aHub service
2026-03-26 23:08:10 +00:00

71 lines
2.2 KiB
TypeScript

import * as vscode from "vscode"
import { WebviewMessage } from "../../shared/WebviewMessage"
import { defaultModeSlug } from "../../shared/modes"
import { buildApiHandler } from "../../api"
import { SYSTEM_PROMPT } from "../prompts/system"
import { MultiSearchReplaceDiffStrategy } from "../diff/strategies/multi-search-replace"
import { Package } from "../../shared/package"
import { ClineProvider } from "./ClineProvider"
export const generateSystemPrompt = async (provider: ClineProvider, message: WebviewMessage) => {
const {
apiConfiguration,
customModePrompts,
customInstructions,
mcpEnabled,
experiments,
language,
enableSubfolderRules,
} = await provider.getState()
const diffStrategy = new MultiSearchReplaceDiffStrategy()
const cwd = provider.cwd
const mode = message.mode ?? defaultModeSlug
const customModes = await provider.customModesManager.getCustomModes()
const rooIgnoreInstructions = provider.getCurrentTask()?.rooIgnoreController?.getInstructions()
// Create a temporary API handler to check model info for stealth mode.
// This avoids relying on an active Cline instance which might not exist during preview.
let modelInfo: { isStealthModel?: boolean } | undefined
try {
const tempApiHandler = buildApiHandler(apiConfiguration)
modelInfo = tempApiHandler.getModel().info
} catch (error) {
console.error("Error fetching model info for system prompt preview:", error)
}
const systemPrompt = await SYSTEM_PROMPT(
provider.context,
cwd,
false, // supportsComputerUse — browser removed
mcpEnabled ? provider.getMcpHub() : undefined,
diffStrategy,
mode,
customModePrompts,
customModes,
customInstructions,
experiments,
language,
rooIgnoreInstructions,
{
todoListEnabled: apiConfiguration?.todoListEnabled ?? true,
useAgentRules: vscode.workspace.getConfiguration(Package.name).get<boolean>("useAgentRules") ?? true,
enableSubfolderRules: enableSubfolderRules ?? false,
newTaskRequireTodos: vscode.workspace
.getConfiguration(Package.name)
.get<boolean>("newTaskRequireTodos", false),
isStealthModel: modelInfo?.isStealthModel,
},
undefined, // todoList
undefined, // modelId
provider.getSkillsManager(),
provider.getA2aHub(),
)
return systemPrompt
}