@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,232 @@
1
+ /**
2
+ * Example Weather Agent using pure functional A2A integration
3
+ * Demonstrates how to create A2A-compatible agents with JAF
4
+ */
5
+ import { z } from 'zod';
6
+ import { createA2AAgent, createA2ATool } from '../agent.js';
7
+ // Pure function to create weather lookup tool
8
+ const createWeatherTool = () => createA2ATool({
9
+ name: 'get_weather',
10
+ description: 'Get current weather information for any location',
11
+ parameters: z.object({
12
+ location: z.string().describe('City name, coordinates, or address'),
13
+ units: z.enum(['celsius', 'fahrenheit']).default('celsius').describe('Temperature units'),
14
+ includeHourly: z.boolean().default(false).describe('Include hourly forecast')
15
+ }),
16
+ execute: async ({ location, units, includeHourly }) => {
17
+ // Simulate weather API call
18
+ const weatherData = {
19
+ location,
20
+ current: {
21
+ temperature: units === 'celsius' ? 22 : 72,
22
+ condition: 'sunny',
23
+ humidity: 45,
24
+ windSpeed: units === 'celsius' ? '15 km/h' : '9 mph'
25
+ },
26
+ forecast: includeHourly ? [
27
+ { time: '12:00', temp: units === 'celsius' ? 24 : 75, condition: 'sunny' },
28
+ { time: '13:00', temp: units === 'celsius' ? 26 : 79, condition: 'partly cloudy' },
29
+ { time: '14:00', temp: units === 'celsius' ? 25 : 77, condition: 'cloudy' }
30
+ ] : undefined
31
+ };
32
+ let response = `Weather in ${location}:\n`;
33
+ response += `🌡️ Temperature: ${weatherData.current.temperature}°${units === 'celsius' ? 'C' : 'F'}\n`;
34
+ response += `☀️ Condition: ${weatherData.current.condition}\n`;
35
+ response += `💧 Humidity: ${weatherData.current.humidity}%\n`;
36
+ response += `💨 Wind: ${weatherData.current.windSpeed}`;
37
+ if (includeHourly && weatherData.forecast) {
38
+ response += '\n\nHourly Forecast:\n';
39
+ weatherData.forecast.forEach(hour => {
40
+ response += `${hour.time}: ${hour.temp}°${units === 'celsius' ? 'C' : 'F'} - ${hour.condition}\n`;
41
+ });
42
+ }
43
+ return response;
44
+ }
45
+ });
46
+ // Pure function to create travel planning form tool
47
+ const createTravelFormTool = () => createA2ATool({
48
+ name: 'create_travel_form',
49
+ description: 'Create a travel planning form based on weather information',
50
+ parameters: z.object({
51
+ destination: z.string().optional().describe('Travel destination'),
52
+ dates: z.string().optional().describe('Travel dates'),
53
+ budget: z.string().optional().describe('Budget amount'),
54
+ weatherContext: z.string().optional().describe('Current weather context')
55
+ }),
56
+ execute: async ({ destination, dates, budget, weatherContext }) => {
57
+ const formId = `travel_${Date.now()}`;
58
+ return {
59
+ form_id: formId,
60
+ destination: destination || '<destination>',
61
+ dates: dates || '<travel dates>',
62
+ budget: budget || '<budget amount>',
63
+ weather_context: weatherContext || 'No weather context provided'
64
+ };
65
+ }
66
+ });
67
+ // Pure function to create form return tool
68
+ const createReturnFormTool = () => createA2ATool({
69
+ name: 'return_form',
70
+ description: 'Return a structured form for user input',
71
+ parameters: z.object({
72
+ formData: z.record(z.any()).describe('Form data structure'),
73
+ instructions: z.string().optional().describe('Instructions for the user')
74
+ }),
75
+ execute: async ({ formData, instructions }, context) => {
76
+ const newContext = {
77
+ actions: {
78
+ requiresInput: true,
79
+ skipSummarization: true,
80
+ escalate: false
81
+ },
82
+ metadata: context?.metadata || {}
83
+ };
84
+ const formSchema = {
85
+ type: 'form',
86
+ form: {
87
+ type: 'object',
88
+ properties: {
89
+ destination: {
90
+ type: 'string',
91
+ description: 'Travel destination',
92
+ title: 'Destination'
93
+ },
94
+ dates: {
95
+ type: 'string',
96
+ description: 'Travel dates (e.g., "2024-03-15 to 2024-03-22")',
97
+ title: 'Travel Dates'
98
+ },
99
+ budget: {
100
+ type: 'number',
101
+ description: 'Budget in USD',
102
+ title: 'Budget ($)'
103
+ },
104
+ weather_context: {
105
+ type: 'string',
106
+ description: 'Weather information context',
107
+ title: 'Weather Context',
108
+ readOnly: true
109
+ }
110
+ },
111
+ required: ['destination', 'dates', 'budget']
112
+ },
113
+ form_data: formData,
114
+ instructions: instructions || 'Please fill out the travel planning form below.'
115
+ };
116
+ return {
117
+ result: JSON.stringify(formSchema),
118
+ context: newContext
119
+ };
120
+ }
121
+ });
122
+ // Pure function to create trip planning tool
123
+ const createTripPlanningTool = () => createA2ATool({
124
+ name: 'plan_trip',
125
+ description: 'Create a trip plan based on form data and weather',
126
+ parameters: z.object({
127
+ formId: z.string().describe('Form ID reference'),
128
+ destination: z.string().describe('Travel destination'),
129
+ dates: z.string().describe('Travel dates'),
130
+ budget: z.number().describe('Budget amount'),
131
+ weatherContext: z.string().optional().describe('Weather context')
132
+ }),
133
+ execute: async ({ formId, destination, dates, budget, weatherContext }) => {
134
+ // Simulate trip planning logic
135
+ const plan = {
136
+ form_id: formId,
137
+ status: 'approved',
138
+ trip_plan: {
139
+ destination,
140
+ dates,
141
+ budget,
142
+ recommendations: [
143
+ '🏨 Hotel recommendations based on weather',
144
+ '🎯 Activities suitable for current conditions',
145
+ '🧳 Packing suggestions for the weather',
146
+ '🚗 Transportation options',
147
+ '🍽️ Restaurant recommendations'
148
+ ],
149
+ weather_advice: weatherContext || 'Check weather before departure',
150
+ estimated_cost: Math.min(budget * 0.9, budget - 100),
151
+ created_at: new Date().toISOString()
152
+ }
153
+ };
154
+ return `✅ Trip Plan Created!\n\n` +
155
+ `📍 Destination: ${destination}\n` +
156
+ `📅 Dates: ${dates}\n` +
157
+ `💰 Budget: $${budget}\n\n` +
158
+ `🌤️ Weather Advice: ${plan.trip_plan.weather_advice}\n\n` +
159
+ `📋 Recommendations:\n` +
160
+ plan.trip_plan.recommendations.map(rec => ` ${rec}`).join('\n') + '\n\n' +
161
+ `💵 Estimated Cost: $${plan.trip_plan.estimated_cost}\n` +
162
+ `📋 Plan ID: ${formId}`;
163
+ }
164
+ });
165
+ // Pure function to create weather assistance tool
166
+ const createWeatherAssistanceTool = () => createA2ATool({
167
+ name: 'provide_weather_assistance',
168
+ description: 'Provide general weather assistance and guidance',
169
+ parameters: z.object({
170
+ query: z.string().describe('User\'s weather-related question'),
171
+ context: z.string().optional().describe('Additional context')
172
+ }),
173
+ execute: async ({ query, context }) => {
174
+ const lowerQuery = query.toLowerCase();
175
+ if (lowerQuery.includes('travel') || lowerQuery.includes('trip') || lowerQuery.includes('vacation')) {
176
+ return 'I can help you plan weather-appropriate travel! I can check current weather conditions and help you create a travel plan. Would you like me to check the weather for your destination and create a travel planning form?';
177
+ }
178
+ if (lowerQuery.includes('what') && (lowerQuery.includes('weather') || lowerQuery.includes('temperature'))) {
179
+ return 'I can look up current weather conditions for any location. Just tell me the city name, address, or coordinates and I\'ll get the latest weather information including temperature, conditions, humidity, and wind speed.';
180
+ }
181
+ if (lowerQuery.includes('forecast') || lowerQuery.includes('hourly')) {
182
+ return 'I can provide hourly weather forecasts to help you plan your day. Just specify the location and I\'ll include hourly predictions in the weather report.';
183
+ }
184
+ return 'I\'m your weather assistant! I can:\n\n' +
185
+ '🌤️ Get current weather for any location\n' +
186
+ '📊 Provide hourly forecasts\n' +
187
+ '✈️ Help plan weather-appropriate travel\n' +
188
+ '📋 Create travel planning forms\n\n' +
189
+ 'Just ask me about weather conditions for any city, or let me know if you\'re planning a trip!';
190
+ }
191
+ });
192
+ // Pure function to create the complete weather agent
193
+ export const createWeatherAgent = () => createA2AAgent({
194
+ name: 'weather_assistant',
195
+ description: 'Weather information and travel planning assistant',
196
+ supportedContentTypes: ['text/plain', 'application/json'],
197
+ instruction: `You are a helpful weather assistant with travel planning capabilities.
198
+
199
+ When users ask about weather:
200
+ 1. Use get_weather() to fetch current conditions for any location
201
+ 2. Include hourly forecasts if they ask for detailed information
202
+ 3. Provide helpful context about what the weather means for activities
203
+
204
+ When users mention travel or trip planning:
205
+ 1. Get weather information for their destination first
206
+ 2. Use create_travel_form() to gather their travel details
207
+ 3. Use return_form() to present the form for user input
208
+ 4. Once they complete the form, use plan_trip() to create recommendations
209
+
210
+ For general questions, use provide_weather_assistance() to offer guidance.
211
+
212
+ Always be helpful, accurate, and consider how weather impacts daily activities and travel plans.`,
213
+ tools: [
214
+ createWeatherTool(),
215
+ createTravelFormTool(),
216
+ createReturnFormTool(),
217
+ createTripPlanningTool(),
218
+ createWeatherAssistanceTool()
219
+ ]
220
+ });
221
+ // Pure function to get processing message for weather agent
222
+ export const getWeatherAgentProcessingMessage = () => 'Looking up weather information and processing your request...';
223
+ // Example usage data for testing
224
+ export const weatherAgentExamples = [
225
+ 'What\'s the weather like in Tokyo?',
226
+ 'I\'m planning a trip to Paris next week, what should I expect?',
227
+ 'Get weather for New York with hourly forecast',
228
+ 'Help me plan a vacation to Barcelona',
229
+ 'What\'s the temperature in London in Fahrenheit?',
230
+ 'I need weather information for my business trip to San Francisco'
231
+ ];
232
+ //# sourceMappingURL=weather-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weather-agent.js","sourceRoot":"","sources":["../../../src/a2a/examples/weather-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,8CAA8C;AAC9C,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IAC5C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,kDAAkD;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC9E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE;QACpD,4BAA4B;QAC5B,MAAM,WAAW,GAAG;YAClB,QAAQ;YACR,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC1C,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;aACrD;YACD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;gBACxB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;gBAC1E,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBAClF,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;aAC5E,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;QAEF,IAAI,QAAQ,GAAG,cAAc,QAAQ,KAAK,CAAC;QAC3C,QAAQ,IAAI,oBAAoB,WAAW,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvG,QAAQ,IAAI,iBAAiB,WAAW,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;QAC/D,QAAQ,IAAI,gBAAgB,WAAW,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC;QAC9D,QAAQ,IAAI,YAAY,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAExD,IAAI,aAAa,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1C,QAAQ,IAAI,wBAAwB,CAAC;YACrC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAClC,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC;YACpG,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC,CAAC;AAEH,oDAAoD;AACpD,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IAC/C,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,4DAA4D;IACzE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACvD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC1E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QAChE,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,WAAW,IAAI,eAAe;YAC3C,KAAK,EAAE,KAAK,IAAI,gBAAgB;YAChC,MAAM,EAAE,MAAM,IAAI,iBAAiB;YACnC,eAAe,EAAE,cAAc,IAAI,6BAA6B;SACjE,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IAC/C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,yCAAyC;IACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC1E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAqB,EAA0B,EAAE;QAC3F,MAAM,UAAU,GAAgB;YAC9B,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,KAAK;aAChB;YACD,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE;SAClC,CAAC;QAEF,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oBAAoB;wBACjC,KAAK,EAAE,aAAa;qBACrB;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iDAAiD;wBAC9D,KAAK,EAAE,cAAc;qBACtB;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,eAAe;wBAC5B,KAAK,EAAE,YAAY;qBACpB;oBACD,eAAe,EAAE;wBACf,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6BAA6B;wBAC1C,KAAK,EAAE,iBAAiB;wBACxB,QAAQ,EAAE,IAAI;qBACf;iBACF;gBACD,QAAQ,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC7C;YACD,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,YAAY,IAAI,iDAAiD;SAChF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAClC,OAAO,EAAE,UAAU;SACpB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IACjD,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,mDAAmD;IAChE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAClE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QACxE,+BAA+B;QAC/B,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE;gBACT,WAAW;gBACX,KAAK;gBACL,MAAM;gBACN,eAAe,EAAE;oBACf,2CAA2C;oBAC3C,+CAA+C;oBAC/C,wCAAwC;oBACxC,2BAA2B;oBAC3B,gCAAgC;iBACjC;gBACD,cAAc,EAAE,cAAc,IAAI,gCAAgC;gBAClE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;gBACpD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC;QAEF,OAAO,0BAA0B;YAC1B,mBAAmB,WAAW,IAAI;YAClC,aAAa,KAAK,IAAI;YACtB,eAAe,MAAM,MAAM;YAC3B,uBAAuB,IAAI,CAAC,SAAS,CAAC,cAAc,MAAM;YAC1D,uBAAuB;YACvB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM;YACzE,uBAAuB,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI;YACxD,eAAe,MAAM,EAAE,CAAC;IACjC,CAAC;CACF,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,2BAA2B,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IACtD,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,iDAAiD;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC9D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC9D,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpG,OAAO,0NAA0N,CAAC;QACpO,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YAC1G,OAAO,0NAA0N,CAAC;QACpO,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,OAAO,yJAAyJ,CAAC;QACnK,CAAC;QAED,OAAO,yCAAyC;YACzC,4CAA4C;YAC5C,+BAA+B;YAC/B,2CAA2C;YAC3C,qCAAqC;YACrC,+FAA+F,CAAC;IACzG,CAAC;CACF,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC;IACrD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mDAAmD;IAChE,qBAAqB,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAEzD,WAAW,EAAE;;;;;;;;;;;;;;;iGAekF;IAE/F,KAAK,EAAE;QACL,iBAAiB,EAAE;QACnB,oBAAoB,EAAE;QACtB,oBAAoB,EAAE;QACtB,sBAAsB,EAAE;QACxB,2BAA2B,EAAE;KAC9B;CACF,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,EAAE,CACnD,+DAA+D,CAAC;AAElE,iCAAiC;AACjC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oCAAoC;IACpC,gEAAgE;IAChE,+CAA+C;IAC/C,sCAAsC;IACtC,kDAAkD;IAClD,kEAAkE;CAC1D,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Pure functional A2A executor
3
+ * Handles A2A protocol execution without classes or mutable state
4
+ */
5
+ import type { A2AAgent, A2ATask, A2AMessage, A2AStreamEvent } from './types.js';
6
+ import { A2ATaskProvider } from './memory/types.js';
7
+ export type A2AExecutionContext = {
8
+ readonly message: A2AMessage;
9
+ readonly currentTask?: A2ATask;
10
+ readonly sessionId: string;
11
+ readonly metadata?: Readonly<Record<string, any>>;
12
+ };
13
+ export type A2AExecutionContextWithProvider = {
14
+ readonly message: A2AMessage;
15
+ readonly currentTask?: A2ATask;
16
+ readonly sessionId: string;
17
+ readonly metadata?: Readonly<Record<string, any>>;
18
+ readonly taskProvider: A2ATaskProvider;
19
+ };
20
+ export type A2AExecutionEvent = {
21
+ readonly type: 'task_created' | 'status_update' | 'artifact_added' | 'completed' | 'failed';
22
+ readonly data: any;
23
+ readonly timestamp: string;
24
+ };
25
+ export type A2AExecutionResult = {
26
+ readonly events: readonly A2AExecutionEvent[];
27
+ readonly finalTask?: A2ATask;
28
+ readonly error?: string;
29
+ };
30
+ export declare const executeA2AAgent: (context: A2AExecutionContext, agent: A2AAgent, modelProvider: any) => Promise<A2AExecutionResult>;
31
+ export declare const convertToA2AStreamEvents: (events: readonly A2AExecutionEvent[], taskId: string, contextId: string) => AsyncGenerator<A2AStreamEvent, void, unknown>;
32
+ export declare const executeA2AAgentWithStreaming: (context: A2AExecutionContext, agent: A2AAgent, modelProvider: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
33
+ /**
34
+ * Execute A2A agent with persistent task storage
35
+ * Pure function that integrates with A2A task providers
36
+ */
37
+ export declare const executeA2AAgentWithProvider: (context: A2AExecutionContextWithProvider, agent: A2AAgent, modelProvider: any) => Promise<A2AExecutionResult>;
38
+ /**
39
+ * Execute A2A agent with streaming and persistent task storage
40
+ * Pure async generator function that integrates with A2A task providers
41
+ */
42
+ export declare const executeA2AAgentWithProviderStreaming: (context: A2AExecutionContextWithProvider, agent: A2AAgent, modelProvider: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
43
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/a2a/executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,UAAU,EAEV,cAAc,EACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5F,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,EAC5B,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,OAAO,CAAC,kBAAkB,CA2C5B,CAAC;AA+JF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,SAAS,iBAAiB,EAAE,EACpC,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CA6D9C,CAAC;AAGF,eAAO,MAAM,4BAA4B,GACvC,SAAS,mBAAmB,EAC5B,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAgG9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,+BAA+B,EACxC,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,OAAO,CAAC,kBAAkB,CA8E5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC,GAC/C,SAAS,+BAA+B,EACxC,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAoI9C,CAAC"}