@ggakila/agentx-framework 0.1.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 (228) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/LICENSE +21 -0
  3. package/README.md +335 -0
  4. package/dist/agent/Agent.d.ts +110 -0
  5. package/dist/agent/Agent.d.ts.map +1 -0
  6. package/dist/agent/Agent.js +291 -0
  7. package/dist/agent/Agent.js.map +1 -0
  8. package/dist/agent/index.d.ts +5 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +11 -0
  11. package/dist/agent/index.js.map +1 -0
  12. package/dist/cli/CLI.d.ts +74 -0
  13. package/dist/cli/CLI.d.ts.map +1 -0
  14. package/dist/cli/CLI.js +255 -0
  15. package/dist/cli/CLI.js.map +1 -0
  16. package/dist/cli/InteractiveSetup.d.ts +104 -0
  17. package/dist/cli/InteractiveSetup.d.ts.map +1 -0
  18. package/dist/cli/InteractiveSetup.js +2225 -0
  19. package/dist/cli/InteractiveSetup.js.map +1 -0
  20. package/dist/cli/bin.d.ts +7 -0
  21. package/dist/cli/bin.d.ts.map +1 -0
  22. package/dist/cli/bin.js +35 -0
  23. package/dist/cli/bin.js.map +1 -0
  24. package/dist/cli/commands/ProjectCommands.d.ts +23 -0
  25. package/dist/cli/commands/ProjectCommands.d.ts.map +1 -0
  26. package/dist/cli/commands/ProjectCommands.js +504 -0
  27. package/dist/cli/commands/ProjectCommands.js.map +1 -0
  28. package/dist/cli/index.d.ts +7 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +21 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/credential/CredentialManager.d.ts +112 -0
  33. package/dist/credential/CredentialManager.d.ts.map +1 -0
  34. package/dist/credential/CredentialManager.js +343 -0
  35. package/dist/credential/CredentialManager.js.map +1 -0
  36. package/dist/credential/OAuth2Manager.d.ts +206 -0
  37. package/dist/credential/OAuth2Manager.d.ts.map +1 -0
  38. package/dist/credential/OAuth2Manager.js +463 -0
  39. package/dist/credential/OAuth2Manager.js.map +1 -0
  40. package/dist/credential/index.d.ts +6 -0
  41. package/dist/credential/index.d.ts.map +1 -0
  42. package/dist/credential/index.js +16 -0
  43. package/dist/credential/index.js.map +1 -0
  44. package/dist/error/ErrorHandler.d.ts +74 -0
  45. package/dist/error/ErrorHandler.d.ts.map +1 -0
  46. package/dist/error/ErrorHandler.js +279 -0
  47. package/dist/error/ErrorHandler.js.map +1 -0
  48. package/dist/index.d.ts +30 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +100 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/integrations/DatabaseTool.d.ts +149 -0
  53. package/dist/integrations/DatabaseTool.d.ts.map +1 -0
  54. package/dist/integrations/DatabaseTool.js +900 -0
  55. package/dist/integrations/DatabaseTool.js.map +1 -0
  56. package/dist/integrations/EmailTool.d.ts +142 -0
  57. package/dist/integrations/EmailTool.d.ts.map +1 -0
  58. package/dist/integrations/EmailTool.js +259 -0
  59. package/dist/integrations/EmailTool.js.map +1 -0
  60. package/dist/integrations/FileSystemTool.d.ts +153 -0
  61. package/dist/integrations/FileSystemTool.d.ts.map +1 -0
  62. package/dist/integrations/FileSystemTool.js +835 -0
  63. package/dist/integrations/FileSystemTool.js.map +1 -0
  64. package/dist/integrations/GoogleWorkspaceTool.d.ts +125 -0
  65. package/dist/integrations/GoogleWorkspaceTool.d.ts.map +1 -0
  66. package/dist/integrations/GoogleWorkspaceTool.js +765 -0
  67. package/dist/integrations/GoogleWorkspaceTool.js.map +1 -0
  68. package/dist/integrations/HttpTool.d.ts +55 -0
  69. package/dist/integrations/HttpTool.d.ts.map +1 -0
  70. package/dist/integrations/HttpTool.js +209 -0
  71. package/dist/integrations/HttpTool.js.map +1 -0
  72. package/dist/integrations/MessagingTool.d.ts +136 -0
  73. package/dist/integrations/MessagingTool.d.ts.map +1 -0
  74. package/dist/integrations/MessagingTool.js +503 -0
  75. package/dist/integrations/MessagingTool.js.map +1 -0
  76. package/dist/integrations/SchedulerTool.d.ts +147 -0
  77. package/dist/integrations/SchedulerTool.d.ts.map +1 -0
  78. package/dist/integrations/SchedulerTool.js +471 -0
  79. package/dist/integrations/SchedulerTool.js.map +1 -0
  80. package/dist/integrations/WebhookTool.d.ts +97 -0
  81. package/dist/integrations/WebhookTool.d.ts.map +1 -0
  82. package/dist/integrations/WebhookTool.js +351 -0
  83. package/dist/integrations/WebhookTool.js.map +1 -0
  84. package/dist/integrations/index.d.ts +13 -0
  85. package/dist/integrations/index.d.ts.map +1 -0
  86. package/dist/integrations/index.js +60 -0
  87. package/dist/integrations/index.js.map +1 -0
  88. package/dist/llm/LLMProvider.d.ts +83 -0
  89. package/dist/llm/LLMProvider.d.ts.map +1 -0
  90. package/dist/llm/LLMProvider.js +370 -0
  91. package/dist/llm/LLMProvider.js.map +1 -0
  92. package/dist/llm/index.d.ts +5 -0
  93. package/dist/llm/index.d.ts.map +1 -0
  94. package/dist/llm/index.js +14 -0
  95. package/dist/llm/index.js.map +1 -0
  96. package/dist/payment/PaymentProvider.d.ts +157 -0
  97. package/dist/payment/PaymentProvider.d.ts.map +1 -0
  98. package/dist/payment/PaymentProvider.js +525 -0
  99. package/dist/payment/PaymentProvider.js.map +1 -0
  100. package/dist/payment/index.d.ts +5 -0
  101. package/dist/payment/index.d.ts.map +1 -0
  102. package/dist/payment/index.js +16 -0
  103. package/dist/payment/index.js.map +1 -0
  104. package/dist/plugin/PluginManager.d.ts +156 -0
  105. package/dist/plugin/PluginManager.d.ts.map +1 -0
  106. package/dist/plugin/PluginManager.js +288 -0
  107. package/dist/plugin/PluginManager.js.map +1 -0
  108. package/dist/plugin/index.d.ts +5 -0
  109. package/dist/plugin/index.d.ts.map +1 -0
  110. package/dist/plugin/index.js +10 -0
  111. package/dist/plugin/index.js.map +1 -0
  112. package/dist/runtime/AgentXRuntime.d.ts +90 -0
  113. package/dist/runtime/AgentXRuntime.d.ts.map +1 -0
  114. package/dist/runtime/AgentXRuntime.js +469 -0
  115. package/dist/runtime/AgentXRuntime.js.map +1 -0
  116. package/dist/security/SecurityManager.d.ts +245 -0
  117. package/dist/security/SecurityManager.d.ts.map +1 -0
  118. package/dist/security/SecurityManager.js +512 -0
  119. package/dist/security/SecurityManager.js.map +1 -0
  120. package/dist/security/index.d.ts +5 -0
  121. package/dist/security/index.d.ts.map +1 -0
  122. package/dist/security/index.js +14 -0
  123. package/dist/security/index.js.map +1 -0
  124. package/dist/tool/ToolRegistry.d.ts +58 -0
  125. package/dist/tool/ToolRegistry.d.ts.map +1 -0
  126. package/dist/tool/ToolRegistry.js +173 -0
  127. package/dist/tool/ToolRegistry.js.map +1 -0
  128. package/dist/tool/ToolValidator.d.ts +41 -0
  129. package/dist/tool/ToolValidator.d.ts.map +1 -0
  130. package/dist/tool/ToolValidator.js +158 -0
  131. package/dist/tool/ToolValidator.js.map +1 -0
  132. package/dist/tool/index.d.ts +6 -0
  133. package/dist/tool/index.d.ts.map +1 -0
  134. package/dist/tool/index.js +11 -0
  135. package/dist/tool/index.js.map +1 -0
  136. package/dist/transport/BaseTransport.d.ts +66 -0
  137. package/dist/transport/BaseTransport.d.ts.map +1 -0
  138. package/dist/transport/BaseTransport.js +103 -0
  139. package/dist/transport/BaseTransport.js.map +1 -0
  140. package/dist/transport/HttpTransport.d.ts +41 -0
  141. package/dist/transport/HttpTransport.d.ts.map +1 -0
  142. package/dist/transport/HttpTransport.js +160 -0
  143. package/dist/transport/HttpTransport.js.map +1 -0
  144. package/dist/transport/LocalTransport.d.ts +40 -0
  145. package/dist/transport/LocalTransport.d.ts.map +1 -0
  146. package/dist/transport/LocalTransport.js +157 -0
  147. package/dist/transport/LocalTransport.js.map +1 -0
  148. package/dist/transport/QueueTransport.d.ts +63 -0
  149. package/dist/transport/QueueTransport.d.ts.map +1 -0
  150. package/dist/transport/QueueTransport.js +194 -0
  151. package/dist/transport/QueueTransport.js.map +1 -0
  152. package/dist/transport/StdioTransport.d.ts +51 -0
  153. package/dist/transport/StdioTransport.d.ts.map +1 -0
  154. package/dist/transport/StdioTransport.js +216 -0
  155. package/dist/transport/StdioTransport.js.map +1 -0
  156. package/dist/transport/TransportFactory.d.ts +35 -0
  157. package/dist/transport/TransportFactory.d.ts.map +1 -0
  158. package/dist/transport/TransportFactory.js +100 -0
  159. package/dist/transport/TransportFactory.js.map +1 -0
  160. package/dist/transport/index.d.ts +10 -0
  161. package/dist/transport/index.d.ts.map +1 -0
  162. package/dist/transport/index.js +19 -0
  163. package/dist/transport/index.js.map +1 -0
  164. package/dist/types/agent.d.ts +66 -0
  165. package/dist/types/agent.d.ts.map +1 -0
  166. package/dist/types/agent.js +3 -0
  167. package/dist/types/agent.js.map +1 -0
  168. package/dist/types/config.d.ts +60 -0
  169. package/dist/types/config.d.ts.map +1 -0
  170. package/dist/types/config.js +6 -0
  171. package/dist/types/config.js.map +1 -0
  172. package/dist/types/credential.d.ts +38 -0
  173. package/dist/types/credential.d.ts.map +1 -0
  174. package/dist/types/credential.js +3 -0
  175. package/dist/types/credential.js.map +1 -0
  176. package/dist/types/error.d.ts +136 -0
  177. package/dist/types/error.d.ts.map +1 -0
  178. package/dist/types/error.js +223 -0
  179. package/dist/types/error.js.map +1 -0
  180. package/dist/types/index.d.ts +10 -0
  181. package/dist/types/index.d.ts.map +1 -0
  182. package/dist/types/index.js +27 -0
  183. package/dist/types/index.js.map +1 -0
  184. package/dist/types/llm.d.ts +43 -0
  185. package/dist/types/llm.d.ts.map +1 -0
  186. package/dist/types/llm.js +3 -0
  187. package/dist/types/llm.js.map +1 -0
  188. package/dist/types/payment.d.ts +129 -0
  189. package/dist/types/payment.d.ts.map +1 -0
  190. package/dist/types/payment.js +6 -0
  191. package/dist/types/payment.js.map +1 -0
  192. package/dist/types/runtime.d.ts +31 -0
  193. package/dist/types/runtime.d.ts.map +1 -0
  194. package/dist/types/runtime.js +3 -0
  195. package/dist/types/runtime.js.map +1 -0
  196. package/dist/types/tool.d.ts +72 -0
  197. package/dist/types/tool.d.ts.map +1 -0
  198. package/dist/types/tool.js +3 -0
  199. package/dist/types/tool.js.map +1 -0
  200. package/dist/types/transport.d.ts +53 -0
  201. package/dist/types/transport.d.ts.map +1 -0
  202. package/dist/types/transport.js +3 -0
  203. package/dist/types/transport.js.map +1 -0
  204. package/dist/types/workflow.d.ts +72 -0
  205. package/dist/types/workflow.d.ts.map +1 -0
  206. package/dist/types/workflow.js +6 -0
  207. package/dist/types/workflow.js.map +1 -0
  208. package/dist/utils/factory.d.ts +14 -0
  209. package/dist/utils/factory.d.ts.map +1 -0
  210. package/dist/utils/factory.js +146 -0
  211. package/dist/utils/factory.js.map +1 -0
  212. package/dist/workflow/StateManager.d.ts +93 -0
  213. package/dist/workflow/StateManager.d.ts.map +1 -0
  214. package/dist/workflow/StateManager.js +223 -0
  215. package/dist/workflow/StateManager.js.map +1 -0
  216. package/dist/workflow/WorkflowDefinition.d.ts +49 -0
  217. package/dist/workflow/WorkflowDefinition.d.ts.map +1 -0
  218. package/dist/workflow/WorkflowDefinition.js +264 -0
  219. package/dist/workflow/WorkflowDefinition.js.map +1 -0
  220. package/dist/workflow/WorkflowExecutor.d.ts +42 -0
  221. package/dist/workflow/WorkflowExecutor.d.ts.map +1 -0
  222. package/dist/workflow/WorkflowExecutor.js +372 -0
  223. package/dist/workflow/WorkflowExecutor.js.map +1 -0
  224. package/dist/workflow/index.d.ts +7 -0
  225. package/dist/workflow/index.d.ts.map +1 -0
  226. package/dist/workflow/index.js +17 -0
  227. package/dist/workflow/index.js.map +1 -0
  228. package/package.json +122 -0
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * Tool Registry Implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ToolRegistry = void 0;
7
+ const events_1 = require("events");
8
+ const error_1 = require("../types/error");
9
+ const ToolValidator_1 = require("./ToolValidator");
10
+ class ToolRegistry extends events_1.EventEmitter {
11
+ tools = new Map();
12
+ validator;
13
+ logger;
14
+ constructor(logger) {
15
+ super();
16
+ this.validator = new ToolValidator_1.ToolValidator();
17
+ this.logger = logger;
18
+ }
19
+ /**
20
+ * Register a new tool
21
+ */
22
+ async register(spec, transport) {
23
+ // Validate the tool spec
24
+ this.validator.validateToolSpec(spec);
25
+ // Check for duplicate registration
26
+ if (this.tools.has(spec.name)) {
27
+ throw new error_1.ValidationError(`Tool already registered: ${spec.name}`, error_1.ErrorCodes.INVALID_INPUT);
28
+ }
29
+ // Create registered tool entry
30
+ const registeredTool = {
31
+ spec,
32
+ transport,
33
+ registeredAt: new Date(),
34
+ usageCount: 0,
35
+ healthStatus: 'unknown',
36
+ };
37
+ // Check tool health
38
+ try {
39
+ const isHealthy = await transport.healthCheck();
40
+ registeredTool.healthStatus = isHealthy ? 'healthy' : 'unhealthy';
41
+ }
42
+ catch (error) {
43
+ this.logger.warn(`Health check failed for tool: ${spec.name}`, { error });
44
+ registeredTool.healthStatus = 'unhealthy';
45
+ }
46
+ // Store the tool
47
+ this.tools.set(spec.name, registeredTool);
48
+ this.logger.info(`Tool registered: ${spec.name}`, {
49
+ version: spec.version,
50
+ category: spec.metadata?.category,
51
+ healthStatus: registeredTool.healthStatus,
52
+ });
53
+ this.emit('tool:registered', registeredTool);
54
+ }
55
+ /**
56
+ * Unregister a tool
57
+ */
58
+ async unregister(name) {
59
+ const tool = this.tools.get(name);
60
+ if (!tool) {
61
+ throw new error_1.ValidationError(`Tool not found: ${name}`, error_1.ErrorCodes.INVALID_INPUT);
62
+ }
63
+ // Shutdown the transport
64
+ try {
65
+ await tool.transport.shutdown();
66
+ }
67
+ catch (error) {
68
+ this.logger.warn(`Error shutting down transport for tool: ${name}`, { error });
69
+ }
70
+ // Remove from registry
71
+ this.tools.delete(name);
72
+ this.logger.info(`Tool unregistered: ${name}`);
73
+ this.emit('tool:unregistered', { name });
74
+ }
75
+ /**
76
+ * Get a registered tool by name
77
+ */
78
+ async get(name) {
79
+ return this.tools.get(name) || null;
80
+ }
81
+ /**
82
+ * List all registered tools
83
+ */
84
+ async list() {
85
+ return Array.from(this.tools.values());
86
+ }
87
+ /**
88
+ * Search for tools matching a query
89
+ */
90
+ async search(query) {
91
+ let results = Array.from(this.tools.values());
92
+ // Filter by name (partial match)
93
+ if (query.name) {
94
+ const nameLower = query.name.toLowerCase();
95
+ results = results.filter(tool => tool.spec.name.toLowerCase().includes(nameLower));
96
+ }
97
+ // Filter by version
98
+ if (query.version) {
99
+ results = results.filter(tool => tool.spec.version === query.version);
100
+ }
101
+ // Filter by category
102
+ if (query.category) {
103
+ const categoryLower = query.category.toLowerCase();
104
+ results = results.filter(tool => tool.spec.metadata?.category?.toLowerCase() === categoryLower);
105
+ }
106
+ // Filter by tags (any match)
107
+ if (query.tags && query.tags.length > 0) {
108
+ const queryTags = query.tags.map(t => t.toLowerCase());
109
+ results = results.filter(tool => {
110
+ const toolTags = tool.spec.metadata?.tags?.map(t => t.toLowerCase()) || [];
111
+ return queryTags.some(tag => toolTags.includes(tag));
112
+ });
113
+ }
114
+ return results;
115
+ }
116
+ /**
117
+ * Update tool usage statistics
118
+ */
119
+ recordUsage(name) {
120
+ const tool = this.tools.get(name);
121
+ if (tool) {
122
+ tool.usageCount++;
123
+ tool.lastUsed = new Date();
124
+ }
125
+ }
126
+ /**
127
+ * Update tool health status
128
+ */
129
+ async updateHealthStatus(name) {
130
+ const tool = this.tools.get(name);
131
+ if (!tool) {
132
+ return;
133
+ }
134
+ try {
135
+ const isHealthy = await tool.transport.healthCheck();
136
+ tool.healthStatus = isHealthy ? 'healthy' : 'unhealthy';
137
+ }
138
+ catch (error) {
139
+ tool.healthStatus = 'unhealthy';
140
+ this.logger.warn(`Health check failed for tool: ${name}`, { error });
141
+ }
142
+ }
143
+ /**
144
+ * Get tools by health status
145
+ */
146
+ getByHealthStatus(status) {
147
+ return Array.from(this.tools.values()).filter(tool => tool.healthStatus === status);
148
+ }
149
+ /**
150
+ * Get tool statistics
151
+ */
152
+ getStatistics() {
153
+ const tools = Array.from(this.tools.values());
154
+ return {
155
+ totalTools: tools.length,
156
+ healthyTools: tools.filter(t => t.healthStatus === 'healthy').length,
157
+ unhealthyTools: tools.filter(t => t.healthStatus === 'unhealthy').length,
158
+ unknownTools: tools.filter(t => t.healthStatus === 'unknown').length,
159
+ totalUsage: tools.reduce((sum, t) => sum + t.usageCount, 0),
160
+ categoryCounts: this.getCategoryCounts(tools),
161
+ };
162
+ }
163
+ getCategoryCounts(tools) {
164
+ const counts = {};
165
+ for (const tool of tools) {
166
+ const category = tool.spec.metadata?.category || 'uncategorized';
167
+ counts[category] = (counts[category] || 0) + 1;
168
+ }
169
+ return counts;
170
+ }
171
+ }
172
+ exports.ToolRegistry = ToolRegistry;
173
+ //# sourceMappingURL=ToolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../src/tool/ToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Tool Specification Validator
3
+ */
4
+ import { ToolSpec, ToolMetadata } from '../types/tool';
5
+ export declare class ToolValidator {
6
+ private ajv;
7
+ constructor();
8
+ /**
9
+ * Validate a complete tool specification
10
+ */
11
+ validateToolSpec(spec: ToolSpec): void;
12
+ /**
13
+ * Validate tool input against its schema
14
+ */
15
+ validateToolInput(input: unknown, spec: ToolSpec): void;
16
+ /**
17
+ * Validate tool output against its schema
18
+ */
19
+ validateToolOutput(output: unknown, spec: ToolSpec): void;
20
+ /**
21
+ * Validate required fields are present
22
+ */
23
+ private validateRequiredFields;
24
+ /**
25
+ * Validate semantic correctness of fields
26
+ */
27
+ private validateSemantics;
28
+ /**
29
+ * Validate a JSON Schema
30
+ */
31
+ private validateJsonSchema;
32
+ /**
33
+ * Validate tool metadata
34
+ */
35
+ validateMetadata(metadata: ToolMetadata): void;
36
+ /**
37
+ * Create a valid tool spec with defaults
38
+ */
39
+ static createToolSpec(name: string, version: string, options?: Partial<Omit<ToolSpec, 'name' | 'version'>>): ToolSpec;
40
+ }
41
+ //# sourceMappingURL=ToolValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolValidator.d.ts","sourceRoot":"","sources":["../../src/tool/ToolValidator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvD,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAM;;IAUjB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAsBtC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAgBvD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAgBzD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IA6D9C;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GACpD,QAAQ;CAUZ"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * Tool Specification Validator
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ToolValidator = void 0;
10
+ const ajv_1 = __importDefault(require("ajv"));
11
+ const error_1 = require("../types/error");
12
+ class ToolValidator {
13
+ ajv;
14
+ constructor() {
15
+ this.ajv = new ajv_1.default({
16
+ allErrors: true,
17
+ strict: false,
18
+ validateFormats: false,
19
+ });
20
+ }
21
+ /**
22
+ * Validate a complete tool specification
23
+ */
24
+ validateToolSpec(spec) {
25
+ // Validate required fields
26
+ this.validateRequiredFields(spec);
27
+ // Validate field formats
28
+ this.validateSemantics(spec);
29
+ // Validate schemas if present
30
+ if (spec.inputSchema) {
31
+ this.validateJsonSchema(spec.inputSchema, 'inputSchema');
32
+ }
33
+ if (spec.outputSchema) {
34
+ this.validateJsonSchema(spec.outputSchema, 'outputSchema');
35
+ }
36
+ // Validate metadata if present
37
+ if (spec.metadata) {
38
+ this.validateMetadata(spec.metadata);
39
+ }
40
+ }
41
+ /**
42
+ * Validate tool input against its schema
43
+ */
44
+ validateToolInput(input, spec) {
45
+ if (!spec.inputSchema) {
46
+ return; // No schema to validate against
47
+ }
48
+ const validate = this.ajv.compile(spec.inputSchema);
49
+ if (!validate(input)) {
50
+ const errors = this.ajv.errorsText(validate.errors);
51
+ throw new error_1.ValidationError(`Invalid tool input: ${errors}`, error_1.ErrorCodes.INVALID_INPUT);
52
+ }
53
+ }
54
+ /**
55
+ * Validate tool output against its schema
56
+ */
57
+ validateToolOutput(output, spec) {
58
+ if (!spec.outputSchema) {
59
+ return; // No schema to validate against
60
+ }
61
+ const validate = this.ajv.compile(spec.outputSchema);
62
+ if (!validate(output)) {
63
+ const errors = this.ajv.errorsText(validate.errors);
64
+ throw new error_1.ValidationError(`Invalid tool output: ${errors}`, error_1.ErrorCodes.INVALID_INPUT);
65
+ }
66
+ }
67
+ /**
68
+ * Validate required fields are present
69
+ */
70
+ validateRequiredFields(spec) {
71
+ if (!spec.name) {
72
+ throw new error_1.ValidationError('Tool name is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
73
+ }
74
+ if (!spec.version) {
75
+ throw new error_1.ValidationError('Tool version is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
76
+ }
77
+ }
78
+ /**
79
+ * Validate semantic correctness of fields
80
+ */
81
+ validateSemantics(spec) {
82
+ // Validate name format
83
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(spec.name)) {
84
+ throw new error_1.ValidationError('Tool name must start with a letter and contain only letters, numbers, underscores, and hyphens', error_1.ErrorCodes.INVALID_FORMAT);
85
+ }
86
+ // Validate version format (semantic versioning with optional prerelease)
87
+ if (!/^\d+\.\d+\.\d+(-[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?(\+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?$/.test(spec.version)) {
88
+ throw new error_1.ValidationError('Tool version must follow semantic versioning (e.g., 1.0.0)', error_1.ErrorCodes.INVALID_FORMAT);
89
+ }
90
+ // Validate description length if present
91
+ if (spec.description && spec.description.length > 1000) {
92
+ throw new error_1.ValidationError('Tool description must be 1000 characters or less', error_1.ErrorCodes.INVALID_FORMAT);
93
+ }
94
+ }
95
+ /**
96
+ * Validate a JSON Schema
97
+ */
98
+ validateJsonSchema(schema, fieldName) {
99
+ try {
100
+ this.ajv.compile(schema);
101
+ }
102
+ catch (error) {
103
+ throw new error_1.ValidationError(`Invalid JSON Schema in ${fieldName}: ${error.message}`, error_1.ErrorCodes.INVALID_SCHEMA);
104
+ }
105
+ }
106
+ /**
107
+ * Validate tool metadata
108
+ */
109
+ validateMetadata(metadata) {
110
+ // Validate category
111
+ if (!metadata.category) {
112
+ throw new error_1.ValidationError('Tool metadata must include a category', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
113
+ }
114
+ if (!/^[a-z][a-z0-9_-]*$/.test(metadata.category)) {
115
+ throw new error_1.ValidationError('Tool category must be lowercase and start with a letter', error_1.ErrorCodes.INVALID_FORMAT);
116
+ }
117
+ // Validate tags
118
+ if (!metadata.tags || !Array.isArray(metadata.tags)) {
119
+ throw new error_1.ValidationError('Tool metadata must include tags array', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
120
+ }
121
+ if (metadata.tags.length === 0) {
122
+ throw new error_1.ValidationError('Tool metadata must include at least one tag', error_1.ErrorCodes.INVALID_INPUT);
123
+ }
124
+ for (const tag of metadata.tags) {
125
+ if (!/^[a-z][a-z0-9_-]*$/.test(tag)) {
126
+ throw new error_1.ValidationError(`Invalid tag format: ${tag}. Tags must be lowercase and start with a letter`, error_1.ErrorCodes.INVALID_FORMAT);
127
+ }
128
+ }
129
+ // Validate author if present
130
+ if (metadata.author && metadata.author.length > 100) {
131
+ throw new error_1.ValidationError('Tool author must be 100 characters or less', error_1.ErrorCodes.INVALID_FORMAT);
132
+ }
133
+ // Validate documentation URL if present
134
+ if (metadata.documentation) {
135
+ try {
136
+ new URL(metadata.documentation);
137
+ }
138
+ catch {
139
+ throw new error_1.ValidationError('Tool documentation must be a valid URL', error_1.ErrorCodes.INVALID_FORMAT);
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Create a valid tool spec with defaults
145
+ */
146
+ static createToolSpec(name, version, options) {
147
+ return {
148
+ name,
149
+ version,
150
+ description: options?.description,
151
+ inputSchema: options?.inputSchema,
152
+ outputSchema: options?.outputSchema,
153
+ metadata: options?.metadata,
154
+ };
155
+ }
156
+ }
157
+ exports.ToolValidator = ToolValidator;
158
+ //# sourceMappingURL=ToolValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolValidator.js","sourceRoot":"","sources":["../../src/tool/ToolValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tool System Exports
3
+ */
4
+ export { ToolValidator } from './ToolValidator';
5
+ export { ToolRegistry, ToolRegistryStats } from './ToolRegistry';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Tool System Exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ToolRegistry = exports.ToolValidator = void 0;
7
+ var ToolValidator_1 = require("./ToolValidator");
8
+ Object.defineProperty(exports, "ToolValidator", { enumerable: true, get: function () { return ToolValidator_1.ToolValidator; } });
9
+ var ToolRegistry_1 = require("./ToolRegistry");
10
+ Object.defineProperty(exports, "ToolRegistry", { enumerable: true, get: function () { return ToolRegistry_1.ToolRegistry; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAAiE;AAAxD,4GAAA,YAAY,OAAA"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Base Transport Implementation
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ import { Transport, TransportConfig } from '../types/transport';
6
+ import { ToolSpec, ToolContext, ToolResult, Logger } from '../types/tool';
7
+ export declare abstract class BaseTransport extends EventEmitter implements Transport {
8
+ abstract name: string;
9
+ protected config: TransportConfig;
10
+ protected logger: Logger;
11
+ protected isInitialized: boolean;
12
+ protected tools: Map<string, ToolSpec>;
13
+ /**
14
+ * Initialize the transport with configuration
15
+ */
16
+ initialize(config: TransportConfig): Promise<void>;
17
+ /**
18
+ * Set the logger for this transport
19
+ */
20
+ setLogger(logger: Logger): void;
21
+ /**
22
+ * Execute a tool through this transport
23
+ */
24
+ abstract execute(tool: string, input: unknown, context: ToolContext): Promise<ToolResult>;
25
+ /**
26
+ * List all tools available through this transport
27
+ */
28
+ listTools(): Promise<ToolSpec[]>;
29
+ /**
30
+ * Check if the transport is healthy
31
+ */
32
+ abstract healthCheck(): Promise<boolean>;
33
+ /**
34
+ * Shutdown the transport
35
+ */
36
+ shutdown(): Promise<void>;
37
+ /**
38
+ * Ensure the transport is initialized
39
+ */
40
+ protected ensureInitialized(): void;
41
+ /**
42
+ * Register a tool with this transport
43
+ */
44
+ registerTool(spec: ToolSpec): void;
45
+ /**
46
+ * Unregister a tool from this transport
47
+ */
48
+ unregisterTool(name: string): void;
49
+ /**
50
+ * Get a tool by name
51
+ */
52
+ getTool(name: string): ToolSpec | undefined;
53
+ /**
54
+ * Create a successful result
55
+ */
56
+ protected createSuccessResult(data: unknown, metadata?: Record<string, unknown>): ToolResult;
57
+ /**
58
+ * Create an error result
59
+ */
60
+ protected createErrorResult(error: string, metadata?: Record<string, unknown>): ToolResult;
61
+ /**
62
+ * Log execution details
63
+ */
64
+ protected logExecution(tool: string, context: ToolContext, result: ToolResult): void;
65
+ }
66
+ //# sourceMappingURL=BaseTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transport/BaseTransport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG1E,8BAAsB,aAAc,SAAQ,YAAa,YAAW,SAAS;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,MAAM,EAAG,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,OAAO,CAAS;IACzC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAEnD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAEzF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAItC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IASnC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI3C;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAQ5F;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAQ1F;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;CAUrF"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * Base Transport Implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseTransport = void 0;
7
+ const events_1 = require("events");
8
+ const error_1 = require("../types/error");
9
+ class BaseTransport extends events_1.EventEmitter {
10
+ config;
11
+ logger;
12
+ isInitialized = false;
13
+ tools = new Map();
14
+ /**
15
+ * Initialize the transport with configuration
16
+ */
17
+ async initialize(config) {
18
+ this.config = config;
19
+ this.isInitialized = true;
20
+ this.emit('initialized');
21
+ }
22
+ /**
23
+ * Set the logger for this transport
24
+ */
25
+ setLogger(logger) {
26
+ this.logger = logger;
27
+ }
28
+ /**
29
+ * List all tools available through this transport
30
+ */
31
+ async listTools() {
32
+ return Array.from(this.tools.values());
33
+ }
34
+ /**
35
+ * Shutdown the transport
36
+ */
37
+ async shutdown() {
38
+ this.isInitialized = false;
39
+ this.tools.clear();
40
+ this.emit('shutdown');
41
+ }
42
+ /**
43
+ * Ensure the transport is initialized
44
+ */
45
+ ensureInitialized() {
46
+ if (!this.isInitialized) {
47
+ throw new error_1.TransportError('Transport is not initialized', error_1.ErrorCodes.CONNECTION_FAILED);
48
+ }
49
+ }
50
+ /**
51
+ * Register a tool with this transport
52
+ */
53
+ registerTool(spec) {
54
+ this.tools.set(spec.name, spec);
55
+ }
56
+ /**
57
+ * Unregister a tool from this transport
58
+ */
59
+ unregisterTool(name) {
60
+ this.tools.delete(name);
61
+ }
62
+ /**
63
+ * Get a tool by name
64
+ */
65
+ getTool(name) {
66
+ return this.tools.get(name);
67
+ }
68
+ /**
69
+ * Create a successful result
70
+ */
71
+ createSuccessResult(data, metadata) {
72
+ return {
73
+ success: true,
74
+ data,
75
+ metadata,
76
+ };
77
+ }
78
+ /**
79
+ * Create an error result
80
+ */
81
+ createErrorResult(error, metadata) {
82
+ return {
83
+ success: false,
84
+ error,
85
+ metadata,
86
+ };
87
+ }
88
+ /**
89
+ * Log execution details
90
+ */
91
+ logExecution(tool, context, result) {
92
+ if (this.logger) {
93
+ this.logger.debug(`Tool execution: ${tool}`, {
94
+ executionId: context.executionId,
95
+ workflowId: context.workflowId,
96
+ stepId: context.stepId,
97
+ success: result.success,
98
+ });
99
+ }
100
+ }
101
+ }
102
+ exports.BaseTransport = BaseTransport;
103
+ //# sourceMappingURL=BaseTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTransport.js","sourceRoot":"","sources":["../../src/transport/BaseTransport.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAsC;AAGtC,0CAA4D;AAE5D,MAAsB,aAAc,SAAQ,qBAAY;IAE5C,MAAM,CAAmB;IACzB,MAAM,CAAU;IAChB,aAAa,GAAY,KAAK,CAAC;IAC/B,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEnD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAuB;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAc,CACtB,8BAA8B,EAC9B,kBAAU,CAAC,iBAAiB,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAc;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,IAAa,EAAE,QAAkC;QAC7E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,KAAa,EAAE,QAAkC;QAC3E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,IAAY,EAAE,OAAoB,EAAE,MAAkB;QAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE;gBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AArHD,sCAqHC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * HTTP Transport Implementation
3
+ * Executes tools via REST API calls
4
+ */
5
+ import { BaseTransport } from './BaseTransport';
6
+ import { HttpTransportConfig, AuthConfig } from '../types/transport';
7
+ import { ToolSpec, ToolContext, ToolResult } from '../types/tool';
8
+ export declare class HttpTransport extends BaseTransport {
9
+ name: string;
10
+ private client;
11
+ private httpConfig;
12
+ /**
13
+ * Initialize the HTTP transport
14
+ */
15
+ initialize(config: HttpTransportConfig): Promise<void>;
16
+ /**
17
+ * Build headers based on authentication config
18
+ */
19
+ private buildHeaders;
20
+ /**
21
+ * Setup retry interceptor
22
+ */
23
+ private setupRetryInterceptor;
24
+ /**
25
+ * Execute a tool via HTTP
26
+ */
27
+ execute(tool: string, input: unknown, context: ToolContext): Promise<ToolResult>;
28
+ /**
29
+ * List tools from the remote server
30
+ */
31
+ listTools(): Promise<ToolSpec[]>;
32
+ /**
33
+ * Health check for HTTP transport
34
+ */
35
+ healthCheck(): Promise<boolean>;
36
+ /**
37
+ * Update authentication
38
+ */
39
+ updateAuthentication(auth: AuthConfig): void;
40
+ }
41
+ //# sourceMappingURL=HttpTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGlE,qBAAa,aAAc,SAAQ,aAAa;IAC9C,IAAI,SAAU;IACd,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5D;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA8CtF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IActC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAM7C"}