gauss-ai 4.0.0

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 (232) hide show
  1. package/CHANGELOG.md +489 -0
  2. package/LICENSE +21 -0
  3. package/README.md +269 -0
  4. package/dist/a2a/index.cjs +7 -0
  5. package/dist/a2a/index.cjs.map +1 -0
  6. package/dist/a2a/index.d.cts +30 -0
  7. package/dist/a2a/index.d.ts +30 -0
  8. package/dist/a2a/index.js +7 -0
  9. package/dist/a2a/index.js.map +1 -0
  10. package/dist/agent-UIQDSYCE.js +16 -0
  11. package/dist/agent-UIQDSYCE.js.map +1 -0
  12. package/dist/agent-builder-8W3mBR-N.d.ts +1075 -0
  13. package/dist/agent-builder-GEMYdb1p.d.cts +1075 -0
  14. package/dist/agent-graph-AMQYAWNF.js +1422 -0
  15. package/dist/agent-graph-AMQYAWNF.js.map +1 -0
  16. package/dist/ai-sdk-mcp.adapter-SEN6KHNU.js +124 -0
  17. package/dist/ai-sdk-mcp.adapter-SEN6KHNU.js.map +1 -0
  18. package/dist/browser/index.js +10 -0
  19. package/dist/browser/index.js.map +1 -0
  20. package/dist/bun-runtime.adapter-MQDAJLQM.js +8 -0
  21. package/dist/bun-runtime.adapter-MQDAJLQM.js.map +1 -0
  22. package/dist/bun-runtime.adapter-XKOUXVAK.cjs +8 -0
  23. package/dist/bun-runtime.adapter-XKOUXVAK.cjs.map +1 -0
  24. package/dist/chat-A3XMRPJL.js +129 -0
  25. package/dist/chat-A3XMRPJL.js.map +1 -0
  26. package/dist/chunk-2ZRU47NC.js +91 -0
  27. package/dist/chunk-2ZRU47NC.js.map +1 -0
  28. package/dist/chunk-3LD3JTH4.cjs +18 -0
  29. package/dist/chunk-3LD3JTH4.cjs.map +1 -0
  30. package/dist/chunk-5FE5TG2W.cjs +16 -0
  31. package/dist/chunk-5FE5TG2W.cjs.map +1 -0
  32. package/dist/chunk-6XF673YC.cjs +436 -0
  33. package/dist/chunk-6XF673YC.cjs.map +1 -0
  34. package/dist/chunk-7CKWZJNS.js +230 -0
  35. package/dist/chunk-7CKWZJNS.js.map +1 -0
  36. package/dist/chunk-BI2G665F.js +4588 -0
  37. package/dist/chunk-BI2G665F.js.map +1 -0
  38. package/dist/chunk-C5NLWJS2.js +139 -0
  39. package/dist/chunk-C5NLWJS2.js.map +1 -0
  40. package/dist/chunk-CJZ66SU3.cjs +4321 -0
  41. package/dist/chunk-CJZ66SU3.cjs.map +1 -0
  42. package/dist/chunk-DAMT2CXW.cjs +91 -0
  43. package/dist/chunk-DAMT2CXW.cjs.map +1 -0
  44. package/dist/chunk-E7WG3MO5.js +18 -0
  45. package/dist/chunk-E7WG3MO5.js.map +1 -0
  46. package/dist/chunk-EFDM6R4J.js +99 -0
  47. package/dist/chunk-EFDM6R4J.js.map +1 -0
  48. package/dist/chunk-F7WIPPEO.js +256 -0
  49. package/dist/chunk-F7WIPPEO.js.map +1 -0
  50. package/dist/chunk-FAYDE67N.js +6927 -0
  51. package/dist/chunk-FAYDE67N.js.map +1 -0
  52. package/dist/chunk-GAE2KKCM.js +21 -0
  53. package/dist/chunk-GAE2KKCM.js.map +1 -0
  54. package/dist/chunk-INLNGRXM.cjs +130 -0
  55. package/dist/chunk-INLNGRXM.cjs.map +1 -0
  56. package/dist/chunk-JKXKXB5O.js +130 -0
  57. package/dist/chunk-JKXKXB5O.js.map +1 -0
  58. package/dist/chunk-K6SAETGP.js +375 -0
  59. package/dist/chunk-K6SAETGP.js.map +1 -0
  60. package/dist/chunk-KEASLAYR.js +157 -0
  61. package/dist/chunk-KEASLAYR.js.map +1 -0
  62. package/dist/chunk-KKJVNM6O.js +436 -0
  63. package/dist/chunk-KKJVNM6O.js.map +1 -0
  64. package/dist/chunk-KYIMVRIM.js +16 -0
  65. package/dist/chunk-KYIMVRIM.js.map +1 -0
  66. package/dist/chunk-MB7NXIZD.js +4321 -0
  67. package/dist/chunk-MB7NXIZD.js.map +1 -0
  68. package/dist/chunk-MHHDXPGE.js +209 -0
  69. package/dist/chunk-MHHDXPGE.js.map +1 -0
  70. package/dist/chunk-NE6JJA5W.js +401 -0
  71. package/dist/chunk-NE6JJA5W.js.map +1 -0
  72. package/dist/chunk-PF46XZBF.cjs +6927 -0
  73. package/dist/chunk-PF46XZBF.cjs.map +1 -0
  74. package/dist/chunk-PSJIAGDE.cjs +375 -0
  75. package/dist/chunk-PSJIAGDE.cjs.map +1 -0
  76. package/dist/chunk-PWOQDXNQ.js +16 -0
  77. package/dist/chunk-PWOQDXNQ.js.map +1 -0
  78. package/dist/chunk-QYOMQBBZ.cjs +230 -0
  79. package/dist/chunk-QYOMQBBZ.cjs.map +1 -0
  80. package/dist/chunk-UDFXLC4J.cjs +16 -0
  81. package/dist/chunk-UDFXLC4J.cjs.map +1 -0
  82. package/dist/chunk-UO4NGXRT.cjs +259 -0
  83. package/dist/chunk-UO4NGXRT.cjs.map +1 -0
  84. package/dist/chunk-UPFDFLEW.js +40 -0
  85. package/dist/chunk-UPFDFLEW.js.map +1 -0
  86. package/dist/chunk-V55JSQS7.cjs +16 -0
  87. package/dist/chunk-V55JSQS7.cjs.map +1 -0
  88. package/dist/chunk-VJADHXZL.cjs +16 -0
  89. package/dist/chunk-VJADHXZL.cjs.map +1 -0
  90. package/dist/chunk-VRWD7LCI.js +59 -0
  91. package/dist/chunk-VRWD7LCI.js.map +1 -0
  92. package/dist/chunk-WKKQ443C.js +487 -0
  93. package/dist/chunk-WKKQ443C.js.map +1 -0
  94. package/dist/chunk-X2GHUHAF.js +436 -0
  95. package/dist/chunk-X2GHUHAF.js.map +1 -0
  96. package/dist/chunk-XLGW3XNI.cjs +256 -0
  97. package/dist/chunk-XLGW3XNI.cjs.map +1 -0
  98. package/dist/chunk-ZFJKX4DP.js +16 -0
  99. package/dist/chunk-ZFJKX4DP.js.map +1 -0
  100. package/dist/chunk-ZM2OEWM2.js +259 -0
  101. package/dist/chunk-ZM2OEWM2.js.map +1 -0
  102. package/dist/chunk-ZNAIP2XV.js +16 -0
  103. package/dist/chunk-ZNAIP2XV.js.map +1 -0
  104. package/dist/chunk-ZYFAZYSL.js +42 -0
  105. package/dist/chunk-ZYFAZYSL.js.map +1 -0
  106. package/dist/cli/index.js +421 -0
  107. package/dist/cli/index.js.map +1 -0
  108. package/dist/config-4MHT6TQW.js +153 -0
  109. package/dist/config-4MHT6TQW.js.map +1 -0
  110. package/dist/config-REERQFK4.cjs +153 -0
  111. package/dist/config-REERQFK4.cjs.map +1 -0
  112. package/dist/cost-tracker-JLOU7IZJ.js +7 -0
  113. package/dist/cost-tracker-JLOU7IZJ.js.map +1 -0
  114. package/dist/demo-C52GMSYH.js +188 -0
  115. package/dist/demo-C52GMSYH.js.map +1 -0
  116. package/dist/deno/index.js +306 -0
  117. package/dist/deno/index.js.map +1 -0
  118. package/dist/deno-runtime.adapter-F744HY7K.js +8 -0
  119. package/dist/deno-runtime.adapter-F744HY7K.js.map +1 -0
  120. package/dist/deno-runtime.adapter-RFEVNSCV.cjs +8 -0
  121. package/dist/deno-runtime.adapter-RFEVNSCV.cjs.map +1 -0
  122. package/dist/dev-D7DDVDA4.js +218 -0
  123. package/dist/dev-D7DDVDA4.js.map +1 -0
  124. package/dist/edge/index.js +10 -0
  125. package/dist/edge/index.js.map +1 -0
  126. package/dist/edge-runtime.adapter-UQCW2F7X.js +8 -0
  127. package/dist/edge-runtime.adapter-UQCW2F7X.js.map +1 -0
  128. package/dist/edge-runtime.adapter-YED6F3AY.cjs +8 -0
  129. package/dist/edge-runtime.adapter-YED6F3AY.cjs.map +1 -0
  130. package/dist/graph-MGFAQZ5W.js +50 -0
  131. package/dist/graph-MGFAQZ5W.js.map +1 -0
  132. package/dist/graph-visualization-HBSVQXJK.js +9 -0
  133. package/dist/graph-visualization-HBSVQXJK.js.map +1 -0
  134. package/dist/index-BRgqNnh3.d.cts +982 -0
  135. package/dist/index-CZxpYUxZ.d.ts +982 -0
  136. package/dist/index.cjs +14789 -0
  137. package/dist/index.cjs.map +1 -0
  138. package/dist/index.d.cts +10275 -0
  139. package/dist/index.d.ts +10275 -0
  140. package/dist/index.js +14789 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/init-CFWXTQ35.js +133 -0
  143. package/dist/init-CFWXTQ35.js.map +1 -0
  144. package/dist/llm-VWO4MC7J.cjs +17 -0
  145. package/dist/llm-VWO4MC7J.cjs.map +1 -0
  146. package/dist/llm-XLXVSPBI.js +17 -0
  147. package/dist/llm-XLXVSPBI.js.map +1 -0
  148. package/dist/logging-WRAK5ZXT.js +33 -0
  149. package/dist/logging-WRAK5ZXT.js.map +1 -0
  150. package/dist/metrics-FAHZVVD4.js +47 -0
  151. package/dist/metrics-FAHZVVD4.js.map +1 -0
  152. package/dist/node/index.cjs +280 -0
  153. package/dist/node/index.cjs.map +1 -0
  154. package/dist/node/index.d.cts +51 -0
  155. package/dist/node/index.d.ts +51 -0
  156. package/dist/node/index.js +280 -0
  157. package/dist/node/index.js.map +1 -0
  158. package/dist/node-runtime.adapter-5L7PJ6W2.js +8 -0
  159. package/dist/node-runtime.adapter-5L7PJ6W2.js.map +1 -0
  160. package/dist/node-runtime.adapter-CCRZVGHB.cjs +8 -0
  161. package/dist/node-runtime.adapter-CCRZVGHB.cjs.map +1 -0
  162. package/dist/persist-usage-WTBTCWEF.js +7 -0
  163. package/dist/persist-usage-WTBTCWEF.js.map +1 -0
  164. package/dist/plugin-RCPBWUUA.js +207 -0
  165. package/dist/plugin-RCPBWUUA.js.map +1 -0
  166. package/dist/plugins/index.cjs +75 -0
  167. package/dist/plugins/index.cjs.map +1 -0
  168. package/dist/plugins/index.d.cts +8 -0
  169. package/dist/plugins/index.d.ts +8 -0
  170. package/dist/plugins/index.js +75 -0
  171. package/dist/plugins/index.js.map +1 -0
  172. package/dist/plugins-L4ING3CX.js +4625 -0
  173. package/dist/plugins-L4ING3CX.js.map +1 -0
  174. package/dist/providers/index.cjs +189 -0
  175. package/dist/providers/index.cjs.map +1 -0
  176. package/dist/providers/index.d.cts +168 -0
  177. package/dist/providers/index.d.ts +168 -0
  178. package/dist/providers/index.js +189 -0
  179. package/dist/providers/index.js.map +1 -0
  180. package/dist/providers-3RNQ5CKZ.js +59 -0
  181. package/dist/providers-3RNQ5CKZ.js.map +1 -0
  182. package/dist/providers-66GPXUGQ.cjs +59 -0
  183. package/dist/providers-66GPXUGQ.cjs.map +1 -0
  184. package/dist/repl-K6QN4I2S.js +678 -0
  185. package/dist/repl-K6QN4I2S.js.map +1 -0
  186. package/dist/rest/index.cjs +17 -0
  187. package/dist/rest/index.cjs.map +1 -0
  188. package/dist/rest/index.d.cts +102 -0
  189. package/dist/rest/index.d.ts +102 -0
  190. package/dist/rest/index.js +17 -0
  191. package/dist/rest/index.js.map +1 -0
  192. package/dist/runtime-deno.js +15 -0
  193. package/dist/runtime-deno.js.map +1 -0
  194. package/dist/runtime-edge.js +15 -0
  195. package/dist/runtime-edge.js.map +1 -0
  196. package/dist/runtime-node.js +15 -0
  197. package/dist/runtime-node.js.map +1 -0
  198. package/dist/scraping/index.cjs +11 -0
  199. package/dist/scraping/index.cjs.map +1 -0
  200. package/dist/scraping/index.d.cts +17 -0
  201. package/dist/scraping/index.d.ts +17 -0
  202. package/dist/scraping/index.js +11 -0
  203. package/dist/scraping/index.js.map +1 -0
  204. package/dist/semantic-scraping.port-CZWUea88.d.cts +54 -0
  205. package/dist/semantic-scraping.port-CZWUea88.d.ts +54 -0
  206. package/dist/server/index.js +166 -0
  207. package/dist/server/index.js.map +1 -0
  208. package/dist/testing/index.cjs +25 -0
  209. package/dist/testing/index.cjs.map +1 -0
  210. package/dist/testing/index.d.cts +63 -0
  211. package/dist/testing/index.d.ts +63 -0
  212. package/dist/testing/index.js +25 -0
  213. package/dist/testing/index.js.map +1 -0
  214. package/dist/token-counter.port-CRgxZZGe.d.ts +334 -0
  215. package/dist/token-counter.port-D7BHMCRR.d.cts +334 -0
  216. package/dist/tools-BZM33OBZ.js +10 -0
  217. package/dist/tools-BZM33OBZ.js.map +1 -0
  218. package/dist/tracing-XA3TEWP4.js +48 -0
  219. package/dist/tracing-XA3TEWP4.js.map +1 -0
  220. package/dist/types-CVsP7gFI.d.cts +235 -0
  221. package/dist/types-CVsP7gFI.d.ts +235 -0
  222. package/dist/virtual-fs.adapter-BBLS-3AY.d.ts +26 -0
  223. package/dist/virtual-fs.adapter-nb0CTYOj.d.cts +26 -0
  224. package/dist/workflow/index.cjs +9 -0
  225. package/dist/workflow/index.cjs.map +1 -0
  226. package/dist/workflow/index.d.cts +62 -0
  227. package/dist/workflow/index.d.ts +62 -0
  228. package/dist/workflow/index.js +9 -0
  229. package/dist/workflow/index.js.map +1 -0
  230. package/dist/workflow.port-BaCttxrw.d.cts +153 -0
  231. package/dist/workflow.port-BaCttxrw.d.ts +153 -0
  232. package/package.json +230 -0
