@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,220 @@
1
+ /**
2
+ * JAF ADK Layer - Content System
3
+ *
4
+ * Functional content and message handling utilities
5
+ */
6
+ // ========== Content Creation ==========
7
+ export const createContent = (role, text, metadata) => ({
8
+ role,
9
+ parts: [createTextPart(text)],
10
+ metadata
11
+ });
12
+ export const createUserMessage = (text, metadata) => createContent('user', text, metadata);
13
+ export const createModelMessage = (text, metadata) => createContent('model', text, metadata);
14
+ export const createSystemMessage = (text, metadata) => createContent('system', text, metadata);
15
+ // ========== Part Creation ==========
16
+ export const createTextPart = (text, metadata) => ({
17
+ type: 'text',
18
+ text,
19
+ metadata
20
+ });
21
+ export const createImagePart = (data, metadata) => ({
22
+ type: 'image',
23
+ data,
24
+ metadata
25
+ });
26
+ export const createAudioPart = (data, metadata) => ({
27
+ type: 'audio',
28
+ data,
29
+ metadata
30
+ });
31
+ export const createFunctionCallPart = (functionCall, metadata) => ({
32
+ type: 'function_call',
33
+ functionCall,
34
+ metadata
35
+ });
36
+ export const createFunctionResponsePart = (functionResponse, metadata) => ({
37
+ type: 'function_response',
38
+ functionResponse,
39
+ metadata
40
+ });
41
+ // ========== Function Call/Response Creation ==========
42
+ export const createFunctionCall = (id, name, args) => ({
43
+ id,
44
+ name,
45
+ args
46
+ });
47
+ export const createFunctionResponse = (id, name, response, success = true, error) => ({
48
+ id,
49
+ name,
50
+ response,
51
+ success,
52
+ error
53
+ });
54
+ // ========== Content Manipulation ==========
55
+ export const addPart = (content, part) => ({
56
+ ...content,
57
+ parts: [...content.parts, part]
58
+ });
59
+ export const addTextPart = (content, text) => addPart(content, createTextPart(text));
60
+ export const addFunctionCall = (content, functionCall) => addPart(content, createFunctionCallPart(functionCall));
61
+ export const addFunctionResponse = (content, functionResponse) => addPart(content, createFunctionResponsePart(functionResponse));
62
+ // ========== Content Query Functions ==========
63
+ export const getTextContent = (content) => {
64
+ return content.parts
65
+ .filter(part => part.type === 'text' && part.text)
66
+ .map(part => part.text)
67
+ .join('');
68
+ };
69
+ export const getFunctionCalls = (content) => {
70
+ return content.parts
71
+ .filter(part => part.type === 'function_call' && part.functionCall)
72
+ .map(part => part.functionCall)
73
+ .filter(Boolean);
74
+ };
75
+ export const getFunctionResponses = (content) => {
76
+ return content.parts
77
+ .filter(part => part.type === 'function_response' && part.functionResponse)
78
+ .map(part => part.functionResponse)
79
+ .filter(Boolean);
80
+ };
81
+ export const hasTextContent = (content) => {
82
+ return content.parts.some(part => part.type === 'text' && part.text);
83
+ };
84
+ export const hasFunctionCalls = (content) => {
85
+ return content.parts.some(part => part.type === 'function_call');
86
+ };
87
+ export const hasFunctionResponses = (content) => {
88
+ return content.parts.some(part => part.type === 'function_response');
89
+ };
90
+ // ========== Content Conversion ==========
91
+ export const contentToString = (content) => {
92
+ const textContent = getTextContent(content);
93
+ const functionCalls = getFunctionCalls(content);
94
+ const functionResponses = getFunctionResponses(content);
95
+ let result = textContent;
96
+ if (functionCalls.length > 0) {
97
+ const callsStr = functionCalls
98
+ .map(call => `[FUNCTION_CALL: ${call.name}(${JSON.stringify(call.args)})]`)
99
+ .join(' ');
100
+ result += (result ? ' ' : '') + callsStr;
101
+ }
102
+ if (functionResponses.length > 0) {
103
+ const responsesStr = functionResponses
104
+ .map(response => `[FUNCTION_RESPONSE: ${response.name} -> ${JSON.stringify(response.response)}]`)
105
+ .join(' ');
106
+ result += (result ? ' ' : '') + responsesStr;
107
+ }
108
+ return result;
109
+ };
110
+ export const parseContent = (raw) => {
111
+ if (typeof raw === 'string') {
112
+ return createUserMessage(raw);
113
+ }
114
+ if (typeof raw === 'object' && raw !== null) {
115
+ // Try to parse as existing Content object
116
+ if ('role' in raw && 'parts' in raw) {
117
+ return raw;
118
+ }
119
+ // Try to parse as simple message object
120
+ if ('text' in raw || 'message' in raw) {
121
+ const text = raw.text || raw.message;
122
+ const role = raw.role || 'user';
123
+ return createContent(role, text);
124
+ }
125
+ }
126
+ throw new Error(`Cannot parse content from: ${JSON.stringify(raw)}`);
127
+ };
128
+ // ========== Content Validation ==========
129
+ export const isValidContent = (content) => {
130
+ if (typeof content !== 'object' || content === null) {
131
+ return false;
132
+ }
133
+ const c = content;
134
+ return (typeof c.role === 'string' &&
135
+ ['user', 'model', 'system'].includes(c.role) &&
136
+ Array.isArray(c.parts) &&
137
+ c.parts.every(isValidPart));
138
+ };
139
+ export const isValidPart = (part) => {
140
+ if (typeof part !== 'object' || part === null) {
141
+ return false;
142
+ }
143
+ const p = part;
144
+ return (typeof p.type === 'string' &&
145
+ ['text', 'image', 'audio', 'function_call', 'function_response'].includes(p.type));
146
+ };
147
+ // ========== Content Utilities ==========
148
+ export const mergeContent = (...contents) => {
149
+ if (contents.length === 0) {
150
+ return createUserMessage('');
151
+ }
152
+ if (contents.length === 1) {
153
+ return contents[0];
154
+ }
155
+ const [first, ...rest] = contents;
156
+ const allParts = [first, ...rest].flatMap(c => c.parts);
157
+ return {
158
+ ...first,
159
+ parts: allParts
160
+ };
161
+ };
162
+ export const cloneContent = (content) => ({
163
+ ...content,
164
+ parts: content.parts.map(part => ({ ...part })),
165
+ metadata: content.metadata ? { ...content.metadata } : undefined
166
+ });
167
+ export const filterContentByRole = (contents, role) => {
168
+ return contents.filter(content => content.role === role);
169
+ };
170
+ export const getLastUserMessage = (contents) => {
171
+ const userMessages = filterContentByRole(contents, 'user');
172
+ return userMessages.length > 0 ? userMessages[userMessages.length - 1] : null;
173
+ };
174
+ export const getLastModelMessage = (contents) => {
175
+ const modelMessages = filterContentByRole(contents, 'model');
176
+ return modelMessages.length > 0 ? modelMessages[modelMessages.length - 1] : null;
177
+ };
178
+ // ========== Content Statistics ==========
179
+ export const getContentStats = (content) => {
180
+ const textParts = content.parts.filter(p => p.type === 'text').length;
181
+ const imageParts = content.parts.filter(p => p.type === 'image').length;
182
+ const audioParts = content.parts.filter(p => p.type === 'audio').length;
183
+ const functionCallParts = content.parts.filter(p => p.type === 'function_call').length;
184
+ const functionResponseParts = content.parts.filter(p => p.type === 'function_response').length;
185
+ const textLength = getTextContent(content).length;
186
+ return {
187
+ totalParts: content.parts.length,
188
+ textParts,
189
+ imageParts,
190
+ audioParts,
191
+ functionCallParts,
192
+ functionResponseParts,
193
+ textLength,
194
+ hasMedia: imageParts > 0 || audioParts > 0,
195
+ hasFunctions: functionCallParts > 0 || functionResponseParts > 0
196
+ };
197
+ };
198
+ export const getConversationStats = (contents) => {
199
+ const userMessages = filterContentByRole(contents, 'user').length;
200
+ const modelMessages = filterContentByRole(contents, 'model').length;
201
+ const systemMessages = filterContentByRole(contents, 'system').length;
202
+ const totalTextLength = contents
203
+ .map(getTextContent)
204
+ .reduce((sum, text) => sum + text.length, 0);
205
+ const totalFunctionCalls = contents
206
+ .flatMap(getFunctionCalls).length;
207
+ const totalFunctionResponses = contents
208
+ .flatMap(getFunctionResponses).length;
209
+ return {
210
+ totalMessages: contents.length,
211
+ userMessages,
212
+ modelMessages,
213
+ systemMessages,
214
+ totalTextLength,
215
+ totalFunctionCalls,
216
+ totalFunctionResponses,
217
+ averageMessageLength: contents.length > 0 ? totalTextLength / contents.length : 0
218
+ };
219
+ };
220
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/content/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * JAF ADK Layer - Advanced Features Example
3
+ *
4
+ * Demonstrates schema validation, guardrails, streaming, and other advanced features
5
+ */
6
+ import { Agent, RunnerConfig, SessionProvider } from '../index';
7
+ export declare const createBookingAgent: () => {
8
+ agent: Agent;
9
+ sessionProvider: SessionProvider;
10
+ runnerConfig: RunnerConfig;
11
+ };
12
+ export declare const createStreamingAgent: () => {
13
+ agent: Agent;
14
+ sessionProvider: SessionProvider;
15
+ runnerConfig: RunnerConfig;
16
+ };
17
+ export declare function runSchemaValidationExample(): Promise<void>;
18
+ export declare function runStreamingWithMonitoringExample(): Promise<void>;
19
+ export declare function runAdvancedStreamingExample(): Promise<void>;
20
+ export declare function runLiveStreamingExample(): Promise<void>;
21
+ export declare function runAllAdvancedExamples(): Promise<void>;
22
+ //# sourceMappingURL=advanced-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-features.d.ts","sourceRoot":"","sources":["../../../src/adk/examples/advanced-features.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAsBL,KAAK,EACL,YAAY,EACZ,eAAe,EAGhB,MAAM,UAAU,CAAC;AAgGlB,eAAO,MAAM,kBAAkB;;;;CA0G9B,CAAC;AAIF,eAAO,MAAM,oBAAoB;;;;CAwDhC,CAAC;AAIF,wBAAsB,0BAA0B,kBAwC/C;AAED,wBAAsB,iCAAiC,kBAgDtD;AAED,wBAAsB,2BAA2B,kBAmChD;AAED,wBAAsB,uBAAuB,kBAmC5C;AAID,wBAAsB,sBAAsB,kBAW3C"}
@@ -0,0 +1,380 @@
1
+ /**
2
+ * JAF ADK Layer - Advanced Features Example
3
+ *
4
+ * Demonstrates schema validation, guardrails, streaming, and other advanced features
5
+ */
6
+ import { createAgent, createFunctionTool, createInMemorySessionProvider, createRunnerConfig, runAgent, runAgentStream, createUserMessage, createObjectValidator, stringSchema, numberSchema, booleanSchema, weatherQueryValidator, weatherResponseValidator, createAgentEvent, createLiveRequestQueue, monitorStream, metricsMonitor, Model, ToolParameterType } from '../index';
7
+ const bookingRequestValidator = createObjectValidator({
8
+ customerName: stringSchema({ description: 'Customer full name' }),
9
+ serviceType: stringSchema({
10
+ description: 'Type of service requested',
11
+ enum: ['consultation', 'maintenance', 'repair']
12
+ }),
13
+ preferredDate: stringSchema({ description: 'Preferred appointment date (YYYY-MM-DD)' }),
14
+ duration: numberSchema({ description: 'Expected duration in hours' }),
15
+ urgent: booleanSchema({ description: 'Whether this is an urgent request' }),
16
+ contactInfo: {
17
+ type: 'object',
18
+ properties: {
19
+ email: stringSchema({ description: 'Customer email address' }),
20
+ phone: stringSchema({ description: 'Customer phone number' })
21
+ },
22
+ required: ['email', 'phone']
23
+ }
24
+ }, ['customerName', 'serviceType', 'preferredDate', 'duration', 'urgent', 'contactInfo']);
25
+ // ========== Guardrails Example ==========
26
+ const contentModerationGuardrail = async (message) => {
27
+ const messageText = message.parts
28
+ .filter(p => p.type === 'text')
29
+ .map(p => p.text)
30
+ .join(' ')
31
+ .toLowerCase();
32
+ // Check for inappropriate content
33
+ const blockedWords = ['spam', 'scam', 'inappropriate'];
34
+ const containsBlockedContent = blockedWords.some(word => messageText.includes(word));
35
+ if (containsBlockedContent) {
36
+ return {
37
+ allowed: false,
38
+ reason: 'Content contains inappropriate language',
39
+ action: 'block'
40
+ };
41
+ }
42
+ // Check for excessive length
43
+ if (messageText.length > 1000) {
44
+ return {
45
+ allowed: true,
46
+ modifiedMessage: {
47
+ ...message,
48
+ parts: [{
49
+ type: 'text',
50
+ text: messageText.substring(0, 1000) + '... [truncated]'
51
+ }]
52
+ },
53
+ reason: 'Message truncated due to length',
54
+ action: 'modify'
55
+ };
56
+ }
57
+ return { allowed: true };
58
+ };
59
+ const rateLimitGuardrail = async (_message, context) => {
60
+ // Simple rate limiting based on session message count
61
+ const messageCount = context.session.messages.length;
62
+ if (messageCount > 10) {
63
+ return {
64
+ allowed: false,
65
+ reason: 'Rate limit exceeded - too many messages in this session',
66
+ action: 'block'
67
+ };
68
+ }
69
+ return { allowed: true };
70
+ };
71
+ // ========== Advanced Agent with Schema Validation ==========
72
+ export const createBookingAgent = () => {
73
+ const processBookingTool = createFunctionTool({
74
+ name: 'process_booking',
75
+ description: 'Process a service booking request with validation',
76
+ execute: (params) => {
77
+ // Validate input using schema
78
+ const validation = bookingRequestValidator.validate(params);
79
+ if (!validation.success) {
80
+ throw new Error(`Invalid booking request: ${validation.errors?.join(', ')}`);
81
+ }
82
+ const booking = validation.data;
83
+ // Process the booking
84
+ const bookingId = `BK${Date.now()}`;
85
+ const estimatedCost = {
86
+ consultation: 100,
87
+ maintenance: 150,
88
+ repair: 200
89
+ }[booking.serviceType] * booking.duration;
90
+ return {
91
+ bookingId,
92
+ status: 'confirmed',
93
+ customer: booking.customerName,
94
+ service: booking.serviceType,
95
+ scheduledDate: booking.preferredDate,
96
+ duration: booking.duration,
97
+ estimatedCost,
98
+ priority: booking.urgent ? 'high' : 'normal',
99
+ contactMethod: 'email'
100
+ };
101
+ },
102
+ parameters: [
103
+ {
104
+ name: 'customerName',
105
+ type: ToolParameterType.STRING,
106
+ description: 'Customer full name',
107
+ required: true
108
+ },
109
+ {
110
+ name: 'serviceType',
111
+ type: ToolParameterType.STRING,
112
+ description: 'Type of service (consultation, maintenance, repair)',
113
+ required: true
114
+ },
115
+ {
116
+ name: 'preferredDate',
117
+ type: ToolParameterType.STRING,
118
+ description: 'Preferred date in YYYY-MM-DD format',
119
+ required: true
120
+ },
121
+ {
122
+ name: 'duration',
123
+ type: ToolParameterType.NUMBER,
124
+ description: 'Duration in hours',
125
+ required: true
126
+ },
127
+ {
128
+ name: 'urgent',
129
+ type: ToolParameterType.BOOLEAN,
130
+ description: 'Whether this is urgent',
131
+ required: true
132
+ },
133
+ {
134
+ name: 'contactInfo',
135
+ type: ToolParameterType.OBJECT,
136
+ description: 'Customer contact information',
137
+ required: true
138
+ }
139
+ ]
140
+ });
141
+ const agent = createAgent({
142
+ name: 'booking_agent',
143
+ model: Model.GEMINI_2_0_FLASH,
144
+ instruction: `You are a professional booking assistant. Help customers schedule services.
145
+
146
+ When processing bookings:
147
+ 1. Collect all required information
148
+ 2. Validate the booking details
149
+ 3. Use the process_booking tool to create the booking
150
+ 4. Confirm details with the customer
151
+
152
+ Required information:
153
+ - Customer name
154
+ - Service type (consultation, maintenance, or repair)
155
+ - Preferred date
156
+ - Duration in hours
157
+ - Urgency level
158
+ - Contact information (email and phone)`,
159
+ tools: [processBookingTool],
160
+ inputSchema: weatherQueryValidator, // Example of input validation
161
+ outputSchema: weatherResponseValidator, // Example of output validation
162
+ guardrails: [contentModerationGuardrail, rateLimitGuardrail]
163
+ });
164
+ const sessionProvider = createInMemorySessionProvider();
165
+ const runnerConfig = createRunnerConfig(agent, sessionProvider, {
166
+ guardrails: [contentModerationGuardrail, rateLimitGuardrail],
167
+ maxLLMCalls: 5,
168
+ timeout: 30000
169
+ });
170
+ return { agent, sessionProvider, runnerConfig };
171
+ };
172
+ // ========== Streaming with Monitoring Example ==========
173
+ export const createStreamingAgent = () => {
174
+ const storyTool = createFunctionTool({
175
+ name: 'generate_story_part',
176
+ description: 'Generate part of a story',
177
+ execute: (params) => {
178
+ const { theme, character, setting } = params;
179
+ const storyParts = [
180
+ `In the ${setting}, ${character} discovered something extraordinary about ${theme}.`,
181
+ `The ${theme} seemed to pulse with an otherworldly energy as ${character} approached.`,
182
+ `${character} realized that ${theme} held the key to understanding the mysteries of ${setting}.`,
183
+ `As the sun set over ${setting}, ${character} made a decision that would change everything about ${theme}.`,
184
+ `The adventure continued as ${character} ventured deeper into the secrets of ${theme} within ${setting}.`
185
+ ];
186
+ return {
187
+ part: storyParts[Math.floor(Math.random() * storyParts.length)],
188
+ theme,
189
+ character,
190
+ setting,
191
+ timestamp: new Date().toISOString()
192
+ };
193
+ },
194
+ parameters: [
195
+ {
196
+ name: 'theme',
197
+ type: ToolParameterType.STRING,
198
+ description: 'Story theme or topic',
199
+ required: true
200
+ },
201
+ {
202
+ name: 'character',
203
+ type: ToolParameterType.STRING,
204
+ description: 'Main character name',
205
+ required: true
206
+ },
207
+ {
208
+ name: 'setting',
209
+ type: ToolParameterType.STRING,
210
+ description: 'Story setting or location',
211
+ required: true
212
+ }
213
+ ]
214
+ });
215
+ const agent = createAgent({
216
+ name: 'streaming_storyteller',
217
+ model: Model.GEMINI_2_0_FLASH,
218
+ instruction: `You are an interactive storyteller. Create engaging stories using the generate_story_part tool.
219
+ Build stories progressively, creating suspense and engaging narratives.`,
220
+ tools: [storyTool]
221
+ });
222
+ const sessionProvider = createInMemorySessionProvider();
223
+ const runnerConfig = createRunnerConfig(agent, sessionProvider);
224
+ return { agent, sessionProvider, runnerConfig };
225
+ };
226
+ // ========== Example Usage Functions ==========
227
+ export async function runSchemaValidationExample() {
228
+ console.log('=== JAF ADK Layer - Schema Validation Example ===\n');
229
+ const { runnerConfig } = createBookingAgent();
230
+ // Test valid booking request
231
+ console.log('1. Valid Booking Request:');
232
+ const validBookingMessage = createUserMessage(`
233
+ I need to book a repair service for next week.
234
+ My name is John Smith, I need a 3-hour repair on 2024-02-15.
235
+ It's urgent. My email is john@example.com and phone is 555-0123.
236
+ `);
237
+ try {
238
+ const response = await runAgent(runnerConfig, {
239
+ userId: 'user_123',
240
+ sessionId: 'booking_session_1'
241
+ }, validBookingMessage);
242
+ console.log('User:', validBookingMessage.parts[0].text);
243
+ console.log('Agent:', response.content.parts[0].text);
244
+ }
245
+ catch (error) {
246
+ console.log('Error:', error.message);
247
+ }
248
+ // Test invalid booking request (blocked by guardrail)
249
+ console.log('\n2. Blocked Request (Guardrail):');
250
+ const blockedMessage = createUserMessage('This is spam content that should be blocked');
251
+ try {
252
+ const response = await runAgent(runnerConfig, {
253
+ userId: 'user_123',
254
+ sessionId: 'booking_session_2'
255
+ }, blockedMessage);
256
+ console.log('User:', blockedMessage.parts[0].text);
257
+ console.log('Agent:', response.content.parts[0].text);
258
+ }
259
+ catch (error) {
260
+ console.log('Blocked by guardrail:', error.message);
261
+ }
262
+ }
263
+ export async function runStreamingWithMonitoringExample() {
264
+ console.log('\n=== JAF ADK Layer - Streaming with Monitoring Example ===\n');
265
+ const { runnerConfig } = createStreamingAgent();
266
+ const message = createUserMessage('Tell me a story about a brave knight named Arthur in a mystical forest');
267
+ console.log('User:', message.parts[0].text);
268
+ console.log('Agent (streaming with monitoring):');
269
+ // Create monitoring
270
+ const metrics = metricsMonitor();
271
+ const events = runAgentStream(runnerConfig, {
272
+ userId: 'user_123',
273
+ sessionId: 'streaming_session'
274
+ }, message);
275
+ // Add monitoring to the stream
276
+ const monitoredStream = monitorStream(events, (event) => {
277
+ metrics.monitor(event);
278
+ // Log important events
279
+ if (event.type === 'function_call_start') {
280
+ console.log(`\n[FUNCTION CALL] ${event.functionCall?.name}`);
281
+ }
282
+ else if (event.type === 'function_call_complete') {
283
+ console.log(`[FUNCTION COMPLETE] ${event.functionResponse?.name}`);
284
+ }
285
+ });
286
+ let messageContent = '';
287
+ for await (const event of monitoredStream) {
288
+ if (event.type === 'message_delta' && event.content) {
289
+ const text = event.content.parts[0].text || '';
290
+ messageContent += text;
291
+ process.stdout.write(text);
292
+ }
293
+ else if (event.type === 'message_complete') {
294
+ console.log('\n[Stream complete]');
295
+ break;
296
+ }
297
+ else if (event.type === 'error') {
298
+ console.log('\n[Error]:', event.error);
299
+ break;
300
+ }
301
+ }
302
+ // Show metrics
303
+ console.log('\nStream Metrics:', metrics.getMetrics());
304
+ }
305
+ export async function runAdvancedStreamingExample() {
306
+ console.log('\n=== JAF ADK Layer - Advanced Streaming Features ===\n');
307
+ // Create a live request queue
308
+ const queue = createLiveRequestQueue();
309
+ // Simulate incoming messages
310
+ setTimeout(async () => {
311
+ await queue.enqueue(createUserMessage('Start the story'));
312
+ await queue.enqueue(createUserMessage('Continue with action'));
313
+ await queue.enqueue(createUserMessage('Add a plot twist'));
314
+ queue.close();
315
+ }, 100);
316
+ console.log('Processing queued messages:');
317
+ // Process messages from queue
318
+ let isQueueActive = true;
319
+ while (isQueueActive) {
320
+ const message = await queue.dequeue();
321
+ if (!message) {
322
+ await new Promise(resolve => setTimeout(resolve, 50));
323
+ continue;
324
+ }
325
+ console.log('Processing:', message.parts[0].text);
326
+ if (queue.isEmpty()) {
327
+ isQueueActive = false;
328
+ break;
329
+ }
330
+ }
331
+ console.log('Queue processing complete');
332
+ }
333
+ export async function runLiveStreamingExample() {
334
+ console.log('\n=== JAF ADK Layer - Live Streaming Simulation ===\n');
335
+ // Simulate a live streaming scenario
336
+ async function* mockAgentStream() {
337
+ const responses = [
338
+ 'Hello! I\'m ready to help you.',
339
+ 'What would you like to know?',
340
+ 'I can assist with various tasks.',
341
+ 'Feel free to ask me anything!'
342
+ ];
343
+ for (const response of responses) {
344
+ // Simulate typing delay
345
+ await new Promise(resolve => setTimeout(resolve, 500));
346
+ yield createAgentEvent('message_delta', {
347
+ content: createUserMessage(response)
348
+ });
349
+ }
350
+ yield createAgentEvent('message_complete');
351
+ }
352
+ console.log('Live streaming simulation:');
353
+ const stream = mockAgentStream();
354
+ for await (const event of stream) {
355
+ if (event.type === 'message_delta' && event.content) {
356
+ console.log('→', event.content.parts[0].text);
357
+ }
358
+ else if (event.type === 'message_complete') {
359
+ console.log('[Stream ended]');
360
+ }
361
+ }
362
+ }
363
+ // ========== Main Example Runner ==========
364
+ export async function runAllAdvancedExamples() {
365
+ try {
366
+ await runSchemaValidationExample();
367
+ await runStreamingWithMonitoringExample();
368
+ await runAdvancedStreamingExample();
369
+ await runLiveStreamingExample();
370
+ console.log('\n=== All advanced examples completed successfully! ===');
371
+ }
372
+ catch (error) {
373
+ console.error('Advanced example failed:', error);
374
+ }
375
+ }
376
+ // Run examples if this file is executed directly
377
+ if (require.main === module) {
378
+ runAllAdvancedExamples();
379
+ }
380
+ //# sourceMappingURL=advanced-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-features.js","sourceRoot":"","sources":["../../../src/adk/examples/advanced-features.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,6BAA6B,EAC7B,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EAEtB,aAAa,EAEb,cAAc,EAMd,KAAK,EACL,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAiBlB,MAAM,uBAAuB,GAAG,qBAAqB,CACnD;IACE,YAAY,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACjE,WAAW,EAAE,YAAY,CAAC;QACxB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;KAChD,CAAC;IACF,aAAa,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;IACvF,QAAQ,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IACrE,MAAM,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC3E,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;YAC9D,KAAK,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;SAC9D;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;KAC7B;CACF,EACD,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CACtF,CAAC;AAEF,2CAA2C;AAE3C,MAAM,0BAA0B,GAAsB,KAAK,EAAE,OAAO,EAAE,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAChB,IAAI,CAAC,GAAG,CAAC;SACT,WAAW,EAAE,CAAC;IAEjB,kCAAkC;IAClC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAErF,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,yCAAyC;YACjD,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,eAAe,EAAE;gBACf,GAAG,OAAO;gBACV,KAAK,EAAE,CAAC;wBACN,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,iBAAiB;qBACzD,CAAC;aACH;YACD,MAAM,EAAE,iCAAiC;YACzC,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAsB,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IACxE,sDAAsD;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAErD,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,yDAAyD;YACjE,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,8DAA8D;AAE9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;QAC5C,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE,CAAC,MAAe,EAAE,EAAE;YAC3B,8BAA8B;YAC9B,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE5D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAK,CAAC;YAEjC,sBAAsB;YACtB,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG;gBACpB,YAAY,EAAE,GAAG;gBACjB,WAAW,EAAE,GAAG;gBAChB,MAAM,EAAE,GAAG;aACZ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;YAE1C,OAAO;gBACL,SAAS;gBACT,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,OAAO,CAAC,YAAY;gBAC9B,OAAO,EAAE,OAAO,CAAC,WAAW;gBAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa;gBACb,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAC5C,aAAa,EAAE,OAAO;aACvB,CAAC;QACJ,CAAC;QACD,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,oBAAoB;gBACjC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,qDAAqD;gBAClE,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,qCAAqC;gBAClD,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,mBAAmB;gBAChC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,iBAAiB,CAAC,OAAO;gBAC/B,WAAW,EAAE,wBAAwB;gBACrC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,8BAA8B;gBAC3C,QAAQ,EAAE,IAAI;aACf;SACF;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,KAAK,CAAC,gBAAgB;QAC7B,WAAW,EAAE;;;;;;;;;;;;;;4CAc2B;QACxC,KAAK,EAAE,CAAC,kBAAkB,CAAC;QAC3B,WAAW,EAAE,qBAAqB,EAAE,8BAA8B;QAClE,YAAY,EAAE,wBAAwB,EAAE,+BAA+B;QACvE,UAAU,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;KAC7D,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE;QAC9D,UAAU,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;QAC5D,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,0DAA0D;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACnC,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAClB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAA+D,CAAC;YACtG,MAAM,UAAU,GAAG;gBACjB,UAAU,OAAO,KAAK,SAAS,6CAA6C,KAAK,GAAG;gBACpF,OAAO,KAAK,mDAAmD,SAAS,cAAc;gBACtF,GAAG,SAAS,kBAAkB,KAAK,mDAAmD,OAAO,GAAG;gBAChG,uBAAuB,OAAO,KAAK,SAAS,uDAAuD,KAAK,GAAG;gBAC3G,8BAA8B,SAAS,wCAAwC,KAAK,WAAW,OAAO,GAAG;aAC1G,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC/D,KAAK;gBACL,SAAS;gBACT,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QACD,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,sBAAsB;gBACnC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,qBAAqB;gBAClC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,iBAAiB,CAAC,MAAM;gBAC9B,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,IAAI;aACf;SACF;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,KAAK,CAAC,gBAAgB;QAC7B,WAAW,EAAE;4EAC2D;QACxE,KAAK,EAAE,CAAC,SAAS,CAAC;KACnB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAEhE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,gDAAgD;AAEhD,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAEnE,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAE9C,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;;;;GAI7C,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE;YAC5C,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,mBAAmB;SAC/B,EAAE,mBAAmB,CAAC,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,sDAAsD;IACtD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,iBAAiB,CAAC,6CAA6C,CAAC,CAAC;IAExF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE;YAC5C,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,mBAAmB;SAC/B,EAAE,cAAc,CAAC,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC;IACrD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAE7E,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAEhD,MAAM,OAAO,GAAG,iBAAiB,CAAC,wEAAwE,CAAC,CAAC;IAE5G,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,oBAAoB;IACpB,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE;QAC1C,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,mBAAmB;KAC/B,EAAE,OAAO,CAAC,CAAC;IAEZ,+BAA+B;IAC/B,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACtD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvB,uBAAuB;QACvB,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/C,cAAc,IAAI,IAAI,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM;QACR,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM;QACR,CAAC;IACH,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAEvE,8BAA8B;IAC9B,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IAEvC,6BAA6B;IAC7B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,EAAE,GAAG,CAAC,CAAC;IAER,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,8BAA8B;IAC9B,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,OAAO,aAAa,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,aAAa,GAAG,KAAK,CAAC;YACtB,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAErE,qCAAqC;IACrC,KAAK,SAAS,CAAC,CAAC,eAAe;QAC7B,MAAM,SAAS,GAAG;YAChB,gCAAgC;YAChC,8BAA8B;YAC9B,kCAAkC;YAClC,+BAA+B;SAChC,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,wBAAwB;YACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,gBAAgB,CAAC,eAAe,EAAE;gBACtC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED,4CAA4C;AAE5C,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,IAAI,CAAC;QACH,MAAM,0BAA0B,EAAE,CAAC;QACnC,MAAM,iCAAiC,EAAE,CAAC;QAC1C,MAAM,2BAA2B,EAAE,CAAC;QACpC,MAAM,uBAAuB,EAAE,CAAC;QAEhC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,sBAAsB,EAAE,CAAC;AAC3B,CAAC"}