feat: 实现@tool协议完整功能 - JavaScript工具执行框架

 核心功能
- 新增ToolProtocol处理器,支持@tool://协议解析
- 实现PromptXToolCommand,统一MCP/CLI工具调用
- 完善ToolExecutor,支持工具实例化和参数验证
- 新增calculator和send-email示例工具

🔧 技术改进
- 优化PackageDiscovery统一资源扫描逻辑
- 增强CrossPlatformFileScanner支持.tool.js文件
- 完善ResourceManager集成ToolProtocol
- 更新MCP工具定义支持promptx_tool

📋 详细变更
Core:
- src/lib/core/resource/protocols/ToolProtocol.js: 新增工具协议处理器
- src/lib/commands/PromptXToolCommand.js: 新增工具命令处理器
- src/lib/tool/ToolExecutor.js: 增强工具执行器兼容性

Discovery:
- src/lib/core/resource/discovery/PackageDiscovery.js: 统一资源扫描
- src/lib/core/resource/discovery/CrossPlatformFileScanner.js: 支持tool文件
- src/lib/core/resource/discovery/ProjectDiscovery.js: 增加tool验证

Integration:
- src/lib/core/resource/resourceManager.js: 集成ToolProtocol
- src/lib/mcp/toolDefinitions.js: 新增promptx_tool定义
- src/lib/commands/MCPServerCommand.js: 支持tool参数转换
- src/bin/promptx.js: 新增tool命令行支持

Tools:
- prompt/tool/calculator.tool.js: 数学计算工具示例
- prompt/tool/send-email.tool.js: 邮件发送工具示例

Registry:
- src/package.registry.json: 自动生成包含2个tool资源

🧪 测试验证
-  @tool://calculator 数学计算: 25 + 37 = 62
-  @tool://send-email 邮件发送演示版本
-  CLI和MCP双模式支持
-  完整的错误处理和执行元数据
-  资源自动发现和注册

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
sean
2025-06-28 14:15:24 +08:00
parent 70093018f8
commit 40e0c01c59
17 changed files with 1725 additions and 646 deletions

View File

@ -150,6 +150,50 @@ const TOOL_DEFINITIONS = [
context: z.object({}).optional().describe('上下文信息')
})
})
},
{
name: 'promptx_tool',
description: '🔧 [工具执行器] 执行通过@tool协议声明的JavaScript工具 - 支持角色配置中定义的专业工具能力,如@tool://calculator数学计算、@tool://send-email邮件发送等。提供安全沙箱执行、参数验证、错误处理和性能监控。',
inputSchema: {
type: 'object',
properties: {
tool_resource: {
type: 'string',
description: '工具资源引用,格式:@tool://tool-name如@tool://calculator',
pattern: '^@tool://.+'
},
parameters: {
type: 'object',
description: '传递给工具的参数对象'
},
context: {
type: 'object',
description: '执行上下文信息(可选)',
properties: {
role_id: {
type: 'string',
description: '当前激活的角色ID'
},
session_id: {
type: 'string',
description: '会话ID'
}
}
}
},
required: ['tool_resource', 'parameters']
},
zodSchema: z.object({
tool_resource: z.string()
.regex(/^@tool:\/\/.+/, '工具资源必须以@tool://开头')
.describe('工具资源引用,格式:@tool://tool-name'),
parameters: z.object({}).passthrough()
.describe('传递给工具的参数对象'),
context: z.object({
role_id: z.string().optional().describe('当前激活的角色ID'),
session_id: z.string().optional().describe('会话ID')
}).optional().describe('执行上下文信息')
})
}
];