sdkwork-browser-agent 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +228 -0
  2. package/README.zh.md +228 -0
  3. package/dist/agent-Bpxmkz8W.d.ts +197 -0
  4. package/dist/agent-kexkkI13.d.cts +197 -0
  5. package/dist/browser/agent-Bpxmkz8W.d.ts +197 -0
  6. package/dist/browser/chunk-7W2JJCSS.js +276 -0
  7. package/dist/browser/chunk-7W2JJCSS.js.map +1 -0
  8. package/dist/browser/chunk-BHRFRGR7.js +144 -0
  9. package/dist/browser/chunk-BHRFRGR7.js.map +1 -0
  10. package/dist/browser/chunk-CLP6UNSV.js +285 -0
  11. package/dist/browser/chunk-CLP6UNSV.js.map +1 -0
  12. package/dist/browser/chunk-HXLRBB7S.js +1569 -0
  13. package/dist/browser/chunk-HXLRBB7S.js.map +1 -0
  14. package/dist/browser/chunk-VJEFLRZT.js +1720 -0
  15. package/dist/browser/chunk-VJEFLRZT.js.map +1 -0
  16. package/dist/browser/index.d.ts +842 -0
  17. package/dist/browser/index.js +3293 -0
  18. package/dist/browser/index.js.map +1 -0
  19. package/dist/browser/llm/index.d.ts +235 -0
  20. package/dist/browser/llm/index.js +29 -0
  21. package/dist/browser/llm/index.js.map +1 -0
  22. package/dist/browser/mcp/index.d.ts +63 -0
  23. package/dist/browser/mcp/index.js +9 -0
  24. package/dist/browser/mcp/index.js.map +1 -0
  25. package/dist/browser/provider-Dna36xA-.d.ts +105 -0
  26. package/dist/browser/skills/index.d.ts +401 -0
  27. package/dist/browser/skills/index.js +31 -0
  28. package/dist/browser/skills/index.js.map +1 -0
  29. package/dist/browser/storage/index.d.ts +64 -0
  30. package/dist/browser/storage/index.js +15 -0
  31. package/dist/browser/storage/index.js.map +1 -0
  32. package/dist/browser/tools/index.d.ts +45 -0
  33. package/dist/browser/tools/index.js +15 -0
  34. package/dist/browser/tools/index.js.map +1 -0
  35. package/dist/browser/types-CG5I-byI.d.ts +30 -0
  36. package/dist/chunk-56J3IBXZ.js +144 -0
  37. package/dist/chunk-56J3IBXZ.js.map +1 -0
  38. package/dist/chunk-5XTVS5MB.js +1720 -0
  39. package/dist/chunk-5XTVS5MB.js.map +1 -0
  40. package/dist/chunk-6AYIRBGI.js +166 -0
  41. package/dist/chunk-6AYIRBGI.js.map +1 -0
  42. package/dist/chunk-C2EYJHXW.cjs +276 -0
  43. package/dist/chunk-C2EYJHXW.cjs.map +1 -0
  44. package/dist/chunk-HOZQ445W.cjs +166 -0
  45. package/dist/chunk-HOZQ445W.cjs.map +1 -0
  46. package/dist/chunk-KZNZ6CGD.cjs +144 -0
  47. package/dist/chunk-KZNZ6CGD.cjs.map +1 -0
  48. package/dist/chunk-XFMT5ZA4.js +276 -0
  49. package/dist/chunk-XFMT5ZA4.js.map +1 -0
  50. package/dist/chunk-XPGICLEJ.cjs +1720 -0
  51. package/dist/chunk-XPGICLEJ.cjs.map +1 -0
  52. package/dist/index.cjs +1311 -0
  53. package/dist/index.cjs.map +1 -0
  54. package/dist/index.d.cts +395 -0
  55. package/dist/index.d.ts +395 -0
  56. package/dist/index.js +1311 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/llm/index.cjs +29 -0
  59. package/dist/llm/index.cjs.map +1 -0
  60. package/dist/llm/index.d.cts +235 -0
  61. package/dist/llm/index.d.ts +235 -0
  62. package/dist/llm/index.js +29 -0
  63. package/dist/llm/index.js.map +1 -0
  64. package/dist/mcp/index.cjs +9 -0
  65. package/dist/mcp/index.cjs.map +1 -0
  66. package/dist/mcp/index.d.cts +63 -0
  67. package/dist/mcp/index.d.ts +63 -0
  68. package/dist/mcp/index.js +9 -0
  69. package/dist/mcp/index.js.map +1 -0
  70. package/dist/node/agent-Bpxmkz8W.d.ts +197 -0
  71. package/dist/node/agent-kexkkI13.d.cts +197 -0
  72. package/dist/node/chunk-7W2JJCSS.js +276 -0
  73. package/dist/node/chunk-7W2JJCSS.js.map +1 -0
  74. package/dist/node/chunk-BHRFRGR7.js +144 -0
  75. package/dist/node/chunk-BHRFRGR7.js.map +1 -0
  76. package/dist/node/chunk-CLP6UNSV.js +285 -0
  77. package/dist/node/chunk-CLP6UNSV.js.map +1 -0
  78. package/dist/node/chunk-HXLRBB7S.js +1569 -0
  79. package/dist/node/chunk-HXLRBB7S.js.map +1 -0
  80. package/dist/node/chunk-IYG37UN3.cjs +144 -0
  81. package/dist/node/chunk-IYG37UN3.cjs.map +1 -0
  82. package/dist/node/chunk-JF33ZOMB.cjs +285 -0
  83. package/dist/node/chunk-JF33ZOMB.cjs.map +1 -0
  84. package/dist/node/chunk-KXXS33G3.cjs +276 -0
  85. package/dist/node/chunk-KXXS33G3.cjs.map +1 -0
  86. package/dist/node/chunk-MTFOABGC.cjs +1720 -0
  87. package/dist/node/chunk-MTFOABGC.cjs.map +1 -0
  88. package/dist/node/chunk-VJEFLRZT.js +1720 -0
  89. package/dist/node/chunk-VJEFLRZT.js.map +1 -0
  90. package/dist/node/chunk-YDHQCPSN.cjs +1569 -0
  91. package/dist/node/chunk-YDHQCPSN.cjs.map +1 -0
  92. package/dist/node/index.cjs +3293 -0
  93. package/dist/node/index.cjs.map +1 -0
  94. package/dist/node/index.d.cts +842 -0
  95. package/dist/node/index.d.ts +842 -0
  96. package/dist/node/index.js +3293 -0
  97. package/dist/node/index.js.map +1 -0
  98. package/dist/node/llm/index.cjs +29 -0
  99. package/dist/node/llm/index.cjs.map +1 -0
  100. package/dist/node/llm/index.d.cts +235 -0
  101. package/dist/node/llm/index.d.ts +235 -0
  102. package/dist/node/llm/index.js +29 -0
  103. package/dist/node/llm/index.js.map +1 -0
  104. package/dist/node/mcp/index.cjs +9 -0
  105. package/dist/node/mcp/index.cjs.map +1 -0
  106. package/dist/node/mcp/index.d.cts +63 -0
  107. package/dist/node/mcp/index.d.ts +63 -0
  108. package/dist/node/mcp/index.js +9 -0
  109. package/dist/node/mcp/index.js.map +1 -0
  110. package/dist/node/provider-Dna36xA-.d.cts +105 -0
  111. package/dist/node/provider-Dna36xA-.d.ts +105 -0
  112. package/dist/node/skills/index.cjs +31 -0
  113. package/dist/node/skills/index.cjs.map +1 -0
  114. package/dist/node/skills/index.d.cts +401 -0
  115. package/dist/node/skills/index.d.ts +401 -0
  116. package/dist/node/skills/index.js +31 -0
  117. package/dist/node/skills/index.js.map +1 -0
  118. package/dist/node/storage/index.cjs +15 -0
  119. package/dist/node/storage/index.cjs.map +1 -0
  120. package/dist/node/storage/index.d.cts +64 -0
  121. package/dist/node/storage/index.d.ts +64 -0
  122. package/dist/node/storage/index.js +15 -0
  123. package/dist/node/storage/index.js.map +1 -0
  124. package/dist/node/tools/index.cjs +15 -0
  125. package/dist/node/tools/index.cjs.map +1 -0
  126. package/dist/node/tools/index.d.cts +45 -0
  127. package/dist/node/tools/index.d.ts +45 -0
  128. package/dist/node/tools/index.js +15 -0
  129. package/dist/node/tools/index.js.map +1 -0
  130. package/dist/node/types-CG5I-byI.d.cts +30 -0
  131. package/dist/node/types-CG5I-byI.d.ts +30 -0
  132. package/dist/provider-Dna36xA-.d.cts +105 -0
  133. package/dist/provider-Dna36xA-.d.ts +105 -0
  134. package/dist/skills/index.cjs +15 -0
  135. package/dist/skills/index.cjs.map +1 -0
  136. package/dist/skills/index.d.cts +43 -0
  137. package/dist/skills/index.d.ts +43 -0
  138. package/dist/skills/index.js +15 -0
  139. package/dist/skills/index.js.map +1 -0
  140. package/dist/tools/index.cjs +15 -0
  141. package/dist/tools/index.cjs.map +1 -0
  142. package/dist/tools/index.d.cts +45 -0
  143. package/dist/tools/index.d.ts +45 -0
  144. package/dist/tools/index.js +15 -0
  145. package/dist/tools/index.js.map +1 -0
  146. package/package.json +150 -0
