mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-19 00:01:19 +00:00
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
71 lines
2.2 KiB
TypeScript
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
|
|
}
|