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,166 @@
1
+ // src/server/mcp-server.ts
2
+ var McpServer = class {
3
+ name;
4
+ version;
5
+ tools;
6
+ constructor(options) {
7
+ this.name = options.name ?? "gauss-agent";
8
+ this.version = options.version ?? "1.0.0";
9
+ this.tools = options.tools;
10
+ }
11
+ /** Handle a JSON-RPC request and return a JSON-RPC response */
12
+ async handleRequest(request) {
13
+ try {
14
+ switch (request.method) {
15
+ case "initialize":
16
+ return this.handleInitialize(request);
17
+ case "tools/list":
18
+ return this.handleToolsList(request);
19
+ case "tools/call":
20
+ return this.handleToolsCall(request);
21
+ case "notifications/initialized":
22
+ return { jsonrpc: "2.0", id: null };
23
+ default:
24
+ return {
25
+ jsonrpc: "2.0",
26
+ id: request.id ?? null,
27
+ error: { code: -32601, message: `Method not found: ${request.method}` }
28
+ };
29
+ }
30
+ } catch (error) {
31
+ return {
32
+ jsonrpc: "2.0",
33
+ id: request.id ?? null,
34
+ error: { code: -32603, message: error instanceof Error ? error.message : "Internal error" }
35
+ };
36
+ }
37
+ }
38
+ handleInitialize(request) {
39
+ return {
40
+ jsonrpc: "2.0",
41
+ id: request.id ?? null,
42
+ result: {
43
+ protocolVersion: "2025-03-26",
44
+ capabilities: { tools: { listChanged: false } },
45
+ serverInfo: { name: this.name, version: this.version }
46
+ }
47
+ };
48
+ }
49
+ handleToolsList(request) {
50
+ const toolList = Object.entries(this.tools).map(([name, tool]) => {
51
+ const t = tool;
52
+ return {
53
+ name,
54
+ description: t.description ?? "",
55
+ inputSchema: t.parameters?.jsonSchema ?? { type: "object", properties: {} }
56
+ };
57
+ });
58
+ return { jsonrpc: "2.0", id: request.id ?? null, result: { tools: toolList } };
59
+ }
60
+ async handleToolsCall(request) {
61
+ const params = request.params ?? {};
62
+ const toolName = params.name;
63
+ const args = params.arguments;
64
+ if (!toolName) {
65
+ return {
66
+ jsonrpc: "2.0",
67
+ id: request.id ?? null,
68
+ error: { code: -32602, message: "Missing tool name" }
69
+ };
70
+ }
71
+ const tool = this.tools[toolName];
72
+ if (!tool?.execute) {
73
+ return {
74
+ jsonrpc: "2.0",
75
+ id: request.id ?? null,
76
+ error: { code: -32602, message: `Unknown tool: ${toolName}` }
77
+ };
78
+ }
79
+ try {
80
+ const result = await tool.execute(args ?? {});
81
+ return {
82
+ jsonrpc: "2.0",
83
+ id: request.id ?? null,
84
+ result: {
85
+ content: [{ type: "text", text: typeof result === "string" ? result : JSON.stringify(result) }]
86
+ }
87
+ };
88
+ } catch (error) {
89
+ return {
90
+ jsonrpc: "2.0",
91
+ id: request.id ?? null,
92
+ result: {
93
+ content: [{ type: "text", text: error instanceof Error ? error.message : "Tool execution failed" }],
94
+ isError: true
95
+ }
96
+ };
97
+ }
98
+ }
99
+ };
100
+
101
+ // src/server/streamable-http-handler.ts
102
+ var InMemorySessionManager = class {
103
+ sessions = /* @__PURE__ */ new Set();
104
+ createSession() {
105
+ const id = crypto.randomUUID();
106
+ this.sessions.add(id);
107
+ return id;
108
+ }
109
+ isValidSession(id) {
110
+ return this.sessions.has(id);
111
+ }
112
+ deleteSession(id) {
113
+ this.sessions.delete(id);
114
+ }
115
+ };
116
+ function createStreamableHttpHandler(options) {
117
+ const { server } = options;
118
+ const sessions = options.sessionManager ?? new InMemorySessionManager();
119
+ return async (request) => {
120
+ if (request.method === "DELETE") {
121
+ const sessionId = request.headers.get("mcp-session-id");
122
+ if (!sessionId || !sessions.isValidSession(sessionId)) {
123
+ return new Response(null, { status: 404 });
124
+ }
125
+ sessions.deleteSession(sessionId);
126
+ return new Response(null, { status: 200 });
127
+ }
128
+ if (request.method === "GET") {
129
+ return new Response(null, { status: 405 });
130
+ }
131
+ if (request.method !== "POST") {
132
+ return new Response(null, { status: 405 });
133
+ }
134
+ let body;
135
+ try {
136
+ body = await request.json();
137
+ } catch {
138
+ return new Response(
139
+ JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } }),
140
+ { status: 400, headers: { "Content-Type": "application/json" } }
141
+ );
142
+ }
143
+ const isInit = body.method === "initialize";
144
+ if (!isInit) {
145
+ const sessionId = request.headers.get("mcp-session-id");
146
+ if (!sessionId || !sessions.isValidSession(sessionId)) {
147
+ return new Response(null, { status: 401 });
148
+ }
149
+ }
150
+ if (!("id" in body)) {
151
+ return new Response(null, { status: 202 });
152
+ }
153
+ const result = await server.handleRequest(body);
154
+ const headers = { "Content-Type": "application/json" };
155
+ if (isInit && !result.error) {
156
+ const sessionId = sessions.createSession();
157
+ headers["Mcp-Session-Id"] = sessionId;
158
+ }
159
+ return new Response(JSON.stringify(result), { status: 200, headers });
160
+ };
161
+ }
162
+ export {
163
+ McpServer,
164
+ createStreamableHttpHandler
165
+ };
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/mcp-server.ts","../../src/server/streamable-http-handler.ts"],"sourcesContent":["// =============================================================================\n// McpServer — Expose Agent tools as an MCP Server\n// =============================================================================\n// Enables cross-language consumption (Python, Go, etc.) via Streamable HTTP.\n// =============================================================================\n\nimport type { Tool } from \"../core/llm/index.js\";\n\nexport interface McpServerOptions {\n name?: string;\n version?: string;\n tools: Record<string, Tool<any, any>>;\n}\n\ninterface JsonRpcRequest {\n jsonrpc: \"2.0\";\n id?: number | string;\n method: string;\n params?: Record<string, unknown>;\n}\n\ninterface JsonRpcResponse {\n jsonrpc: \"2.0\";\n id?: number | string | null;\n result?: unknown;\n error?: { code: number; message: string; data?: unknown };\n}\n\nexport class McpServer {\n private readonly name: string;\n private readonly version: string;\n private readonly tools: Record<string, Tool<any, any>>;\n\n constructor(options: McpServerOptions) {\n this.name = options.name ?? \"gauss-agent\";\n this.version = options.version ?? \"1.0.0\";\n this.tools = options.tools;\n }\n\n /** Handle a JSON-RPC request and return a JSON-RPC response */\n async handleRequest(request: JsonRpcRequest): Promise<JsonRpcResponse> {\n try {\n switch (request.method) {\n case \"initialize\":\n return this.handleInitialize(request);\n case \"tools/list\":\n return this.handleToolsList(request);\n case \"tools/call\":\n return this.handleToolsCall(request);\n case \"notifications/initialized\":\n return { jsonrpc: \"2.0\", id: null };\n default:\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n error: { code: -32601, message: `Method not found: ${request.method}` },\n };\n }\n } catch (error) {\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n error: { code: -32603, message: error instanceof Error ? error.message : \"Internal error\" },\n };\n }\n }\n\n private handleInitialize(request: JsonRpcRequest): JsonRpcResponse {\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n result: {\n protocolVersion: \"2025-03-26\",\n capabilities: { tools: { listChanged: false } },\n serverInfo: { name: this.name, version: this.version },\n },\n };\n }\n\n private handleToolsList(request: JsonRpcRequest): JsonRpcResponse {\n const toolList = Object.entries(this.tools).map(([name, tool]) => {\n const t = tool as { description?: string; parameters?: { jsonSchema?: unknown } };\n return {\n name,\n description: t.description ?? \"\",\n inputSchema: t.parameters?.jsonSchema ?? { type: \"object\", properties: {} },\n };\n });\n return { jsonrpc: \"2.0\", id: request.id ?? null, result: { tools: toolList } };\n }\n\n private async handleToolsCall(request: JsonRpcRequest): Promise<JsonRpcResponse> {\n const params = request.params ?? {};\n const toolName = params.name as string | undefined;\n const args = params.arguments as Record<string, unknown> | undefined;\n\n if (!toolName) {\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n error: { code: -32602, message: \"Missing tool name\" },\n };\n }\n\n const tool = this.tools[toolName] as { execute?: (args: unknown) => Promise<unknown> } | undefined;\n if (!tool?.execute) {\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n error: { code: -32602, message: `Unknown tool: ${toolName}` },\n };\n }\n\n try {\n const result = await tool.execute(args ?? {});\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n result: {\n content: [{ type: \"text\", text: typeof result === \"string\" ? result : JSON.stringify(result) }],\n },\n };\n } catch (error) {\n return {\n jsonrpc: \"2.0\",\n id: request.id ?? null,\n result: {\n content: [{ type: \"text\", text: error instanceof Error ? error.message : \"Tool execution failed\" }],\n isError: true,\n },\n };\n }\n }\n}\n","// =============================================================================\n// Streamable HTTP Handler — Universal MCP HTTP handler using Web APIs\n// =============================================================================\n// Uses the standard Request/Response Web API, works in all runtimes.\n// =============================================================================\n\nimport { McpServer } from \"./mcp-server.js\";\n\nexport interface StreamableHttpHandlerOptions {\n server: McpServer;\n sessionManager?: SessionManager;\n}\n\nexport interface SessionManager {\n createSession(): string;\n isValidSession(id: string): boolean;\n deleteSession(id: string): void;\n}\n\nclass InMemorySessionManager implements SessionManager {\n private readonly sessions = new Set<string>();\n\n createSession(): string {\n const id = crypto.randomUUID();\n this.sessions.add(id);\n return id;\n }\n\n isValidSession(id: string): boolean {\n return this.sessions.has(id);\n }\n\n deleteSession(id: string): void {\n this.sessions.delete(id);\n }\n}\n\nexport function createStreamableHttpHandler(options: StreamableHttpHandlerOptions) {\n const { server } = options;\n const sessions = options.sessionManager ?? new InMemorySessionManager();\n\n return async (request: Request): Promise<Response> => {\n if (request.method === \"DELETE\") {\n const sessionId = request.headers.get(\"mcp-session-id\");\n if (!sessionId || !sessions.isValidSession(sessionId)) {\n return new Response(null, { status: 404 });\n }\n sessions.deleteSession(sessionId);\n return new Response(null, { status: 200 });\n }\n\n if (request.method === \"GET\") {\n return new Response(null, { status: 405 });\n }\n\n if (request.method !== \"POST\") {\n return new Response(null, { status: 405 });\n }\n\n let body: Record<string, unknown>;\n try {\n body = await request.json() as Record<string, unknown>;\n } catch {\n return new Response(\n JSON.stringify({ jsonrpc: \"2.0\", id: null, error: { code: -32700, message: \"Parse error\" } }),\n { status: 400, headers: { \"Content-Type\": \"application/json\" } },\n );\n }\n const isInit = body.method === \"initialize\";\n\n // Session validation: required for all non-init requests\n if (!isInit) {\n const sessionId = request.headers.get(\"mcp-session-id\");\n if (!sessionId || !sessions.isValidSession(sessionId)) {\n return new Response(null, { status: 401 });\n }\n }\n\n // Handle notification (no id)\n if (!(\"id\" in body)) {\n return new Response(null, { status: 202 });\n }\n\n const result = await server.handleRequest(body as any);\n\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n\n // Assign session ID on initialize\n if (isInit && !result.error) {\n const sessionId = sessions.createSession();\n headers[\"Mcp-Session-Id\"] = sessionId;\n }\n\n return new Response(JSON.stringify(result), { status: 200, headers });\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ var _chunkUO4NGXRTcjs = require('../chunk-UO4NGXRT.cjs');
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+ exports.assertMaxSteps = _chunkUO4NGXRTcjs.assertMaxSteps; exports.assertMaxTokens = _chunkUO4NGXRTcjs.assertMaxTokens; exports.assertResponseContains = _chunkUO4NGXRTcjs.assertResponseContains; exports.assertResponseMatches = _chunkUO4NGXRTcjs.assertResponseMatches; exports.assertToolCalled = _chunkUO4NGXRTcjs.assertToolCalled; exports.assertToolNotCalled = _chunkUO4NGXRTcjs.assertToolNotCalled; exports.compareSnapshots = _chunkUO4NGXRTcjs.compareSnapshots; exports.createMockProvider = _chunkUO4NGXRTcjs.createMockProvider; exports.createSnapshot = _chunkUO4NGXRTcjs.createSnapshot; exports.runAgentTest = _chunkUO4NGXRTcjs.runAgentTest;
25
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/testing/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,moBAAC","file":"/Users/giulioleone/Sviluppo/gauss/gauss-flow/dist/testing/index.cjs"}
@@ -0,0 +1,63 @@
1
+ import { L as LanguageModel } from '../types-CVsP7gFI.cjs';
2
+ import { N as Agent } from '../agent-builder-GEMYdb1p.cjs';
3
+ import 'zod';
4
+ import '../token-counter.port-D7BHMCRR.cjs';
5
+
6
+ interface MockResponse {
7
+ text: string;
8
+ toolCalls?: Array<{
9
+ toolName: string;
10
+ args: Record<string, unknown>;
11
+ }>;
12
+ usage?: {
13
+ inputTokens: number;
14
+ outputTokens: number;
15
+ };
16
+ }
17
+ /**
18
+ * Creates a mock LanguageModelV3 that returns canned responses in order.
19
+ * Compatible with AI SDK v6's ToolLoopAgent.
20
+ */
21
+ declare function createMockProvider(responses: MockResponse[]): LanguageModel;
22
+
23
+ interface AgentTestResult {
24
+ response: string;
25
+ toolCalls: Array<{
26
+ name: string;
27
+ args: unknown;
28
+ result: unknown;
29
+ }>;
30
+ tokenUsage: {
31
+ input: number;
32
+ output: number;
33
+ };
34
+ duration: number;
35
+ steps: number;
36
+ }
37
+ declare function runAgentTest(config: {
38
+ agent: Agent;
39
+ prompt: string;
40
+ maxSteps?: number;
41
+ }): Promise<AgentTestResult>;
42
+
43
+ declare function assertToolCalled(result: AgentTestResult, toolName: string, args?: Record<string, unknown>): void;
44
+ declare function assertToolNotCalled(result: AgentTestResult, toolName: string): void;
45
+ declare function assertResponseContains(result: AgentTestResult, substring: string): void;
46
+ declare function assertResponseMatches(result: AgentTestResult, pattern: RegExp): void;
47
+ declare function assertMaxSteps(result: AgentTestResult, max: number): void;
48
+ declare function assertMaxTokens(result: AgentTestResult, max: number): void;
49
+
50
+ /**
51
+ * Creates a deterministic JSON snapshot of an AgentTestResult.
52
+ * Excludes non-deterministic fields (duration).
53
+ */
54
+ declare function createSnapshot(result: AgentTestResult): string;
55
+ /**
56
+ * Compares two snapshot strings line by line.
57
+ */
58
+ declare function compareSnapshots(current: string, expected: string): {
59
+ match: boolean;
60
+ diff?: string;
61
+ };
62
+
63
+ export { type AgentTestResult, type MockResponse, assertMaxSteps, assertMaxTokens, assertResponseContains, assertResponseMatches, assertToolCalled, assertToolNotCalled, compareSnapshots, createMockProvider, createSnapshot, runAgentTest };
@@ -0,0 +1,63 @@
1
+ import { L as LanguageModel } from '../types-CVsP7gFI.js';
2
+ import { N as Agent } from '../agent-builder-8W3mBR-N.js';
3
+ import 'zod';
4
+ import '../token-counter.port-CRgxZZGe.js';
5
+
6
+ interface MockResponse {
7
+ text: string;
8
+ toolCalls?: Array<{
9
+ toolName: string;
10
+ args: Record<string, unknown>;
11
+ }>;
12
+ usage?: {
13
+ inputTokens: number;
14
+ outputTokens: number;
15
+ };
16
+ }
17
+ /**
18
+ * Creates a mock LanguageModelV3 that returns canned responses in order.
19
+ * Compatible with AI SDK v6's ToolLoopAgent.
20
+ */
21
+ declare function createMockProvider(responses: MockResponse[]): LanguageModel;
22
+
23
+ interface AgentTestResult {
24
+ response: string;
25
+ toolCalls: Array<{
26
+ name: string;
27
+ args: unknown;
28
+ result: unknown;
29
+ }>;
30
+ tokenUsage: {
31
+ input: number;
32
+ output: number;
33
+ };
34
+ duration: number;
35
+ steps: number;
36
+ }
37
+ declare function runAgentTest(config: {
38
+ agent: Agent;
39
+ prompt: string;
40
+ maxSteps?: number;
41
+ }): Promise<AgentTestResult>;
42
+
43
+ declare function assertToolCalled(result: AgentTestResult, toolName: string, args?: Record<string, unknown>): void;
44
+ declare function assertToolNotCalled(result: AgentTestResult, toolName: string): void;
45
+ declare function assertResponseContains(result: AgentTestResult, substring: string): void;
46
+ declare function assertResponseMatches(result: AgentTestResult, pattern: RegExp): void;
47
+ declare function assertMaxSteps(result: AgentTestResult, max: number): void;
48
+ declare function assertMaxTokens(result: AgentTestResult, max: number): void;
49
+
50
+ /**
51
+ * Creates a deterministic JSON snapshot of an AgentTestResult.
52
+ * Excludes non-deterministic fields (duration).
53
+ */
54
+ declare function createSnapshot(result: AgentTestResult): string;
55
+ /**
56
+ * Compares two snapshot strings line by line.
57
+ */
58
+ declare function compareSnapshots(current: string, expected: string): {
59
+ match: boolean;
60
+ diff?: string;
61
+ };
62
+
63
+ export { type AgentTestResult, type MockResponse, assertMaxSteps, assertMaxTokens, assertResponseContains, assertResponseMatches, assertToolCalled, assertToolNotCalled, compareSnapshots, createMockProvider, createSnapshot, runAgentTest };
@@ -0,0 +1,25 @@
1
+ import {
2
+ assertMaxSteps,
3
+ assertMaxTokens,
4
+ assertResponseContains,
5
+ assertResponseMatches,
6
+ assertToolCalled,
7
+ assertToolNotCalled,
8
+ compareSnapshots,
9
+ createMockProvider,
10
+ createSnapshot,
11
+ runAgentTest
12
+ } from "../chunk-ZM2OEWM2.js";
13
+ export {
14
+ assertMaxSteps,
15
+ assertMaxTokens,
16
+ assertResponseContains,
17
+ assertResponseMatches,
18
+ assertToolCalled,
19
+ assertToolNotCalled,
20
+ compareSnapshots,
21
+ createMockProvider,
22
+ createSnapshot,
23
+ runAgentTest
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}