@xynehq/jaf 0.1.2

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 (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +596 -0
  3. package/dist/a2a/agent-card.d.ts +28 -0
  4. package/dist/a2a/agent-card.d.ts.map +1 -0
  5. package/dist/a2a/agent-card.js +250 -0
  6. package/dist/a2a/agent-card.js.map +1 -0
  7. package/dist/a2a/agent.d.ts +38 -0
  8. package/dist/a2a/agent.d.ts.map +1 -0
  9. package/dist/a2a/agent.js +223 -0
  10. package/dist/a2a/agent.js.map +1 -0
  11. package/dist/a2a/client.d.ts +35 -0
  12. package/dist/a2a/client.d.ts.map +1 -0
  13. package/dist/a2a/client.js +337 -0
  14. package/dist/a2a/client.js.map +1 -0
  15. package/dist/a2a/examples/client-example.d.ts +104 -0
  16. package/dist/a2a/examples/client-example.d.ts.map +1 -0
  17. package/dist/a2a/examples/client-example.js +232 -0
  18. package/dist/a2a/examples/client-example.js.map +1 -0
  19. package/dist/a2a/examples/server-example.d.ts +9 -0
  20. package/dist/a2a/examples/server-example.d.ts.map +1 -0
  21. package/dist/a2a/examples/server-example.js +209 -0
  22. package/dist/a2a/examples/server-example.js.map +1 -0
  23. package/dist/a2a/examples/weather-agent.d.ts +8 -0
  24. package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
  25. package/dist/a2a/examples/weather-agent.js +232 -0
  26. package/dist/a2a/examples/weather-agent.js.map +1 -0
  27. package/dist/a2a/executor.d.ts +43 -0
  28. package/dist/a2a/executor.d.ts.map +1 -0
  29. package/dist/a2a/executor.js +507 -0
  30. package/dist/a2a/executor.js.map +1 -0
  31. package/dist/a2a/index.d.ts +378 -0
  32. package/dist/a2a/index.d.ts.map +1 -0
  33. package/dist/a2a/index.js +72 -0
  34. package/dist/a2a/index.js.map +1 -0
  35. package/dist/a2a/memory/cleanup.d.ts +58 -0
  36. package/dist/a2a/memory/cleanup.d.ts.map +1 -0
  37. package/dist/a2a/memory/cleanup.js +281 -0
  38. package/dist/a2a/memory/cleanup.js.map +1 -0
  39. package/dist/a2a/memory/factory.d.ts +38 -0
  40. package/dist/a2a/memory/factory.d.ts.map +1 -0
  41. package/dist/a2a/memory/factory.js +369 -0
  42. package/dist/a2a/memory/factory.js.map +1 -0
  43. package/dist/a2a/memory/index.d.ts +13 -0
  44. package/dist/a2a/memory/index.d.ts.map +1 -0
  45. package/dist/a2a/memory/index.js +16 -0
  46. package/dist/a2a/memory/index.js.map +1 -0
  47. package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
  48. package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
  49. package/dist/a2a/memory/providers/in-memory.js +539 -0
  50. package/dist/a2a/memory/providers/in-memory.js.map +1 -0
  51. package/dist/a2a/memory/providers/postgres.d.ts +10 -0
  52. package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
  53. package/dist/a2a/memory/providers/postgres.js +404 -0
  54. package/dist/a2a/memory/providers/postgres.js.map +1 -0
  55. package/dist/a2a/memory/providers/redis.d.ts +10 -0
  56. package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
  57. package/dist/a2a/memory/providers/redis.js +435 -0
  58. package/dist/a2a/memory/providers/redis.js.map +1 -0
  59. package/dist/a2a/memory/serialization.d.ts +53 -0
  60. package/dist/a2a/memory/serialization.d.ts.map +1 -0
  61. package/dist/a2a/memory/serialization.js +233 -0
  62. package/dist/a2a/memory/serialization.js.map +1 -0
  63. package/dist/a2a/memory/types.d.ts +395 -0
  64. package/dist/a2a/memory/types.d.ts.map +1 -0
  65. package/dist/a2a/memory/types.js +85 -0
  66. package/dist/a2a/memory/types.js.map +1 -0
  67. package/dist/a2a/protocol.d.ts +38 -0
  68. package/dist/a2a/protocol.d.ts.map +1 -0
  69. package/dist/a2a/protocol.js +211 -0
  70. package/dist/a2a/protocol.js.map +1 -0
  71. package/dist/a2a/server.d.ts +343 -0
  72. package/dist/a2a/server.d.ts.map +1 -0
  73. package/dist/a2a/server.js +362 -0
  74. package/dist/a2a/server.js.map +1 -0
  75. package/dist/a2a/types.d.ts +730 -0
  76. package/dist/a2a/types.d.ts.map +1 -0
  77. package/dist/a2a/types.js +73 -0
  78. package/dist/a2a/types.js.map +1 -0
  79. package/dist/adk/agents/index.d.ts +48 -0
  80. package/dist/adk/agents/index.d.ts.map +1 -0
  81. package/dist/adk/agents/index.js +277 -0
  82. package/dist/adk/agents/index.js.map +1 -0
  83. package/dist/adk/artifacts/index.d.ts +62 -0
  84. package/dist/adk/artifacts/index.d.ts.map +1 -0
  85. package/dist/adk/artifacts/index.js +394 -0
  86. package/dist/adk/artifacts/index.js.map +1 -0
  87. package/dist/adk/config/llm-config.d.ts +75 -0
  88. package/dist/adk/config/llm-config.d.ts.map +1 -0
  89. package/dist/adk/config/llm-config.js +422 -0
  90. package/dist/adk/config/llm-config.js.map +1 -0
  91. package/dist/adk/content/index.d.ts +58 -0
  92. package/dist/adk/content/index.d.ts.map +1 -0
  93. package/dist/adk/content/index.js +220 -0
  94. package/dist/adk/content/index.js.map +1 -0
  95. package/dist/adk/examples/advanced-features.d.ts +22 -0
  96. package/dist/adk/examples/advanced-features.d.ts.map +1 -0
  97. package/dist/adk/examples/advanced-features.js +380 -0
  98. package/dist/adk/examples/advanced-features.js.map +1 -0
  99. package/dist/adk/examples/basic-agent.d.ts +28 -0
  100. package/dist/adk/examples/basic-agent.d.ts.map +1 -0
  101. package/dist/adk/examples/basic-agent.js +207 -0
  102. package/dist/adk/examples/basic-agent.js.map +1 -0
  103. package/dist/adk/examples/multi-agent.d.ts +24 -0
  104. package/dist/adk/examples/multi-agent.d.ts.map +1 -0
  105. package/dist/adk/examples/multi-agent.js +321 -0
  106. package/dist/adk/examples/multi-agent.js.map +1 -0
  107. package/dist/adk/examples/streaming-example.d.ts +9 -0
  108. package/dist/adk/examples/streaming-example.d.ts.map +1 -0
  109. package/dist/adk/examples/streaming-example.js +193 -0
  110. package/dist/adk/examples/streaming-example.js.map +1 -0
  111. package/dist/adk/index.d.ts +65 -0
  112. package/dist/adk/index.d.ts.map +1 -0
  113. package/dist/adk/index.js +251 -0
  114. package/dist/adk/index.js.map +1 -0
  115. package/dist/adk/models.d.ts +338 -0
  116. package/dist/adk/models.d.ts.map +1 -0
  117. package/dist/adk/models.js +466 -0
  118. package/dist/adk/models.js.map +1 -0
  119. package/dist/adk/providers/error-handler.d.ts +100 -0
  120. package/dist/adk/providers/error-handler.d.ts.map +1 -0
  121. package/dist/adk/providers/error-handler.js +289 -0
  122. package/dist/adk/providers/error-handler.js.map +1 -0
  123. package/dist/adk/providers/llm-service.d.ts +41 -0
  124. package/dist/adk/providers/llm-service.d.ts.map +1 -0
  125. package/dist/adk/providers/llm-service.js +520 -0
  126. package/dist/adk/providers/llm-service.js.map +1 -0
  127. package/dist/adk/providers/type-converters.d.ts +34 -0
  128. package/dist/adk/providers/type-converters.d.ts.map +1 -0
  129. package/dist/adk/providers/type-converters.js +436 -0
  130. package/dist/adk/providers/type-converters.js.map +1 -0
  131. package/dist/adk/runners/index.d.ts +33 -0
  132. package/dist/adk/runners/index.d.ts.map +1 -0
  133. package/dist/adk/runners/index.js +466 -0
  134. package/dist/adk/runners/index.js.map +1 -0
  135. package/dist/adk/schemas/index.d.ts +85 -0
  136. package/dist/adk/schemas/index.d.ts.map +1 -0
  137. package/dist/adk/schemas/index.js +363 -0
  138. package/dist/adk/schemas/index.js.map +1 -0
  139. package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
  140. package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
  141. package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
  142. package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
  143. package/dist/adk/sessions/index.d.ts +53 -0
  144. package/dist/adk/sessions/index.d.ts.map +1 -0
  145. package/dist/adk/sessions/index.js +451 -0
  146. package/dist/adk/sessions/index.js.map +1 -0
  147. package/dist/adk/sessions/postgres-provider.d.ts +22 -0
  148. package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
  149. package/dist/adk/sessions/postgres-provider.js +293 -0
  150. package/dist/adk/sessions/postgres-provider.js.map +1 -0
  151. package/dist/adk/sessions/redis-provider.d.ts +19 -0
  152. package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
  153. package/dist/adk/sessions/redis-provider.js +237 -0
  154. package/dist/adk/sessions/redis-provider.js.map +1 -0
  155. package/dist/adk/streaming/index.d.ts +76 -0
  156. package/dist/adk/streaming/index.d.ts.map +1 -0
  157. package/dist/adk/streaming/index.js +419 -0
  158. package/dist/adk/streaming/index.js.map +1 -0
  159. package/dist/adk/tools/index.d.ts +27 -0
  160. package/dist/adk/tools/index.d.ts.map +1 -0
  161. package/dist/adk/tools/index.js +506 -0
  162. package/dist/adk/tools/index.js.map +1 -0
  163. package/dist/adk/types.d.ts +351 -0
  164. package/dist/adk/types.d.ts.map +1 -0
  165. package/dist/adk/types.js +107 -0
  166. package/dist/adk/types.js.map +1 -0
  167. package/dist/core/engine.d.ts +3 -0
  168. package/dist/core/engine.d.ts.map +1 -0
  169. package/dist/core/engine.js +438 -0
  170. package/dist/core/engine.js.map +1 -0
  171. package/dist/core/errors.d.ts +8 -0
  172. package/dist/core/errors.d.ts.map +1 -0
  173. package/dist/core/errors.js +84 -0
  174. package/dist/core/errors.js.map +1 -0
  175. package/dist/core/tool-results.d.ts +57 -0
  176. package/dist/core/tool-results.d.ts.map +1 -0
  177. package/dist/core/tool-results.js +133 -0
  178. package/dist/core/tool-results.js.map +1 -0
  179. package/dist/core/tracing.d.ts +32 -0
  180. package/dist/core/tracing.d.ts.map +1 -0
  181. package/dist/core/tracing.js +132 -0
  182. package/dist/core/tracing.js.map +1 -0
  183. package/dist/core/types.d.ts +165 -0
  184. package/dist/core/types.d.ts.map +1 -0
  185. package/dist/core/types.js +3 -0
  186. package/dist/core/types.js.map +1 -0
  187. package/dist/demo/agents.d.ts +23 -0
  188. package/dist/demo/agents.d.ts.map +1 -0
  189. package/dist/demo/agents.js +69 -0
  190. package/dist/demo/agents.js.map +1 -0
  191. package/dist/demo/index.d.ts +2 -0
  192. package/dist/demo/index.d.ts.map +1 -0
  193. package/dist/demo/index.js +250 -0
  194. package/dist/demo/index.js.map +1 -0
  195. package/dist/demo/mock-provider.d.ts +22 -0
  196. package/dist/demo/mock-provider.d.ts.map +1 -0
  197. package/dist/demo/mock-provider.js +138 -0
  198. package/dist/demo/mock-provider.js.map +1 -0
  199. package/dist/demo/tools.d.ts +14 -0
  200. package/dist/demo/tools.d.ts.map +1 -0
  201. package/dist/demo/tools.js +115 -0
  202. package/dist/demo/tools.js.map +1 -0
  203. package/dist/index.d.ts +20 -0
  204. package/dist/index.d.ts.map +1 -0
  205. package/dist/index.js +30 -0
  206. package/dist/index.js.map +1 -0
  207. package/dist/memory/factory.d.ts +22 -0
  208. package/dist/memory/factory.d.ts.map +1 -0
  209. package/dist/memory/factory.js +88 -0
  210. package/dist/memory/factory.js.map +1 -0
  211. package/dist/memory/providers/in-memory.d.ts +7 -0
  212. package/dist/memory/providers/in-memory.d.ts.map +1 -0
  213. package/dist/memory/providers/in-memory.js +287 -0
  214. package/dist/memory/providers/in-memory.js.map +1 -0
  215. package/dist/memory/providers/postgres.d.ts +15 -0
  216. package/dist/memory/providers/postgres.d.ts.map +1 -0
  217. package/dist/memory/providers/postgres.js +495 -0
  218. package/dist/memory/providers/postgres.js.map +1 -0
  219. package/dist/memory/providers/redis.d.ts +18 -0
  220. package/dist/memory/providers/redis.d.ts.map +1 -0
  221. package/dist/memory/providers/redis.js +354 -0
  222. package/dist/memory/providers/redis.js.map +1 -0
  223. package/dist/memory/types.d.ts +296 -0
  224. package/dist/memory/types.d.ts.map +1 -0
  225. package/dist/memory/types.js +93 -0
  226. package/dist/memory/types.js.map +1 -0
  227. package/dist/policies/handoff.d.ts +16 -0
  228. package/dist/policies/handoff.d.ts.map +1 -0
  229. package/dist/policies/handoff.js +20 -0
  230. package/dist/policies/handoff.js.map +1 -0
  231. package/dist/policies/validation.d.ts +14 -0
  232. package/dist/policies/validation.d.ts.map +1 -0
  233. package/dist/policies/validation.js +92 -0
  234. package/dist/policies/validation.js.map +1 -0
  235. package/dist/providers/mcp.d.ts +17 -0
  236. package/dist/providers/mcp.d.ts.map +1 -0
  237. package/dist/providers/mcp.js +111 -0
  238. package/dist/providers/mcp.js.map +1 -0
  239. package/dist/providers/model.d.ts +3 -0
  240. package/dist/providers/model.d.ts.map +1 -0
  241. package/dist/providers/model.js +113 -0
  242. package/dist/providers/model.js.map +1 -0
  243. package/dist/server/index.d.ts +35 -0
  244. package/dist/server/index.d.ts.map +1 -0
  245. package/dist/server/index.js +66 -0
  246. package/dist/server/index.js.map +1 -0
  247. package/dist/server/server.d.ts +12 -0
  248. package/dist/server/server.d.ts.map +1 -0
  249. package/dist/server/server.js +394 -0
  250. package/dist/server/server.js.map +1 -0
  251. package/dist/server/types.d.ts +456 -0
  252. package/dist/server/types.d.ts.map +1 -0
  253. package/dist/server/types.js +75 -0
  254. package/dist/server/types.js.map +1 -0
  255. package/dist/test-utils/db-setup.d.ts +34 -0
  256. package/dist/test-utils/db-setup.d.ts.map +1 -0
  257. package/dist/test-utils/db-setup.js +149 -0
  258. package/dist/test-utils/db-setup.js.map +1 -0
  259. package/dist/utils/logger.d.ts +63 -0
  260. package/dist/utils/logger.d.ts.map +1 -0
  261. package/dist/utils/logger.js +199 -0
  262. package/dist/utils/logger.js.map +1 -0
  263. package/dist/utils/safe-math.d.ts +31 -0
  264. package/dist/utils/safe-math.d.ts.map +1 -0
  265. package/dist/utils/safe-math.js +86 -0
  266. package/dist/utils/safe-math.js.map +1 -0
  267. package/dist/visualization/example.d.ts +9 -0
  268. package/dist/visualization/example.d.ts.map +1 -0
  269. package/dist/visualization/example.js +236 -0
  270. package/dist/visualization/example.js.map +1 -0
  271. package/dist/visualization/graphviz.d.ts +42 -0
  272. package/dist/visualization/graphviz.d.ts.map +1 -0
  273. package/dist/visualization/graphviz.js +403 -0
  274. package/dist/visualization/graphviz.js.map +1 -0
  275. package/dist/visualization/index.d.ts +10 -0
  276. package/dist/visualization/index.d.ts.map +1 -0
  277. package/dist/visualization/index.js +12 -0
  278. package/dist/visualization/index.js.map +1 -0
  279. package/package.json +99 -0
@@ -0,0 +1,506 @@
1
+ /**
2
+ * JAF ADK Layer - Tool System
3
+ *
4
+ * Functional tool creation, execution, and integration utilities
5
+ */
6
+ import { throwToolError, createToolError, ToolSource, ToolParameterType } from '../types';
7
+ // ========== Tool Creation ==========
8
+ export const createFunctionTool = (config) => {
9
+ const { name, description, execute, parameters = [], metadata } = config;
10
+ const toolMetadata = {
11
+ source: ToolSource.FUNCTION,
12
+ version: '1.0.0',
13
+ ...metadata
14
+ };
15
+ const executor = async (params, context) => {
16
+ try {
17
+ // Validate parameters
18
+ const validation = validateToolParameters(params, parameters);
19
+ if (!validation.success) {
20
+ return {
21
+ success: false,
22
+ error: `Parameter validation failed: ${validation.errors?.join(', ')}`
23
+ };
24
+ }
25
+ // Execute function with params and context
26
+ const result = await execute(params, context);
27
+ return {
28
+ success: true,
29
+ data: result,
30
+ metadata: { executedAt: new Date() }
31
+ };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ success: false,
36
+ error: error instanceof Error ? error.message : 'Unknown error',
37
+ metadata: { error, executedAt: new Date() }
38
+ };
39
+ }
40
+ };
41
+ return {
42
+ name,
43
+ description,
44
+ parameters,
45
+ execute: executor,
46
+ metadata: toolMetadata
47
+ };
48
+ };
49
+ // Legacy function signature for backward compatibility
50
+ export const createFunctionToolLegacy = (name, description, func, parameters = [], metadata) => {
51
+ return createFunctionTool({
52
+ name,
53
+ description,
54
+ execute: func,
55
+ parameters,
56
+ metadata
57
+ });
58
+ };
59
+ export const createAsyncFunctionTool = (config) => {
60
+ return createFunctionTool(config);
61
+ };
62
+ // ========== OpenAPI Tool Generation ==========
63
+ export const createOpenAPIToolset = async (spec) => {
64
+ const tools = [];
65
+ for (const [path, methods] of Object.entries(spec.paths)) {
66
+ for (const [method, operation] of Object.entries(methods)) {
67
+ if (isValidOperation(operation)) {
68
+ const tool = await createToolFromOperation(path, method, operation, spec);
69
+ tools.push(tool);
70
+ }
71
+ }
72
+ }
73
+ return tools;
74
+ };
75
+ const createToolFromOperation = async (path, method, operation, spec) => {
76
+ const name = operation.operationId || `${method}_${path.replace(/[^a-zA-Z0-9]/g, '_')}`;
77
+ const description = operation.description || operation.summary || `${method.toUpperCase()} ${path}`;
78
+ const parameters = extractParametersFromOperation(operation);
79
+ const executor = async (params, context) => {
80
+ try {
81
+ const response = await executeOpenAPICall(path, method, params, spec);
82
+ return {
83
+ success: true,
84
+ data: response,
85
+ metadata: {
86
+ path,
87
+ method,
88
+ executedAt: new Date()
89
+ }
90
+ };
91
+ }
92
+ catch (error) {
93
+ return {
94
+ success: false,
95
+ error: error instanceof Error ? error.message : 'API call failed',
96
+ metadata: {
97
+ path,
98
+ method,
99
+ error,
100
+ executedAt: new Date()
101
+ }
102
+ };
103
+ }
104
+ };
105
+ return {
106
+ name,
107
+ description,
108
+ parameters,
109
+ execute: executor,
110
+ metadata: {
111
+ source: ToolSource.OPENAPI,
112
+ version: spec.info.version,
113
+ tags: ['api', 'openapi']
114
+ }
115
+ };
116
+ };
117
+ const extractParametersFromOperation = (operation) => {
118
+ const parameters = [];
119
+ // Extract from parameters
120
+ if (operation.parameters) {
121
+ for (const param of operation.parameters) {
122
+ parameters.push(convertOpenAPIParameter(param));
123
+ }
124
+ }
125
+ // Extract from request body
126
+ if (operation.requestBody) {
127
+ const content = operation.requestBody.content;
128
+ if (content['application/json']?.schema) {
129
+ const schema = content['application/json'].schema;
130
+ if (schema.properties) {
131
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
132
+ parameters.push({
133
+ name: propName,
134
+ type: mapOpenAPIType(propSchema.type || 'string'),
135
+ description: propSchema.description || '',
136
+ required: schema.required?.includes(propName) || false
137
+ });
138
+ }
139
+ }
140
+ }
141
+ }
142
+ return parameters;
143
+ };
144
+ const convertOpenAPIParameter = (param) => {
145
+ return {
146
+ name: param.name,
147
+ type: mapOpenAPIType(param.schema.type || 'string'),
148
+ description: param.description || '',
149
+ required: param.required || false,
150
+ default: param.schema.default
151
+ };
152
+ };
153
+ const mapOpenAPIType = (openApiType) => {
154
+ switch (openApiType) {
155
+ case 'integer':
156
+ case 'number':
157
+ return 'number';
158
+ case 'boolean':
159
+ return 'boolean';
160
+ case 'array':
161
+ return 'array';
162
+ case 'object':
163
+ return 'object';
164
+ default:
165
+ return 'string';
166
+ }
167
+ };
168
+ const executeOpenAPICall = async (path, method, params, spec) => {
169
+ // This is a simplified implementation
170
+ // In a real implementation, you'd use a proper HTTP client
171
+ // and handle authentication, base URLs, etc.
172
+ const baseUrl = 'https://api.example.com'; // Extract from spec
173
+ const url = interpolatePath(path, params);
174
+ const fullUrl = `${baseUrl}${url}`;
175
+ const options = {
176
+ method: method.toUpperCase(),
177
+ headers: {
178
+ 'Content-Type': 'application/json'
179
+ }
180
+ };
181
+ if (method.toUpperCase() !== 'GET') {
182
+ options.body = JSON.stringify(params);
183
+ }
184
+ const response = await fetch(fullUrl, options);
185
+ if (!response.ok) {
186
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
187
+ }
188
+ return await response.json();
189
+ };
190
+ const interpolatePath = (path, params) => {
191
+ let result = path;
192
+ for (const [key, value] of Object.entries(params)) {
193
+ result = result.replace(`{${key}}`, String(value));
194
+ }
195
+ return result;
196
+ };
197
+ const isValidOperation = (operation) => {
198
+ return typeof operation === 'object' && operation !== null;
199
+ };
200
+ // ========== External Tool Adapters ==========
201
+ export const createCrewAIAdapter = (crewAITool) => {
202
+ const name = crewAITool.name || 'crewai_tool';
203
+ const description = crewAITool.description || 'CrewAI tool adapter';
204
+ // Extract parameters from CrewAI tool
205
+ const parameters = extractCrewAIParameters(crewAITool);
206
+ const executor = async (params, context) => {
207
+ try {
208
+ const result = await crewAITool.run(params);
209
+ return {
210
+ success: true,
211
+ data: result,
212
+ metadata: {
213
+ source: 'crewai',
214
+ executedAt: new Date()
215
+ }
216
+ };
217
+ }
218
+ catch (error) {
219
+ return {
220
+ success: false,
221
+ error: error instanceof Error ? error.message : 'CrewAI tool execution failed',
222
+ metadata: {
223
+ source: 'crewai',
224
+ error,
225
+ executedAt: new Date()
226
+ }
227
+ };
228
+ }
229
+ };
230
+ return {
231
+ name,
232
+ description,
233
+ parameters,
234
+ execute: executor,
235
+ metadata: {
236
+ source: ToolSource.CREWAI,
237
+ version: '1.0.0',
238
+ tags: ['crewai', 'external']
239
+ }
240
+ };
241
+ };
242
+ export const createLangChainAdapter = (langChainTool) => {
243
+ const name = langChainTool.name || 'langchain_tool';
244
+ const description = langChainTool.description || 'LangChain tool adapter';
245
+ const parameters = extractLangChainParameters(langChainTool);
246
+ const executor = async (params, context) => {
247
+ try {
248
+ const result = await langChainTool.call(params);
249
+ return {
250
+ success: true,
251
+ data: result,
252
+ metadata: {
253
+ source: 'langchain',
254
+ executedAt: new Date()
255
+ }
256
+ };
257
+ }
258
+ catch (error) {
259
+ return {
260
+ success: false,
261
+ error: error instanceof Error ? error.message : 'LangChain tool execution failed',
262
+ metadata: {
263
+ source: 'langchain',
264
+ error,
265
+ executedAt: new Date()
266
+ }
267
+ };
268
+ }
269
+ };
270
+ return {
271
+ name,
272
+ description,
273
+ parameters,
274
+ execute: executor,
275
+ metadata: {
276
+ source: ToolSource.LANGCHAIN,
277
+ version: '1.0.0',
278
+ tags: ['langchain', 'external']
279
+ }
280
+ };
281
+ };
282
+ const extractCrewAIParameters = (crewAITool) => {
283
+ // This is a simplified extraction
284
+ // Real implementation would inspect the tool's schema
285
+ return [
286
+ {
287
+ name: 'input',
288
+ type: 'string',
289
+ description: 'Input for the CrewAI tool',
290
+ required: true
291
+ }
292
+ ];
293
+ };
294
+ const extractLangChainParameters = (langChainTool) => {
295
+ // This is a simplified extraction
296
+ // Real implementation would inspect the tool's schema
297
+ return [
298
+ {
299
+ name: 'input',
300
+ type: 'string',
301
+ description: 'Input for the LangChain tool',
302
+ required: true
303
+ }
304
+ ];
305
+ };
306
+ // ========== Tool Validation ==========
307
+ export const validateTool = (tool) => {
308
+ const errors = [];
309
+ if (!tool.name || tool.name.trim().length === 0) {
310
+ errors.push('Tool name is required');
311
+ }
312
+ if (!tool.description || tool.description.trim().length === 0) {
313
+ errors.push('Tool description is required');
314
+ }
315
+ if (!Array.isArray(tool.parameters)) {
316
+ errors.push('Tool parameters must be an array');
317
+ }
318
+ if (typeof tool.execute !== 'function') {
319
+ errors.push('Tool execute must be a function');
320
+ }
321
+ // Validate parameters
322
+ for (const param of tool.parameters) {
323
+ const paramValidation = validateToolParameter(param);
324
+ if (!paramValidation.success) {
325
+ errors.push(`Parameter '${param.name}': ${paramValidation.errors?.join(', ')}`);
326
+ }
327
+ }
328
+ if (errors.length > 0) {
329
+ return { success: false, errors };
330
+ }
331
+ return { success: true, data: tool };
332
+ };
333
+ export const validateToolParameter = (param) => {
334
+ const errors = [];
335
+ if (!param.name || param.name.trim().length === 0) {
336
+ errors.push('Parameter name is required');
337
+ }
338
+ if (!param.type) {
339
+ errors.push('Parameter type is required');
340
+ }
341
+ if (!['string', 'number', 'boolean', 'object', 'array'].includes(param.type)) {
342
+ errors.push(`Invalid parameter type: ${param.type}`);
343
+ }
344
+ if (!param.description || param.description.trim().length === 0) {
345
+ errors.push('Parameter description is required');
346
+ }
347
+ if (errors.length > 0) {
348
+ return { success: false, errors };
349
+ }
350
+ return { success: true, data: param };
351
+ };
352
+ export const validateToolParameters = (params, paramSchema) => {
353
+ const errors = [];
354
+ // Check required parameters
355
+ for (const param of paramSchema) {
356
+ if (param.required && !(param.name in params)) {
357
+ errors.push(`Required parameter '${param.name}' is missing`);
358
+ }
359
+ }
360
+ // Validate parameter types
361
+ for (const [name, value] of Object.entries(params)) {
362
+ const paramDef = paramSchema.find(p => p.name === name);
363
+ if (paramDef) {
364
+ const typeValidation = validateParameterType(value, paramDef);
365
+ if (!typeValidation) {
366
+ errors.push(`Parameter '${name}' has invalid type (expected ${paramDef.type})`);
367
+ }
368
+ }
369
+ }
370
+ if (errors.length > 0) {
371
+ return { success: false, errors };
372
+ }
373
+ return { success: true, data: params };
374
+ };
375
+ const validateParameterType = (value, param) => {
376
+ switch (param.type) {
377
+ case 'string':
378
+ return typeof value === 'string';
379
+ case 'number':
380
+ return typeof value === 'number';
381
+ case 'boolean':
382
+ return typeof value === 'boolean';
383
+ case 'object':
384
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
385
+ case 'array':
386
+ return Array.isArray(value);
387
+ default:
388
+ return false;
389
+ }
390
+ };
391
+ // ========== Tool Execution ==========
392
+ export const executeTool = async (tool, params, context) => {
393
+ try {
394
+ // Validate tool
395
+ const toolValidation = validateTool(tool);
396
+ if (!toolValidation.success) {
397
+ throwToolError(`Tool validation failed: ${toolValidation.errors?.join(', ')}`, tool.name);
398
+ }
399
+ // Execute tool
400
+ const result = await tool.execute(params, context);
401
+ return result;
402
+ }
403
+ catch (error) {
404
+ if (error && typeof error === 'object' && error.name === 'ToolError') {
405
+ throw error;
406
+ }
407
+ return {
408
+ success: false,
409
+ error: error instanceof Error ? error.message : 'Tool execution failed',
410
+ metadata: {
411
+ toolName: tool.name,
412
+ error,
413
+ executedAt: new Date()
414
+ }
415
+ };
416
+ }
417
+ };
418
+ export const executeTools = async (tools, params, context) => {
419
+ const results = {};
420
+ for (const tool of tools) {
421
+ const toolParams = params[tool.name] || {};
422
+ results[tool.name] = await executeTool(tool, toolParams, context);
423
+ }
424
+ return results;
425
+ };
426
+ // ========== Tool Utilities ==========
427
+ export const getToolByName = (tools, name) => {
428
+ return tools.find(tool => tool.name === name) || null;
429
+ };
430
+ export const hasToolByName = (tools, name) => {
431
+ return getToolByName(tools, name) !== null;
432
+ };
433
+ export const filterToolsBySource = (tools, source) => {
434
+ return tools.filter(tool => tool.metadata?.source === source);
435
+ };
436
+ export const getToolNames = (tools) => {
437
+ return tools.map(tool => tool.name);
438
+ };
439
+ export const cloneTool = (tool) => {
440
+ return {
441
+ ...tool,
442
+ parameters: [...tool.parameters],
443
+ metadata: tool.metadata ? { ...tool.metadata } : undefined
444
+ };
445
+ };
446
+ // Export createToolError from types for external use
447
+ export { createToolError };
448
+ // ========== Built-in Tools ==========
449
+ export const createEchoTool = () => {
450
+ return createFunctionTool({
451
+ name: 'echo',
452
+ description: 'Echoes back the input message',
453
+ execute: (params) => {
454
+ const typedParams = params;
455
+ return typedParams.message;
456
+ },
457
+ parameters: [
458
+ {
459
+ name: 'message',
460
+ type: ToolParameterType.STRING,
461
+ description: 'The message to echo back',
462
+ required: true
463
+ }
464
+ ]
465
+ });
466
+ };
467
+ export const createCalculatorTool = () => {
468
+ // Import safe math evaluator
469
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
470
+ const { evaluateMathExpression } = require('../../utils/safe-math');
471
+ return createFunctionTool({
472
+ name: 'calculator',
473
+ description: 'Performs safe mathematical calculations',
474
+ execute: (params) => {
475
+ const typedParams = params;
476
+ try {
477
+ // Use safe math parser instead of eval
478
+ const result = evaluateMathExpression(typedParams.expression);
479
+ return { result, expression: typedParams.expression };
480
+ }
481
+ catch (error) {
482
+ throw new Error(`Invalid expression: ${typedParams.expression}. ${error instanceof Error ? error.message : ''}`);
483
+ }
484
+ },
485
+ parameters: [
486
+ {
487
+ name: 'expression',
488
+ type: ToolParameterType.STRING,
489
+ description: 'Mathematical expression to evaluate (e.g., "2 + 2", "sqrt(16)", "2^3")',
490
+ required: true
491
+ }
492
+ ]
493
+ });
494
+ };
495
+ export const createTimestampTool = () => {
496
+ return createFunctionTool({
497
+ name: 'timestamp',
498
+ description: 'Returns the current timestamp',
499
+ execute: () => ({
500
+ timestamp: new Date().toISOString(),
501
+ unix: Date.now()
502
+ }),
503
+ parameters: []
504
+ });
505
+ };
506
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/tools/index.ts"],"names":[],"mappings":"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"}