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,230 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;// src/adapters/semantic-scraping/semantic-scraping.adapter.ts
2
+ function urlToPattern(url) {
3
+ try {
4
+ const u = new URL(url);
5
+ const path = u.pathname.replace(/\/+$/, "") || "/";
6
+ if (!u.search) return path;
7
+ const params = new URLSearchParams(u.search);
8
+ const wildcarded = [...params.keys()].sort().map((k) => `${k}=*`);
9
+ return `${path}?${wildcarded.join("&")}`;
10
+ } catch (e) {
11
+ return url;
12
+ }
13
+ }
14
+ function hashTools(tools) {
15
+ const keys = tools.map(
16
+ (t) => `${t.name}:${_nullishCoalesce(t.description, () => ( ""))}:${JSON.stringify(_nullishCoalesce(t.inputSchema, () => ( {})))}`
17
+ ).sort();
18
+ let h = 0;
19
+ const s = keys.join("|");
20
+ for (let i = 0; i < s.length; i++) {
21
+ h = (h << 5) - h + s.charCodeAt(i) | 0;
22
+ }
23
+ return h.toString(36);
24
+ }
25
+ function parseSchema(schema) {
26
+ if (typeof schema === "string") {
27
+ try {
28
+ return JSON.parse(schema);
29
+ } catch (e2) {
30
+ return { type: "object", properties: {} };
31
+ }
32
+ }
33
+ return schema;
34
+ }
35
+ function toManifestTool(tool, pattern) {
36
+ const schema = parseSchema(tool.inputSchema);
37
+ const annotations = tool.annotations ? { ...tool.annotations } : void 0;
38
+ return {
39
+ name: tool.name,
40
+ description: tool.description,
41
+ inputSchema: schema,
42
+ category: tool.category,
43
+ annotations,
44
+ pagePatterns: [pattern]
45
+ };
46
+ }
47
+ function rebuildTools(pages, toolsByName) {
48
+ const consolidated = /* @__PURE__ */ new Map();
49
+ for (const [, entry] of toolsByName) {
50
+ const existing = consolidated.get(entry.tool.name);
51
+ if (existing) {
52
+ for (const p of entry.patterns) existing.patterns.add(p);
53
+ } else {
54
+ consolidated.set(entry.tool.name, {
55
+ tool: entry.tool,
56
+ patterns: new Set(entry.patterns)
57
+ });
58
+ }
59
+ }
60
+ const activeToolNames = /* @__PURE__ */ new Set();
61
+ for (const page of Object.values(pages)) {
62
+ for (const name of page.tools) activeToolNames.add(name);
63
+ }
64
+ const result = [];
65
+ for (const [name, entry] of consolidated) {
66
+ if (!activeToolNames.has(name)) continue;
67
+ result.push({
68
+ ...entry.tool,
69
+ pagePatterns: [...entry.patterns].sort()
70
+ });
71
+ }
72
+ return result.sort((a, b) => a.name.localeCompare(b.name));
73
+ }
74
+ var SemanticScrapingAdapter = (_class = class {constructor() { _class.prototype.__init.call(this); }
75
+ __init() {this.manifests = /* @__PURE__ */ new Map()}
76
+ getManifest(origin) {
77
+ return _nullishCoalesce(_optionalChain([this, 'access', _ => _.manifests, 'access', _2 => _2.get, 'call', _3 => _3(origin), 'optionalAccess', _4 => _4.manifest]), () => ( null));
78
+ }
79
+ updatePage(origin, url, tools) {
80
+ const pattern = urlToPattern(url);
81
+ const hash = hashTools(
82
+ tools.map((t) => ({
83
+ ...t,
84
+ inputSchema: parseSchema(t.inputSchema)
85
+ }))
86
+ );
87
+ const now = Date.now();
88
+ const existing = this.manifests.get(origin);
89
+ const toolIndex = _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _5 => _5.toolIndex]), () => ( /* @__PURE__ */ new Map()));
90
+ const oldPages = _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _6 => _6.manifest, 'access', _7 => _7.pages]), () => ( {}));
91
+ const oldPage = oldPages[pattern];
92
+ if (oldPage) {
93
+ for (const toolName of oldPage.tools) {
94
+ const entry = toolIndex.get(toolName);
95
+ if (entry) {
96
+ entry.patterns.delete(pattern);
97
+ if (entry.patterns.size === 0) toolIndex.delete(toolName);
98
+ }
99
+ }
100
+ }
101
+ const toolNames = [];
102
+ for (const tool of tools) {
103
+ toolNames.push(tool.name);
104
+ const entry = toolIndex.get(tool.name);
105
+ if (entry) {
106
+ entry.patterns.add(pattern);
107
+ entry.tool = toManifestTool(tool, pattern);
108
+ } else {
109
+ toolIndex.set(tool.name, {
110
+ tool: toManifestTool(tool, pattern),
111
+ patterns: /* @__PURE__ */ new Set([pattern])
112
+ });
113
+ }
114
+ }
115
+ const pageToolSet = {
116
+ urlPattern: pattern,
117
+ tools: toolNames,
118
+ lastScanned: now,
119
+ hash
120
+ };
121
+ const pages = {
122
+ ...oldPages,
123
+ [pattern]: pageToolSet
124
+ };
125
+ const deduped = rebuildTools(pages, toolIndex);
126
+ const manifest = {
127
+ origin,
128
+ version: (_nullishCoalesce(_optionalChain([existing, 'optionalAccess', _8 => _8.manifest, 'access', _9 => _9.version]), () => ( 0))) + 1,
129
+ generatedAt: now,
130
+ pages,
131
+ tools: deduped
132
+ };
133
+ this.manifests.set(origin, { manifest, toolIndex });
134
+ return manifest;
135
+ }
136
+ applyDiff(origin, url, added, removed) {
137
+ const pattern = urlToPattern(url);
138
+ const now = Date.now();
139
+ const existing = this.manifests.get(origin);
140
+ const toolIndex = _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _10 => _10.toolIndex]), () => ( /* @__PURE__ */ new Map()));
141
+ const oldPages = _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _11 => _11.manifest, 'access', _12 => _12.pages]), () => ( {}));
142
+ const oldPage = oldPages[pattern];
143
+ const currentTools = new Set(_nullishCoalesce(_optionalChain([oldPage, 'optionalAccess', _13 => _13.tools]), () => ( [])));
144
+ for (const name of removed) {
145
+ currentTools.delete(name);
146
+ const entry = toolIndex.get(name);
147
+ if (entry) {
148
+ entry.patterns.delete(pattern);
149
+ if (entry.patterns.size === 0) toolIndex.delete(name);
150
+ }
151
+ }
152
+ for (const tool of added) {
153
+ currentTools.add(tool.name);
154
+ const entry = toolIndex.get(tool.name);
155
+ if (entry) {
156
+ entry.patterns.add(pattern);
157
+ entry.tool = toManifestTool(tool, pattern);
158
+ } else {
159
+ toolIndex.set(tool.name, {
160
+ tool: toManifestTool(tool, pattern),
161
+ patterns: /* @__PURE__ */ new Set([pattern])
162
+ });
163
+ }
164
+ }
165
+ const toolNames = [...currentTools];
166
+ const hash = hashTools(
167
+ toolNames.map((n) => _optionalChain([toolIndex, 'access', _14 => _14.get, 'call', _15 => _15(n), 'optionalAccess', _16 => _16.tool])).filter(Boolean).map((t) => ({
168
+ name: t.name,
169
+ description: t.description,
170
+ inputSchema: t.inputSchema
171
+ }))
172
+ );
173
+ const pageToolSet = {
174
+ urlPattern: pattern,
175
+ tools: toolNames,
176
+ lastScanned: now,
177
+ hash
178
+ };
179
+ const pages = {
180
+ ...oldPages,
181
+ [pattern]: pageToolSet
182
+ };
183
+ const deduped = rebuildTools(pages, toolIndex);
184
+ const manifest = {
185
+ origin,
186
+ version: (_nullishCoalesce(_optionalChain([existing, 'optionalAccess', _17 => _17.manifest, 'access', _18 => _18.version]), () => ( 0))) + 1,
187
+ generatedAt: now,
188
+ pages,
189
+ tools: deduped
190
+ };
191
+ this.manifests.set(origin, { manifest, toolIndex });
192
+ return manifest;
193
+ }
194
+ toMCPJson(origin) {
195
+ const manifest = this.getManifest(origin);
196
+ if (!manifest) return JSON.stringify({ tools: [] });
197
+ const mcpTools = manifest.tools.map((t) => ({
198
+ name: t.name,
199
+ description: t.description,
200
+ inputSchema: t.inputSchema,
201
+ ...t.annotations ? { annotations: t.annotations } : {}
202
+ }));
203
+ return JSON.stringify({
204
+ tools: mcpTools,
205
+ _meta: {
206
+ origin: manifest.origin,
207
+ version: manifest.version,
208
+ generatedAt: manifest.generatedAt,
209
+ pageCount: Object.keys(manifest.pages).length,
210
+ toolCount: manifest.tools.length
211
+ }
212
+ });
213
+ }
214
+ getToolsForUrl(origin, url) {
215
+ const manifest = this.getManifest(origin);
216
+ if (!manifest) return [];
217
+ const pattern = urlToPattern(url);
218
+ const page = manifest.pages[pattern];
219
+ if (!page) return [];
220
+ const toolNames = new Set(page.tools);
221
+ return manifest.tools.filter((t) => toolNames.has(t.name));
222
+ }
223
+ }, _class);
224
+
225
+
226
+
227
+
228
+
229
+ exports.urlToPattern = urlToPattern; exports.hashTools = hashTools; exports.SemanticScrapingAdapter = SemanticScrapingAdapter;
230
+ //# sourceMappingURL=chunk-QYOMQBBZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-QYOMQBBZ.cjs","../src/adapters/semantic-scraping/semantic-scraping.adapter.ts"],"names":[],"mappings":"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","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-QYOMQBBZ.cjs","sourcesContent":[null,"// =============================================================================\n// SemanticScrapingAdapter — In-memory ISemanticScrapingPort implementation\n//\n// Maintains per-site MCP tool manifests with:\n// - URL pattern normalization (query values → wildcards)\n// - Cross-page tool deduplication\n// - Incremental diff-based updates\n// - MCP-compatible JSON export\n// =============================================================================\n\nimport type {\n ISemanticScrapingPort,\n SiteToolManifest,\n PageToolSet,\n ManifestTool,\n SemanticTool,\n} from \"../../ports/semantic-scraping.port.js\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Convert a concrete URL to a pattern for grouping (strips query values). */\nexport function urlToPattern(url: string): string {\n try {\n const u = new URL(url);\n const path = u.pathname.replace(/\\/+$/, \"\") || \"/\";\n if (!u.search) return path;\n const params = new URLSearchParams(u.search);\n const wildcarded = [...params.keys()].sort().map((k) => `${k}=*`);\n return `${path}?${wildcarded.join(\"&\")}`;\n } catch {\n return url;\n }\n}\n\n/** Deterministic hash for a set of tools (DJB2-like). */\nexport function hashTools(\n tools: readonly Pick<SemanticTool, \"name\" | \"description\" | \"inputSchema\">[],\n): string {\n const keys = tools\n .map(\n (t) =>\n `${t.name}:${t.description ?? \"\"}:${JSON.stringify(t.inputSchema ?? {})}`,\n )\n .sort();\n let h = 0;\n const s = keys.join(\"|\");\n for (let i = 0; i < s.length; i++) {\n h = ((h << 5) - h + s.charCodeAt(i)) | 0;\n }\n return h.toString(36);\n}\n\n/** Parse a potentially stringified inputSchema into an object. */\nfunction parseSchema(\n schema: string | Record<string, unknown> | object,\n): Record<string, unknown> {\n if (typeof schema === \"string\") {\n try {\n return JSON.parse(schema) as Record<string, unknown>;\n } catch {\n return { type: \"object\", properties: {} };\n }\n }\n return schema as Record<string, unknown>;\n}\n\n/** Convert a SemanticTool to a ManifestTool with a single page pattern. */\nfunction toManifestTool(tool: SemanticTool, pattern: string): ManifestTool {\n const schema = parseSchema(tool.inputSchema);\n const annotations: Record<string, boolean> | undefined = tool.annotations\n ? { ...tool.annotations }\n : undefined;\n\n return {\n name: tool.name,\n description: tool.description,\n inputSchema: schema,\n category: tool.category,\n annotations,\n pagePatterns: [pattern],\n };\n}\n\n/** Rebuild the deduplicated tools array from all page tool sets. */\nfunction rebuildTools(\n pages: Record<string, PageToolSet>,\n toolsByName: Map<string, { tool: ManifestTool; patterns: Set<string> }>,\n): readonly ManifestTool[] {\n const consolidated = new Map<\n string,\n { tool: ManifestTool; patterns: Set<string> }\n >();\n\n for (const [, entry] of toolsByName) {\n const existing = consolidated.get(entry.tool.name);\n if (existing) {\n for (const p of entry.patterns) existing.patterns.add(p);\n } else {\n consolidated.set(entry.tool.name, {\n tool: entry.tool,\n patterns: new Set(entry.patterns),\n });\n }\n }\n\n // Drop tools that no longer appear on any page\n const activeToolNames = new Set<string>();\n for (const page of Object.values(pages)) {\n for (const name of page.tools) activeToolNames.add(name);\n }\n\n const result: ManifestTool[] = [];\n for (const [name, entry] of consolidated) {\n if (!activeToolNames.has(name)) continue;\n result.push({\n ...entry.tool,\n pagePatterns: [...entry.patterns].sort(),\n });\n }\n\n return result.sort((a, b) => a.name.localeCompare(b.name));\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Adapter\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class SemanticScrapingAdapter implements ISemanticScrapingPort {\n private readonly manifests = new Map<\n string,\n {\n manifest: SiteToolManifest;\n toolIndex: Map<string, { tool: ManifestTool; patterns: Set<string> }>;\n }\n >();\n\n getManifest(origin: string): SiteToolManifest | null {\n return this.manifests.get(origin)?.manifest ?? null;\n }\n\n updatePage(\n origin: string,\n url: string,\n tools: SemanticTool[],\n ): SiteToolManifest {\n const pattern = urlToPattern(url);\n const hash = hashTools(\n tools.map((t) => ({\n ...t,\n inputSchema: parseSchema(t.inputSchema),\n })),\n );\n const now = Date.now();\n\n const existing = this.manifests.get(origin);\n const toolIndex = existing?.toolIndex ?? new Map();\n const oldPages = existing?.manifest.pages ?? {};\n\n // Remove old tool entries for this pattern from the index\n const oldPage = oldPages[pattern];\n if (oldPage) {\n for (const toolName of oldPage.tools) {\n const entry = toolIndex.get(toolName);\n if (entry) {\n entry.patterns.delete(pattern);\n if (entry.patterns.size === 0) toolIndex.delete(toolName);\n }\n }\n }\n\n // Add new tools to the index\n const toolNames: string[] = [];\n for (const tool of tools) {\n toolNames.push(tool.name);\n const entry = toolIndex.get(tool.name);\n if (entry) {\n entry.patterns.add(pattern);\n entry.tool = toManifestTool(tool, pattern);\n } else {\n toolIndex.set(tool.name, {\n tool: toManifestTool(tool, pattern),\n patterns: new Set([pattern]),\n });\n }\n }\n\n const pageToolSet: PageToolSet = {\n urlPattern: pattern,\n tools: toolNames,\n lastScanned: now,\n hash,\n };\n\n const pages: Record<string, PageToolSet> = {\n ...oldPages,\n [pattern]: pageToolSet,\n };\n const deduped = rebuildTools(pages, toolIndex);\n\n const manifest: SiteToolManifest = {\n origin,\n version: (existing?.manifest.version ?? 0) + 1,\n generatedAt: now,\n pages,\n tools: deduped,\n };\n\n this.manifests.set(origin, { manifest, toolIndex });\n return manifest;\n }\n\n applyDiff(\n origin: string,\n url: string,\n added: SemanticTool[],\n removed: string[],\n ): SiteToolManifest {\n const pattern = urlToPattern(url);\n const now = Date.now();\n\n const existing = this.manifests.get(origin);\n const toolIndex = existing?.toolIndex ?? new Map();\n const oldPages = existing?.manifest.pages ?? {};\n const oldPage = oldPages[pattern];\n const currentTools = new Set(oldPage?.tools ?? []);\n\n // Remove tools\n for (const name of removed) {\n currentTools.delete(name);\n const entry = toolIndex.get(name);\n if (entry) {\n entry.patterns.delete(pattern);\n if (entry.patterns.size === 0) toolIndex.delete(name);\n }\n }\n\n // Add tools\n for (const tool of added) {\n currentTools.add(tool.name);\n const entry = toolIndex.get(tool.name);\n if (entry) {\n entry.patterns.add(pattern);\n entry.tool = toManifestTool(tool, pattern);\n } else {\n toolIndex.set(tool.name, {\n tool: toManifestTool(tool, pattern),\n patterns: new Set([pattern]),\n });\n }\n }\n\n const toolNames = [...currentTools];\n const hash = hashTools(\n toolNames\n .map((n) => toolIndex.get(n)?.tool)\n .filter(Boolean)\n .map((t) => ({\n name: t!.name,\n description: t!.description,\n inputSchema: t!.inputSchema,\n })),\n );\n\n const pageToolSet: PageToolSet = {\n urlPattern: pattern,\n tools: toolNames,\n lastScanned: now,\n hash,\n };\n\n const pages: Record<string, PageToolSet> = {\n ...oldPages,\n [pattern]: pageToolSet,\n };\n const deduped = rebuildTools(pages, toolIndex);\n\n const manifest: SiteToolManifest = {\n origin,\n version: (existing?.manifest.version ?? 0) + 1,\n generatedAt: now,\n pages,\n tools: deduped,\n };\n\n this.manifests.set(origin, { manifest, toolIndex });\n return manifest;\n }\n\n toMCPJson(origin: string): string {\n const manifest = this.getManifest(origin);\n if (!manifest) return JSON.stringify({ tools: [] });\n\n const mcpTools = manifest.tools.map((t) => ({\n name: t.name,\n description: t.description,\n inputSchema: t.inputSchema,\n ...(t.annotations ? { annotations: t.annotations } : {}),\n }));\n\n return JSON.stringify({\n tools: mcpTools,\n _meta: {\n origin: manifest.origin,\n version: manifest.version,\n generatedAt: manifest.generatedAt,\n pageCount: Object.keys(manifest.pages).length,\n toolCount: manifest.tools.length,\n },\n });\n }\n\n getToolsForUrl(origin: string, url: string): ManifestTool[] {\n const manifest = this.getManifest(origin);\n if (!manifest) return [];\n\n const pattern = urlToPattern(url);\n const page = manifest.pages[pattern];\n if (!page) return [];\n\n const toolNames = new Set(page.tools);\n return manifest.tools.filter((t) => toolNames.has(t.name));\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
+
3
+ var _chunk3LD3JTH4cjs = require('./chunk-3LD3JTH4.cjs');
4
+
5
+ // src/adapters/runtime/node-runtime.adapter.ts
6
+ var NodeRuntimeAdapter = (_class = class extends _chunk3LD3JTH4cjs.BaseRuntimeAdapter {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
7
+ __init() {this.name = "node"}
8
+ getEnv(key) {
9
+ return _optionalChain([globalThis, 'access', _ => _.process, 'optionalAccess', _2 => _2.env, 'optionalAccess', _3 => _3[key]]);
10
+ }
11
+ }, _class);
12
+
13
+
14
+
15
+ exports.NodeRuntimeAdapter = NodeRuntimeAdapter;
16
+ //# sourceMappingURL=chunk-UDFXLC4J.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-UDFXLC4J.cjs","../src/adapters/runtime/node-runtime.adapter.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACFO,IAAM,mBAAA,YAAN,MAAA,QAAiC,qCAAmB;AAAA,iBAChD,KAAA,EAAO,OAAA;AAAA,EAEhB,MAAA,CAAO,GAAA,EAAiC;AACtC,IAAA,uBAAO,UAAA,mBAAW,OAAA,6BAAS,GAAA,4BAAA,CAAM,GAAG,GAAA;AAAA,EACtC;AACF,UAAA;ADGA;AACA;AACE;AACF,gDAAC","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-UDFXLC4J.cjs","sourcesContent":[null,"import { BaseRuntimeAdapter } from \"./base-runtime.adapter.js\";\n\nexport class NodeRuntimeAdapter extends BaseRuntimeAdapter {\n readonly name = 'node' as const;\n\n getEnv(key: string): string | undefined {\n return globalThis.process?.env?.[key];\n }\n}\n"]}
@@ -0,0 +1,259 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/testing/mock-provider.ts
2
+ function createMockProvider(responses) {
3
+ const queue = [...responses];
4
+ let callIndex = 0;
5
+ function nextResponse() {
6
+ const response = _nullishCoalesce(queue[callIndex], () => ( queue[queue.length - 1]));
7
+ if (!response) {
8
+ throw new Error("MockProvider: no responses configured");
9
+ }
10
+ callIndex++;
11
+ return response;
12
+ }
13
+ const model = {
14
+ specificationVersion: "v3",
15
+ provider: "mock-provider",
16
+ modelId: "mock-model",
17
+ defaultObjectGenerationMode: "json",
18
+ async doGenerate(options) {
19
+ const resp = nextResponse();
20
+ const usage = _nullishCoalesce(resp.usage, () => ( { inputTokens: 10, outputTokens: 20 }));
21
+ const toolCalls = _optionalChain([resp, 'access', _ => _.toolCalls, 'optionalAccess', _2 => _2.map, 'call', _3 => _3((tc, i) => ({
22
+ toolCallType: "function",
23
+ toolCallId: `call_${callIndex - 1}_${i}`,
24
+ toolName: tc.toolName,
25
+ args: JSON.stringify(tc.args)
26
+ }))]);
27
+ return {
28
+ text: resp.text,
29
+ toolCalls: _nullishCoalesce(toolCalls, () => ( [])),
30
+ finishReason: toolCalls && toolCalls.length > 0 ? "tool-calls" : "stop",
31
+ usage: {
32
+ inputTokens: usage.inputTokens,
33
+ outputTokens: usage.outputTokens
34
+ },
35
+ rawCall: { rawPrompt: null, rawSettings: {} },
36
+ rawResponse: { headers: {} },
37
+ warnings: [],
38
+ request: { body: "" },
39
+ response: {
40
+ id: `resp_${callIndex - 1}`,
41
+ timestamp: /* @__PURE__ */ new Date(),
42
+ modelId: "mock-model"
43
+ },
44
+ providerMetadata: {},
45
+ sources: [],
46
+ reasoning: void 0
47
+ };
48
+ },
49
+ async doStream(options) {
50
+ const resp = nextResponse();
51
+ const usage = _nullishCoalesce(resp.usage, () => ( { inputTokens: 10, outputTokens: 20 }));
52
+ const toolCalls = _optionalChain([resp, 'access', _4 => _4.toolCalls, 'optionalAccess', _5 => _5.map, 'call', _6 => _6((tc, i) => ({
53
+ toolCallType: "function",
54
+ toolCallId: `call_${callIndex - 1}_${i}`,
55
+ toolName: tc.toolName,
56
+ args: JSON.stringify(tc.args)
57
+ }))]);
58
+ const parts = [];
59
+ if (resp.text) {
60
+ parts.push({ type: "text-delta", textDelta: resp.text });
61
+ }
62
+ if (toolCalls) {
63
+ for (const tc of toolCalls) {
64
+ parts.push({
65
+ type: "tool-call",
66
+ toolCallType: tc.toolCallType,
67
+ toolCallId: tc.toolCallId,
68
+ toolName: tc.toolName,
69
+ args: tc.args
70
+ });
71
+ }
72
+ }
73
+ parts.push({
74
+ type: "finish",
75
+ finishReason: toolCalls && toolCalls.length > 0 ? "tool-calls" : "stop",
76
+ usage: {
77
+ inputTokens: usage.inputTokens,
78
+ outputTokens: usage.outputTokens
79
+ }
80
+ });
81
+ const stream = new ReadableStream({
82
+ start(controller) {
83
+ for (const part of parts) {
84
+ controller.enqueue(part);
85
+ }
86
+ controller.close();
87
+ }
88
+ });
89
+ return {
90
+ stream,
91
+ rawCall: { rawPrompt: null, rawSettings: {} },
92
+ rawResponse: { headers: {} },
93
+ warnings: [],
94
+ request: { body: "" }
95
+ };
96
+ }
97
+ };
98
+ return model;
99
+ }
100
+
101
+ // src/testing/agent-test-runner.ts
102
+ async function runAgentTest(config) {
103
+ const { agent, prompt } = config;
104
+ const toolCalls = [];
105
+ let tokenInput = 0;
106
+ let tokenOutput = 0;
107
+ const stepHandler = (event) => {
108
+ const data = event.data;
109
+ const step = _optionalChain([data, 'optionalAccess', _7 => _7.step]);
110
+ if (!step) return;
111
+ const calls = step.toolCalls;
112
+ const results = step.toolResults;
113
+ if (calls) {
114
+ for (let i = 0; i < calls.length; i++) {
115
+ const call = calls[i];
116
+ const result2 = _optionalChain([results, 'optionalAccess', _8 => _8[i]]);
117
+ toolCalls.push({
118
+ name: call.toolName,
119
+ args: call.args,
120
+ result: _nullishCoalesce(_optionalChain([result2, 'optionalAccess', _9 => _9.result]), () => ( void 0))
121
+ });
122
+ }
123
+ }
124
+ };
125
+ agent.eventBus.on("step:end", stepHandler);
126
+ const start = Date.now();
127
+ let result;
128
+ try {
129
+ result = await agent.run(prompt);
130
+ } finally {
131
+ agent.eventBus.off("step:end", stepHandler);
132
+ }
133
+ const duration = Date.now() - start;
134
+ for (const step of result.steps) {
135
+ const s = step;
136
+ const usage = s.usage;
137
+ if (usage) {
138
+ tokenInput += _nullishCoalesce(usage.promptTokens, () => ( 0));
139
+ tokenOutput += _nullishCoalesce(usage.completionTokens, () => ( 0));
140
+ }
141
+ }
142
+ return {
143
+ response: result.text,
144
+ toolCalls,
145
+ tokenUsage: { input: tokenInput, output: tokenOutput },
146
+ duration,
147
+ steps: result.steps.length
148
+ };
149
+ }
150
+
151
+ // src/testing/assertions.ts
152
+ function assertToolCalled(result, toolName, args) {
153
+ const match = result.toolCalls.find((tc) => tc.name === toolName);
154
+ if (!match) {
155
+ const called = result.toolCalls.map((tc) => tc.name).join(", ") || "(none)";
156
+ throw new Error(
157
+ `Expected tool "${toolName}" to be called, but it was not. Called tools: ${called}`
158
+ );
159
+ }
160
+ if (args !== void 0) {
161
+ const actual = JSON.stringify(match.args);
162
+ const expected = JSON.stringify(args);
163
+ if (actual !== expected) {
164
+ throw new Error(
165
+ `Tool "${toolName}" was called with ${actual}, expected ${expected}`
166
+ );
167
+ }
168
+ }
169
+ }
170
+ function assertToolNotCalled(result, toolName) {
171
+ const match = result.toolCalls.find((tc) => tc.name === toolName);
172
+ if (match) {
173
+ throw new Error(
174
+ `Expected tool "${toolName}" NOT to be called, but it was called with ${JSON.stringify(match.args)}`
175
+ );
176
+ }
177
+ }
178
+ function assertResponseContains(result, substring) {
179
+ if (!result.response.includes(substring)) {
180
+ throw new Error(
181
+ `Expected response to contain "${substring}", but got: "${result.response}"`
182
+ );
183
+ }
184
+ }
185
+ function assertResponseMatches(result, pattern) {
186
+ if (!pattern.test(result.response)) {
187
+ throw new Error(
188
+ `Expected response to match ${pattern}, but got: "${result.response}"`
189
+ );
190
+ }
191
+ }
192
+ function assertMaxSteps(result, max) {
193
+ if (result.steps > max) {
194
+ throw new Error(
195
+ `Expected at most ${max} steps, but got ${result.steps}`
196
+ );
197
+ }
198
+ }
199
+ function assertMaxTokens(result, max) {
200
+ const total = result.tokenUsage.input + result.tokenUsage.output;
201
+ if (total > max) {
202
+ throw new Error(
203
+ `Expected at most ${max} total tokens, but used ${total} (input: ${result.tokenUsage.input}, output: ${result.tokenUsage.output})`
204
+ );
205
+ }
206
+ }
207
+
208
+ // src/testing/snapshot.ts
209
+ function createSnapshot(result) {
210
+ const snapshot = {
211
+ response: result.response,
212
+ steps: result.steps,
213
+ tokenUsage: {
214
+ input: result.tokenUsage.input,
215
+ output: result.tokenUsage.output
216
+ },
217
+ toolCalls: result.toolCalls.map((tc) => ({
218
+ args: tc.args,
219
+ name: tc.name,
220
+ result: tc.result
221
+ }))
222
+ };
223
+ return JSON.stringify(snapshot, null, 2);
224
+ }
225
+ function compareSnapshots(current, expected) {
226
+ if (current === expected) {
227
+ return { match: true };
228
+ }
229
+ const currentLines = current.split("\n");
230
+ const expectedLines = expected.split("\n");
231
+ const maxLines = Math.max(currentLines.length, expectedLines.length);
232
+ const diffLines = [];
233
+ for (let i = 0; i < maxLines; i++) {
234
+ const cl = currentLines[i];
235
+ const el = expectedLines[i];
236
+ if (cl !== el) {
237
+ if (el !== void 0) diffLines.push(`- ${el}`);
238
+ if (cl !== void 0) diffLines.push(`+ ${cl}`);
239
+ }
240
+ }
241
+ return {
242
+ match: false,
243
+ diff: diffLines.join("\n")
244
+ };
245
+ }
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ exports.createMockProvider = createMockProvider; exports.runAgentTest = runAgentTest; exports.assertToolCalled = assertToolCalled; exports.assertToolNotCalled = assertToolNotCalled; exports.assertResponseContains = assertResponseContains; exports.assertResponseMatches = assertResponseMatches; exports.assertMaxSteps = assertMaxSteps; exports.assertMaxTokens = assertMaxTokens; exports.createSnapshot = createSnapshot; exports.compareSnapshots = compareSnapshots;
259
+ //# sourceMappingURL=chunk-UO4NGXRT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-UO4NGXRT.cjs","../src/testing/mock-provider.ts","../src/testing/agent-test-runner.ts","../src/testing/assertions.ts","../src/testing/snapshot.ts"],"names":[],"mappings":"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","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-UO4NGXRT.cjs","sourcesContent":[null,"// =============================================================================\n// Mock AI SDK Provider — Canned responses for testing\n// =============================================================================\n\nimport type { LanguageModel } from \"../core/llm/index.js\";\n\nexport interface MockResponse {\n text: string;\n toolCalls?: Array<{ toolName: string; args: Record<string, unknown> }>;\n usage?: { inputTokens: number; outputTokens: number };\n}\n\n/**\n * Creates a mock LanguageModelV3 that returns canned responses in order.\n * Compatible with AI SDK v6's ToolLoopAgent.\n */\nexport function createMockProvider(responses: MockResponse[]): LanguageModel {\n const queue = [...responses];\n let callIndex = 0;\n\n function nextResponse(): MockResponse {\n const response = queue[callIndex] ?? queue[queue.length - 1];\n if (!response) {\n throw new Error(\"MockProvider: no responses configured\");\n }\n callIndex++;\n return response;\n }\n\n const model = {\n specificationVersion: \"v3\",\n provider: \"mock-provider\",\n modelId: \"mock-model\",\n defaultObjectGenerationMode: \"json\",\n\n async doGenerate(options: unknown) {\n const resp = nextResponse();\n const usage = resp.usage ?? { inputTokens: 10, outputTokens: 20 };\n\n const toolCalls = resp.toolCalls?.map((tc, i) => ({\n toolCallType: \"function\" as const,\n toolCallId: `call_${callIndex - 1}_${i}`,\n toolName: tc.toolName,\n args: JSON.stringify(tc.args),\n }));\n\n return {\n text: resp.text,\n toolCalls: toolCalls ?? [],\n finishReason: (toolCalls && toolCalls.length > 0 ? \"tool-calls\" : \"stop\") as \"stop\" | \"tool-calls\",\n usage: {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n },\n rawCall: { rawPrompt: null, rawSettings: {} },\n rawResponse: { headers: {} },\n warnings: [],\n request: { body: \"\" },\n response: {\n id: `resp_${callIndex - 1}`,\n timestamp: new Date(),\n modelId: \"mock-model\",\n },\n providerMetadata: {},\n sources: [],\n reasoning: undefined,\n };\n },\n\n async doStream(options: unknown) {\n const resp = nextResponse();\n const usage = resp.usage ?? { inputTokens: 10, outputTokens: 20 };\n\n const toolCalls = resp.toolCalls?.map((tc, i) => ({\n toolCallType: \"function\" as const,\n toolCallId: `call_${callIndex - 1}_${i}`,\n toolName: tc.toolName,\n args: JSON.stringify(tc.args),\n }));\n\n const parts: Array<Record<string, unknown>> = [];\n\n if (resp.text) {\n parts.push({ type: \"text-delta\", textDelta: resp.text });\n }\n\n if (toolCalls) {\n for (const tc of toolCalls) {\n parts.push({\n type: \"tool-call\",\n toolCallType: tc.toolCallType,\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n args: tc.args,\n });\n }\n }\n\n parts.push({\n type: \"finish\",\n finishReason: toolCalls && toolCalls.length > 0 ? \"tool-calls\" : \"stop\",\n usage: {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n },\n });\n\n const stream = new ReadableStream({\n start(controller) {\n for (const part of parts) {\n controller.enqueue(part);\n }\n controller.close();\n },\n });\n\n return {\n stream,\n rawCall: { rawPrompt: null, rawSettings: {} },\n rawResponse: { headers: {} },\n warnings: [],\n request: { body: \"\" },\n };\n },\n };\n\n return model as unknown as LanguageModel;\n}\n","// =============================================================================\n// Agent Test Runner — Run a Agent and collect results\n// =============================================================================\n\nimport type { Agent, AgentResult } from \"../agent/agent.js\";\n\nexport interface AgentTestResult {\n response: string;\n toolCalls: Array<{ name: string; args: unknown; result: unknown }>;\n tokenUsage: { input: number; output: number };\n duration: number;\n steps: number;\n}\n\nexport async function runAgentTest(config: {\n agent: Agent;\n prompt: string;\n maxSteps?: number;\n}): Promise<AgentTestResult> {\n const { agent, prompt } = config;\n\n const toolCalls: AgentTestResult[\"toolCalls\"] = [];\n let tokenInput = 0;\n let tokenOutput = 0;\n\n // Listen for step events to capture tool calls\n const stepHandler = (event: { type: string; data: unknown }) => {\n const data = event.data as Record<string, unknown>;\n const step = data?.step as Record<string, unknown> | undefined;\n if (!step) return;\n\n // Extract tool calls from step data\n const calls = step.toolCalls as Array<Record<string, unknown>> | undefined;\n const results = step.toolResults as Array<Record<string, unknown>> | undefined;\n\n if (calls) {\n for (let i = 0; i < calls.length; i++) {\n const call = calls[i]!;\n const result = results?.[i];\n toolCalls.push({\n name: call.toolName as string,\n args: call.args,\n result: result?.result ?? undefined,\n });\n }\n }\n };\n\n agent.eventBus.on(\"step:end\", stepHandler);\n\n const start = Date.now();\n let result: AgentResult;\n\n try {\n result = await agent.run(prompt);\n } finally {\n agent.eventBus.off(\"step:end\", stepHandler);\n }\n\n const duration = Date.now() - start;\n\n // Extract token usage from steps if available\n for (const step of result.steps) {\n const s = step as Record<string, unknown>;\n const usage = s.usage as { promptTokens?: number; completionTokens?: number } | undefined;\n if (usage) {\n tokenInput += usage.promptTokens ?? 0;\n tokenOutput += usage.completionTokens ?? 0;\n }\n }\n\n return {\n response: result.text,\n toolCalls,\n tokenUsage: { input: tokenInput, output: tokenOutput },\n duration,\n steps: result.steps.length,\n };\n}\n","// =============================================================================\n// Test Assertions for AgentTestResult\n// =============================================================================\n\nimport type { AgentTestResult } from \"./agent-test-runner.js\";\n\nexport function assertToolCalled(\n result: AgentTestResult,\n toolName: string,\n args?: Record<string, unknown>,\n): void {\n const match = result.toolCalls.find((tc) => tc.name === toolName);\n if (!match) {\n const called = result.toolCalls.map((tc) => tc.name).join(\", \") || \"(none)\";\n throw new Error(\n `Expected tool \"${toolName}\" to be called, but it was not. Called tools: ${called}`,\n );\n }\n if (args !== undefined) {\n const actual = JSON.stringify(match.args);\n const expected = JSON.stringify(args);\n if (actual !== expected) {\n throw new Error(\n `Tool \"${toolName}\" was called with ${actual}, expected ${expected}`,\n );\n }\n }\n}\n\nexport function assertToolNotCalled(\n result: AgentTestResult,\n toolName: string,\n): void {\n const match = result.toolCalls.find((tc) => tc.name === toolName);\n if (match) {\n throw new Error(\n `Expected tool \"${toolName}\" NOT to be called, but it was called with ${JSON.stringify(match.args)}`,\n );\n }\n}\n\nexport function assertResponseContains(\n result: AgentTestResult,\n substring: string,\n): void {\n if (!result.response.includes(substring)) {\n throw new Error(\n `Expected response to contain \"${substring}\", but got: \"${result.response}\"`,\n );\n }\n}\n\nexport function assertResponseMatches(\n result: AgentTestResult,\n pattern: RegExp,\n): void {\n if (!pattern.test(result.response)) {\n throw new Error(\n `Expected response to match ${pattern}, but got: \"${result.response}\"`,\n );\n }\n}\n\nexport function assertMaxSteps(\n result: AgentTestResult,\n max: number,\n): void {\n if (result.steps > max) {\n throw new Error(\n `Expected at most ${max} steps, but got ${result.steps}`,\n );\n }\n}\n\nexport function assertMaxTokens(\n result: AgentTestResult,\n max: number,\n): void {\n const total = result.tokenUsage.input + result.tokenUsage.output;\n if (total > max) {\n throw new Error(\n `Expected at most ${max} total tokens, but used ${total} (input: ${result.tokenUsage.input}, output: ${result.tokenUsage.output})`,\n );\n }\n}\n","// =============================================================================\n// Snapshot — JSON-based snapshot creation & comparison\n// =============================================================================\n\nimport type { AgentTestResult } from \"./agent-test-runner.js\";\n\n/**\n * Creates a deterministic JSON snapshot of an AgentTestResult.\n * Excludes non-deterministic fields (duration).\n */\nexport function createSnapshot(result: AgentTestResult): string {\n const snapshot = {\n response: result.response,\n steps: result.steps,\n tokenUsage: {\n input: result.tokenUsage.input,\n output: result.tokenUsage.output,\n },\n toolCalls: result.toolCalls.map((tc) => ({\n args: tc.args,\n name: tc.name,\n result: tc.result,\n })),\n };\n return JSON.stringify(snapshot, null, 2);\n}\n\n/**\n * Compares two snapshot strings line by line.\n */\nexport function compareSnapshots(\n current: string,\n expected: string,\n): { match: boolean; diff?: string } {\n if (current === expected) {\n return { match: true };\n }\n\n const currentLines = current.split(\"\\n\");\n const expectedLines = expected.split(\"\\n\");\n const maxLines = Math.max(currentLines.length, expectedLines.length);\n const diffLines: string[] = [];\n\n for (let i = 0; i < maxLines; i++) {\n const cl = currentLines[i];\n const el = expectedLines[i];\n if (cl !== el) {\n if (el !== undefined) diffLines.push(`- ${el}`);\n if (cl !== undefined) diffLines.push(`+ ${cl}`);\n }\n }\n\n return {\n match: false,\n diff: diffLines.join(\"\\n\"),\n };\n}\n"]}
@@ -0,0 +1,40 @@
1
+ // src/adapters/filesystem/glob-utils.ts
2
+ var regexCache = /* @__PURE__ */ new Map();
3
+ var MAX_CACHE_SIZE = 500;
4
+ function globToRegex(pattern) {
5
+ const cached = regexCache.get(pattern);
6
+ if (cached) return cached;
7
+ let result = "";
8
+ let i = 0;
9
+ while (i < pattern.length) {
10
+ const char = pattern[i];
11
+ if (char === "*" && pattern[i + 1] === "*") {
12
+ result += ".*";
13
+ i += pattern[i + 2] === "/" ? 3 : 2;
14
+ } else if (char === "*") {
15
+ result += "[^/]*";
16
+ i++;
17
+ } else if (char === "?") {
18
+ result += "[^/]";
19
+ i++;
20
+ } else if (".+^${}()|[]\\".includes(char)) {
21
+ result += "\\" + char;
22
+ i++;
23
+ } else {
24
+ result += char;
25
+ i++;
26
+ }
27
+ }
28
+ const regex = new RegExp("^" + result + "$");
29
+ if (regexCache.size >= MAX_CACHE_SIZE) {
30
+ const oldest = regexCache.keys().next().value;
31
+ regexCache.delete(oldest);
32
+ }
33
+ regexCache.set(pattern, regex);
34
+ return regex;
35
+ }
36
+
37
+ export {
38
+ globToRegex
39
+ };
40
+ //# sourceMappingURL=chunk-UPFDFLEW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/filesystem/glob-utils.ts"],"sourcesContent":["// =============================================================================\n// Glob pattern matching utility (no external deps)\n// =============================================================================\n\nconst regexCache = new Map<string, RegExp>();\nconst MAX_CACHE_SIZE = 500;\n\n/** Convert a glob pattern to a RegExp. Supports *, **, and ? wildcards. */\nexport function globToRegex(pattern: string): RegExp {\n const cached = regexCache.get(pattern);\n if (cached) return cached;\n\n let result = \"\";\n let i = 0;\n while (i < pattern.length) {\n const char = pattern[i]!;\n if (char === \"*\" && pattern[i + 1] === \"*\") {\n result += \".*\";\n i += pattern[i + 2] === \"/\" ? 3 : 2;\n } else if (char === \"*\") {\n result += \"[^/]*\";\n i++;\n } else if (char === \"?\") {\n result += \"[^/]\";\n i++;\n } else if (\".+^${}()|[]\\\\\".includes(char)) {\n result += \"\\\\\" + char;\n i++;\n } else {\n result += char;\n i++;\n }\n }\n const regex = new RegExp(\"^\" + result + \"$\");\n if (regexCache.size >= MAX_CACHE_SIZE) {\n const oldest = regexCache.keys().next().value as string;\n regexCache.delete(oldest);\n }\n regexCache.set(pattern, regex);\n return regex;\n}\n"],"mappings":";AAIA,IAAM,aAAa,oBAAI,IAAoB;AAC3C,IAAM,iBAAiB;AAGhB,SAAS,YAAY,SAAyB;AACnD,QAAM,SAAS,WAAW,IAAI,OAAO;AACrC,MAAI,OAAQ,QAAO;AAEnB,MAAI,SAAS;AACb,MAAI,IAAI;AACR,SAAO,IAAI,QAAQ,QAAQ;AACzB,UAAM,OAAO,QAAQ,CAAC;AACtB,QAAI,SAAS,OAAO,QAAQ,IAAI,CAAC,MAAM,KAAK;AAC1C,gBAAU;AACV,WAAK,QAAQ,IAAI,CAAC,MAAM,MAAM,IAAI;AAAA,IACpC,WAAW,SAAS,KAAK;AACvB,gBAAU;AACV;AAAA,IACF,WAAW,SAAS,KAAK;AACvB,gBAAU;AACV;AAAA,IACF,WAAW,gBAAgB,SAAS,IAAI,GAAG;AACzC,gBAAU,OAAO;AACjB;AAAA,IACF,OAAO;AACL,gBAAU;AACV;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQ,IAAI,OAAO,MAAM,SAAS,GAAG;AAC3C,MAAI,WAAW,QAAQ,gBAAgB;AACrC,UAAM,SAAS,WAAW,KAAK,EAAE,KAAK,EAAE;AACxC,eAAW,OAAO,MAAM;AAAA,EAC1B;AACA,aAAW,IAAI,SAAS,KAAK;AAC7B,SAAO;AACT;","names":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
+
3
+ var _chunk3LD3JTH4cjs = require('./chunk-3LD3JTH4.cjs');
4
+
5
+ // src/adapters/runtime/deno-runtime.adapter.ts
6
+ var DenoRuntimeAdapter = (_class = class extends _chunk3LD3JTH4cjs.BaseRuntimeAdapter {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
7
+ __init() {this.name = "deno"}
8
+ getEnv(key) {
9
+ return _optionalChain([globalThis, 'access', _ => _.Deno, 'optionalAccess', _2 => _2.env, 'optionalAccess', _3 => _3.get, 'call', _4 => _4(key)]);
10
+ }
11
+ }, _class);
12
+
13
+
14
+
15
+ exports.DenoRuntimeAdapter = DenoRuntimeAdapter;
16
+ //# sourceMappingURL=chunk-V55JSQS7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-V55JSQS7.cjs","../src/adapters/runtime/deno-runtime.adapter.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACFO,IAAM,mBAAA,YAAN,MAAA,QAAiC,qCAAmB;AAAA,iBAChD,KAAA,EAAO,OAAA;AAAA,EAEhB,MAAA,CAAO,GAAA,EAAiC;AACtC,IAAA,uBAAQ,UAAA,mBAAmB,IAAA,6BAAM,GAAA,6BAAK,GAAA,mBAAI,GAAG,GAAA;AAAA,EAC/C;AACF,UAAA;ADGA;AACA;AACE;AACF,gDAAC","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-V55JSQS7.cjs","sourcesContent":[null,"import { BaseRuntimeAdapter } from \"./base-runtime.adapter.js\";\n\nexport class DenoRuntimeAdapter extends BaseRuntimeAdapter {\n readonly name = 'deno' as const;\n\n getEnv(key: string): string | undefined {\n return (globalThis as any).Deno?.env?.get(key);\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;
2
+
3
+ var _chunk3LD3JTH4cjs = require('./chunk-3LD3JTH4.cjs');
4
+
5
+ // src/adapters/runtime/edge-runtime.adapter.ts
6
+ var EdgeRuntimeAdapter = (_class = class extends _chunk3LD3JTH4cjs.BaseRuntimeAdapter {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
7
+ __init() {this.name = "edge"}
8
+ getEnv(_key) {
9
+ return void 0;
10
+ }
11
+ }, _class);
12
+
13
+
14
+
15
+ exports.EdgeRuntimeAdapter = EdgeRuntimeAdapter;
16
+ //# sourceMappingURL=chunk-VJADHXZL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-VJADHXZL.cjs","../src/adapters/runtime/edge-runtime.adapter.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACFO,IAAM,mBAAA,YAAN,MAAA,QAAiC,qCAAmB;AAAA,iBAChD,KAAA,EAAO,OAAA;AAAA,EAEhB,MAAA,CAAO,IAAA,EAAkC;AAIvC,IAAA,OAAO,KAAA,CAAA;AAAA,EACT;AACF,UAAA;ADAA;AACA;AACE;AACF,gDAAC","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/chunk-VJADHXZL.cjs","sourcesContent":[null,"import { BaseRuntimeAdapter } from \"./base-runtime.adapter.js\";\n\nexport class EdgeRuntimeAdapter extends BaseRuntimeAdapter {\n readonly name = 'edge' as const;\n\n getEnv(_key: string): string | undefined {\n // Edge runtimes (Cloudflare Workers, Vercel Edge) bind env vars\n // via the request context, not a global. Return undefined by default;\n // users should subclass or provide env via config.\n return undefined;\n }\n}\n"]}