@@ -0,0 +1,139 @@
1
+ // src/adapters/graph-visualization/ascii-graph.adapter.ts
2
+ var AsciiGraphAdapter = class {
3
+ toAscii(graph) {
4
+ if (graph.nodes.length === 0) return "(empty graph)";
5
+ const ordered = this.topologicalSort(graph);
6
+ const forkMap = new Map(graph.forks.map((f) => [f.id, f.nodeIds]));
7
+ const lines = [];
8
+ const boxes = ordered.map((id) => {
9
+ const node = graph.nodes.find((n) => n.id === id);
10
+ return this.renderBox(node.label ?? node.id, node.type);
11
+ });
12
+ const topLine = boxes.map((b) => b[0]).join(" ");
13
+ const midLine = boxes.map((b) => b[1]).join(" \u2500\u2500\u2192 ");
14
+ const typLine = boxes.map((b) => b[2]).join(" ");
15
+ const botLine = boxes.map((b) => b[3]).join(" ");
16
+ lines.push(topLine, midLine, typLine, botLine);
17
+ for (const [forkId, nodeIds] of forkMap) {
18
+ const idx = ordered.indexOf(forkId);
19
+ if (idx < 0) continue;
20
+ const offset = this.computeOffset(boxes, idx);
21
+ lines.push("");
22
+ const forkLines = this.renderFork(forkId, nodeIds);
23
+ for (const fl of forkLines) {
24
+ lines.push(" ".repeat(offset) + fl);
25
+ }
26
+ }
27
+ return lines.join("\n");
28
+ }
29
+ toMermaid(_graph) {
30
+ throw new Error("Use MermaidGraphAdapter for Mermaid output");
31
+ }
32
+ renderBox(label, type) {
33
+ const inner = Math.max(label.length, type.length + 2);
34
+ const pad = (s) => s.padEnd(inner);
35
+ return [
36
+ `\u250C${"\u2500".repeat(inner + 2)}\u2510`,
37
+ `\u2502 ${pad(label)} \u2502`,
38
+ `\u2502 ${pad(`(${type})`)} \u2502`,
39
+ `\u2514${"\u2500".repeat(inner + 2)}\u2518`
40
+ ];
41
+ }
42
+ renderFork(id, nodeIds) {
43
+ const miniBoxLine = nodeIds.map((nid) => {
44
+ const w = nid.length + 2;
45
+ return `\u250C${"\u2500".repeat(w)}\u2510`;
46
+ }).join("");
47
+ const miniMidLine = nodeIds.map((nid) => `\u2502 ${nid} \u2502`).join("");
48
+ const miniBotLine = nodeIds.map((nid) => {
49
+ const w = nid.length + 2;
50
+ return `\u2514${"\u2500".repeat(w)}\u2518`;
51
+ }).join("");
52
+ const contentWidth = Math.max(id.length + 2, miniMidLine.length + 2);
53
+ const padCenter = (s) => {
54
+ const leftPad = Math.floor((contentWidth - s.length) / 2);
55
+ return " ".repeat(Math.max(0, leftPad)) + s;
56
+ };
57
+ const dashesTotal = contentWidth - 1;
58
+ const leftDashes = Math.floor(dashesTotal / 2);
59
+ const rightDashes = dashesTotal - leftDashes;
60
+ return [
61
+ " ".repeat(Math.floor(contentWidth / 2)) + "\u2502",
62
+ `\u250C${"\u2500".repeat(leftDashes)}\u2534${"\u2500".repeat(rightDashes)}\u2510`,
63
+ `\u2502${padCenter(id)}${" ".repeat(Math.max(0, contentWidth - padCenter(id).length))}\u2502`,
64
+ `\u2502${padCenter(miniBoxLine)}${" ".repeat(Math.max(0, contentWidth - padCenter(miniBoxLine).length))}\u2502`,
65
+ `\u2502${padCenter(miniMidLine)}${" ".repeat(Math.max(0, contentWidth - padCenter(miniMidLine).length))}\u2502`,
66
+ `\u2502${padCenter(miniBotLine)}${" ".repeat(Math.max(0, contentWidth - padCenter(miniBotLine).length))}\u2502`,
67
+ `\u2514${"\u2500".repeat(contentWidth)}\u2518`
68
+ ];
69
+ }
70
+ computeOffset(boxes, idx) {
71
+ let offset = 0;
72
+ for (let i = 0; i < idx; i++) {
73
+ offset += boxes[i][0].length + 5;
74
+ }
75
+ return offset;
76
+ }
77
+ topologicalSort(graph) {
78
+ const adjacency = /* @__PURE__ */ new Map();
79
+ const inDegree = /* @__PURE__ */ new Map();
80
+ for (const n of graph.nodes) {
81
+ adjacency.set(n.id, []);
82
+ inDegree.set(n.id, 0);
83
+ }
84
+ for (const e of graph.edges) {
85
+ adjacency.get(e.from)?.push(e.to);
86
+ inDegree.set(e.to, (inDegree.get(e.to) ?? 0) + 1);
87
+ }
88
+ const queue = graph.nodes.filter((n) => (inDegree.get(n.id) ?? 0) === 0).map((n) => n.id);
89
+ const result = [];
90
+ while (queue.length > 0) {
91
+ const id = queue.shift();
92
+ result.push(id);
93
+ for (const next of adjacency.get(id) ?? []) {
94
+ const deg = (inDegree.get(next) ?? 1) - 1;
95
+ inDegree.set(next, deg);
96
+ if (deg === 0) queue.push(next);
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+ };
102
+
103
+ // src/adapters/graph-visualization/mermaid-graph.adapter.ts
104
+ var MermaidGraphAdapter = class {
105
+ toAscii(_graph) {
106
+ throw new Error("Use AsciiGraphAdapter for ASCII output");
107
+ }
108
+ toMermaid(graph) {
109
+ const lines = ["graph LR"];
110
+ const forkNodeIds = new Set(graph.forks.flatMap((f) => f.nodeIds));
111
+ const sanitize = (id) => id.replace(/-/g, "_");
112
+ for (const node of graph.nodes) {
113
+ if (forkNodeIds.has(node.id)) continue;
114
+ const sid = sanitize(node.id);
115
+ const label = node.label ?? node.id;
116
+ lines.push(` ${sid}[${label}<br>${node.type}]`);
117
+ }
118
+ for (const edge of graph.edges) {
119
+ lines.push(` ${sanitize(edge.from)} --> ${sanitize(edge.to)}`);
120
+ }
121
+ for (const fork of graph.forks) {
122
+ lines.push(` subgraph ${fork.id}`);
123
+ for (const nid of fork.nodeIds) {
124
+ const node = graph.nodes.find((n) => n.id === nid);
125
+ const label = node?.label ?? nid;
126
+ const type = node?.type ?? "agent";
127
+ lines.push(` ${sanitize(nid)}[${label}<br>${type}]`);
128
+ }
129
+ lines.push(" end");
130
+ }
131
+ return lines.join("\n");
132
+ }
133
+ };
134
+
135
+ export {
136
+ AsciiGraphAdapter,
137
+ MermaidGraphAdapter
138
+ };
139
+ //# sourceMappingURL=chunk-C5NLWJS2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/graph-visualization/ascii-graph.adapter.ts","../src/adapters/graph-visualization/mermaid-graph.adapter.ts"],"sourcesContent":["// =============================================================================\n// AsciiGraphAdapter — Renders a GraphDescriptor as ASCII box art\n// =============================================================================\n\nimport type {\n GraphVisualizationPort,\n GraphDescriptor,\n} from \"../../ports/graph-visualization.port.js\";\n\nexport class AsciiGraphAdapter implements GraphVisualizationPort {\n toAscii(graph: GraphDescriptor): string {\n if (graph.nodes.length === 0) return \"(empty graph)\";\n\n const ordered = this.topologicalSort(graph);\n const forkMap = new Map(graph.forks.map((f) => [f.id, f.nodeIds]));\n const lines: string[] = [];\n\n // Render main flow\n const boxes = ordered.map((id) => {\n const node = graph.nodes.find((n) => n.id === id)!;\n return this.renderBox(node.label ?? node.id, node.type);\n });\n const topLine = boxes.map((b) => b[0]).join(\" \");\n const midLine = boxes.map((b) => b[1]).join(\" ──→ \");\n const typLine = boxes.map((b) => b[2]).join(\" \");\n const botLine = boxes.map((b) => b[3]).join(\" \");\n lines.push(topLine, midLine, typLine, botLine);\n\n // Render forks below their parent node\n for (const [forkId, nodeIds] of forkMap) {\n const idx = ordered.indexOf(forkId);\n if (idx < 0) continue;\n const offset = this.computeOffset(boxes, idx);\n lines.push(\"\");\n const forkLines = this.renderFork(forkId, nodeIds);\n for (const fl of forkLines) {\n lines.push(\" \".repeat(offset) + fl);\n }\n }\n\n return lines.join(\"\\n\");\n }\n\n toMermaid(_graph: GraphDescriptor): string {\n throw new Error(\"Use MermaidGraphAdapter for Mermaid output\");\n }\n\n private renderBox(label: string, type: string): [string, string, string, string] {\n const inner = Math.max(label.length, type.length + 2);\n const pad = (s: string) => s.padEnd(inner);\n return [\n `┌${\"─\".repeat(inner + 2)}┐`,\n `│ ${pad(label)} │`,\n `│ ${pad(`(${type})`)} │`,\n `└${\"─\".repeat(inner + 2)}┘`,\n ];\n }\n\n private renderFork(id: string, nodeIds: string[]): string[] {\n const miniBoxLine = nodeIds.map((nid) => {\n const w = nid.length + 2;\n return `┌${\"─\".repeat(w)}┐`;\n }).join(\"\");\n const miniMidLine = nodeIds.map((nid) => `│ ${nid} │`).join(\"\");\n const miniBotLine = nodeIds.map((nid) => {\n const w = nid.length + 2;\n return `└${\"─\".repeat(w)}┘`;\n }).join(\"\");\n const contentWidth = Math.max(id.length + 2, miniMidLine.length + 2);\n const padCenter = (s: string) => {\n const leftPad = Math.floor((contentWidth - s.length) / 2);\n return \" \".repeat(Math.max(0, leftPad)) + s;\n };\n\n const dashesTotal = contentWidth - 1; // -1 for the ┴ character\n const leftDashes = Math.floor(dashesTotal / 2);\n const rightDashes = dashesTotal - leftDashes;\n\n return [\n \" \".repeat(Math.floor(contentWidth / 2)) + \"│\",\n `┌${\"─\".repeat(leftDashes)}┴${\"─\".repeat(rightDashes)}┐`,\n `│${padCenter(id)}${\" \".repeat(Math.max(0, contentWidth - padCenter(id).length))}│`,\n `│${padCenter(miniBoxLine)}${\" \".repeat(Math.max(0, contentWidth - padCenter(miniBoxLine).length))}│`,\n `│${padCenter(miniMidLine)}${\" \".repeat(Math.max(0, contentWidth - padCenter(miniMidLine).length))}│`,\n `│${padCenter(miniBotLine)}${\" \".repeat(Math.max(0, contentWidth - padCenter(miniBotLine).length))}│`,\n `└${\"─\".repeat(contentWidth)}┘`,\n ];\n }\n\n private computeOffset(boxes: [string, string, string, string][], idx: number): number {\n let offset = 0;\n for (let i = 0; i < idx; i++) {\n offset += boxes[i][0].length + 5; // 5 = \" \" or \" ──→ \"\n }\n return offset;\n }\n\n private topologicalSort(graph: GraphDescriptor): string[] {\n const adjacency = new Map<string, string[]>();\n const inDegree = new Map<string, number>();\n for (const n of graph.nodes) {\n adjacency.set(n.id, []);\n inDegree.set(n.id, 0);\n }\n for (const e of graph.edges) {\n adjacency.get(e.from)?.push(e.to);\n inDegree.set(e.to, (inDegree.get(e.to) ?? 0) + 1);\n }\n const queue = graph.nodes.filter((n) => (inDegree.get(n.id) ?? 0) === 0).map((n) => n.id);\n const result: string[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n result.push(id);\n for (const next of adjacency.get(id) ?? []) {\n const deg = (inDegree.get(next) ?? 1) - 1;\n inDegree.set(next, deg);\n if (deg === 0) queue.push(next);\n }\n }\n return result;\n }\n}\n","// =============================================================================\n// MermaidGraphAdapter — Renders a GraphDescriptor as Mermaid flowchart syntax\n// =============================================================================\n\nimport type {\n GraphVisualizationPort,\n GraphDescriptor,\n} from \"../../ports/graph-visualization.port.js\";\n\nexport class MermaidGraphAdapter implements GraphVisualizationPort {\n toAscii(_graph: GraphDescriptor): string {\n throw new Error(\"Use AsciiGraphAdapter for ASCII output\");\n }\n\n toMermaid(graph: GraphDescriptor): string {\n const lines: string[] = [\"graph LR\"];\n const forkNodeIds = new Set(graph.forks.flatMap((f) => f.nodeIds));\n const sanitize = (id: string) => id.replace(/-/g, \"_\");\n\n // Node declarations (skip fork-internal nodes, they go inside subgraph)\n for (const node of graph.nodes) {\n if (forkNodeIds.has(node.id)) continue;\n const sid = sanitize(node.id);\n const label = node.label ?? node.id;\n lines.push(` ${sid}[${label}<br>${node.type}]`);\n }\n\n // Edges\n for (const edge of graph.edges) {\n lines.push(` ${sanitize(edge.from)} --> ${sanitize(edge.to)}`);\n }\n\n // Forks as subgraphs\n for (const fork of graph.forks) {\n lines.push(` subgraph ${fork.id}`);\n for (const nid of fork.nodeIds) {\n const node = graph.nodes.find((n) => n.id === nid);\n const label = node?.label ?? nid;\n const type = node?.type ?? \"agent\";\n lines.push(` ${sanitize(nid)}[${label}<br>${type}]`);\n }\n lines.push(\" end\");\n }\n\n return lines.join(\"\\n\");\n }\n}\n"],"mappings":"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","names":[]}