@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,250 @@
1
+ /**
2
+ * Pure functional Agent Card generation
3
+ * Transforms JAF agents into A2A Agent Cards
4
+ */
5
+ // Pure function to generate Agent Card from A2A agents
6
+ export const generateAgentCard = (config, agents, baseUrl = 'http://localhost:3000') => ({
7
+ protocolVersion: '0.3.0',
8
+ name: config.name,
9
+ description: config.description,
10
+ url: `${baseUrl}/a2a`,
11
+ preferredTransport: 'JSONRPC',
12
+ version: config.version,
13
+ provider: config.provider,
14
+ capabilities: {
15
+ streaming: true,
16
+ pushNotifications: false,
17
+ stateTransitionHistory: true
18
+ },
19
+ defaultInputModes: ['text/plain', 'application/json'],
20
+ defaultOutputModes: ['text/plain', 'application/json'],
21
+ skills: generateSkillsFromAgents(agents),
22
+ securitySchemes: generateSecuritySchemes(),
23
+ security: generateSecurityRequirements()
24
+ });
25
+ // Pure function to generate skills from A2A agents
26
+ export const generateSkillsFromAgents = (agents) => {
27
+ const skills = [];
28
+ agents.forEach((agent, agentName) => {
29
+ // Create a main skill for the agent
30
+ const mainSkill = {
31
+ id: `${agentName}-main`,
32
+ name: agent.name,
33
+ description: agent.description,
34
+ tags: ['general', ...agent.tools.map(tool => tool.name)],
35
+ examples: generateExamplesForAgent(agent),
36
+ inputModes: agent.supportedContentTypes,
37
+ outputModes: agent.supportedContentTypes
38
+ };
39
+ skills.push(mainSkill);
40
+ // Create individual skills for each tool
41
+ agent.tools.forEach(tool => {
42
+ const toolSkill = {
43
+ id: `${agentName}-${tool.name}`,
44
+ name: tool.name,
45
+ description: tool.description,
46
+ tags: [tool.name, 'tool', agentName],
47
+ examples: generateExamplesForTool(tool),
48
+ inputModes: ['text/plain', 'application/json'],
49
+ outputModes: ['text/plain', 'application/json']
50
+ };
51
+ skills.push(toolSkill);
52
+ });
53
+ });
54
+ return skills;
55
+ };
56
+ // Pure function to generate examples for an agent
57
+ export const generateExamplesForAgent = (agent) => {
58
+ const baseExamples = [
59
+ `Ask ${agent.name} for help`,
60
+ `What can ${agent.name} do?`
61
+ ];
62
+ // Add tool-specific examples
63
+ const toolExamples = agent.tools.slice(0, 2).map(tool => `Use ${tool.name} to ${tool.description.toLowerCase()}`);
64
+ return [...baseExamples, ...toolExamples];
65
+ };
66
+ // Pure function to generate examples for a tool
67
+ export const generateExamplesForTool = (tool) => [
68
+ `Use ${tool.name}`,
69
+ tool.description,
70
+ `Help me with ${tool.name.replace(/_/g, ' ')}`
71
+ ];
72
+ // Pure function to generate security schemes
73
+ export const generateSecuritySchemes = () => ({
74
+ bearerAuth: {
75
+ type: 'http',
76
+ scheme: 'bearer',
77
+ description: 'Bearer token authentication'
78
+ },
79
+ apiKey: {
80
+ type: 'apiKey',
81
+ in: 'header',
82
+ name: 'X-API-Key',
83
+ description: 'API key authentication'
84
+ }
85
+ });
86
+ // Pure function to generate security requirements
87
+ export const generateSecurityRequirements = () => [
88
+ // No authentication required by default
89
+ {},
90
+ // Optional bearer auth
91
+ { bearerAuth: [] },
92
+ // Optional API key
93
+ { apiKey: [] }
94
+ ];
95
+ // Pure function to generate Agent Card for a specific agent
96
+ export const generateAgentCardForAgent = (agentName, agent, config = {}, baseUrl = 'http://localhost:3000') => {
97
+ const agentMap = new Map([[agentName, agent]]);
98
+ const cardConfig = {
99
+ name: config.name || agent.name,
100
+ description: config.description || agent.description,
101
+ version: config.version || '1.0.0',
102
+ provider: config.provider || {
103
+ organization: 'JAF Agent',
104
+ url: 'https://functional-agent-framework.com'
105
+ }
106
+ };
107
+ return generateAgentCard(cardConfig, agentMap, baseUrl);
108
+ };
109
+ // Pure function to validate Agent Card
110
+ export const validateAgentCard = (card) => {
111
+ const errors = [];
112
+ // Required fields validation
113
+ if (!card.name?.trim()) {
114
+ errors.push('Agent card name is required');
115
+ }
116
+ if (!card.description?.trim()) {
117
+ errors.push('Agent card description is required');
118
+ }
119
+ if (!card.url?.trim()) {
120
+ errors.push('Agent card URL is required');
121
+ }
122
+ if (!card.version?.trim()) {
123
+ errors.push('Agent card version is required');
124
+ }
125
+ if (!card.protocolVersion?.trim()) {
126
+ errors.push('Protocol version is required');
127
+ }
128
+ // Skills validation
129
+ if (!card.skills || card.skills.length === 0) {
130
+ errors.push('At least one skill is required');
131
+ }
132
+ else {
133
+ card.skills.forEach((skill, index) => {
134
+ if (!skill.id?.trim()) {
135
+ errors.push(`Skill ${index}: ID is required`);
136
+ }
137
+ if (!skill.name?.trim()) {
138
+ errors.push(`Skill ${index}: Name is required`);
139
+ }
140
+ if (!skill.description?.trim()) {
141
+ errors.push(`Skill ${index}: Description is required`);
142
+ }
143
+ if (!skill.tags || skill.tags.length === 0) {
144
+ errors.push(`Skill ${index}: At least one tag is required`);
145
+ }
146
+ });
147
+ }
148
+ // Input/Output modes validation
149
+ if (!card.defaultInputModes || card.defaultInputModes.length === 0) {
150
+ errors.push('At least one default input mode is required');
151
+ }
152
+ if (!card.defaultOutputModes || card.defaultOutputModes.length === 0) {
153
+ errors.push('At least one default output mode is required');
154
+ }
155
+ // URL validation
156
+ if (card.url && !isValidUrl(card.url)) {
157
+ errors.push('Invalid URL format');
158
+ }
159
+ return {
160
+ isValid: errors.length === 0,
161
+ errors
162
+ };
163
+ };
164
+ // Pure helper function to validate URL
165
+ const isValidUrl = (url) => {
166
+ try {
167
+ new URL(url);
168
+ return true;
169
+ }
170
+ catch {
171
+ return false;
172
+ }
173
+ };
174
+ // Pure function to create minimal Agent Card
175
+ export const createMinimalAgentCard = (name, description, url = 'http://localhost:3000/a2a') => ({
176
+ protocolVersion: '0.3.0',
177
+ name,
178
+ description,
179
+ url,
180
+ preferredTransport: 'JSONRPC',
181
+ version: '1.0.0',
182
+ capabilities: {
183
+ streaming: true,
184
+ pushNotifications: false,
185
+ stateTransitionHistory: false
186
+ },
187
+ defaultInputModes: ['text/plain'],
188
+ defaultOutputModes: ['text/plain'],
189
+ skills: [{
190
+ id: 'general',
191
+ name: 'General Assistant',
192
+ description: 'General purpose assistance',
193
+ tags: ['general', 'assistant'],
194
+ examples: ['How can I help you?']
195
+ }]
196
+ });
197
+ // Pure function to merge multiple Agent Cards
198
+ export const mergeAgentCards = (baseCard, ...additionalCards) => {
199
+ const mergedSkills = [
200
+ ...baseCard.skills,
201
+ ...additionalCards.flatMap(card => card.skills)
202
+ ];
203
+ // Remove duplicate skills by ID
204
+ const uniqueSkills = mergedSkills.filter((skill, index, arr) => arr.findIndex(s => s.id === skill.id) === index);
205
+ const mergedInputModes = Array.from(new Set([
206
+ ...baseCard.defaultInputModes,
207
+ ...additionalCards.flatMap(card => card.defaultInputModes)
208
+ ]));
209
+ const mergedOutputModes = Array.from(new Set([
210
+ ...baseCard.defaultOutputModes,
211
+ ...additionalCards.flatMap(card => card.defaultOutputModes)
212
+ ]));
213
+ return {
214
+ ...baseCard,
215
+ skills: uniqueSkills,
216
+ defaultInputModes: mergedInputModes,
217
+ defaultOutputModes: mergedOutputModes,
218
+ capabilities: {
219
+ streaming: baseCard.capabilities.streaming || additionalCards.some(card => card.capabilities.streaming),
220
+ pushNotifications: baseCard.capabilities.pushNotifications || additionalCards.some(card => card.capabilities.pushNotifications),
221
+ stateTransitionHistory: baseCard.capabilities.stateTransitionHistory || additionalCards.some(card => card.capabilities.stateTransitionHistory)
222
+ }
223
+ };
224
+ };
225
+ // Pure function to create Agent Card from configuration
226
+ export const createAgentCardFromConfig = (config) => {
227
+ const baseUrl = config.baseUrl || 'http://localhost:3000';
228
+ return {
229
+ protocolVersion: '0.3.0',
230
+ name: config.name,
231
+ description: config.description,
232
+ url: `${baseUrl}/a2a`,
233
+ preferredTransport: 'JSONRPC',
234
+ version: config.version || '1.0.0',
235
+ provider: config.provider || {
236
+ organization: 'JAF Framework',
237
+ url: 'https://functional-agent-framework.com'
238
+ },
239
+ capabilities: {
240
+ streaming: true,
241
+ pushNotifications: false,
242
+ stateTransitionHistory: true,
243
+ ...config.capabilities
244
+ },
245
+ defaultInputModes: ['text/plain', 'application/json'],
246
+ defaultOutputModes: ['text/plain', 'application/json'],
247
+ skills: generateSkillsFromAgents(config.agents)
248
+ };
249
+ };
250
+ //# sourceMappingURL=agent-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../../src/a2a/agent-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Pure functional A2A agent creation utilities
3
+ * No classes, only pure functions and immutable data
4
+ */
5
+ import { z } from 'zod';
6
+ import type { A2AAgent, A2AAgentTool, ToolContext, A2AToolResult, AgentState, StreamEvent } from './types.js';
7
+ import { type RunState, type Message, type Agent, type Tool, type RunConfig } from '../core/types.js';
8
+ export declare const createA2AAgent: (config: {
9
+ readonly name: string;
10
+ readonly description: string;
11
+ readonly instruction: string;
12
+ readonly tools: readonly A2AAgentTool[];
13
+ readonly supportedContentTypes?: readonly string[];
14
+ }) => A2AAgent;
15
+ export declare const createA2ATool: <T>(config: {
16
+ readonly name: string;
17
+ readonly description: string;
18
+ readonly parameters: z.ZodType<T>;
19
+ readonly execute: (args: T, context?: ToolContext) => Promise<any | A2AToolResult>;
20
+ }) => A2AAgentTool;
21
+ export declare const getProcessingMessage: (agentName: string) => string;
22
+ export declare const createInitialAgentState: (sessionId: string) => AgentState;
23
+ export declare const addMessageToState: (state: AgentState, message: any) => AgentState;
24
+ export declare const updateStateFromRunResult: (state: AgentState, outcome: any) => AgentState;
25
+ export declare const createUserMessage: (text: string) => Message;
26
+ export declare const transformA2AAgentToJAF: (a2aAgent: A2AAgent) => Agent<any, string>;
27
+ export declare const transformA2AToolToJAF: (a2aTool: A2AAgentTool) => Tool<any, any>;
28
+ export declare const createRunConfigForA2AAgent: (a2aAgent: A2AAgent, modelProvider: any) => RunConfig<any>;
29
+ export declare const transformToRunState: (state: AgentState, agentName: string, context?: any) => RunState<any>;
30
+ export declare const processAgentQuery: (agent: A2AAgent, query: string, state: AgentState, modelProvider: any) => AsyncGenerator<StreamEvent, void, unknown>;
31
+ export declare const extractTextFromA2AMessage: (message: any) => string;
32
+ export declare const createA2ATextMessage: (text: string, contextId: string, taskId?: string) => any;
33
+ export declare const createA2ADataMessage: (data: Record<string, any>, contextId: string, taskId?: string) => any;
34
+ export declare const createA2ATask: (message: any, contextId?: string) => any;
35
+ export declare const updateA2ATaskStatus: (task: any, state: any, message?: any) => any;
36
+ export declare const addArtifactToA2ATask: (task: any, parts: readonly any[], name: string) => any;
37
+ export declare const completeA2ATask: (task: any, result?: any) => any;
38
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/a2a/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9G,OAAO,EAA8B,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlI,eAAO,MAAM,cAAc,GAAI,QAAQ;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD,KAAG,QAMF,CAAC;AAGH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,QAAQ;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC;CACpF,KAAG,YAKF,CAAC;AAGH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,WACR,CAAC;AAG/C,eAAO,MAAM,uBAAuB,GAAI,WAAW,MAAM,KAAG,UAM1D,CAAC;AAGH,eAAO,MAAM,iBAAiB,GAAI,OAAO,UAAU,EAAE,SAAS,GAAG,KAAG,UAIlE,CAAC;AAGH,eAAO,MAAM,wBAAwB,GAAI,OAAO,UAAU,EAAE,SAAS,GAAG,KAAG,UAIzE,CAAC;AAGH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OAG/C,CAAC;AAGH,eAAO,MAAM,sBAAsB,GAAI,UAAU,QAAQ,KAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAK3E,CAAC;AAGH,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY,KAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAyBzE,CAAC;AAGH,eAAO,MAAM,0BAA0B,GACrC,UAAU,QAAQ,EAClB,eAAe,GAAG,KACjB,SAAS,CAAC,GAAG,CAWf,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,EACjB,WAAW,MAAM,EACjB,UAAS,GAAQ,KAChB,QAAQ,CAAC,GAAG,CAOb,CAAC;AAGH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,QAAQ,EACf,OAAO,MAAM,EACb,OAAO,UAAU,EACjB,eAAe,GAAG,KACjB,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAsC3C,CAAC;AAGF,eAAO,MAAM,yBAAyB,GAAI,SAAS,GAAG,KAAG,MAOxD,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,GAQD,CAAC;AAGH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,GAQD,CAAC;AAGH,eAAO,MAAM,aAAa,GACxB,SAAS,GAAG,EACZ,YAAY,MAAM,KACjB,GAUD,CAAC;AAGH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,GAAG,EACT,OAAO,GAAG,EACV,UAAU,GAAG,KACZ,GAOD,CAAC;AAGH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,GAAG,EACT,OAAO,SAAS,GAAG,EAAE,EACrB,MAAM,MAAM,KACX,GAWD,CAAC;AAGH,eAAO,MAAM,eAAe,GAAI,MAAM,GAAG,EAAE,SAAS,GAAG,KAAG,GAiBxD,CAAC"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Pure functional A2A agent creation utilities
3
+ * No classes, only pure functions and immutable data
4
+ */
5
+ import { z } from 'zod';
6
+ import { run } from '../core/engine.js';
7
+ import { createRunId, createTraceId } from '../core/types.js';
8
+ // Pure function to create A2A compatible agent
9
+ export const createA2AAgent = (config) => ({
10
+ name: config.name,
11
+ description: config.description,
12
+ supportedContentTypes: config.supportedContentTypes || ['text/plain', 'application/json'],
13
+ instruction: config.instruction,
14
+ tools: config.tools
15
+ });
16
+ // Pure function to create A2A tool
17
+ export const createA2ATool = (config) => ({
18
+ name: config.name,
19
+ description: config.description,
20
+ parameters: config.parameters,
21
+ execute: config.execute
22
+ });
23
+ // Pure function to get processing message
24
+ export const getProcessingMessage = (agentName) => `${agentName} is processing your request...`;
25
+ // Pure function to create initial agent state
26
+ export const createInitialAgentState = (sessionId) => ({
27
+ sessionId,
28
+ messages: [],
29
+ context: {},
30
+ artifacts: [],
31
+ timestamp: new Date().toISOString()
32
+ });
33
+ // Pure function to add message to state
34
+ export const addMessageToState = (state, message) => ({
35
+ ...state,
36
+ messages: [...state.messages, message],
37
+ timestamp: new Date().toISOString()
38
+ });
39
+ // Pure function to update state from run result
40
+ export const updateStateFromRunResult = (state, outcome) => ({
41
+ ...state,
42
+ artifacts: outcome.artifacts ? [...state.artifacts, ...outcome.artifacts] : state.artifacts,
43
+ timestamp: new Date().toISOString()
44
+ });
45
+ // Pure function to create user message
46
+ export const createUserMessage = (text) => ({
47
+ role: 'user',
48
+ content: text
49
+ });
50
+ // Pure function to transform A2A agent to JAF agent
51
+ export const transformA2AAgentToJAF = (a2aAgent) => ({
52
+ name: a2aAgent.name,
53
+ instructions: () => a2aAgent.instruction,
54
+ tools: a2aAgent.tools.map(transformA2AToolToJAF),
55
+ outputCodec: z.string()
56
+ });
57
+ // Pure function to transform A2A tool to JAF tool
58
+ export const transformA2AToolToJAF = (a2aTool) => ({
59
+ schema: {
60
+ name: a2aTool.name,
61
+ description: a2aTool.description,
62
+ parameters: a2aTool.parameters
63
+ },
64
+ execute: async (args, context) => {
65
+ const toolContext = {
66
+ actions: {
67
+ requiresInput: false,
68
+ skipSummarization: false,
69
+ escalate: false
70
+ },
71
+ metadata: context || {}
72
+ };
73
+ const result = await a2aTool.execute(args, toolContext);
74
+ // Handle ToolResult format
75
+ if (typeof result === 'object' && result !== null && 'result' in result) {
76
+ return result.result;
77
+ }
78
+ return result;
79
+ }
80
+ });
81
+ // Pure function to create run configuration for A2A agent
82
+ export const createRunConfigForA2AAgent = (a2aAgent, modelProvider) => {
83
+ const jafAgent = transformA2AAgentToJAF(a2aAgent);
84
+ return {
85
+ agentRegistry: new Map([[a2aAgent.name, jafAgent]]),
86
+ modelProvider,
87
+ maxTurns: 10,
88
+ onEvent: (event) => {
89
+ console.log(`[A2A:${a2aAgent.name}] ${event.type}:`, event.data);
90
+ }
91
+ };
92
+ };
93
+ // Pure function to transform agent state to JAF run state
94
+ export const transformToRunState = (state, agentName, context = {}) => ({
95
+ runId: createRunId(`run_${Date.now()}`),
96
+ traceId: createTraceId(`trace_${Date.now()}`),
97
+ messages: state.messages,
98
+ currentAgentName: agentName,
99
+ context,
100
+ turnCount: 0
101
+ });
102
+ // Pure async generator function to process agent query
103
+ export const processAgentQuery = async function* (agent, query, state, modelProvider) {
104
+ // Transform query to JAF message format
105
+ const userMessage = createUserMessage(query);
106
+ const newState = addMessageToState(state, userMessage);
107
+ // Create JAF configuration
108
+ const runConfig = createRunConfigForA2AAgent(agent, modelProvider);
109
+ const runState = transformToRunState(newState, agent.name);
110
+ try {
111
+ // Execute JAF engine (pure function)
112
+ const result = await run(runState, runConfig);
113
+ if (result.outcome.status === 'completed') {
114
+ const finalState = updateStateFromRunResult(newState, result.outcome);
115
+ yield {
116
+ isTaskComplete: true,
117
+ content: result.outcome.output,
118
+ newState: finalState,
119
+ timestamp: new Date().toISOString()
120
+ };
121
+ }
122
+ else {
123
+ const finalState = updateStateFromRunResult(newState, result.outcome);
124
+ yield {
125
+ isTaskComplete: true,
126
+ content: `Error: ${JSON.stringify(result.outcome.error)}`,
127
+ newState: finalState,
128
+ timestamp: new Date().toISOString()
129
+ };
130
+ }
131
+ }
132
+ catch (error) {
133
+ yield {
134
+ isTaskComplete: true,
135
+ content: `Error: ${error instanceof Error ? error.message : String(error)}`,
136
+ newState,
137
+ timestamp: new Date().toISOString()
138
+ };
139
+ }
140
+ };
141
+ // Pure function to extract text from A2A message
142
+ export const extractTextFromA2AMessage = (message) => {
143
+ if (!message?.parts)
144
+ return '';
145
+ return message.parts
146
+ .filter((part) => part.kind === 'text')
147
+ .map((part) => part.text)
148
+ .join('\n');
149
+ };
150
+ // Pure function to create A2A text message
151
+ export const createA2ATextMessage = (text, contextId, taskId) => ({
152
+ role: 'agent',
153
+ parts: [{ kind: 'text', text }],
154
+ messageId: `msg_${Date.now()}`,
155
+ contextId,
156
+ taskId,
157
+ kind: 'message',
158
+ timestamp: new Date().toISOString()
159
+ });
160
+ // Pure function to create A2A data message
161
+ export const createA2ADataMessage = (data, contextId, taskId) => ({
162
+ role: 'agent',
163
+ parts: [{ kind: 'data', data }],
164
+ messageId: `msg_${Date.now()}`,
165
+ contextId,
166
+ taskId,
167
+ kind: 'message',
168
+ timestamp: new Date().toISOString()
169
+ });
170
+ // Pure function to create A2A task
171
+ export const createA2ATask = (message, contextId) => ({
172
+ id: `task_${Date.now()}`,
173
+ contextId: contextId || `ctx_${Date.now()}`,
174
+ status: {
175
+ state: 'submitted',
176
+ timestamp: new Date().toISOString()
177
+ },
178
+ history: [message],
179
+ artifacts: [],
180
+ kind: 'task'
181
+ });
182
+ // Pure function to update A2A task status
183
+ export const updateA2ATaskStatus = (task, state, message) => ({
184
+ ...task,
185
+ status: {
186
+ state,
187
+ message,
188
+ timestamp: new Date().toISOString()
189
+ }
190
+ });
191
+ // Pure function to add artifact to A2A task
192
+ export const addArtifactToA2ATask = (task, parts, name) => ({
193
+ ...task,
194
+ artifacts: [
195
+ ...task.artifacts,
196
+ {
197
+ artifactId: `artifact_${Date.now()}`,
198
+ name,
199
+ parts,
200
+ timestamp: new Date().toISOString()
201
+ }
202
+ ]
203
+ });
204
+ // Pure function to complete A2A task
205
+ export const completeA2ATask = (task, result) => ({
206
+ ...task,
207
+ status: {
208
+ state: 'completed',
209
+ timestamp: new Date().toISOString()
210
+ },
211
+ ...(result && {
212
+ artifacts: [
213
+ ...task.artifacts,
214
+ {
215
+ artifactId: `result_${Date.now()}`,
216
+ name: 'final_result',
217
+ parts: [{ kind: 'text', text: String(result) }],
218
+ timestamp: new Date().toISOString()
219
+ }
220
+ ]
221
+ })
222
+ });
223
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/a2a/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure functional A2A client
3
+ * All client operations are pure functions
4
+ */
5
+ import type { A2AClientConfig, A2AClientState, JSONRPCRequest, JSONRPCResponse, SendMessageRequest, SendStreamingMessageRequest, AgentCard, A2AStreamEvent } from './types.js';
6
+ export declare const createA2AClient: (baseUrl: string, config?: Partial<A2AClientConfig>) => A2AClientState;
7
+ export declare const createMessageRequest: (message: string, sessionId: string, configuration?: any) => SendMessageRequest;
8
+ export declare const createStreamingMessageRequest: (message: string, sessionId: string, configuration?: any) => SendStreamingMessageRequest;
9
+ export declare const sendA2ARequest: (client: A2AClientState, request: JSONRPCRequest) => Promise<JSONRPCResponse>;
10
+ export declare const sendMessage: (client: A2AClientState, message: string, configuration?: any) => Promise<string>;
11
+ export declare const streamMessage: (client: A2AClientState, message: string, configuration?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
12
+ export declare const getAgentCard: (client: A2AClientState) => Promise<AgentCard>;
13
+ export declare const discoverAgents: (baseUrl: string) => Promise<AgentCard>;
14
+ export declare const sendMessageToAgent: (client: A2AClientState, agentName: string, message: string, configuration?: any) => Promise<string>;
15
+ export declare const streamMessageToAgent: (client: A2AClientState, agentName: string, message: string, configuration?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
16
+ export declare const extractTextResponse: (result: any) => string;
17
+ export declare const checkA2AHealth: (client: A2AClientState) => Promise<{
18
+ status: string;
19
+ agents: string[];
20
+ timestamp: string;
21
+ }>;
22
+ export declare const getA2ACapabilities: (client: A2AClientState) => Promise<any>;
23
+ export declare const connectToA2AAgent: (baseUrl: string) => Promise<{
24
+ client: A2AClientState;
25
+ agentCard: AgentCard;
26
+ ask: (message: string, config?: any) => Promise<string>;
27
+ stream: (message: string, config?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
28
+ health: () => Promise<{
29
+ status: string;
30
+ agents: string[];
31
+ timestamp: string;
32
+ }>;
33
+ capabilities: () => Promise<any>;
34
+ }>;
35
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,SAAS,OAAO,CAAC,eAAe,CAAC,KAAG,cAMnF,CAAC;AAGH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,gBAAgB,GAAG,KAClB,kBAcD,CAAC;AAGH,eAAO,MAAM,6BAA6B,GACxC,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,gBAAgB,GAAG,KAClB,2BAcD,CAAC;AAyCH,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,EACtB,SAAS,cAAc,KACtB,OAAO,CAAC,eAAe,CAGzB,CAAC;AAGF,eAAO,MAAM,WAAW,GACtB,QAAQ,cAAc,EACtB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,OAAO,CAAC,MAAM,CAShB,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,QAAQ,cAAc,EACtB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAsE9C,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,QAAQ,cAAc,KACrB,OAAO,CAAC,SAAS,CAenB,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,KACd,OAAO,CAAC,SAAS,CAGnB,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,cAAc,EACtB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,OAAO,CAAC,MAAM,CAWhB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,cAAc,EACtB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAM9C,CAAC;AA6EF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,GAAG,KAAG,MAwDjD,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,KACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAejE,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,cAAc,KACrB,OAAO,CAAC,GAAG,CAeb,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAU,SAAS,MAAM;;;mBAOpC,MAAM,WAAW,GAAG;sBACjB,MAAM,WAAW,GAAG;;gBA9CrB,MAAM;gBAAU,MAAM,EAAE;mBAAa,MAAM;;;EAkD/D,CAAC"}