@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,435 @@
1
+ /**
2
+ * A2A Redis Task Provider for JAF
3
+ * Pure functional Redis-based storage for A2A tasks
4
+ */
5
+ import { createA2ATaskNotFoundError, createA2ATaskStorageError, createSuccess, createFailure } from '../types.js';
6
+ import { serializeA2ATask, deserializeA2ATask, sanitizeTask } from '../serialization.js';
7
+ /**
8
+ * Create a Redis-based A2A task provider
9
+ */
10
+ export const createA2ARedisTaskProvider = async (config, redisClient) => {
11
+ const keyPrefix = config.keyPrefix || 'jaf:a2a:tasks:';
12
+ // Pure functions for key generation
13
+ const getTaskKey = (taskId) => `${keyPrefix}task:${taskId}`;
14
+ const getContextIndexKey = (contextId) => `${keyPrefix}context:${contextId}`;
15
+ const getStateIndexKey = (state) => `${keyPrefix}state:${state}`;
16
+ const getStatsKey = () => `${keyPrefix}stats`;
17
+ const getMetaKey = (taskId) => `${keyPrefix}meta:${taskId}`;
18
+ // Pure function to convert Redis hash to serialized task
19
+ const hashToSerializedTask = (hash) => ({
20
+ taskId: hash.taskId,
21
+ contextId: hash.contextId,
22
+ state: hash.state,
23
+ taskData: hash.taskData,
24
+ statusMessage: hash.statusMessage,
25
+ createdAt: hash.createdAt,
26
+ updatedAt: hash.updatedAt,
27
+ metadata: hash.metadata
28
+ });
29
+ // Pure function to convert serialized task to Redis hash
30
+ const serializedTaskToHash = (serialized) => {
31
+ const hash = {
32
+ taskId: serialized.taskId,
33
+ contextId: serialized.contextId,
34
+ state: serialized.state,
35
+ taskData: serialized.taskData,
36
+ createdAt: serialized.createdAt,
37
+ updatedAt: serialized.updatedAt
38
+ };
39
+ if (serialized.statusMessage)
40
+ hash.statusMessage = serialized.statusMessage;
41
+ if (serialized.metadata)
42
+ hash.metadata = serialized.metadata;
43
+ return hash;
44
+ };
45
+ // Forward declare provider for recursive calls
46
+ const provider = {};
47
+ const providerImpl = {
48
+ storeTask: async (task, metadata) => {
49
+ try {
50
+ // Validate and sanitize task
51
+ const sanitizeResult = sanitizeTask(task);
52
+ if (!sanitizeResult.success) {
53
+ return sanitizeResult;
54
+ }
55
+ // Serialize task
56
+ const serializeResult = serializeA2ATask(sanitizeResult.data, metadata);
57
+ if (!serializeResult.success) {
58
+ return serializeResult;
59
+ }
60
+ const serialized = serializeResult.data;
61
+ const taskKey = getTaskKey(task.id);
62
+ const contextIndexKey = getContextIndexKey(task.contextId);
63
+ const stateIndexKey = getStateIndexKey(task.status.state);
64
+ // Use Redis transaction for atomicity
65
+ const multi = redisClient.multi();
66
+ // Store task data as hash
67
+ const taskHash = serializedTaskToHash(serialized);
68
+ multi.hmset(taskKey, taskHash);
69
+ // Set TTL if specified
70
+ if (metadata?.expiresAt) {
71
+ const ttlSeconds = Math.floor((metadata.expiresAt.getTime() - Date.now()) / 1000);
72
+ if (ttlSeconds > 0) {
73
+ multi.expire(taskKey, ttlSeconds);
74
+ }
75
+ }
76
+ else if (config.defaultTtl) {
77
+ multi.expire(taskKey, config.defaultTtl);
78
+ }
79
+ // Add to indices
80
+ multi.sadd(contextIndexKey, task.id);
81
+ multi.sadd(stateIndexKey, task.id);
82
+ // Update stats
83
+ multi.hincrby(getStatsKey(), 'totalTasks', 1);
84
+ multi.hincrby(getStatsKey(), `state:${task.status.state}`, 1);
85
+ await multi.exec();
86
+ return createSuccess(undefined);
87
+ }
88
+ catch (error) {
89
+ return createFailure(createA2ATaskStorageError('store', 'redis', task.id, error));
90
+ }
91
+ },
92
+ getTask: async (taskId) => {
93
+ try {
94
+ const taskKey = getTaskKey(taskId);
95
+ const exists = await redisClient.exists(taskKey);
96
+ if (!exists) {
97
+ return createSuccess(null);
98
+ }
99
+ const hash = await redisClient.hgetall(taskKey);
100
+ if (!hash || !hash.taskData) {
101
+ return createSuccess(null);
102
+ }
103
+ const serialized = hashToSerializedTask(hash);
104
+ const deserializeResult = deserializeA2ATask(serialized);
105
+ if (!deserializeResult.success) {
106
+ return deserializeResult;
107
+ }
108
+ return createSuccess(deserializeResult.data);
109
+ }
110
+ catch (error) {
111
+ return createFailure(createA2ATaskStorageError('get', 'redis', taskId, error));
112
+ }
113
+ },
114
+ updateTask: async (task, metadata) => {
115
+ try {
116
+ const taskKey = getTaskKey(task.id);
117
+ const exists = await redisClient.exists(taskKey);
118
+ if (!exists) {
119
+ return createFailure(createA2ATaskNotFoundError(task.id, 'redis'));
120
+ }
121
+ // Get existing task to check for state changes
122
+ const existingHash = await redisClient.hgetall(taskKey);
123
+ const oldState = existingHash.state;
124
+ // Validate and sanitize task
125
+ const sanitizeResult = sanitizeTask(task);
126
+ if (!sanitizeResult.success) {
127
+ return sanitizeResult;
128
+ }
129
+ // Merge metadata
130
+ const existingMetadata = existingHash.metadata ? JSON.parse(existingHash.metadata) : {};
131
+ const mergedMetadata = { ...existingMetadata, ...metadata };
132
+ // Serialize updated task
133
+ const serializeResult = serializeA2ATask(sanitizeResult.data, mergedMetadata);
134
+ if (!serializeResult.success) {
135
+ return serializeResult;
136
+ }
137
+ const serialized = serializeResult.data;
138
+ const multi = redisClient.multi();
139
+ // Update task data
140
+ const taskHash = serializedTaskToHash(serialized);
141
+ multi.hmset(taskKey, taskHash);
142
+ // Update indices if state changed
143
+ if (oldState !== task.status.state) {
144
+ const oldStateIndexKey = getStateIndexKey(oldState);
145
+ const newStateIndexKey = getStateIndexKey(task.status.state);
146
+ multi.srem(oldStateIndexKey, task.id);
147
+ multi.sadd(newStateIndexKey, task.id);
148
+ // Update stats
149
+ multi.hincrby(getStatsKey(), `state:${oldState}`, -1);
150
+ multi.hincrby(getStatsKey(), `state:${task.status.state}`, 1);
151
+ }
152
+ await multi.exec();
153
+ return createSuccess(undefined);
154
+ }
155
+ catch (error) {
156
+ return createFailure(createA2ATaskStorageError('update', 'redis', task.id, error));
157
+ }
158
+ },
159
+ updateTaskStatus: async (taskId, newState, statusMessage, timestamp) => {
160
+ try {
161
+ const taskKey = getTaskKey(taskId);
162
+ const exists = await redisClient.exists(taskKey);
163
+ if (!exists) {
164
+ return createFailure(createA2ATaskNotFoundError(taskId, 'redis'));
165
+ }
166
+ // Get existing task
167
+ const hash = await redisClient.hgetall(taskKey);
168
+ const serialized = hashToSerializedTask(hash);
169
+ const deserializeResult = deserializeA2ATask(serialized);
170
+ if (!deserializeResult.success) {
171
+ return deserializeResult;
172
+ }
173
+ const task = deserializeResult.data;
174
+ // Update task status
175
+ const updatedTask = {
176
+ ...task,
177
+ status: {
178
+ ...task.status,
179
+ state: newState,
180
+ message: statusMessage || task.status.message,
181
+ timestamp: timestamp || new Date().toISOString()
182
+ }
183
+ };
184
+ return providerImpl.updateTask(updatedTask);
185
+ }
186
+ catch (error) {
187
+ return createFailure(createA2ATaskStorageError('update-status', 'redis', taskId, error));
188
+ }
189
+ },
190
+ findTasks: async (query) => {
191
+ try {
192
+ let taskIds = [];
193
+ if (query.contextId) {
194
+ // Get tasks by context
195
+ const contextIndexKey = getContextIndexKey(query.contextId);
196
+ taskIds = await redisClient.smembers(contextIndexKey);
197
+ }
198
+ else if (query.state) {
199
+ // Get tasks by state
200
+ const stateIndexKey = getStateIndexKey(query.state);
201
+ taskIds = await redisClient.smembers(stateIndexKey);
202
+ }
203
+ else {
204
+ // Get all task keys and extract IDs
205
+ const pattern = `${keyPrefix}task:*`;
206
+ const keys = await redisClient.keys(pattern);
207
+ taskIds = keys.map((key) => key.replace(`${keyPrefix}task:`, ''));
208
+ }
209
+ // Filter by specific task ID if provided
210
+ if (query.taskId) {
211
+ taskIds = taskIds.filter(id => id === query.taskId);
212
+ }
213
+ // Fetch tasks and apply additional filters
214
+ const results = [];
215
+ for (const taskId of taskIds) {
216
+ const taskKey = getTaskKey(taskId);
217
+ const exists = await redisClient.exists(taskKey);
218
+ if (!exists)
219
+ continue;
220
+ const hash = await redisClient.hgetall(taskKey);
221
+ if (!hash || !hash.taskData)
222
+ continue;
223
+ // Apply date filters
224
+ if (query.since) {
225
+ const createdAt = new Date(hash.createdAt);
226
+ if (createdAt < query.since)
227
+ continue;
228
+ }
229
+ if (query.until) {
230
+ const createdAt = new Date(hash.createdAt);
231
+ if (createdAt > query.until)
232
+ continue;
233
+ }
234
+ const serialized = hashToSerializedTask(hash);
235
+ const deserializeResult = deserializeA2ATask(serialized);
236
+ if (deserializeResult.success) {
237
+ results.push(deserializeResult.data);
238
+ }
239
+ }
240
+ // Sort by timestamp (newest first)
241
+ results.sort((a, b) => {
242
+ const timeA = new Date(a.status.timestamp || '').getTime();
243
+ const timeB = new Date(b.status.timestamp || '').getTime();
244
+ return timeB - timeA;
245
+ });
246
+ // Apply pagination
247
+ const offset = query.offset || 0;
248
+ const limit = query.limit || results.length;
249
+ const paginatedResults = results.slice(offset, offset + limit);
250
+ return createSuccess(paginatedResults);
251
+ }
252
+ catch (error) {
253
+ return createFailure(createA2ATaskStorageError('find', 'redis', undefined, error));
254
+ }
255
+ },
256
+ getTasksByContext: async (contextId, limit) => {
257
+ return providerImpl.findTasks({ contextId, limit });
258
+ },
259
+ deleteTask: async (taskId) => {
260
+ try {
261
+ const taskKey = getTaskKey(taskId);
262
+ const exists = await redisClient.exists(taskKey);
263
+ if (!exists) {
264
+ return createSuccess(false);
265
+ }
266
+ // Get task data for index cleanup
267
+ const hash = await redisClient.hgetall(taskKey);
268
+ const contextId = hash.contextId;
269
+ const state = hash.state;
270
+ const multi = redisClient.multi();
271
+ // Delete task
272
+ multi.del(taskKey);
273
+ // Remove from indices
274
+ if (contextId) {
275
+ const contextIndexKey = getContextIndexKey(contextId);
276
+ multi.srem(contextIndexKey, taskId);
277
+ }
278
+ if (state) {
279
+ const stateIndexKey = getStateIndexKey(state);
280
+ multi.srem(stateIndexKey, taskId);
281
+ }
282
+ // Update stats
283
+ multi.hincrby(getStatsKey(), 'totalTasks', -1);
284
+ if (state) {
285
+ multi.hincrby(getStatsKey(), `state:${state}`, -1);
286
+ }
287
+ await multi.exec();
288
+ return createSuccess(true);
289
+ }
290
+ catch (error) {
291
+ return createFailure(createA2ATaskStorageError('delete', 'redis', taskId, error));
292
+ }
293
+ },
294
+ deleteTasksByContext: async (contextId) => {
295
+ try {
296
+ const contextIndexKey = getContextIndexKey(contextId);
297
+ const taskIds = await redisClient.smembers(contextIndexKey);
298
+ if (taskIds.length === 0) {
299
+ return createSuccess(0);
300
+ }
301
+ let deletedCount = 0;
302
+ for (const taskId of taskIds) {
303
+ const deleteResult = await providerImpl.deleteTask(taskId);
304
+ if (deleteResult.success && deleteResult.data) {
305
+ deletedCount++;
306
+ }
307
+ }
308
+ return createSuccess(deletedCount);
309
+ }
310
+ catch (error) {
311
+ return createFailure(createA2ATaskStorageError('delete-by-context', 'redis', undefined, error));
312
+ }
313
+ },
314
+ cleanupExpiredTasks: async () => {
315
+ try {
316
+ // Redis automatically handles TTL expiration, but we can clean up orphaned indices
317
+ const pattern = `${keyPrefix}task:*`;
318
+ const taskKeys = await redisClient.keys(pattern);
319
+ let cleanedCount = 0;
320
+ for (const taskKey of taskKeys) {
321
+ const exists = await redisClient.exists(taskKey);
322
+ if (!exists) {
323
+ // This shouldn't happen with Redis TTL, but clean up if needed
324
+ const taskId = taskKey.replace(`${keyPrefix}task:`, '');
325
+ const deleteResult = await providerImpl.deleteTask(taskId);
326
+ if (deleteResult.success && deleteResult.data) {
327
+ cleanedCount++;
328
+ }
329
+ }
330
+ }
331
+ return createSuccess(cleanedCount);
332
+ }
333
+ catch (error) {
334
+ return createFailure(createA2ATaskStorageError('cleanup', 'redis', undefined, error));
335
+ }
336
+ },
337
+ getTaskStats: async (contextId) => {
338
+ try {
339
+ const tasksByState = {
340
+ submitted: 0,
341
+ working: 0,
342
+ 'input-required': 0,
343
+ completed: 0,
344
+ canceled: 0,
345
+ failed: 0,
346
+ rejected: 0,
347
+ 'auth-required': 0,
348
+ unknown: 0
349
+ };
350
+ let totalTasks = 0;
351
+ let oldestTask;
352
+ let newestTask;
353
+ if (contextId) {
354
+ // Get tasks for specific context
355
+ const contextIndexKey = getContextIndexKey(contextId);
356
+ const taskIds = await redisClient.smembers(contextIndexKey);
357
+ for (const taskId of taskIds) {
358
+ const taskKey = getTaskKey(taskId);
359
+ const exists = await redisClient.exists(taskKey);
360
+ if (!exists)
361
+ continue;
362
+ const hash = await redisClient.hgetall(taskKey);
363
+ if (!hash)
364
+ continue;
365
+ totalTasks++;
366
+ const state = hash.state;
367
+ if (state) {
368
+ tasksByState[state]++;
369
+ }
370
+ const createdAt = new Date(hash.createdAt);
371
+ if (!oldestTask || createdAt < oldestTask) {
372
+ oldestTask = createdAt;
373
+ }
374
+ if (!newestTask || createdAt > newestTask) {
375
+ newestTask = createdAt;
376
+ }
377
+ }
378
+ }
379
+ else {
380
+ // Get global stats from Redis hash
381
+ const statsKey = getStatsKey();
382
+ const stats = await redisClient.hgetall(statsKey);
383
+ totalTasks = parseInt(stats.totalTasks || '0');
384
+ // Get state counts
385
+ for (const state of Object.keys(tasksByState)) {
386
+ tasksByState[state] = parseInt(stats[`state:${state}`] || '0');
387
+ }
388
+ // For global stats, we'd need to scan all tasks to get date ranges
389
+ // This is expensive, so we'll leave them undefined for now
390
+ }
391
+ return createSuccess({
392
+ totalTasks,
393
+ tasksByState,
394
+ oldestTask,
395
+ newestTask
396
+ });
397
+ }
398
+ catch (error) {
399
+ return createFailure(createA2ATaskStorageError('stats', 'redis', undefined, error));
400
+ }
401
+ },
402
+ healthCheck: async () => {
403
+ try {
404
+ const startTime = Date.now();
405
+ // Simple ping to Redis
406
+ await redisClient.ping();
407
+ const latencyMs = Date.now() - startTime;
408
+ return createSuccess({
409
+ healthy: true,
410
+ latencyMs
411
+ });
412
+ }
413
+ catch (error) {
414
+ return createSuccess({
415
+ healthy: false,
416
+ error: error.message
417
+ });
418
+ }
419
+ },
420
+ close: async () => {
421
+ try {
422
+ // Redis client cleanup is typically handled externally
423
+ // We don't close the client here as it might be shared
424
+ return createSuccess(undefined);
425
+ }
426
+ catch (error) {
427
+ return createFailure(createA2ATaskStorageError('close', 'redis', undefined, error));
428
+ }
429
+ }
430
+ };
431
+ // Set up the provider variable
432
+ Object.assign(provider, providerImpl);
433
+ return provider;
434
+ };
435
+ //# sourceMappingURL=redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../src/a2a/memory/providers/redis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * A2A Task Serialization Functions for JAF
3
+ * Pure functions for serializing/deserializing A2A tasks for storage
4
+ */
5
+ import { A2ATask } from '../types.js';
6
+ import { A2AResult } from './types.js';
7
+ export interface A2ATaskSerialized {
8
+ readonly taskId: string;
9
+ readonly contextId: string;
10
+ readonly state: string;
11
+ readonly taskData: string;
12
+ readonly statusMessage?: string;
13
+ readonly createdAt: string;
14
+ readonly updatedAt: string;
15
+ readonly metadata?: string;
16
+ }
17
+ /**
18
+ * Pure function to serialize an A2A task for storage
19
+ */
20
+ export declare const serializeA2ATask: (task: A2ATask, metadata?: Record<string, any>) => A2AResult<A2ATaskSerialized>;
21
+ /**
22
+ * Pure function to deserialize an A2A task from storage
23
+ */
24
+ export declare const deserializeA2ATask: (stored: A2ATaskSerialized) => A2AResult<A2ATask>;
25
+ /**
26
+ * Pure function to create a minimal task representation for indexing
27
+ */
28
+ export declare const createTaskIndex: (task: A2ATask) => A2AResult<{
29
+ readonly taskId: string;
30
+ readonly contextId: string;
31
+ readonly state: string;
32
+ readonly timestamp: string;
33
+ readonly hasHistory: boolean;
34
+ readonly hasArtifacts: boolean;
35
+ }>;
36
+ /**
37
+ * Pure function to extract searchable text from a task for full-text search
38
+ */
39
+ export declare const extractTaskSearchText: (task: A2ATask) => A2AResult<string>;
40
+ /**
41
+ * Pure function to validate task data integrity
42
+ */
43
+ export declare const validateTaskIntegrity: (task: A2ATask) => A2AResult<true>;
44
+ /**
45
+ * Pure function to create a deep copy of a task (for immutability)
46
+ */
47
+ export declare const cloneTask: (task: A2ATask) => A2AResult<A2ATask>;
48
+ /**
49
+ * Pure function to sanitize task data for storage
50
+ * Removes any potentially dangerous or invalid data
51
+ */
52
+ export declare const sanitizeTask: (task: A2ATask) => A2AResult<A2ATask>;
53
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/a2a/memory/serialization.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAA2B,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,SAAS,EAA2D,MAAM,YAAY,CAAC;AAGhG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,OAAO,EACb,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC7B,SAAS,CAAC,iBAAiB,CA+B7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,iBAAiB,KACxB,SAAS,CAAC,OAAO,CAkBnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,OAAO,KAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,CAeA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,OAAO,KAAG,SAAS,CAAC,MAAM,CAoCrE,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,OAAO,KAAG,SAAS,CAAC,IAAI,CA2EnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,SAAS,CAAC,OAAO,CAU1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,KAAG,SAAS,CAAC,OAAO,CA4C7D,CAAC"}