| import 'agent_tool_metadata.dart'; |
| |
| /// Unique identifiers for the available agent tools. |
| enum AgentToolId { |
| readFile, |
| readLines, |
| grep, |
| glob, |
| fuzzyFileSearch, |
| writeFile, |
| applyPatch, |
| deleteFile, |
| analyzeStart, |
| askQuestion, |
| planExit, |
| workspaceMaintenance, |
| generateImage, |
| controlApp, |
| getWidgetTree, |
| getWidgetDetails, |
| findWidget, |
| screenshotWidget, |
| tapWidget, |
| enterText, |
| scrollWidget, |
| changeDeviceMode, |
| } |
| |
| /// Canonical metadata derived from each [AgentToolId]. |
| extension AgentToolIdMetadata on AgentToolId { |
| /// The UI presentation category for this tool. |
| AgentToolUiKind get uiKind => switch (this) { |
| AgentToolId.readFile || AgentToolId.readLines || AgentToolId.analyzeStart => AgentToolUiKind.read, |
| AgentToolId.grep || AgentToolId.glob || AgentToolId.fuzzyFileSearch => AgentToolUiKind.search, |
| AgentToolId.askQuestion || AgentToolId.planExit => AgentToolUiKind.interaction, |
| AgentToolId.writeFile || |
| AgentToolId.applyPatch || |
| AgentToolId.deleteFile || |
| AgentToolId.workspaceMaintenance => AgentToolUiKind.edit, |
| AgentToolId.generateImage || |
| AgentToolId.controlApp || |
| AgentToolId.getWidgetTree || |
| AgentToolId.getWidgetDetails || |
| AgentToolId.findWidget || |
| AgentToolId.screenshotWidget || |
| AgentToolId.tapWidget || |
| AgentToolId.enterText || |
| AgentToolId.scrollWidget || |
| AgentToolId.changeDeviceMode => AgentToolUiKind.preview, |
| }; |
| |
| /// Security or functional capability flags for this tool. |
| Set<AgentToolCapability> get capabilities => switch (this) { |
| AgentToolId.readFile || |
| AgentToolId.readLines || |
| AgentToolId.grep || |
| AgentToolId.glob || |
| AgentToolId.fuzzyFileSearch => const {AgentToolCapability.workspaceReadSearch}, |
| AgentToolId.askQuestion || AgentToolId.planExit => const {AgentToolCapability.userInteraction}, |
| AgentToolId.writeFile || AgentToolId.applyPatch || AgentToolId.deleteFile => const { |
| AgentToolCapability.workspaceMutate, |
| AgentToolCapability.requiresAnalysisAfterUse, |
| }, |
| AgentToolId.workspaceMaintenance => const { |
| AgentToolCapability.workspaceMutate, |
| AgentToolCapability.requiresAnalysisAfterUse, |
| }, |
| AgentToolId.analyzeStart => const {AgentToolCapability.workspaceReadSearch}, |
| AgentToolId.generateImage || |
| AgentToolId.controlApp || |
| AgentToolId.getWidgetTree || |
| AgentToolId.getWidgetDetails || |
| AgentToolId.findWidget || |
| AgentToolId.screenshotWidget || |
| AgentToolId.tapWidget || |
| AgentToolId.enterText || |
| AgentToolId.scrollWidget || |
| AgentToolId.changeDeviceMode => const {}, |
| }; |
| } |