@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,85 @@
1
+ /**
2
+ * A2A Task Memory Types for JAF
3
+ * Extends the core memory system to support A2A task queue persistence
4
+ */
5
+ import { z } from 'zod';
6
+ // Configuration schemas for A2A task storage
7
+ export const A2ATaskMemoryConfigSchema = z.object({
8
+ type: z.enum(['memory', 'redis', 'postgres']),
9
+ keyPrefix: z.string().default('jaf:a2a:tasks:'),
10
+ defaultTtl: z.number().optional(), // Default TTL in seconds for tasks
11
+ cleanupInterval: z.number().default(3600), // Cleanup interval in seconds
12
+ maxTasks: z.number().default(10000), // Maximum tasks to store (for in-memory)
13
+ enableHistory: z.boolean().default(true), // Store task history
14
+ enableArtifacts: z.boolean().default(true), // Store task artifacts
15
+ });
16
+ export const A2AInMemoryTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
17
+ type: z.literal('memory'),
18
+ maxTasksPerContext: z.number().default(1000),
19
+ });
20
+ export const A2ARedisTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
21
+ type: z.literal('redis'),
22
+ host: z.string().default('localhost'),
23
+ port: z.number().default(6379),
24
+ password: z.string().optional(),
25
+ db: z.number().default(0),
26
+ });
27
+ export const A2APostgresTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
28
+ type: z.literal('postgres'),
29
+ host: z.string().default('localhost'),
30
+ port: z.number().default(5432),
31
+ database: z.string().default('jaf_a2a'),
32
+ username: z.string().default('postgres'),
33
+ password: z.string().optional(),
34
+ ssl: z.boolean().default(false),
35
+ tableName: z.string().default('a2a_tasks'),
36
+ maxConnections: z.number().default(10),
37
+ });
38
+ export const A2ATaskProviderConfigSchema = z.union([
39
+ A2AInMemoryTaskConfigSchema,
40
+ A2ARedisTaskConfigSchema,
41
+ A2APostgresTaskConfigSchema
42
+ ]);
43
+ // Error factory functions
44
+ export const createA2ATaskError = (message, code, provider, taskId, cause) => ({
45
+ _tag: 'A2ATaskError',
46
+ message,
47
+ code,
48
+ provider,
49
+ taskId,
50
+ cause
51
+ });
52
+ export const createA2ATaskNotFoundError = (taskId, provider) => ({
53
+ _tag: 'A2ATaskNotFoundError',
54
+ message: `A2A task ${taskId} not found`,
55
+ taskId,
56
+ provider
57
+ });
58
+ export const createA2ATaskStorageError = (operation, provider, taskId, cause) => ({
59
+ _tag: 'A2ATaskStorageError',
60
+ message: `Failed to ${operation} A2A task${taskId ? ` ${taskId}` : ''} in ${provider}`,
61
+ operation,
62
+ provider,
63
+ taskId,
64
+ cause
65
+ });
66
+ // Error checking functions
67
+ export const isA2ATaskError = (error) => {
68
+ return error && typeof error === 'object' && '_tag' in error &&
69
+ (error._tag === 'A2ATaskError' ||
70
+ error._tag === 'A2ATaskNotFoundError' ||
71
+ error._tag === 'A2ATaskStorageError');
72
+ };
73
+ export const isA2ATaskNotFoundError = (error) => {
74
+ return error && error._tag === 'A2ATaskNotFoundError';
75
+ };
76
+ export const isA2ATaskStorageError = (error) => {
77
+ return error && error._tag === 'A2ATaskStorageError';
78
+ };
79
+ // A2A-specific Result functions
80
+ export const createA2ASuccess = (data) => ({ success: true, data });
81
+ export const createA2AFailure = (error) => ({ success: false, error });
82
+ // Convenience exports for backward compatibility
83
+ export const createSuccess = createA2ASuccess;
84
+ export const createFailure = createA2AFailure;
85
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/a2a/memory/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Pure functional JSON-RPC protocol handlers for A2A
3
+ * All handlers are pure functions with no side effects
4
+ */
5
+ import type { JSONRPCRequest, JSONRPCResponse, JSONRPCError, SendMessageRequest, SendStreamingMessageRequest, GetTaskRequest, A2AAgent, A2AError } from './types.js';
6
+ import { A2AErrorCodes } from './types.js';
7
+ import { A2ATaskProvider } from './memory/types.js';
8
+ export declare const validateJSONRPCRequest: (request: any) => request is JSONRPCRequest;
9
+ export declare const createJSONRPCSuccessResponse: (id: string | number, result: any) => JSONRPCResponse;
10
+ export declare const createJSONRPCErrorResponse: (id: string | number | null, error: JSONRPCError) => JSONRPCResponse;
11
+ export declare const createA2AError: (code: (typeof A2AErrorCodes)[keyof typeof A2AErrorCodes], message: string, data?: any) => A2AError;
12
+ export declare const mapErrorToA2AError: (error: unknown) => A2AError;
13
+ export declare const validateSendMessageRequest: (request: JSONRPCRequest) => {
14
+ isValid: boolean;
15
+ data?: SendMessageRequest;
16
+ error?: A2AError;
17
+ };
18
+ export declare const handleMessageSend: (request: SendMessageRequest, agent: A2AAgent, modelProvider: any) => Promise<JSONRPCResponse>;
19
+ export declare const handleMessageStream: (request: SendStreamingMessageRequest, agent: A2AAgent, modelProvider: any) => AsyncGenerator<JSONRPCResponse, void, unknown>;
20
+ export declare const handleTasksGet: (request: GetTaskRequest, taskProvider: A2ATaskProvider) => Promise<JSONRPCResponse>;
21
+ export declare const handleTasksCancel: (request: {
22
+ id: string | number;
23
+ params: {
24
+ id: string;
25
+ };
26
+ }, taskProvider: A2ATaskProvider) => Promise<JSONRPCResponse>;
27
+ export declare const handleGetAuthenticatedExtendedCard: (request: {
28
+ id: string | number;
29
+ }, agentCard: any) => Promise<JSONRPCResponse>;
30
+ export declare const routeA2ARequest: (request: any, agent: A2AAgent, modelProvider: any, taskProvider: A2ATaskProvider, agentCard: any) => Promise<JSONRPCResponse> | AsyncGenerator<JSONRPCResponse, void, unknown>;
31
+ export declare const createProtocolHandlerConfig: (agents: ReadonlyMap<string, A2AAgent>, modelProvider: any, agentCard: any, taskProvider?: A2ATaskProvider) => {
32
+ agents: ReadonlyMap<string, A2AAgent>;
33
+ modelProvider: any;
34
+ agentCard: any;
35
+ taskProvider: A2ATaskProvider | undefined;
36
+ handleRequest: (request: JSONRPCRequest, agentName?: string) => Promise<JSONRPCResponse> | AsyncGenerator<JSONRPCResponse, void, unknown>;
37
+ };
38
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/a2a/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,EACd,QAAQ,EAGR,QAAQ,EAET,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,sBAAsB,GAAI,SAAS,GAAG,KAAG,OAAO,IAAI,cAQhE,CAAC;AAGF,eAAO,MAAM,4BAA4B,GAAI,IAAI,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAG,eAI9E,CAAC;AAGH,eAAO,MAAM,0BAA0B,GACrC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,OAAO,YAAY,KAClB,eAID,CAAC;AAGH,eAAO,MAAM,cAAc,GACzB,MAAM,CAAA,OAAO,aAAa,EAAC,MAAM,OAAO,aAAa,CAAC,EACtD,SAAS,MAAM,EACf,OAAO,GAAG,KACT,QAID,CAAC;AAGH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,QAanD,CAAC;AAGF,eAAO,MAAM,0BAA0B,GAAI,SAAS,cAAc,KAAG;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;CAkBlB,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,OAAO,CAAC,eAAe,CA2BzB,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,2BAA2B,EACpC,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAiB/C,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,SAAS,cAAc,EACvB,cAAc,eAAe,KAC5B,OAAO,CAAC,eAAe,CAiCzB,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACxD,cAAc,eAAe,KAC5B,OAAO,CAAC,eAAe,CAqDzB,CAAC;AAGF,eAAO,MAAM,kCAAkC,GAC7C,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAChC,WAAW,GAAG,KACb,OAAO,CAAC,eAAe,CAWzB,CAAC;AAGF,eAAO,MAAM,eAAe,GAC1B,SAAS,GAAG,EACZ,OAAO,QAAQ,EACf,eAAe,GAAG,EAClB,cAAc,eAAe,EAC7B,WAAW,GAAG,KACb,OAAO,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAqD1E,CAAC;AAGF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EACrC,eAAe,GAAG,EAClB,WAAW,GAAG,EACd,eAAe,eAAe;;;;;6BAQL,cAAc,cAAc,MAAM;CAyB3D,CAAC"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Pure functional JSON-RPC protocol handlers for A2A
3
+ * All handlers are pure functions with no side effects
4
+ */
5
+ import { A2AErrorCodes } from './types.js';
6
+ import { executeA2AAgent, executeA2AAgentWithStreaming } from './executor.js';
7
+ import { sendMessageRequestSchema } from './types.js';
8
+ // Pure function to validate JSON-RPC request
9
+ export const validateJSONRPCRequest = (request) => {
10
+ return (typeof request === 'object' &&
11
+ request !== null &&
12
+ request.jsonrpc === '2.0' &&
13
+ (typeof request.id === 'string' || typeof request.id === 'number') &&
14
+ typeof request.method === 'string');
15
+ };
16
+ // Pure function to create JSON-RPC success response
17
+ export const createJSONRPCSuccessResponse = (id, result) => ({
18
+ jsonrpc: '2.0',
19
+ id,
20
+ result
21
+ });
22
+ // Pure function to create JSON-RPC error response
23
+ export const createJSONRPCErrorResponse = (id, error) => ({
24
+ jsonrpc: '2.0',
25
+ id,
26
+ error
27
+ });
28
+ // Pure function to create A2A error
29
+ export const createA2AError = (code, message, data) => ({
30
+ code,
31
+ message,
32
+ data
33
+ });
34
+ // Pure function to map JavaScript errors to A2A errors
35
+ export const mapErrorToA2AError = (error) => {
36
+ if (error instanceof Error) {
37
+ return createA2AError(A2AErrorCodes.INTERNAL_ERROR, error.message, { stack: error.stack });
38
+ }
39
+ return createA2AError(A2AErrorCodes.INTERNAL_ERROR, typeof error === 'string' ? error : 'Unknown error occurred');
40
+ };
41
+ // Pure function to validate send message request
42
+ export const validateSendMessageRequest = (request) => {
43
+ try {
44
+ const validatedRequest = sendMessageRequestSchema.parse(request);
45
+ return {
46
+ isValid: true,
47
+ data: validatedRequest
48
+ };
49
+ }
50
+ catch (error) {
51
+ return {
52
+ isValid: false,
53
+ error: createA2AError(A2AErrorCodes.INVALID_PARAMS, 'Invalid send message request parameters', error)
54
+ };
55
+ }
56
+ };
57
+ // Pure function to handle message/send method
58
+ export const handleMessageSend = async (request, agent, modelProvider) => {
59
+ try {
60
+ const context = {
61
+ message: request.params.message,
62
+ sessionId: request.params.message.contextId || `session_${Date.now()}`,
63
+ metadata: request.params.metadata
64
+ };
65
+ const result = await executeA2AAgent(context, agent, modelProvider);
66
+ if (result.error) {
67
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, result.error));
68
+ }
69
+ return createJSONRPCSuccessResponse(request.id, result.finalTask || { message: 'No result available' });
70
+ }
71
+ catch (error) {
72
+ return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
73
+ }
74
+ };
75
+ // Pure function to handle message/stream method
76
+ export const handleMessageStream = async function* (request, agent, modelProvider) {
77
+ try {
78
+ const context = {
79
+ message: request.params.message,
80
+ sessionId: request.params.message.contextId || `session_${Date.now()}`,
81
+ metadata: request.params.metadata
82
+ };
83
+ for await (const event of executeA2AAgentWithStreaming(context, agent, modelProvider)) {
84
+ yield createJSONRPCSuccessResponse(request.id, event);
85
+ }
86
+ }
87
+ catch (error) {
88
+ yield createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
89
+ }
90
+ };
91
+ // Pure function to handle tasks/get method
92
+ export const handleTasksGet = async (request, taskProvider) => {
93
+ try {
94
+ const taskResult = await taskProvider.getTask(request.params.id);
95
+ if (!taskResult.success) {
96
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to get task: ${taskResult.error.message}`));
97
+ }
98
+ const task = taskResult.data;
99
+ if (!task) {
100
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_FOUND, `Task with id ${request.params.id} not found`));
101
+ }
102
+ // Apply history length limit if specified
103
+ let resultTask = task;
104
+ if (request.params.historyLength && task.history) {
105
+ const limitedHistory = task.history.slice(-request.params.historyLength);
106
+ resultTask = { ...task, history: limitedHistory };
107
+ }
108
+ return createJSONRPCSuccessResponse(request.id, resultTask);
109
+ }
110
+ catch (error) {
111
+ return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
112
+ }
113
+ };
114
+ // Pure function to handle tasks/cancel method
115
+ export const handleTasksCancel = async (request, taskProvider) => {
116
+ try {
117
+ const taskResult = await taskProvider.getTask(request.params.id);
118
+ if (!taskResult.success) {
119
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to get task: ${taskResult.error.message}`));
120
+ }
121
+ const task = taskResult.data;
122
+ if (!task) {
123
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_FOUND, `Task with id ${request.params.id} not found`));
124
+ }
125
+ // Check if task can be canceled
126
+ if (task.status.state === 'completed' || task.status.state === 'failed' || task.status.state === 'canceled') {
127
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_CANCELABLE, `Task ${request.params.id} cannot be canceled in state ${task.status.state}`));
128
+ }
129
+ // Update task status to canceled
130
+ const updateResult = await taskProvider.updateTaskStatus(request.params.id, 'canceled', undefined, new Date().toISOString());
131
+ if (!updateResult.success) {
132
+ return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to cancel task: ${updateResult.error.message}`));
133
+ }
134
+ // Get the updated task to return
135
+ const updatedTaskResult = await taskProvider.getTask(request.params.id);
136
+ const canceledTask = updatedTaskResult.success ? updatedTaskResult.data : task;
137
+ return createJSONRPCSuccessResponse(request.id, canceledTask);
138
+ }
139
+ catch (error) {
140
+ return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
141
+ }
142
+ };
143
+ // Pure function to handle agent/getAuthenticatedExtendedCard method
144
+ export const handleGetAuthenticatedExtendedCard = async (request, agentCard) => {
145
+ try {
146
+ // In a real implementation, this would check authentication
147
+ // For now, return the standard agent card
148
+ return createJSONRPCSuccessResponse(request.id, agentCard);
149
+ }
150
+ catch (error) {
151
+ return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
152
+ }
153
+ };
154
+ // Pure function to route A2A requests
155
+ export const routeA2ARequest = (request, agent, modelProvider, taskProvider, agentCard) => {
156
+ if (!validateJSONRPCRequest(request)) {
157
+ return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INVALID_REQUEST, 'Invalid JSON-RPC request')));
158
+ }
159
+ // request is now confirmed to be JSONRPCRequest
160
+ const validRequest = request;
161
+ switch (validRequest.method) {
162
+ case 'message/send': {
163
+ const validation = validateSendMessageRequest(validRequest);
164
+ if (!validation.isValid) {
165
+ return Promise.resolve(createJSONRPCErrorResponse(validRequest.id, validation.error));
166
+ }
167
+ return handleMessageSend(validation.data, agent, modelProvider);
168
+ }
169
+ case 'message/stream': {
170
+ const validation = validateSendMessageRequest(validRequest);
171
+ if (!validation.isValid) {
172
+ return (async function* () {
173
+ yield createJSONRPCErrorResponse(validRequest.id, validation.error);
174
+ })();
175
+ }
176
+ // Convert to streaming request
177
+ const streamingRequest = {
178
+ ...validation.data,
179
+ method: 'message/stream'
180
+ };
181
+ return handleMessageStream(streamingRequest, agent, modelProvider);
182
+ }
183
+ case 'tasks/get':
184
+ return handleTasksGet(validRequest, taskProvider);
185
+ case 'tasks/cancel':
186
+ return handleTasksCancel(validRequest, taskProvider);
187
+ case 'agent/getAuthenticatedExtendedCard':
188
+ return handleGetAuthenticatedExtendedCard(validRequest, agentCard);
189
+ default:
190
+ return Promise.resolve(createJSONRPCErrorResponse(validRequest.id, createA2AError(A2AErrorCodes.METHOD_NOT_FOUND, `Method ${validRequest.method} not found`)));
191
+ }
192
+ };
193
+ // Pure function to create protocol handler configuration
194
+ export const createProtocolHandlerConfig = (agents, modelProvider, agentCard, taskProvider) => ({
195
+ agents,
196
+ modelProvider,
197
+ agentCard,
198
+ taskProvider,
199
+ // Pure function to handle any A2A request
200
+ handleRequest: (request, agentName) => {
201
+ const agent = agentName ? agents.get(agentName) : agents.values().next().value;
202
+ if (!agent) {
203
+ return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INVALID_PARAMS, `Agent ${agentName} not found`)));
204
+ }
205
+ if (!taskProvider) {
206
+ return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INTERNAL_ERROR, 'No task provider configured')));
207
+ }
208
+ return routeA2ARequest(request, agent, modelProvider, taskProvider, agentCard);
209
+ }
210
+ });
211
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/a2a/protocol.ts"],"names":[],"mappings":"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"}