@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,403 @@
1
+ /**
2
+ * JAF Visualization - Graphviz Integration
3
+ *
4
+ * Functional visualization system for agents and tools using Graphviz
5
+ */
6
+ import { digraph } from 'graphviz';
7
+ import { writeFileSync } from 'fs';
8
+ import { execSync } from 'child_process';
9
+ // ========== Color Schemes ==========
10
+ const COLOR_SCHEMES = {
11
+ default: {
12
+ agent: { shape: 'box', fillcolor: '#E3F2FD', fontcolor: '#1976D2', style: 'filled,rounded' },
13
+ tool: { shape: 'ellipse', fillcolor: '#F3E5F5', fontcolor: '#7B1FA2', style: 'filled' },
14
+ subAgent: { shape: 'box', fillcolor: '#E8F5E8', fontcolor: '#388E3C', style: 'filled,dashed' },
15
+ edge: { color: '#424242', style: 'solid', penwidth: '1.5' },
16
+ toolEdge: { color: '#9C27B0', style: 'dashed', penwidth: '1.0' }
17
+ },
18
+ modern: {
19
+ agent: { shape: 'box', fillcolor: '#667eea', fontcolor: 'white', style: 'filled,rounded', fontname: 'Arial Bold' },
20
+ tool: { shape: 'ellipse', fillcolor: '#f093fb', fontcolor: 'white', style: 'filled', fontname: 'Arial' },
21
+ subAgent: { shape: 'box', fillcolor: '#4facfe', fontcolor: 'white', style: 'filled,dashed', fontname: 'Arial' },
22
+ edge: { color: '#667eea', style: 'solid', penwidth: '2.0', arrowhead: 'vee' },
23
+ toolEdge: { color: '#f093fb', style: 'dashed', penwidth: '1.5', arrowhead: 'open' }
24
+ },
25
+ minimal: {
26
+ agent: { shape: 'box', fillcolor: 'white', fontcolor: 'black', style: 'filled', penwidth: '2' },
27
+ tool: { shape: 'ellipse', fillcolor: '#f5f5f5', fontcolor: 'black', style: 'filled' },
28
+ subAgent: { shape: 'box', fillcolor: 'white', fontcolor: 'gray', style: 'filled,dashed' },
29
+ edge: { color: 'black', style: 'solid', penwidth: '1.0' },
30
+ toolEdge: { color: 'gray', style: 'dashed', penwidth: '1.0' }
31
+ }
32
+ };
33
+ // ========== Graph Generation Functions ==========
34
+ export const generateAgentGraph = async (agents, options = {}) => {
35
+ try {
36
+ const { title = 'JAF Agent Graph', layout = 'dot', rankdir = 'TB', outputFormat = 'png', outputPath = './agent-graph', showToolDetails = true, showSubAgents = true, colorScheme = 'default' } = options;
37
+ // Create digraph
38
+ const graph = digraph('AgentGraph');
39
+ // Set graph attributes
40
+ graph.set('rankdir', rankdir);
41
+ graph.set('label', title);
42
+ graph.set('labelloc', 't');
43
+ graph.set('fontsize', '16');
44
+ graph.set('fontname', 'Arial Bold');
45
+ graph.set('bgcolor', 'white');
46
+ graph.set('pad', '0.5');
47
+ const styles = COLOR_SCHEMES[colorScheme];
48
+ // Add nodes for each agent
49
+ for (const agent of agents) {
50
+ addAgentNode(graph, agent, styles, showToolDetails, showSubAgents);
51
+ }
52
+ // Add edges between agents (handoffs, sub-agents)
53
+ for (const agent of agents) {
54
+ addAgentEdges(graph, agent, agents, styles, showSubAgents);
55
+ }
56
+ // Generate output
57
+ const finalOutputPath = `${outputPath}.${outputFormat}`;
58
+ return new Promise((resolve) => {
59
+ graph.output(outputFormat, finalOutputPath, (code) => {
60
+ if (code === 0) {
61
+ resolve({
62
+ success: true,
63
+ outputPath: finalOutputPath,
64
+ graphDot: graph.to_dot()
65
+ });
66
+ }
67
+ else {
68
+ resolve({
69
+ success: false,
70
+ error: `Graphviz process exited with code ${code}`
71
+ });
72
+ }
73
+ });
74
+ });
75
+ }
76
+ catch (error) {
77
+ return {
78
+ success: false,
79
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
80
+ };
81
+ }
82
+ };
83
+ export const generateToolGraph = async (tools, options = {}) => {
84
+ try {
85
+ const { title = 'JAF Tool Graph', layout = 'circo', outputFormat = 'png', outputPath = './tool-graph', colorScheme = 'default' } = options;
86
+ const graph = digraph('ToolGraph');
87
+ graph.set('layout', layout);
88
+ graph.set('label', title);
89
+ graph.set('labelloc', 't');
90
+ graph.set('fontsize', '16');
91
+ graph.set('fontname', 'Arial Bold');
92
+ graph.set('bgcolor', 'white');
93
+ const styles = COLOR_SCHEMES[colorScheme];
94
+ // Add tool nodes
95
+ for (const tool of tools) {
96
+ addToolNode(graph, tool, styles);
97
+ }
98
+ // Generate output
99
+ const finalOutputPath = `${outputPath}.${outputFormat}`;
100
+ return new Promise((resolve) => {
101
+ graph.output(outputFormat, finalOutputPath, (code) => {
102
+ if (code === 0) {
103
+ resolve({
104
+ success: true,
105
+ outputPath: finalOutputPath,
106
+ graphDot: graph.to_dot()
107
+ });
108
+ }
109
+ else {
110
+ resolve({
111
+ success: false,
112
+ error: `Graphviz process exited with code ${code}`
113
+ });
114
+ }
115
+ });
116
+ });
117
+ }
118
+ catch (error) {
119
+ return {
120
+ success: false,
121
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
122
+ };
123
+ }
124
+ };
125
+ export const generateRunnerGraph = async (config, options = {}) => {
126
+ try {
127
+ const { title = 'JAF Runner Architecture', layout = 'dot', rankdir = 'TB', outputFormat = 'png', outputPath = './runner-graph', showToolDetails = true, showSubAgents = true, colorScheme = 'modern' } = options;
128
+ // Skip the graphviz library and go directly to fallback method
129
+ // The graphviz npm package has issues with hanging, so we use our own implementation
130
+ return await generateGraphWithFallback(config, options);
131
+ }
132
+ catch (error) {
133
+ return {
134
+ success: false,
135
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
136
+ };
137
+ }
138
+ };
139
+ // Fallback method using manual DOT generation and system graphviz
140
+ const generateGraphWithFallback = async (config, options) => {
141
+ const { title = 'JAF Runner Architecture', rankdir = 'TB', outputFormat = 'png', outputPath = './runner-graph', showToolDetails = true, showSubAgents = true, colorScheme = 'modern' } = options;
142
+ try {
143
+ // Generate DOT content manually
144
+ const dotContent = generateRunnerDOT(config, {
145
+ title,
146
+ rankdir,
147
+ showToolDetails,
148
+ showSubAgents,
149
+ colorScheme
150
+ });
151
+ // Write DOT file
152
+ const dotPath = `${outputPath}.dot`;
153
+ writeFileSync(dotPath, dotContent);
154
+ // Try to use system graphviz
155
+ const finalOutputPath = `${outputPath}.${outputFormat}`;
156
+ try {
157
+ execSync(`dot -T${outputFormat} "${dotPath}" -o "${finalOutputPath}"`, {
158
+ stdio: 'pipe'
159
+ });
160
+ return {
161
+ success: true,
162
+ outputPath: finalOutputPath,
163
+ graphDot: dotContent
164
+ };
165
+ }
166
+ catch (execError) {
167
+ return {
168
+ success: false,
169
+ error: `Graphviz not installed or failed to execute. Install with: brew install graphviz (macOS) or sudo apt-get install graphviz (Linux)`,
170
+ graphDot: dotContent
171
+ };
172
+ }
173
+ }
174
+ catch (error) {
175
+ return {
176
+ success: false,
177
+ error: error instanceof Error ? error.message : 'Failed to generate DOT content'
178
+ };
179
+ }
180
+ };
181
+ // Manual DOT generation for runner
182
+ const generateRunnerDOT = (config, options) => {
183
+ const { title, rankdir, showToolDetails, showSubAgents, colorScheme } = options;
184
+ const styles = COLOR_SCHEMES[colorScheme];
185
+ let dot = `digraph "RunnerGraph" {
186
+ rankdir=${rankdir};
187
+ label="${title}";
188
+ labelloc=t;
189
+ fontsize=16;
190
+ fontname="Arial Bold";
191
+ bgcolor=white;
192
+ pad=0.5;
193
+ compound=true;
194
+
195
+ // Runner node
196
+ "runner" [
197
+ label="Runner",
198
+ shape=diamond,
199
+ fillcolor="#28a745",
200
+ fontcolor=white,
201
+ style=filled,
202
+ fontsize=14,
203
+ fontname="Arial Bold"
204
+ ];
205
+
206
+ // Session provider node
207
+ "session_provider" [
208
+ label="Session\\nProvider",
209
+ shape=box,
210
+ fillcolor="#ffc107",
211
+ fontcolor=black,
212
+ style="filled,rounded"
213
+ ];
214
+
215
+ // Agent node
216
+ "${config.agent.id}" [
217
+ label="${config.agent.config.name}\\n(${config.agent.config.model})\\n${config.agent.config.tools.length} tools",
218
+ shape=box,
219
+ fillcolor="${styles.agent.fillcolor}",
220
+ fontcolor="${styles.agent.fontcolor}",
221
+ style="${styles.agent.style}"
222
+ ];
223
+
224
+ // Runner connections
225
+ "runner" -> "${config.agent.id}" [
226
+ color="${styles.edge.color}",
227
+ style="${styles.edge.style}",
228
+ label="executes"
229
+ ];
230
+
231
+ "runner" -> "session_provider" [
232
+ color="#ffc107",
233
+ style=dashed,
234
+ label="manages"
235
+ ];
236
+ `;
237
+ // Add tool nodes and connections if requested
238
+ if (showToolDetails) {
239
+ for (const tool of config.agent.config.tools) {
240
+ dot += `
241
+ // Tool: ${tool.name}
242
+ "${tool.name}" [
243
+ label="${tool.name}\\n${tool.description.substring(0, 30)}${tool.description.length > 30 ? '...' : ''}",
244
+ shape=ellipse,
245
+ fillcolor="${styles.tool.fillcolor}",
246
+ fontcolor="${styles.tool.fontcolor}",
247
+ style="${styles.tool.style}"
248
+ ];
249
+
250
+ "${config.agent.id}" -> "${tool.name}" [
251
+ color="${styles.toolEdge.color}",
252
+ style="${styles.toolEdge.style}",
253
+ penwidth="${styles.toolEdge.penwidth}"
254
+ ];
255
+ `;
256
+ }
257
+ }
258
+ // Add sub-agents if requested
259
+ if (showSubAgents && config.agent.config.subAgents) {
260
+ for (const subAgent of config.agent.config.subAgents) {
261
+ const subAgentId = `${config.agent.id}_sub_${subAgent.name}`;
262
+ dot += `
263
+ // Sub-agent: ${subAgent.name}
264
+ "${subAgentId}" [
265
+ label="${subAgent.name}",
266
+ shape=box,
267
+ fillcolor="${styles.subAgent.fillcolor}",
268
+ fontcolor="${styles.subAgent.fontcolor}",
269
+ style="${styles.subAgent.style}"
270
+ ];
271
+
272
+ "${config.agent.id}" -> "${subAgentId}" [
273
+ color="${styles.edge.color}",
274
+ style=dashed,
275
+ label="delegates"
276
+ ];
277
+ `;
278
+ }
279
+ }
280
+ dot += `
281
+ // Clusters for organization
282
+ subgraph cluster_agents {
283
+ label="Agents";
284
+ style=filled;
285
+ fillcolor="#f8f9fa";
286
+ "${config.agent.id}";
287
+ }
288
+
289
+ subgraph cluster_session {
290
+ label="Session Layer";
291
+ style=filled;
292
+ fillcolor="#fff3cd";
293
+ "session_provider";
294
+ }
295
+ }`;
296
+ return dot;
297
+ };
298
+ // ========== Helper Functions ==========
299
+ const addAgentNode = (graph, agent, styles, showToolDetails, showSubAgents) => {
300
+ // Main agent node
301
+ const agentNode = graph.addNode(agent.id);
302
+ const agentStyle = styles.agent;
303
+ agentNode.set('label', createAgentLabel(agent, showToolDetails));
304
+ agentNode.set('shape', agentStyle.shape);
305
+ agentNode.set('fillcolor', agentStyle.fillcolor);
306
+ agentNode.set('fontcolor', agentStyle.fontcolor);
307
+ agentNode.set('style', agentStyle.style);
308
+ if (agentStyle.fontname) {
309
+ agentNode.set('fontname', agentStyle.fontname);
310
+ }
311
+ // Add tool nodes
312
+ if (showToolDetails && agent.config.tools.length > 0) {
313
+ for (const tool of agent.config.tools) {
314
+ addToolNode(graph, tool, styles);
315
+ // Connect agent to tool
316
+ const edge = graph.addEdge(agent.id, tool.name);
317
+ edge.set('color', styles.toolEdge.color);
318
+ edge.set('style', styles.toolEdge.style);
319
+ edge.set('penwidth', styles.toolEdge.penwidth);
320
+ if (styles.toolEdge.arrowhead) {
321
+ edge.set('arrowhead', styles.toolEdge.arrowhead);
322
+ }
323
+ }
324
+ }
325
+ // Add sub-agent nodes
326
+ if (showSubAgents && agent.config.subAgents) {
327
+ for (const subAgentConfig of agent.config.subAgents) {
328
+ const subAgentId = `${agent.id}_sub_${subAgentConfig.name}`;
329
+ const subAgentNode = graph.addNode(subAgentId);
330
+ const subAgentStyle = styles.subAgent;
331
+ subAgentNode.set('label', subAgentConfig.name);
332
+ subAgentNode.set('shape', subAgentStyle.shape);
333
+ subAgentNode.set('fillcolor', subAgentStyle.fillcolor);
334
+ subAgentNode.set('fontcolor', subAgentStyle.fontcolor);
335
+ subAgentNode.set('style', subAgentStyle.style);
336
+ // Connect main agent to sub-agent
337
+ const edge = graph.addEdge(agent.id, subAgentId);
338
+ edge.set('color', styles.edge.color);
339
+ edge.set('style', 'dashed');
340
+ edge.set('label', 'delegates');
341
+ }
342
+ }
343
+ };
344
+ const addToolNode = (graph, tool, styles) => {
345
+ const toolNode = graph.addNode(tool.name);
346
+ const toolStyle = styles.tool;
347
+ toolNode.set('label', createToolLabel(tool));
348
+ toolNode.set('shape', toolStyle.shape);
349
+ toolNode.set('fillcolor', toolStyle.fillcolor);
350
+ toolNode.set('fontcolor', toolStyle.fontcolor);
351
+ toolNode.set('style', toolStyle.style);
352
+ if (toolStyle.fontname) {
353
+ toolNode.set('fontname', toolStyle.fontname);
354
+ }
355
+ };
356
+ const addAgentEdges = (graph, agent, allAgents, styles, showSubAgents) => {
357
+ // Add handoff edges (if handoffs are defined in the agent config)
358
+ // This would need to be implemented based on how handoffs are configured
359
+ // For now, we'll skip this as it's not clear from the current types
360
+ };
361
+ const createAgentLabel = (agent, showToolDetails) => {
362
+ let label = `${agent.config.name}\\n(${agent.config.model})`;
363
+ if (showToolDetails && agent.config.tools.length > 0) {
364
+ label += `\\n${agent.config.tools.length} tools`;
365
+ }
366
+ if (agent.config.subAgents && agent.config.subAgents.length > 0) {
367
+ label += `\\n${agent.config.subAgents.length} sub-agents`;
368
+ }
369
+ return label;
370
+ };
371
+ const createToolLabel = (tool) => {
372
+ return `${tool.name}\\n${tool.description.substring(0, 30)}${tool.description.length > 30 ? '...' : ''}`;
373
+ };
374
+ // ========== Validation Functions ==========
375
+ export const validateGraphOptions = (options) => {
376
+ const errors = [];
377
+ if (options.layout && !['dot', 'neato', 'fdp', 'circo', 'twopi'].includes(options.layout)) {
378
+ errors.push('Invalid layout option');
379
+ }
380
+ if (options.rankdir && !['TB', 'LR', 'BT', 'RL'].includes(options.rankdir)) {
381
+ errors.push('Invalid rankdir option');
382
+ }
383
+ if (options.outputFormat && !['png', 'svg', 'pdf'].includes(options.outputFormat)) {
384
+ errors.push('Invalid output format');
385
+ }
386
+ if (options.colorScheme && !['default', 'modern', 'minimal'].includes(options.colorScheme)) {
387
+ errors.push('Invalid color scheme');
388
+ }
389
+ return errors;
390
+ };
391
+ // ========== Utility Functions ==========
392
+ export const getGraphDot = (agents, options = {}) => {
393
+ const { title = 'JAF Agent Graph', rankdir = 'TB', colorScheme = 'default' } = options;
394
+ const graph = digraph('AgentGraph');
395
+ graph.set('rankdir', rankdir);
396
+ graph.set('label', title);
397
+ const styles = COLOR_SCHEMES[colorScheme];
398
+ for (const agent of agents) {
399
+ addAgentNode(graph, agent, styles, true, true);
400
+ }
401
+ return graph.to_dot();
402
+ };
403
+ //# sourceMappingURL=graphviz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphviz.js","sourceRoot":"","sources":["../../src/visualization/graphviz.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * JAF Visualization - Main Export
3
+ *
4
+ * Centralized exports for the visualization module
5
+ */
6
+ export { generateAgentGraph, generateToolGraph, generateRunnerGraph, getGraphDot, validateGraphOptions } from './graphviz';
7
+ export type { GraphOptions, GraphResult, NodeStyle, EdgeStyle } from './graphviz';
8
+ export { generateRunnerVisualization, generateAgentVisualization, generateToolVisualization, generateRunnerGraphPng } from '../adk/runners';
9
+ export { runVisualizationExamples, quickStartVisualization } from './example';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * JAF Visualization - Main Export
3
+ *
4
+ * Centralized exports for the visualization module
5
+ */
6
+ // Core visualization functions
7
+ export { generateAgentGraph, generateToolGraph, generateRunnerGraph, getGraphDot, validateGraphOptions } from './graphviz';
8
+ // Runner integration (re-export for convenience)
9
+ export { generateRunnerVisualization, generateAgentVisualization, generateToolVisualization, generateRunnerGraphPng } from '../adk/runners';
10
+ // Examples and utilities
11
+ export { runVisualizationExamples, quickStartVisualization } from './example';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+BAA+B;AAC/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAUpB,iDAAiD;AACjD,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAExB,yBAAyB;AACzB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,WAAW,CAAC"}
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "@xynehq/jaf",
3
+ "version": "0.1.2",
4
+ "description": "Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./adk": {
14
+ "import": "./dist/adk/index.js",
15
+ "require": "./dist/adk/index.js",
16
+ "types": "./dist/adk/index.d.ts"
17
+ }
18
+ },
19
+ "typesVersions": {
20
+ "*": {
21
+ "adk": [
22
+ "dist/adk/index.d.ts"
23
+ ]
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md",
29
+ "LICENSE"
30
+ ],
31
+ "scripts": {
32
+ "build": "tsc",
33
+ "dev": "tsx watch src/index.ts",
34
+ "test": "jest",
35
+ "test:db:start": "./scripts/setup-test-db.sh",
36
+ "test:db:stop": "./scripts/teardown-test-db.sh",
37
+ "test:with-db": "npm run test:db:start && npm test; npm run test:db:stop",
38
+ "lint": "eslint src --ext .ts,.tsx",
39
+ "typecheck": "tsc --noEmit",
40
+ "prepublishOnly": "npm run lint && npm run test && npm run build",
41
+ "prepare": "npm run build",
42
+ "version": "npm run build && git add -A",
43
+ "postversion": "git push && git push --tags",
44
+ "a2a:example": "tsx src/a2a/examples/server-example.ts",
45
+ "a2a:client": "tsx src/a2a/examples/client-example.ts",
46
+ "a2a:dev": "tsx watch src/a2a/examples/server-example.ts"
47
+ },
48
+ "keywords": [
49
+ "ai",
50
+ "agents",
51
+ "functional",
52
+ "typescript",
53
+ "llm",
54
+ "a2a",
55
+ "agent2agent",
56
+ "protocol",
57
+ "jaf",
58
+ "adk",
59
+ "agent-development-kit"
60
+ ],
61
+ "author": "Xyne HQ",
62
+ "license": "MIT",
63
+ "homepage": "https://xynehq.github.io/jaf/",
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "git+https://github.com/xynehq/jaf.git"
67
+ },
68
+ "bugs": {
69
+ "url": "https://github.com/xynehq/jaf/issues"
70
+ },
71
+ "dependencies": {
72
+ "@fastify/cors": "^9.0.1",
73
+ "@modelcontextprotocol/sdk": "^0.4.0",
74
+ "fastify": "^4.29.1",
75
+ "graphviz": "^0.0.9",
76
+ "mathjs": "^14.6.0",
77
+ "openai": "^4.0.0",
78
+ "uuid": "^9.0.0",
79
+ "zod": "^3.22.0"
80
+ },
81
+ "devDependencies": {
82
+ "@types/cors": "^2.8.19",
83
+ "@types/graphviz": "^0.0.39",
84
+ "@types/jest": "^29.0.0",
85
+ "@types/node": "^20.0.0",
86
+ "@types/pg": "^8.15.5",
87
+ "@types/uuid": "^9.0.0",
88
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
89
+ "@typescript-eslint/parser": "^6.0.0",
90
+ "dotenv": "^17.2.1",
91
+ "eslint": "^8.0.0",
92
+ "ioredis": "^5.7.0",
93
+ "jest": "^29.0.0",
94
+ "pg": "^8.16.3",
95
+ "ts-jest": "^29.0.0",
96
+ "tsx": "^4.0.0",
97
+ "typescript": "^5.0.0"
98
+ }
99
+ }