@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,466 @@
1
+ /**
2
+ * JAF ADK Layer - Runner System
3
+ *
4
+ * Functional agent execution system
5
+ */
6
+ import { throwAgentError } from '../types';
7
+ import { generateRunnerGraph, generateAgentGraph, generateToolGraph } from '../../visualization/graphviz';
8
+ import { getOrCreateSession, addMessageToSession, addArtifactToSession } from '../sessions';
9
+ import { executeTool } from '../tools';
10
+ import { createModelMessage, getFunctionCalls, createUserMessage } from '../content';
11
+ import { createAdkLLMService } from '../providers/llm-service.js';
12
+ import { createAdkLLMConfigFromEnvironment, createAdkLLMServiceConfig } from '../config/llm-config.js';
13
+ // ========== Core Runner Functions ==========
14
+ export const runAgent = async (config, context, message) => {
15
+ const requestId = context.requestId || generateRequestId();
16
+ const startTime = Date.now();
17
+ try {
18
+ // Get or create session
19
+ const session = await getOrCreateSession(config.sessionProvider, {
20
+ appName: context.metadata?.appName || 'default',
21
+ userId: context.userId,
22
+ sessionId: context.sessionId
23
+ });
24
+ // Apply guardrails before adding to session
25
+ const guardedMessage = await applyGuardrails(config.guardrails || [], message, { agent: config.agent, session, previousMessages: session.messages });
26
+ // Add guarded message to session
27
+ const updatedSession = addMessageToSession(session, guardedMessage);
28
+ // Execute agent
29
+ const result = await executeAgent(config, updatedSession, guardedMessage, context);
30
+ // Calculate metadata
31
+ const executionTime = Date.now() - startTime;
32
+ const metadata = {
33
+ requestId,
34
+ agentId: config.agent.id,
35
+ timestamp: new Date(),
36
+ executionTime,
37
+ llmCalls: 1 // Simplified for now
38
+ };
39
+ return {
40
+ ...result,
41
+ metadata
42
+ };
43
+ }
44
+ catch (error) {
45
+ throwAgentError(`Agent execution failed: ${error instanceof Error ? error.message : String(error)}`, config.agent.id, { requestId, context });
46
+ }
47
+ // This should never be reached due to throwAgentError throwing
48
+ throw new Error('Unreachable code');
49
+ };
50
+ export const runAgentStream = async function* (config, context, message) {
51
+ const requestId = context.requestId || generateRequestId();
52
+ try {
53
+ yield createAgentEvent('message_start', { content: message });
54
+ // Get or create session
55
+ const session = await getOrCreateSession(config.sessionProvider, {
56
+ appName: context.metadata?.appName || 'default',
57
+ userId: context.userId,
58
+ sessionId: context.sessionId
59
+ });
60
+ // Apply guardrails before adding to session
61
+ const guardedMessage = await applyGuardrails(config.guardrails || [], message, { agent: config.agent, session, previousMessages: session.messages });
62
+ // Add guarded message to session
63
+ const updatedSession = addMessageToSession(session, guardedMessage);
64
+ // Execute agent with streaming
65
+ yield* executeAgentStream(config, updatedSession, guardedMessage, context);
66
+ yield createAgentEvent('message_complete');
67
+ }
68
+ catch (error) {
69
+ yield createAgentEvent('error', { error: error instanceof Error ? error.message : String(error) });
70
+ }
71
+ };
72
+ // ========== Agent Execution ==========
73
+ const executeAgent = async (config, session, message, context) => {
74
+ const agent = config.agent;
75
+ let currentSession = session;
76
+ const toolCalls = [];
77
+ const toolResponses = [];
78
+ // Check if this is a multi-agent
79
+ if (isMultiAgent(agent)) {
80
+ return await executeMultiAgent(config, currentSession, message, context);
81
+ }
82
+ // Call real LLM service
83
+ const llmResponse = await callRealLLM(agent, message, currentSession);
84
+ // Check for function calls in the response
85
+ const functionCalls = getFunctionCalls(llmResponse);
86
+ if (functionCalls.length > 0) {
87
+ // Execute tools
88
+ const toolContext = createToolContext(agent, currentSession, message);
89
+ for (const functionCall of functionCalls) {
90
+ const tool = agent.config.tools.find(t => t.name === functionCall.name);
91
+ if (tool) {
92
+ try {
93
+ const toolResult = await executeTool(tool, functionCall.args, toolContext);
94
+ const functionResponse = {
95
+ id: functionCall.id,
96
+ name: functionCall.name,
97
+ response: toolResult.data,
98
+ success: toolResult.success,
99
+ error: toolResult.error
100
+ };
101
+ toolResponses.push(functionResponse);
102
+ llmResponse.parts.push({
103
+ type: 'function_response',
104
+ functionResponse
105
+ });
106
+ // Handle tool actions
107
+ if (toolContext.actions.transferToAgent) {
108
+ // Handle agent transfer
109
+ const targetAgent = agent.config.subAgents?.find(sub => sub.name === toolContext.actions.transferToAgent);
110
+ if (targetAgent) {
111
+ const transferConfig = { ...config, agent: { ...agent, config: targetAgent } };
112
+ return await executeAgent(transferConfig, currentSession, message, context);
113
+ }
114
+ }
115
+ if (toolContext.actions.addArtifact) {
116
+ // Artifacts are handled via the actions object
117
+ }
118
+ }
119
+ catch (error) {
120
+ const functionResponse = {
121
+ id: functionCall.id,
122
+ name: functionCall.name,
123
+ response: null,
124
+ success: false,
125
+ error: error instanceof Error ? error.message : 'Tool execution failed'
126
+ };
127
+ toolResponses.push(functionResponse);
128
+ }
129
+ }
130
+ toolCalls.push(functionCall);
131
+ }
132
+ // If tools were executed, make a second LLM call to get final response with tool results
133
+ if (toolResponses.length > 0) {
134
+ // Update session with the tool calls and responses first
135
+ currentSession = addMessageToSession(currentSession, llmResponse);
136
+ // Create tool response messages for each tool call (required by OpenAI format)
137
+ for (const toolResponse of toolResponses) {
138
+ const toolResultMessage = {
139
+ role: 'tool', // Tool responses must have role 'tool' for OpenAI API
140
+ parts: [{
141
+ type: 'function_response',
142
+ functionResponse: toolResponse
143
+ }],
144
+ metadata: {}
145
+ };
146
+ // Add each tool response message to session
147
+ currentSession = addMessageToSession(currentSession, toolResultMessage);
148
+ }
149
+ // Create a user message asking the LLM to provide a final response
150
+ const followUpMessage = createUserMessage('Please provide a final response based on the tool results.');
151
+ // Make second LLM call to get final response
152
+ const finalResponse = await callRealLLM(agent, followUpMessage, currentSession);
153
+ // Update session with final response
154
+ currentSession = addMessageToSession(currentSession, finalResponse);
155
+ await config.sessionProvider.updateSession(currentSession);
156
+ // Return the final response that includes tool results
157
+ return {
158
+ content: finalResponse,
159
+ session: currentSession,
160
+ toolCalls,
161
+ toolResponses,
162
+ metadata: {
163
+ requestId: generateRequestId(),
164
+ agentId: agent.id,
165
+ llmCalls: 2, // Two LLM calls made
166
+ timestamp: new Date()
167
+ }
168
+ };
169
+ }
170
+ }
171
+ // Update session with response (no tools were called)
172
+ currentSession = addMessageToSession(currentSession, llmResponse);
173
+ await config.sessionProvider.updateSession(currentSession);
174
+ return {
175
+ content: llmResponse,
176
+ session: currentSession,
177
+ toolCalls,
178
+ toolResponses,
179
+ metadata: {
180
+ requestId: generateRequestId(),
181
+ agentId: agent.id,
182
+ llmCalls: 1, // One LLM call made
183
+ timestamp: new Date()
184
+ }
185
+ };
186
+ };
187
+ const executeAgentStream = async function* (config, session, message, context) {
188
+ const agent = config.agent;
189
+ try {
190
+ // Create LLM service instance with environment-based configuration
191
+ const llmConfig = createAdkLLMConfigFromEnvironment();
192
+ const llmService = createAdkLLMService(createAdkLLMServiceConfig(llmConfig));
193
+ // Call real streaming LLM
194
+ const streamGenerator = llmService.generateStreamingResponse(agent, session, message, {
195
+ modelOverride: typeof agent.config.model === 'string' ? agent.config.model : undefined,
196
+ temperature: 0.7,
197
+ maxTokens: 2000
198
+ });
199
+ // Stream real LLM responses
200
+ for await (const chunk of streamGenerator) {
201
+ if (chunk.isDone) {
202
+ break;
203
+ }
204
+ if (chunk.delta) {
205
+ yield createAgentEvent('message_delta', {
206
+ content: createModelMessage(chunk.delta)
207
+ });
208
+ }
209
+ if (chunk.functionCall) {
210
+ yield createAgentEvent('function_call_start', {
211
+ functionCall: chunk.functionCall
212
+ });
213
+ }
214
+ }
215
+ }
216
+ catch (error) {
217
+ console.error('[ADK:STREAM] Real streaming failed:', error);
218
+ // Fallback to error message
219
+ yield createAgentEvent('error', {
220
+ error: `Streaming error: ${error instanceof Error ? error.message : 'Unknown error'}`
221
+ });
222
+ }
223
+ };
224
+ // ========== Multi-Agent Execution ==========
225
+ const executeMultiAgent = async (config, session, message, context) => {
226
+ const multiConfig = config.agent.config;
227
+ switch (multiConfig.delegationStrategy) {
228
+ case 'sequential':
229
+ return await executeSequentialAgents(config, session, message, context);
230
+ case 'parallel':
231
+ return await executeParallelAgents(config, session, message, context);
232
+ case 'conditional':
233
+ return await executeConditionalAgents(config, session, message, context);
234
+ case 'hierarchical':
235
+ return await executeHierarchicalAgents(config, session, message, context);
236
+ default:
237
+ throwAgentError(`Unknown delegation strategy: ${multiConfig.delegationStrategy}`);
238
+ }
239
+ // This should never be reached due to throwAgentError throwing
240
+ throw new Error('Unreachable code');
241
+ };
242
+ const executeSequentialAgents = async (config, session, message, context) => {
243
+ const multiConfig = config.agent.config;
244
+ let currentSession = session;
245
+ let currentMessage = message;
246
+ let finalResponse = null;
247
+ for (const subAgentConfig of multiConfig.subAgents) {
248
+ const subAgent = { ...config.agent, config: subAgentConfig };
249
+ const subConfig = { ...config, agent: subAgent };
250
+ const response = await executeAgent(subConfig, currentSession, currentMessage, context);
251
+ currentSession = response.session;
252
+ currentMessage = response.content;
253
+ finalResponse = response;
254
+ }
255
+ return finalResponse;
256
+ };
257
+ const executeParallelAgents = async (config, session, message, context) => {
258
+ const multiConfig = config.agent.config;
259
+ const promises = multiConfig.subAgents.map(subAgentConfig => {
260
+ const subAgent = { ...config.agent, config: subAgentConfig };
261
+ const subConfig = { ...config, agent: subAgent };
262
+ return executeAgent(subConfig, session, message, context);
263
+ });
264
+ const responses = await Promise.all(promises);
265
+ // Merge responses (simplified - just use the first one)
266
+ return responses[0];
267
+ };
268
+ const executeConditionalAgents = async (config, session, message, context) => {
269
+ const multiConfig = config.agent.config;
270
+ // Simple condition - choose based on message content
271
+ // In real implementation, this would be more sophisticated
272
+ const messageText = message.parts
273
+ .filter(p => p.type === 'text')
274
+ .map(p => p.text)
275
+ .join(' ');
276
+ let selectedAgent = multiConfig.subAgents[0]; // Default
277
+ if (messageText.toLowerCase().includes('weather')) {
278
+ selectedAgent = multiConfig.subAgents.find(a => a.name.includes('weather')) || selectedAgent;
279
+ }
280
+ else if (messageText.toLowerCase().includes('news')) {
281
+ selectedAgent = multiConfig.subAgents.find(a => a.name.includes('news')) || selectedAgent;
282
+ }
283
+ const subAgent = { ...config.agent, config: selectedAgent };
284
+ const subConfig = { ...config, agent: subAgent };
285
+ return await executeAgent(subConfig, session, message, context);
286
+ };
287
+ const executeHierarchicalAgents = async (config, session, message, context) => {
288
+ // For now, just delegate to the first sub-agent
289
+ return await executeConditionalAgents(config, session, message, context);
290
+ };
291
+ // ========== Tool Context Creation ==========
292
+ const createToolContext = (agent, session, message) => {
293
+ const actions = {
294
+ transferToAgent: undefined,
295
+ endConversation: false,
296
+ setOutputKey: undefined,
297
+ addArtifact: (key, value) => {
298
+ // This would update the session
299
+ addArtifactToSession(session, key, value);
300
+ },
301
+ getArtifact: (key) => {
302
+ return session.artifacts[key];
303
+ }
304
+ };
305
+ return {
306
+ agent,
307
+ session,
308
+ message,
309
+ actions,
310
+ metadata: {
311
+ timestamp: new Date()
312
+ }
313
+ };
314
+ };
315
+ // ========== Guardrails ==========
316
+ const applyGuardrails = async (guardrails, message, context) => {
317
+ let currentMessage = message;
318
+ for (const guardrail of guardrails) {
319
+ const result = await guardrail(currentMessage, {
320
+ agent: context.agent,
321
+ session: context.session,
322
+ previousMessages: context.previousMessages
323
+ });
324
+ if (!result.allowed) {
325
+ throwAgentError(`Message blocked by guardrail: ${result.reason}`);
326
+ }
327
+ if (result.modifiedMessage) {
328
+ currentMessage = result.modifiedMessage;
329
+ }
330
+ }
331
+ return currentMessage;
332
+ };
333
+ // ========== Real LLM Integration ==========
334
+ const callRealLLM = async (agent, message, session) => {
335
+ try {
336
+ // Create LLM service instance with environment-based configuration
337
+ const llmConfig = createAdkLLMConfigFromEnvironment();
338
+ const llmService = createAdkLLMService(createAdkLLMServiceConfig(llmConfig));
339
+ // Call real LLM
340
+ const response = await llmService.generateResponse(agent, session, message, {
341
+ modelOverride: typeof agent.config.model === 'string' ? agent.config.model : undefined,
342
+ temperature: 0.7,
343
+ maxTokens: 2000
344
+ });
345
+ return response.content;
346
+ }
347
+ catch (error) {
348
+ console.error('[ADK:LLM] Real LLM call failed:', error);
349
+ // Check if this is a critical error that should propagate
350
+ if (error instanceof Error && error.message.includes('Invalid model')) {
351
+ throw error;
352
+ }
353
+ // Fallback to a simple error response for other errors
354
+ return createModelMessage(`I apologize, but I'm experiencing technical difficulties. Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
355
+ }
356
+ };
357
+ // ========== Mock Tool Detection Logic Removed ==========
358
+ // This mock logic has been removed since real LLM now handles tool calling decisions
359
+ const generateCallId = () => {
360
+ return `call_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
361
+ };
362
+ // ========== Utility Functions ==========
363
+ const generateRequestId = () => {
364
+ // Use crypto-based ID generation for pure functional approach
365
+ return `req_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
366
+ };
367
+ const createAgentEvent = (type, data) => {
368
+ return {
369
+ type,
370
+ timestamp: new Date(),
371
+ ...data
372
+ };
373
+ };
374
+ const isMultiAgent = (agent) => {
375
+ return agent.config.subAgents !== undefined && agent.config.subAgents.length > 0;
376
+ };
377
+ // ========== Runner Validation ==========
378
+ export const validateRunnerConfig = (config) => {
379
+ const errors = [];
380
+ if (!config.agent) {
381
+ errors.push('Agent is required');
382
+ }
383
+ if (!config.sessionProvider) {
384
+ errors.push('Session provider is required');
385
+ }
386
+ if (config.maxLLMCalls && config.maxLLMCalls <= 0) {
387
+ errors.push('Max LLM calls must be positive');
388
+ }
389
+ if (config.timeout && config.timeout <= 0) {
390
+ errors.push('Timeout must be positive');
391
+ }
392
+ if (errors.length > 0) {
393
+ throwAgentError(`Invalid runner config: ${errors.join(', ')}`);
394
+ }
395
+ };
396
+ export const validateRunContext = (context) => {
397
+ const errors = [];
398
+ if (!context.userId || context.userId.trim().length === 0) {
399
+ errors.push('User ID is required');
400
+ }
401
+ if (errors.length > 0) {
402
+ throwAgentError(`Invalid run context: ${errors.join(', ')}`);
403
+ }
404
+ };
405
+ // ========== Runner Builder ==========
406
+ export const createRunnerConfig = (agent, sessionProvider, options) => {
407
+ const config = {
408
+ agent,
409
+ sessionProvider,
410
+ ...options
411
+ };
412
+ validateRunnerConfig(config);
413
+ return config;
414
+ };
415
+ // ========== Error Handling ==========
416
+ export const withRunnerErrorHandling = (fn, agentId) => {
417
+ return async (...args) => {
418
+ try {
419
+ return await fn(...args);
420
+ }
421
+ catch (error) {
422
+ if (error instanceof Error &&
423
+ (error.name === 'AgentError' || error.name === 'ToolError' || error.name === 'SessionError')) {
424
+ throw error;
425
+ }
426
+ throwAgentError(`Runner operation failed: ${error instanceof Error ? error.message : String(error)}`, agentId, { originalError: error });
427
+ // This should never be reached due to throwAgentError throwing
428
+ throw new Error('Unreachable code');
429
+ }
430
+ };
431
+ };
432
+ // ========== Runner Statistics ==========
433
+ export const getRunnerStats = (config) => {
434
+ return {
435
+ agentId: config.agent.id,
436
+ agentName: config.agent.config.name,
437
+ toolCount: config.agent.config.tools.length,
438
+ subAgentCount: config.agent.config.subAgents?.length || 0,
439
+ hasGuardrails: (config.guardrails?.length || 0) > 0,
440
+ maxLLMCalls: config.maxLLMCalls,
441
+ timeout: config.timeout,
442
+ isMultiAgent: isMultiAgent(config.agent)
443
+ };
444
+ };
445
+ // ========== Visualization Functions ==========
446
+ export const generateRunnerVisualization = async (config, options = {}) => {
447
+ return await generateRunnerGraph(config, options);
448
+ };
449
+ export const generateAgentVisualization = async (agents, options = {}) => {
450
+ return await generateAgentGraph(agents, options);
451
+ };
452
+ export const generateToolVisualization = async (tools, options = {}) => {
453
+ return await generateToolGraph(tools, options);
454
+ };
455
+ export const generateRunnerGraphPng = async (config, outputPath) => {
456
+ const options = {
457
+ title: `JAF Runner: ${config.agent.config.name}`,
458
+ outputFormat: 'png',
459
+ outputPath: outputPath || './runner-visualization',
460
+ showToolDetails: true,
461
+ showSubAgents: true,
462
+ colorScheme: 'modern'
463
+ };
464
+ return await generateRunnerVisualization(config, options);
465
+ };
466
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/runners/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * JAF ADK Layer - Schema Validation
3
+ *
4
+ * Functional schema validation system
5
+ */
6
+ import { SchemaValidator, ValidationResult, JsonSchema, TypeGuard } from '../types';
7
+ export { createValidationError } from '../types';
8
+ export declare const createSchemaValidator: <T>(schema: JsonSchema, validator: TypeGuard<T>) => SchemaValidator<T>;
9
+ export declare const validateAgainstJsonSchema: (data: unknown, schema: JsonSchema) => ValidationResult<unknown>;
10
+ export declare const isString: TypeGuard<string>;
11
+ export declare const isNumber: TypeGuard<number>;
12
+ export declare const isBoolean: TypeGuard<boolean>;
13
+ export declare const isObject: TypeGuard<Record<string, unknown>>;
14
+ export declare const isArray: TypeGuard<unknown[]>;
15
+ export declare const isNull: TypeGuard<null>;
16
+ export declare const isUndefined: TypeGuard<undefined>;
17
+ export declare const stringSchema: (options?: {
18
+ description?: string;
19
+ enum?: string[];
20
+ default?: string;
21
+ }) => JsonSchema;
22
+ export declare const numberSchema: (options?: {
23
+ description?: string;
24
+ enum?: number[];
25
+ default?: number;
26
+ }) => JsonSchema;
27
+ export declare const booleanSchema: (options?: {
28
+ description?: string;
29
+ default?: boolean;
30
+ }) => JsonSchema;
31
+ export declare const objectSchema: (properties: Record<string, JsonSchema>, required?: string[], options?: {
32
+ description?: string;
33
+ }) => JsonSchema;
34
+ export declare const arraySchema: (items: JsonSchema, options?: {
35
+ description?: string;
36
+ }) => JsonSchema;
37
+ export declare const createStringValidator: (options?: {
38
+ description?: string;
39
+ enum?: string[];
40
+ default?: string;
41
+ }) => SchemaValidator<string>;
42
+ export declare const createNumberValidator: (options?: {
43
+ description?: string;
44
+ enum?: number[];
45
+ default?: number;
46
+ }) => SchemaValidator<number>;
47
+ export declare const createBooleanValidator: (options?: {
48
+ description?: string;
49
+ default?: boolean;
50
+ }) => SchemaValidator<boolean>;
51
+ export declare const createObjectValidator: <T extends Record<string, unknown>>(properties: Record<string, JsonSchema>, required?: string[], typeGuard?: TypeGuard<T>) => SchemaValidator<T>;
52
+ export declare const createArrayValidator: <T extends unknown[]>(items: JsonSchema, typeGuard?: TypeGuard<T>) => SchemaValidator<T>;
53
+ export declare const isOptional: <T>(guard: TypeGuard<T>) => TypeGuard<T | undefined>;
54
+ export declare const isNullable: <T>(guard: TypeGuard<T>) => TypeGuard<T | null>;
55
+ export declare const isUnion: <T>(...guards: TypeGuard<any>[]) => TypeGuard<T>;
56
+ export declare const hasProperty: <K extends string>(key: K) => TypeGuard<Record<K, unknown>>;
57
+ export declare const hasProperties: <K extends string>(...keys: K[]) => TypeGuard<Record<K, unknown>>;
58
+ export declare const validateInput: <T>(validator: SchemaValidator<T>, data: unknown) => ValidationResult<T>;
59
+ export declare const validateOutput: <T>(validator: SchemaValidator<T>, data: unknown) => ValidationResult<T>;
60
+ export declare const assertValid: <T>(validator: SchemaValidator<T>, data: unknown) => T;
61
+ export declare const isValid: <T>(validator: SchemaValidator<T>, data: unknown) => data is T;
62
+ export declare const transformAndValidate: <T, U>(validator: SchemaValidator<U>, transformer: (input: T) => U, data: T) => ValidationResult<U>;
63
+ export declare const validateAndTransform: <T, U>(inputValidator: SchemaValidator<T>, transformer: (input: T) => U, data: unknown) => ValidationResult<U>;
64
+ export interface WeatherQuery {
65
+ location: string;
66
+ units?: 'celsius' | 'fahrenheit';
67
+ includeHourly?: boolean;
68
+ [key: string]: unknown;
69
+ }
70
+ export declare const weatherQueryValidator: SchemaValidator<WeatherQuery>;
71
+ export interface WeatherResponse {
72
+ location: string;
73
+ temperature: number;
74
+ condition: string;
75
+ humidity: number;
76
+ forecast?: Array<{
77
+ time: string;
78
+ temperature: number;
79
+ condition: string;
80
+ }>;
81
+ [key: string]: unknown;
82
+ }
83
+ export declare const weatherResponseValidator: SchemaValidator<WeatherResponse>;
84
+ export declare const withSchemaValidation: <T extends unknown[], R>(fn: (...args: T) => R, inputValidators?: SchemaValidator<unknown>[], outputValidator?: SchemaValidator<R>) => (...args: T) => R;
85
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adk/schemas/index.ts"],"names":[],"mappings":"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"}