package/README.md ADDED
@@ -0,0 +1,228 @@
1
+ # SDKWork Browser Agent
2
+
3
+ [![npm version](https://img.shields.io/npm/v/sdkwork-browser-agent.svg)](https://www.npmjs.com/package/sdkwork-browser-agent)
4
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue.svg)](https://www.typescriptlang.org/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ 一个浏览器兼容的 Agent 架构,支持 Skills、MCP、Tools 和灵活的 LLM Provider 体系。
8
+
9
+ [English](./README.md) | [中文](./README.zh.md)
10
+
11
+ ## ✨ 特性
12
+
13
+ - 🤖 **智能决策引擎** - 自动选择最合适的 Skill,基于嵌入相似度匹配
14
+ - 🔄 **动态 Skill 加载** - 懒加载机制,支持文件、URL、模块多种来源
15
+ - 💰 **Token 优化** - 智能压缩和截断,最小化 Token 消耗
16
+ - 🔌 **多 LLM 支持** - OpenAI、Anthropic、Google Gemini 等主流模型
17
+ - 📦 **MCP 协议** - 完整的 Model Context Protocol 支持
18
+ - 🔧 **插件系统** - 可扩展的插件架构
19
+ - 🌐 **浏览器兼容** - 同时支持浏览器和 Node.js 环境
20
+ - 📘 **TypeScript** - 完整的类型支持
21
+
22
+ ## 🚀 快速开始
23
+
24
+ ### 安装
25
+
26
+ ```bash
27
+ npm install sdkwork-browser-agent
28
+ # 或
29
+ yarn add sdkwork-browser-agent
30
+ # 或
31
+ pnpm add sdkwork-browser-agent
32
+ ```
33
+
34
+ ### 基础使用
35
+
36
+ ```typescript
37
+ import { SmartAgent, OpenAIProvider, builtInSkills } from 'sdkwork-browser-agent';
38
+
39
+ // 创建智能 Agent
40
+ const agent = new SmartAgent({
41
+ name: 'my-agent',
42
+ llmProvider: new OpenAIProvider({
43
+ apiKey: process.env.OPENAI_API_KEY,
44
+ }),
45
+ skills: builtInSkills,
46
+ autoDecide: true,
47
+ });
48
+
49
+ // 初始化
50
+ await agent.initialize();
51
+
52
+ // 自动处理输入
53
+ const result = await agent.process('Calculate 2 + 2');
54
+ console.log(result.result); // 4
55
+ ```
56
+
57
+ ### 使用不同的 LLM Provider
58
+
59
+ ```typescript
60
+ import { AnthropicProvider, GeminiProvider } from 'sdkwork-browser-agent';
61
+
62
+ // Anthropic Claude
63
+ const claudeAgent = new SmartAgent({
64
+ llmProvider: new AnthropicProvider({
65
+ apiKey: process.env.ANTHROPIC_API_KEY,
66
+ }),
67
+ });
68
+
69
+ // Google Gemini
70
+ const geminiAgent = new SmartAgent({
71
+ llmProvider: new GeminiProvider({
72
+ apiKey: process.env.GEMINI_API_KEY,
73
+ }),
74
+ });
75
+ ```
76
+
77
+ ## 📚 文档
78
+
79
+ 完整文档请访问:[https://sdkwork-browser-agent.vercel.app](https://sdkwork-browser-agent.vercel.app)
80
+
81
+ - [快速开始](https://sdkwork-browser-agent.vercel.app/guide/getting-started)
82
+ - [核心概念](https://sdkwork-browser-agent.vercel.app/guide/concepts)
83
+ - [API 参考](https://sdkwork-browser-agent.vercel.app/api/)
84
+ - [示例](https://sdkwork-browser-agent.vercel.app/examples/)
85
+
86
+ ## 🏗️ 架构
87
+
88
+ ```
89
+ sdkwork-browser-agent/
90
+ ├── src/
91
+ │ ├── core/ # Agent 核心
92
+ │ │ ├── agent.ts # 基础 Agent
93
+ │ │ ├── smart-agent.ts # 智能 Agent(自动决策)
94
+ │ │ ├── decision-engine.ts # 决策引擎
95
+ │ │ ├── skill-loader.ts # 动态加载
96
+ │ │ └── token-optimizer.ts # Token 优化
97
+ │ ├── llm/ # LLM Provider
98
+ │ ├── skills/ # Skill 系统
99
+ │ ├── tools/ # Tool 系统
100
+ │ ├── mcp/ # MCP 协议
101
+ │ └── plugins/ # 插件系统
102
+ ```
103
+
104
+ ## 🎯 核心功能
105
+
106
+ ### 1. 智能决策引擎
107
+
108
+ 自动根据输入选择最合适的 Skill:
109
+
110
+ ```typescript
111
+ const agent = new SmartAgent({
112
+ decisionEngine: {
113
+ enableEmbeddings: true, // 启用嵌入相似度
114
+ enableCaching: true, // 启用决策缓存
115
+ threshold: 0.6, // 相似度阈值
116
+ maxSkills: 3, // 最大选择 Skill 数
117
+ },
118
+ });
119
+ ```
120
+
121
+ ### 2. 动态 Skill 加载
122
+
123
+ 支持从多种来源懒加载 Skill:
124
+
125
+ ```typescript
126
+ // 注册 Skill 源
127
+ agent.registerSkillSource('my-skill', 'https://example.com/skills/my-skill.json', 'url');
128
+
129
+ // 动态加载
130
+ const skill = await agent.skillLoader.load('my-skill');
131
+ ```
132
+
133
+ ### 3. Token 优化
134
+
135
+ 自动优化 Token 消耗:
136
+
137
+ ```typescript
138
+ const optimizer = new TokenOptimizer({
139
+ enableCompression: true,
140
+ maxSkillDescriptionLength: 200,
141
+ maxContextTokens: 4000,
142
+ });
143
+
144
+ const optimized = optimizer.optimizeSkills(skills);
145
+ const stats = optimizer.getOptimizationStats(skills, optimized);
146
+ console.log(`Saved ${stats.savingsPercent}% tokens`);
147
+ ```
148
+
149
+ ### 4. 自定义 Skill
150
+
151
+ ```typescript
152
+ import { Skill } from 'sdkwork-browser-agent';
153
+
154
+ const mySkill: Skill = {
155
+ name: 'translate',
156
+ description: 'Translate text to another language',
157
+ parameters: {
158
+ type: 'object',
159
+ properties: {
160
+ text: { type: 'string', description: 'Text to translate' },
161
+ targetLang: { type: 'string', description: 'Target language' },
162
+ },
163
+ required: ['text', 'targetLang'],
164
+ },
165
+ handler: async params => {
166
+ // 实现翻译逻辑
167
+ return { success: true, data: translatedText };
168
+ },
169
+ metadata: {
170
+ category: 'language',
171
+ tags: ['translate', 'nlp'],
172
+ },
173
+ };
174
+
175
+ agent.registerSkill(mySkill);
176
+ ```
177
+
178
+ ## 🧪 测试
179
+
180
+ ```bash
181
+ # 运行所有测试
182
+ npm test
183
+
184
+ # 监视模式
185
+ npm run test:watch
186
+
187
+ # 覆盖率报告
188
+ npm run test:coverage
189
+ ```
190
+
191
+ ## 🛠️ 开发
192
+
193
+ ```bash
194
+ # 安装依赖
195
+ npm install
196
+
197
+ # 开发模式
198
+ npm run dev
199
+
200
+ # 构建
201
+ npm run build
202
+
203
+ # 类型检查
204
+ npm run typecheck
205
+
206
+ # 代码格式化
207
+ npm run format
208
+ ```
209
+
210
+ ## 🤝 贡献
211
+
212
+ 欢迎提交 Issue 和 PR!请阅读 [贡献指南](./CONTRIBUTING.md)。
213
+
214
+ ## 📄 许可证
215
+
216
+ [MIT](./LICENSE)
217
+
218
+ ## 🙏 致谢
219
+
220
+ - [Agent Skills Specification](https://agentskills.io/specification)
221
+ - [Model Context Protocol](https://modelcontextprotocol.io)
222
+ - [OpenCode](https://opencode.ai) - 架构灵感来源
223
+
224
+ ---
225
+
226
+ <p align="center">
227
+ Made with ❤️ by SDKWork Team
228
+ </p>
package/README.zh.md ADDED
@@ -0,0 +1,228 @@
1
+ # SDKWork Browser Agent
2
+
3
+ [![npm version](https://img.shields.io/npm/v/sdkwork-browser-agent.svg)](https://www.npmjs.com/package/sdkwork-browser-agent)
4
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue.svg)](https://www.typescriptlang.org/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ 一个浏览器兼容的 Agent 架构,支持 Skills、MCP、Tools 和灵活的 LLM Provider 体系。
8
+
9
+ [英文](./README.md) | [中文](./README.zh.md)
10
+
11
+ ## ✨ 特性
12
+
13
+ - 🤖 **智能决策引擎** - 自动选择最合适的 Skill,基于嵌入相似度匹配
14
+ - 🔄 **动态 Skill 加载** - 懒加载机制,支持文件、URL、模块多种来源
15
+ - 💰 **Token 优化** - 智能压缩和截断,最小化 Token 消耗
16
+ - 🔌 **多 LLM 支持** - OpenAI、Anthropic、Google Gemini 等主流模型
17
+ - 📦 **MCP 协议** - 完整的 Model Context Protocol 支持
18
+ - 🔧 **插件系统** - 可扩展的插件架构
19
+ - 🌐 **浏览器兼容** - 同时支持浏览器和 Node.js 环境
20
+ - 📘 **TypeScript** - 完整的类型支持
21
+
22
+ ## 🚀 快速开始
23
+
24
+ ### 安装
25
+
26
+ ```bash
27
+ npm install sdkwork-browser-agent
28
+ # 或
29
+ yarn add sdkwork-browser-agent
30
+ # 或
31
+ pnpm add sdkwork-browser-agent
32
+ ```
33
+
34
+ ### 基础使用
35
+
36
+ ```typescript
37
+ import { SmartAgent, OpenAIProvider, builtInSkills } from 'sdkwork-browser-agent';
38
+
39
+ // 创建智能 Agent
40
+ const agent = new SmartAgent({
41
+ name: 'my-agent',
42
+ llmProvider: new OpenAIProvider({
43
+ apiKey: process.env.OPENAI_API_KEY,
44
+ }),
45
+ skills: builtInSkills,
46
+ autoDecide: true,
47
+ });
48
+
49
+ // 初始化
50
+ await agent.initialize();
51
+
52
+ // 自动处理输入
53
+ const result = await agent.process('计算 2 + 2');
54
+ console.log(result.result); // 4
55
+ ```
56
+
57
+ ### 使用不同的 LLM Provider
58
+
59
+ ```typescript
60
+ import { AnthropicProvider, GeminiProvider } from 'sdkwork-browser-agent';
61
+
62
+ // Anthropic Claude
63
+ const claudeAgent = new SmartAgent({
64
+ llmProvider: new AnthropicProvider({
65
+ apiKey: process.env.ANTHROPIC_API_KEY,
66
+ }),
67
+ });
68
+
69
+ // Google Gemini
70
+ const geminiAgent = new SmartAgent({
71
+ llmProvider: new GeminiProvider({
72
+ apiKey: process.env.GEMINI_API_KEY,
73
+ }),
74
+ });
75
+ ```
76
+
77
+ ## 📚 文档
78
+
79
+ 完整文档请访问:[https://sdkwork-browser-agent.vercel.app](https://sdkwork-browser-agent.vercel.app)
80
+
81
+ - [快速开始](https://sdkwork-browser-agent.vercel.app/guide/getting-started)
82
+ - [核心概念](https://sdkwork-browser-agent.vercel.app/guide/concepts)
83
+ - [API 参考](https://sdkwork-browser-agent.vercel.app/api/)
84
+ - [示例](https://sdkwork-browser-agent.vercel.app/examples/)
85
+
86
+ ## 🏗️ 架构
87
+
88
+ ```
89
+ sdkwork-browser-agent/
90
+ ├── src/
91
+ │ ├── core/ # Agent 核心
92
+ │ │ ├── agent.ts # 基础 Agent
93
+ │ │ ├── smart-agent.ts # 智能 Agent(自动决策)
94
+ │ │ ├── decision-engine.ts # 决策引擎
95
+ │ │ ├── skill-loader.ts # 动态加载
96
+ │ │ └── token-optimizer.ts # Token 优化
97
+ │ ├── llm/ # LLM Provider
98
+ │ ├── skills/ # Skill 系统
99
+ │ ├── tools/ # Tool 系统
100
+ │ ├── mcp/ # MCP 协议
101
+ │ └── plugins/ # 插件系统
102
+ ```
103
+
104
+ ## 🎯 核心功能
105
+
106
+ ### 1. 智能决策引擎
107
+
108
+ 自动根据输入选择最合适的 Skill:
109
+
110
+ ```typescript
111
+ const agent = new SmartAgent({
112
+ decisionEngine: {
113
+ enableEmbeddings: true, // 启用嵌入相似度
114
+ enableCaching: true, // 启用决策缓存
115
+ threshold: 0.6, // 相似度阈值
116
+ maxSkills: 3, // 最大选择 Skill 数
117
+ },
118
+ });
119
+ ```
120
+
121
+ ### 2. 动态 Skill 加载
122
+
123
+ 支持从多种来源懒加载 Skill:
124
+
125
+ ```typescript
126
+ // 注册 Skill 源
127
+ agent.registerSkillSource('my-skill', 'https://example.com/skills/my-skill.json', 'url');
128
+
129
+ // 动态加载
130
+ const skill = await agent.skillLoader.load('my-skill');
131
+ ```
132
+
133
+ ### 3. Token 优化
134
+
135
+ 自动优化 Token 消耗:
136
+
137
+ ```typescript
138
+ const optimizer = new TokenOptimizer({
139
+ enableCompression: true,
140
+ maxSkillDescriptionLength: 200,
141
+ maxContextTokens: 4000,
142
+ });
143
+
144
+ const optimized = optimizer.optimizeSkills(skills);
145
+ const stats = optimizer.getOptimizationStats(skills, optimized);
146
+ console.log(`节省了 ${stats.savingsPercent}% tokens`);
147
+ ```
148
+
149
+ ### 4. 自定义 Skill
150
+
151
+ ```typescript
152
+ import { Skill } from 'sdkwork-browser-agent';
153
+
154
+ const mySkill: Skill = {
155
+ name: 'translate',
156
+ description: '将文本翻译为另一种语言',
157
+ parameters: {
158
+ type: 'object',
159
+ properties: {
160
+ text: { type: 'string', description: '要翻译的文本' },
161
+ targetLang: { type: 'string', description: '目标语言' },
162
+ },
163
+ required: ['text', 'targetLang'],
164
+ },
165
+ handler: async params => {
166
+ // 实现翻译逻辑
167
+ return { success: true, data: translatedText };
168
+ },
169
+ metadata: {
170
+ category: 'language',
171
+ tags: ['translate', 'nlp'],
172
+ },
173
+ };
174
+
175
+ agent.registerSkill(mySkill);
176
+ ```
177
+
178
+ ## 🧪 测试
179
+
180
+ ```bash
181
+ # 运行所有测试
182
+ npm test
183
+
184
+ # 监视模式
185
+ npm run test:watch
186
+
187
+ # 覆盖率报告
188
+ npm run test:coverage
189
+ ```
190
+
191
+ ## 🛠️ 开发
192
+
193
+ ```bash
194
+ # 安装依赖
195
+ npm install
196
+
197
+ # 开发模式
198
+ npm run dev
199
+
200
+ # 构建
201
+ npm run build
202
+
203
+ # 类型检查
204
+ npm run typecheck
205
+
206
+ # 代码格式化
207
+ npm run format
208
+ ```
209
+
210
+ ## 🤝 贡献
211
+
212
+ 欢迎提交 Issue 和 PR!请阅读 [贡献指南](./CONTRIBUTING.md)。
213
+
214
+ ## 📄 许可证
215
+
216
+ [MIT](./LICENSE)
217
+
218
+ ## 🙏 致谢
219
+
220
+ - [Agent Skills Specification](https://agentskills.io/specification)
221
+ - [Model Context Protocol](https://modelcontextprotocol.io)
222
+ - [OpenCode](https://opencode.ai) - 架构灵感来源
223
+
224
+ ---
225
+
226
+ <p align="center">
227
+ Made with ❤️ by SDKWork Team
228
+ </p>
@@ -0,0 +1,197 @@
1
+ import { L as LLMProvider, a as LLMMessage, b as LLMRequest, c as LLMResponse, d as LLMStreamChunk, T as ToolDefinition } from './provider-Dna36xA-.js';
2
+
3
+ /**
4
+ * Core Agent Architecture
5
+ * High cohesion, low coupling design
6
+ * Compatible with https://agentskills.io/specification
7
+ */
8
+
9
+ interface Skill {
10
+ name: string;
11
+ description: string;
12
+ parameters: ParameterSchema;
13
+ handler: SkillHandler;
14
+ metadata?: SkillMetadata;
15
+ }
16
+ interface ParameterSchema {
17
+ type: 'object';
18
+ properties: Record<string, ParameterProperty>;
19
+ required?: string[];
20
+ }
21
+ interface ParameterProperty {
22
+ type: string;
23
+ description: string;
24
+ enum?: string[];
25
+ default?: unknown;
26
+ }
27
+ interface SkillMetadata {
28
+ category?: string;
29
+ tags?: string[];
30
+ version?: string;
31
+ author?: string;
32
+ deprecated?: boolean;
33
+ }
34
+ type SkillHandler = (params: Record<string, unknown>, context: ExecutionContext) => Promise<SkillResult>;
35
+ interface ExecutionContext {
36
+ agent: Agent;
37
+ skillName: string;
38
+ timestamp: Date;
39
+ metadata?: Record<string, unknown>;
40
+ }
41
+ interface SkillResult {
42
+ success: boolean;
43
+ data?: unknown;
44
+ error?: string;
45
+ metadata?: Record<string, unknown>;
46
+ }
47
+ interface Tool {
48
+ name: string;
49
+ description: string;
50
+ parameters?: ParameterSchema;
51
+ execute: ToolExecutor;
52
+ metadata?: ToolMetadata;
53
+ }
54
+ interface ToolMetadata {
55
+ category?: string;
56
+ tags?: string[];
57
+ version?: string;
58
+ requiresConfirmation?: boolean;
59
+ }
60
+ type ToolExecutor = (input: unknown, context: ExecutionContext) => Promise<ToolOutput>;
61
+ interface ToolOutput {
62
+ content: Array<{
63
+ type: string;
64
+ text?: string;
65
+ data?: unknown;
66
+ }>;
67
+ isError?: boolean;
68
+ metadata?: Record<string, unknown>;
69
+ }
70
+ interface MCPResource {
71
+ uri: string;
72
+ name: string;
73
+ description?: string;
74
+ mimeType?: string;
75
+ read: () => Promise<MCPResourceContent>;
76
+ metadata?: MCPResourceMetadata;
77
+ }
78
+ interface MCPResourceContent {
79
+ uri: string;
80
+ mimeType: string;
81
+ text?: string;
82
+ blob?: string;
83
+ metadata?: Record<string, unknown>;
84
+ }
85
+ interface MCPResourceMetadata {
86
+ size?: number;
87
+ lastModified?: Date;
88
+ etag?: string;
89
+ }
90
+ interface MCPTool {
91
+ name: string;
92
+ description: string;
93
+ inputSchema: unknown;
94
+ execute: (args: unknown, context: ExecutionContext) => Promise<MCPToolResult>;
95
+ metadata?: ToolMetadata;
96
+ }
97
+ interface MCPToolResult {
98
+ content: Array<{
99
+ type: string;
100
+ text?: string;
101
+ data?: unknown;
102
+ }>;
103
+ isError?: boolean;
104
+ metadata?: Record<string, unknown>;
105
+ }
106
+ interface Plugin {
107
+ name: string;
108
+ version: string;
109
+ description?: string;
110
+ initialize: (context: PluginContext) => Promise<void>;
111
+ destroy?: () => Promise<void>;
112
+ metadata?: PluginMetadata;
113
+ }
114
+ interface PluginMetadata {
115
+ author?: string;
116
+ homepage?: string;
117
+ repository?: string;
118
+ license?: string;
119
+ dependencies?: string[];
120
+ }
121
+ interface PluginContext {
122
+ agent: Agent;
123
+ registerSkill: (skill: Skill) => void;
124
+ registerTool: (tool: Tool) => void;
125
+ registerMCPResource: (resource: MCPResource) => void;
126
+ registerMCPTool: (tool: MCPTool) => void;
127
+ getLLMProvider: () => LLMProvider | undefined;
128
+ config: Record<string, unknown>;
129
+ }
130
+ interface AgentConfig {
131
+ name: string;
132
+ description?: string;
133
+ version?: string;
134
+ llmProvider?: LLMProvider;
135
+ systemPrompt?: string;
136
+ maxIterations?: number;
137
+ skills?: Skill[];
138
+ tools?: Tool[];
139
+ plugins?: Plugin[];
140
+ mcpResources?: MCPResource[];
141
+ mcpTools?: MCPTool[];
142
+ middlewares?: AgentMiddleware[];
143
+ hooks?: AgentHooks;
144
+ }
145
+ interface AgentHooks {
146
+ beforeSkillExecution?: (skillName: string, params: Record<string, unknown>) => Promise<void>;
147
+ afterSkillExecution?: (skillName: string, result: SkillResult) => Promise<void>;
148
+ onError?: (error: Error, context: ExecutionContext) => Promise<void>;
149
+ onToolCall?: (toolName: string, args: unknown) => Promise<void>;
150
+ }
151
+ type AgentMiddleware = (context: ExecutionContext, next: () => Promise<SkillResult>) => Promise<SkillResult>;
152
+ declare class Agent {
153
+ private config;
154
+ private _skills;
155
+ private _tools;
156
+ private _plugins;
157
+ private _mcpResources;
158
+ private _mcpTools;
159
+ private _middlewares;
160
+ private _initialized;
161
+ readonly name: string;
162
+ readonly description?: string;
163
+ readonly version?: string;
164
+ llmProvider?: LLMProvider;
165
+ systemPrompt?: string;
166
+ maxIterations: number;
167
+ hooks?: AgentHooks;
168
+ constructor(config: AgentConfig);
169
+ initialize(): Promise<void>;
170
+ registerSkill(skill: Skill): void;
171
+ registerTool(tool: Tool): void;
172
+ registerMCPResource(resource: MCPResource): void;
173
+ registerMCPTool(tool: MCPTool): void;
174
+ use(middleware: AgentMiddleware): void;
175
+ executeSkill(name: string, params?: Record<string, unknown>): Promise<SkillResult>;
176
+ executeTool(name: string, input: unknown): Promise<ToolOutput>;
177
+ readMCPResource(uri: string): Promise<MCPResourceContent | null>;
178
+ executeMCPTool(name: string, args: unknown): Promise<MCPToolResult>;
179
+ chat(messages: LLMMessage[], options?: Partial<LLMRequest>): Promise<LLMResponse>;
180
+ streamChat(messages: LLMMessage[], options?: Partial<LLMRequest>): AsyncIterableIterator<LLMStreamChunk>;
181
+ executeWithTools(messages: LLMMessage[], tools?: ToolDefinition[]): Promise<LLMResponse>;
182
+ getSkill(name: string): Skill | undefined;
183
+ getTool(name: string): Tool | undefined;
184
+ getMCPResource(uri: string): MCPResource | undefined;
185
+ getMCPTool(name: string): MCPTool | undefined;
186
+ getPlugin(name: string): Plugin | undefined;
187
+ getSkillNames(): string[];
188
+ getToolNames(): string[];
189
+ getMCPResourceURIs(): string[];
190
+ getMCPToolNames(): string[];
191
+ getPluginNames(): string[];
192
+ getAllSkills(): Skill[];
193
+ getAllTools(): Tool[];
194
+ destroy(): Promise<void>;
195
+ }
196
+
197
+ export { Agent as A, type ExecutionContext as E, type MCPResource as M, type Plugin as P, type Skill as S, type Tool as T, type SkillResult as a, type AgentConfig as b, type PluginContext as c, type AgentHooks as d, type AgentMiddleware as e, type MCPResourceContent as f, type MCPResourceMetadata as g, type MCPTool as h, type MCPToolResult as i, type ParameterProperty as j, type ParameterSchema as k, type PluginMetadata as l, type SkillHandler as m, type SkillMetadata as n, type ToolExecutor as o, type ToolMetadata as p, type ToolOutput as q };