@wingman-ai/gateway 0.2.3 → 0.2.5

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 (127) hide show
  1. package/.wingman/agents/README.md +7 -1
  2. package/.wingman/agents/coding/agent.md +295 -202
  3. package/.wingman/agents/coding-v2/agent.md +127 -0
  4. package/.wingman/agents/coding-v2/implementor.md +89 -0
  5. package/dist/agent/config/agentConfig.cjs +31 -17
  6. package/dist/agent/config/agentConfig.d.ts +23 -1
  7. package/dist/agent/config/agentConfig.js +30 -19
  8. package/dist/agent/config/agentLoader.cjs +26 -8
  9. package/dist/agent/config/agentLoader.d.ts +4 -2
  10. package/dist/agent/config/agentLoader.js +26 -8
  11. package/dist/agent/config/modelFactory.cjs +77 -27
  12. package/dist/agent/config/modelFactory.d.ts +11 -1
  13. package/dist/agent/config/modelFactory.js +77 -27
  14. package/dist/agent/config/toolRegistry.cjs +19 -6
  15. package/dist/agent/config/toolRegistry.d.ts +5 -2
  16. package/dist/agent/config/toolRegistry.js +19 -6
  17. package/dist/agent/middleware/hooks/types.cjs +13 -13
  18. package/dist/agent/middleware/hooks/types.d.ts +1 -1
  19. package/dist/agent/middleware/hooks/types.js +14 -14
  20. package/dist/agent/tests/agentConfig.test.cjs +22 -2
  21. package/dist/agent/tests/agentConfig.test.js +22 -2
  22. package/dist/agent/tests/agentLoader.test.cjs +38 -1
  23. package/dist/agent/tests/agentLoader.test.js +38 -1
  24. package/dist/agent/tests/backgroundTerminal.test.cjs +70 -0
  25. package/dist/agent/tests/backgroundTerminal.test.d.ts +1 -0
  26. package/dist/agent/tests/backgroundTerminal.test.js +64 -0
  27. package/dist/agent/tests/commandExecuteTool.test.cjs +29 -0
  28. package/dist/agent/tests/commandExecuteTool.test.d.ts +1 -0
  29. package/dist/agent/tests/commandExecuteTool.test.js +23 -0
  30. package/dist/agent/tests/modelFactory.test.cjs +35 -0
  31. package/dist/agent/tests/modelFactory.test.js +35 -0
  32. package/dist/agent/tests/terminalSessionManager.test.cjs +121 -0
  33. package/dist/agent/tests/terminalSessionManager.test.d.ts +1 -0
  34. package/dist/agent/tests/terminalSessionManager.test.js +115 -0
  35. package/dist/agent/tests/toolRegistry.test.cjs +14 -2
  36. package/dist/agent/tests/toolRegistry.test.js +14 -2
  37. package/dist/agent/tools/background_terminal.cjs +128 -0
  38. package/dist/agent/tools/background_terminal.d.ts +41 -0
  39. package/dist/agent/tools/background_terminal.js +94 -0
  40. package/dist/agent/tools/code_search.cjs +6 -6
  41. package/dist/agent/tools/code_search.d.ts +1 -1
  42. package/dist/agent/tools/code_search.js +7 -7
  43. package/dist/agent/tools/command_execute.cjs +22 -7
  44. package/dist/agent/tools/command_execute.d.ts +3 -2
  45. package/dist/agent/tools/command_execute.js +23 -8
  46. package/dist/agent/tools/git_status.cjs +3 -3
  47. package/dist/agent/tools/git_status.d.ts +1 -1
  48. package/dist/agent/tools/git_status.js +4 -4
  49. package/dist/agent/tools/internet_search.cjs +6 -6
  50. package/dist/agent/tools/internet_search.d.ts +1 -1
  51. package/dist/agent/tools/internet_search.js +7 -7
  52. package/dist/agent/tools/terminal_session_manager.cjs +321 -0
  53. package/dist/agent/tools/terminal_session_manager.d.ts +77 -0
  54. package/dist/agent/tools/terminal_session_manager.js +284 -0
  55. package/dist/agent/tools/think.cjs +4 -4
  56. package/dist/agent/tools/think.d.ts +1 -1
  57. package/dist/agent/tools/think.js +5 -5
  58. package/dist/agent/tools/ui_registry.cjs +13 -13
  59. package/dist/agent/tools/ui_registry.d.ts +4 -4
  60. package/dist/agent/tools/ui_registry.js +14 -14
  61. package/dist/agent/tools/web_crawler.cjs +4 -4
  62. package/dist/agent/tools/web_crawler.d.ts +1 -1
  63. package/dist/agent/tools/web_crawler.js +5 -5
  64. package/dist/agent/utils.cjs +2 -1
  65. package/dist/agent/utils.js +2 -1
  66. package/dist/cli/config/schema.cjs +89 -89
  67. package/dist/cli/config/schema.d.ts +1 -1
  68. package/dist/cli/config/schema.js +90 -90
  69. package/dist/cli/core/agentInvoker.cjs +170 -21
  70. package/dist/cli/core/agentInvoker.d.ts +25 -4
  71. package/dist/cli/core/agentInvoker.js +157 -20
  72. package/dist/cli/core/streamParser.cjs +15 -0
  73. package/dist/cli/core/streamParser.js +15 -0
  74. package/dist/cli/ui/toolDisplayHelpers.cjs +2 -0
  75. package/dist/cli/ui/toolDisplayHelpers.js +2 -0
  76. package/dist/gateway/hooks/registry.cjs +2 -1
  77. package/dist/gateway/hooks/registry.d.ts +1 -1
  78. package/dist/gateway/hooks/registry.js +2 -1
  79. package/dist/gateway/hooks/types.cjs +11 -11
  80. package/dist/gateway/hooks/types.d.ts +1 -1
  81. package/dist/gateway/hooks/types.js +12 -12
  82. package/dist/gateway/http/agents.cjs +67 -4
  83. package/dist/gateway/http/agents.js +67 -4
  84. package/dist/gateway/http/types.d.ts +5 -3
  85. package/dist/gateway/http/webhooks.cjs +6 -5
  86. package/dist/gateway/http/webhooks.js +6 -5
  87. package/dist/gateway/server.cjs +7 -0
  88. package/dist/gateway/server.d.ts +1 -0
  89. package/dist/gateway/server.js +7 -0
  90. package/dist/gateway/validation.cjs +39 -39
  91. package/dist/gateway/validation.d.ts +1 -1
  92. package/dist/gateway/validation.js +40 -40
  93. package/dist/providers/codex.cjs +230 -37
  94. package/dist/providers/codex.d.ts +2 -0
  95. package/dist/providers/codex.js +231 -38
  96. package/dist/tests/additionalMessageMiddleware.test.cjs +3 -0
  97. package/dist/tests/additionalMessageMiddleware.test.js +3 -0
  98. package/dist/tests/agentInvokerSummarization.test.cjs +171 -12
  99. package/dist/tests/agentInvokerSummarization.test.js +172 -13
  100. package/dist/tests/agents-api.test.cjs +45 -5
  101. package/dist/tests/agents-api.test.js +45 -5
  102. package/dist/tests/cli-init.test.cjs +27 -3
  103. package/dist/tests/cli-init.test.js +27 -3
  104. package/dist/tests/codex-provider.test.cjs +197 -0
  105. package/dist/tests/codex-provider.test.js +198 -1
  106. package/dist/tests/gateway.test.cjs +7 -7
  107. package/dist/tests/gateway.test.js +7 -7
  108. package/dist/tests/toolDisplayHelpers.test.cjs +3 -0
  109. package/dist/tests/toolDisplayHelpers.test.js +3 -0
  110. package/dist/tools/mcp-finance.cjs +48 -48
  111. package/dist/tools/mcp-finance.js +48 -48
  112. package/dist/types/mcp.cjs +15 -15
  113. package/dist/types/mcp.d.ts +1 -1
  114. package/dist/types/mcp.js +16 -16
  115. package/dist/types/voice.cjs +21 -21
  116. package/dist/types/voice.d.ts +1 -1
  117. package/dist/types/voice.js +22 -22
  118. package/dist/webui/assets/index-C7EuTbnE.js +270 -0
  119. package/dist/webui/assets/index-DVWQluit.css +11 -0
  120. package/dist/webui/favicon-32x32.png +0 -0
  121. package/dist/webui/favicon-64x64.png +0 -0
  122. package/dist/webui/favicon.webp +0 -0
  123. package/dist/webui/index.html +4 -2
  124. package/package.json +13 -12
  125. package/.wingman/agents/coding/implementor.md +0 -103
  126. package/dist/webui/assets/index-BVMavpud.css +0 -11
  127. package/dist/webui/assets/index-DCB2aVVf.js +0 -182
@@ -176,14 +176,15 @@ describeIfBun("Gateway", ()=>{
176
176
  }));
177
177
  (0, external_vitest_namespaceObject.it)("should broadcast messages to group members", async ()=>new Promise((resolve, reject)=>{
178
178
  let client1NodeId = null;
179
- let messagesReceived = 0;
179
+ let broadcastGroupId = null;
180
180
  const client1 = new index_cjs_namespaceObject.GatewayClient(`ws://localhost:${port}/ws`, "broadcaster", {
181
181
  events: {
182
182
  registered: async (nodeId)=>{
183
183
  client1NodeId = nodeId;
184
184
  await client1.joinGroup("broadcast-test");
185
185
  },
186
- joinedGroup: ()=>{
186
+ joinedGroup: (groupId)=>{
187
+ broadcastGroupId = groupId;
187
188
  client2.connect().catch(reject);
188
189
  }
189
190
  }
@@ -194,14 +195,13 @@ describeIfBun("Gateway", ()=>{
194
195
  await client2.joinGroup("broadcast-test");
195
196
  },
196
197
  joinedGroup: ()=>{
197
- client1.broadcast("broadcast-test", {
198
+ client1.broadcast(broadcastGroupId || "broadcast-test", {
198
199
  message: "Hello from client 1"
199
200
  });
200
201
  },
201
202
  broadcast: (message, fromNodeId)=>{
202
203
  (0, external_vitest_namespaceObject.expect)(fromNodeId).toBe(client1NodeId);
203
204
  (0, external_vitest_namespaceObject.expect)(message.message).toBe("Hello from client 1");
204
- messagesReceived++;
205
205
  client1.disconnect();
206
206
  client2.disconnect();
207
207
  resolve();
@@ -475,18 +475,18 @@ describeIfBun("Gateway", ()=>{
475
475
  "Content-Type": "application/json"
476
476
  },
477
477
  body: JSON.stringify({
478
- agentId: "main",
479
478
  name: "Clear Test"
480
479
  })
481
480
  });
482
481
  (0, external_vitest_namespaceObject.expect)(createRes.ok).toBe(true);
483
482
  const session = await createRes.json();
484
- const manager = await server.getSessionManager("main");
483
+ const sessionAgentId = session.agentId || "main";
484
+ const manager = await server.getSessionManager(sessionAgentId);
485
485
  manager.updateSession(session.id, {
486
486
  messageCount: 3,
487
487
  lastMessagePreview: "Hello"
488
488
  });
489
- const clearRes = await fetch(`http://localhost:${port}/api/sessions/${encodeURIComponent(session.id)}/messages?agentId=main`, {
489
+ const clearRes = await fetch(`http://localhost:${port}/api/sessions/${encodeURIComponent(session.id)}/messages?agentId=${encodeURIComponent(sessionAgentId)}`, {
490
490
  method: "DELETE"
491
491
  });
492
492
  (0, external_vitest_namespaceObject.expect)(clearRes.ok).toBe(true);
@@ -174,14 +174,15 @@ describeIfBun("Gateway", ()=>{
174
174
  }));
175
175
  it("should broadcast messages to group members", async ()=>new Promise((resolve, reject)=>{
176
176
  let client1NodeId = null;
177
- let messagesReceived = 0;
177
+ let broadcastGroupId = null;
178
178
  const client1 = new GatewayClient(`ws://localhost:${port}/ws`, "broadcaster", {
179
179
  events: {
180
180
  registered: async (nodeId)=>{
181
181
  client1NodeId = nodeId;
182
182
  await client1.joinGroup("broadcast-test");
183
183
  },
184
- joinedGroup: ()=>{
184
+ joinedGroup: (groupId)=>{
185
+ broadcastGroupId = groupId;
185
186
  client2.connect().catch(reject);
186
187
  }
187
188
  }
@@ -192,14 +193,13 @@ describeIfBun("Gateway", ()=>{
192
193
  await client2.joinGroup("broadcast-test");
193
194
  },
194
195
  joinedGroup: ()=>{
195
- client1.broadcast("broadcast-test", {
196
+ client1.broadcast(broadcastGroupId || "broadcast-test", {
196
197
  message: "Hello from client 1"
197
198
  });
198
199
  },
199
200
  broadcast: (message, fromNodeId)=>{
200
201
  expect(fromNodeId).toBe(client1NodeId);
201
202
  expect(message.message).toBe("Hello from client 1");
202
- messagesReceived++;
203
203
  client1.disconnect();
204
204
  client2.disconnect();
205
205
  resolve();
@@ -473,18 +473,18 @@ describeIfBun("Gateway", ()=>{
473
473
  "Content-Type": "application/json"
474
474
  },
475
475
  body: JSON.stringify({
476
- agentId: "main",
477
476
  name: "Clear Test"
478
477
  })
479
478
  });
480
479
  expect(createRes.ok).toBe(true);
481
480
  const session = await createRes.json();
482
- const manager = await server.getSessionManager("main");
481
+ const sessionAgentId = session.agentId || "main";
482
+ const manager = await server.getSessionManager(sessionAgentId);
483
483
  manager.updateSession(session.id, {
484
484
  messageCount: 3,
485
485
  lastMessagePreview: "Hello"
486
486
  });
487
- const clearRes = await fetch(`http://localhost:${port}/api/sessions/${encodeURIComponent(session.id)}/messages?agentId=main`, {
487
+ const clearRes = await fetch(`http://localhost:${port}/api/sessions/${encodeURIComponent(session.id)}/messages?agentId=${encodeURIComponent(sessionAgentId)}`, {
488
488
  method: "DELETE"
489
489
  });
490
490
  expect(clearRes.ok).toBe(true);
@@ -19,6 +19,9 @@ const toolDisplayHelpers_cjs_namespaceObject = require("../cli/ui/toolDisplayHel
19
19
  (0, external_vitest_namespaceObject.expect)((0, toolDisplayHelpers_cjs_namespaceObject.extractSubagentName)({
20
20
  subagent: "Runner"
21
21
  })).toBe("Runner");
22
+ (0, external_vitest_namespaceObject.expect)((0, toolDisplayHelpers_cjs_namespaceObject.extractSubagentName)({
23
+ subagent_type: "reviewer"
24
+ })).toBe("reviewer");
22
25
  (0, external_vitest_namespaceObject.expect)((0, toolDisplayHelpers_cjs_namespaceObject.extractSubagentName)({
23
26
  agent: {
24
27
  name: "Writer"
@@ -17,6 +17,9 @@ describe("toolDisplayHelpers", ()=>{
17
17
  expect(extractSubagentName({
18
18
  subagent: "Runner"
19
19
  })).toBe("Runner");
20
+ expect(extractSubagentName({
21
+ subagent_type: "reviewer"
22
+ })).toBe("reviewer");
20
23
  expect(extractSubagentName({
21
24
  agent: {
22
25
  name: "Writer"
@@ -246,8 +246,8 @@ var __webpack_modules__ = {
246
246
  server.registerTool("finnhub.symbolSearch", {
247
247
  title: "Finnhub Symbol Search",
248
248
  description: "Search for symbols or companies by query.",
249
- inputSchema: zod__rspack_import_2.z.object({
250
- query: zod__rspack_import_2.z.string().min(1)
249
+ inputSchema: zod__rspack_import_2.object({
250
+ query: zod__rspack_import_2.string().min(1)
251
251
  })
252
252
  }, async ({ query })=>{
253
253
  const data = await fetchFinnhub("/search", {
@@ -258,8 +258,8 @@ var __webpack_modules__ = {
258
258
  server.registerTool("finnhub.quote", {
259
259
  title: "Finnhub Quote",
260
260
  description: "Get the latest quote for a symbol.",
261
- inputSchema: zod__rspack_import_2.z.object({
262
- symbol: zod__rspack_import_2.z.string().min(1)
261
+ inputSchema: zod__rspack_import_2.object({
262
+ symbol: zod__rspack_import_2.string().min(1)
263
263
  })
264
264
  }, async ({ symbol })=>{
265
265
  const data = await fetchFinnhub("/quote", {
@@ -270,8 +270,8 @@ var __webpack_modules__ = {
270
270
  server.registerTool("finnhub.companyProfile", {
271
271
  title: "Finnhub Company Profile",
272
272
  description: "Get company profile data for a symbol.",
273
- inputSchema: zod__rspack_import_2.z.object({
274
- symbol: zod__rspack_import_2.z.string().min(1)
273
+ inputSchema: zod__rspack_import_2.object({
274
+ symbol: zod__rspack_import_2.string().min(1)
275
275
  })
276
276
  }, async ({ symbol })=>{
277
277
  const data = await fetchFinnhub("/stock/profile2", {
@@ -282,9 +282,9 @@ var __webpack_modules__ = {
282
282
  server.registerTool("finnhub.financials", {
283
283
  title: "Finnhub Financial Metrics",
284
284
  description: "Get financial metrics (including P/E) for a symbol.",
285
- inputSchema: zod__rspack_import_2.z.object({
286
- symbol: zod__rspack_import_2.z.string().min(1),
287
- metric: zod__rspack_import_2.z.string().optional().default("all")
285
+ inputSchema: zod__rspack_import_2.object({
286
+ symbol: zod__rspack_import_2.string().min(1),
287
+ metric: zod__rspack_import_2.string().optional().default("all")
288
288
  })
289
289
  }, async ({ symbol, metric })=>{
290
290
  const data = await fetchFinnhub("/stock/metric", {
@@ -296,9 +296,9 @@ var __webpack_modules__ = {
296
296
  server.registerTool("finnhub.earnings", {
297
297
  title: "Finnhub Earnings",
298
298
  description: "Get earnings history for a symbol.",
299
- inputSchema: zod__rspack_import_2.z.object({
300
- symbol: zod__rspack_import_2.z.string().min(1),
301
- limit: zod__rspack_import_2.z.number().int().min(1).max(20).optional()
299
+ inputSchema: zod__rspack_import_2.object({
300
+ symbol: zod__rspack_import_2.string().min(1),
301
+ limit: zod__rspack_import_2.number().int().min(1).max(20).optional()
302
302
  })
303
303
  }, async ({ symbol, limit })=>{
304
304
  const data = await fetchFinnhub("/stock/earnings", {
@@ -312,10 +312,10 @@ var __webpack_modules__ = {
312
312
  server.registerTool("finnhub.news", {
313
313
  title: "Finnhub Company News",
314
314
  description: "Get recent company news for a symbol.",
315
- inputSchema: zod__rspack_import_2.z.object({
316
- symbol: zod__rspack_import_2.z.string().min(1),
317
- from: zod__rspack_import_2.z.string().optional(),
318
- to: zod__rspack_import_2.z.string().optional()
315
+ inputSchema: zod__rspack_import_2.object({
316
+ symbol: zod__rspack_import_2.string().min(1),
317
+ from: zod__rspack_import_2.string().optional(),
318
+ to: zod__rspack_import_2.string().optional()
319
319
  })
320
320
  }, async ({ symbol, from, to })=>{
321
321
  const toDate = to || new Date().toISOString().slice(0, 10);
@@ -335,8 +335,8 @@ var __webpack_modules__ = {
335
335
  server.registerTool("finnhub.marketNews", {
336
336
  title: "Finnhub Market News",
337
337
  description: "Get broad market news (general category) for theme detection.",
338
- inputSchema: zod__rspack_import_2.z.object({
339
- category: zod__rspack_import_2.z.string().min(1).optional().default("general")
338
+ inputSchema: zod__rspack_import_2.object({
339
+ category: zod__rspack_import_2.string().min(1).optional().default("general")
340
340
  })
341
341
  }, async ({ category })=>{
342
342
  const data = await fetchFinnhub("/news", {
@@ -347,8 +347,8 @@ var __webpack_modules__ = {
347
347
  server.registerTool("finnhub.peers", {
348
348
  title: "Finnhub Stock Peers",
349
349
  description: "Get peer symbols for a company.",
350
- inputSchema: zod__rspack_import_2.z.object({
351
- symbol: zod__rspack_import_2.z.string().min(1)
350
+ inputSchema: zod__rspack_import_2.object({
351
+ symbol: zod__rspack_import_2.string().min(1)
352
352
  })
353
353
  }, async ({ symbol })=>{
354
354
  const data = await fetchFinnhub("/stock/peers", {
@@ -359,12 +359,12 @@ var __webpack_modules__ = {
359
359
  server.registerTool("finnhub.candles", {
360
360
  title: "Finnhub Candles",
361
361
  description: `Get OHLCV candles for a symbol. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
362
- inputSchema: zod__rspack_import_2.z.object({
363
- symbol: zod__rspack_import_2.z.string().min(1),
364
- resolution: zod__rspack_import_2.z.string().optional().default("D"),
365
- from: zod__rspack_import_2.z.number().int().optional(),
366
- to: zod__rspack_import_2.z.number().int().optional(),
367
- lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
362
+ inputSchema: zod__rspack_import_2.object({
363
+ symbol: zod__rspack_import_2.string().min(1),
364
+ resolution: zod__rspack_import_2.string().optional().default("D"),
365
+ from: zod__rspack_import_2.number().int().optional(),
366
+ to: zod__rspack_import_2.number().int().optional(),
367
+ lookbackDays: zod__rspack_import_2.number().int().positive().optional()
368
368
  })
369
369
  }, async ({ symbol, resolution, from, to, lookbackDays })=>{
370
370
  const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
@@ -390,12 +390,12 @@ var __webpack_modules__ = {
390
390
  server.registerTool("finnhub.technicalSnapshot", {
391
391
  title: "Finnhub Technical Snapshot",
392
392
  description: `Fetch candles and compute RSI/EMA/ATR locally. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
393
- inputSchema: zod__rspack_import_2.z.object({
394
- symbol: zod__rspack_import_2.z.string().min(1),
395
- resolution: zod__rspack_import_2.z.string().optional().default("D"),
396
- from: zod__rspack_import_2.z.number().int().optional(),
397
- to: zod__rspack_import_2.z.number().int().optional(),
398
- lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
393
+ inputSchema: zod__rspack_import_2.object({
394
+ symbol: zod__rspack_import_2.string().min(1),
395
+ resolution: zod__rspack_import_2.string().optional().default("D"),
396
+ from: zod__rspack_import_2.number().int().optional(),
397
+ to: zod__rspack_import_2.number().int().optional(),
398
+ lookbackDays: zod__rspack_import_2.number().int().positive().optional()
399
399
  })
400
400
  }, async ({ symbol, resolution, from, to, lookbackDays })=>{
401
401
  const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
@@ -440,9 +440,9 @@ var __webpack_modules__ = {
440
440
  server.registerTool("finnhub.optionChain", {
441
441
  title: "Finnhub Option Chain",
442
442
  description: "Get option chain data for a symbol (date optional).",
443
- inputSchema: zod__rspack_import_2.z.object({
444
- symbol: zod__rspack_import_2.z.string().min(1),
445
- date: zod__rspack_import_2.z.string().optional()
443
+ inputSchema: zod__rspack_import_2.object({
444
+ symbol: zod__rspack_import_2.string().min(1),
445
+ date: zod__rspack_import_2.string().optional()
446
446
  })
447
447
  }, async ({ symbol, date })=>{
448
448
  const data = await fetchFinnhub("/stock/option-chain", {
@@ -456,25 +456,25 @@ var __webpack_modules__ = {
456
456
  server.registerTool("options.analyze", {
457
457
  title: "Options Structure Analyzer",
458
458
  description: "Compute payoff metrics and optional Greeks for an options structure using supplied leg prices.",
459
- inputSchema: zod__rspack_import_2.z.object({
460
- underlyingPrice: zod__rspack_import_2.z.number().positive(),
461
- daysToExpiry: zod__rspack_import_2.z.number().positive().optional(),
462
- riskFreeRate: zod__rspack_import_2.z.number().optional().default(0),
463
- dividendYield: zod__rspack_import_2.z.number().optional().default(0),
464
- legs: zod__rspack_import_2.z.array(zod__rspack_import_2.z.object({
465
- type: zod__rspack_import_2.z["enum"]([
459
+ inputSchema: zod__rspack_import_2.object({
460
+ underlyingPrice: zod__rspack_import_2.number().positive(),
461
+ daysToExpiry: zod__rspack_import_2.number().positive().optional(),
462
+ riskFreeRate: zod__rspack_import_2.number().optional().default(0),
463
+ dividendYield: zod__rspack_import_2.number().optional().default(0),
464
+ legs: zod__rspack_import_2.array(zod__rspack_import_2.object({
465
+ type: zod__rspack_import_2["enum"]([
466
466
  "call",
467
467
  "put"
468
468
  ]),
469
- side: zod__rspack_import_2.z["enum"]([
469
+ side: zod__rspack_import_2["enum"]([
470
470
  "buy",
471
471
  "sell"
472
472
  ]),
473
- strike: zod__rspack_import_2.z.number().positive(),
474
- premium: zod__rspack_import_2.z.number().nonnegative(),
475
- qty: zod__rspack_import_2.z.number().int().positive().optional(),
476
- contractMultiplier: zod__rspack_import_2.z.number().positive().optional(),
477
- impliedVol: zod__rspack_import_2.z.number().positive().optional()
473
+ strike: zod__rspack_import_2.number().positive(),
474
+ premium: zod__rspack_import_2.number().nonnegative(),
475
+ qty: zod__rspack_import_2.number().int().positive().optional(),
476
+ contractMultiplier: zod__rspack_import_2.number().positive().optional(),
477
+ impliedVol: zod__rspack_import_2.number().positive().optional()
478
478
  })).min(1)
479
479
  })
480
480
  }, async (input)=>{
@@ -252,8 +252,8 @@ var __webpack_modules__ = {
252
252
  server.registerTool("finnhub.symbolSearch", {
253
253
  title: "Finnhub Symbol Search",
254
254
  description: "Search for symbols or companies by query.",
255
- inputSchema: zod__rspack_import_2.z.object({
256
- query: zod__rspack_import_2.z.string().min(1)
255
+ inputSchema: zod__rspack_import_2.object({
256
+ query: zod__rspack_import_2.string().min(1)
257
257
  })
258
258
  }, async ({ query })=>{
259
259
  const data = await fetchFinnhub("/search", {
@@ -264,8 +264,8 @@ var __webpack_modules__ = {
264
264
  server.registerTool("finnhub.quote", {
265
265
  title: "Finnhub Quote",
266
266
  description: "Get the latest quote for a symbol.",
267
- inputSchema: zod__rspack_import_2.z.object({
268
- symbol: zod__rspack_import_2.z.string().min(1)
267
+ inputSchema: zod__rspack_import_2.object({
268
+ symbol: zod__rspack_import_2.string().min(1)
269
269
  })
270
270
  }, async ({ symbol })=>{
271
271
  const data = await fetchFinnhub("/quote", {
@@ -276,8 +276,8 @@ var __webpack_modules__ = {
276
276
  server.registerTool("finnhub.companyProfile", {
277
277
  title: "Finnhub Company Profile",
278
278
  description: "Get company profile data for a symbol.",
279
- inputSchema: zod__rspack_import_2.z.object({
280
- symbol: zod__rspack_import_2.z.string().min(1)
279
+ inputSchema: zod__rspack_import_2.object({
280
+ symbol: zod__rspack_import_2.string().min(1)
281
281
  })
282
282
  }, async ({ symbol })=>{
283
283
  const data = await fetchFinnhub("/stock/profile2", {
@@ -288,9 +288,9 @@ var __webpack_modules__ = {
288
288
  server.registerTool("finnhub.financials", {
289
289
  title: "Finnhub Financial Metrics",
290
290
  description: "Get financial metrics (including P/E) for a symbol.",
291
- inputSchema: zod__rspack_import_2.z.object({
292
- symbol: zod__rspack_import_2.z.string().min(1),
293
- metric: zod__rspack_import_2.z.string().optional().default("all")
291
+ inputSchema: zod__rspack_import_2.object({
292
+ symbol: zod__rspack_import_2.string().min(1),
293
+ metric: zod__rspack_import_2.string().optional().default("all")
294
294
  })
295
295
  }, async ({ symbol, metric })=>{
296
296
  const data = await fetchFinnhub("/stock/metric", {
@@ -302,9 +302,9 @@ var __webpack_modules__ = {
302
302
  server.registerTool("finnhub.earnings", {
303
303
  title: "Finnhub Earnings",
304
304
  description: "Get earnings history for a symbol.",
305
- inputSchema: zod__rspack_import_2.z.object({
306
- symbol: zod__rspack_import_2.z.string().min(1),
307
- limit: zod__rspack_import_2.z.number().int().min(1).max(20).optional()
305
+ inputSchema: zod__rspack_import_2.object({
306
+ symbol: zod__rspack_import_2.string().min(1),
307
+ limit: zod__rspack_import_2.number().int().min(1).max(20).optional()
308
308
  })
309
309
  }, async ({ symbol, limit })=>{
310
310
  const data = await fetchFinnhub("/stock/earnings", {
@@ -318,10 +318,10 @@ var __webpack_modules__ = {
318
318
  server.registerTool("finnhub.news", {
319
319
  title: "Finnhub Company News",
320
320
  description: "Get recent company news for a symbol.",
321
- inputSchema: zod__rspack_import_2.z.object({
322
- symbol: zod__rspack_import_2.z.string().min(1),
323
- from: zod__rspack_import_2.z.string().optional(),
324
- to: zod__rspack_import_2.z.string().optional()
321
+ inputSchema: zod__rspack_import_2.object({
322
+ symbol: zod__rspack_import_2.string().min(1),
323
+ from: zod__rspack_import_2.string().optional(),
324
+ to: zod__rspack_import_2.string().optional()
325
325
  })
326
326
  }, async ({ symbol, from, to })=>{
327
327
  const toDate = to || new Date().toISOString().slice(0, 10);
@@ -341,8 +341,8 @@ var __webpack_modules__ = {
341
341
  server.registerTool("finnhub.marketNews", {
342
342
  title: "Finnhub Market News",
343
343
  description: "Get broad market news (general category) for theme detection.",
344
- inputSchema: zod__rspack_import_2.z.object({
345
- category: zod__rspack_import_2.z.string().min(1).optional().default("general")
344
+ inputSchema: zod__rspack_import_2.object({
345
+ category: zod__rspack_import_2.string().min(1).optional().default("general")
346
346
  })
347
347
  }, async ({ category })=>{
348
348
  const data = await fetchFinnhub("/news", {
@@ -353,8 +353,8 @@ var __webpack_modules__ = {
353
353
  server.registerTool("finnhub.peers", {
354
354
  title: "Finnhub Stock Peers",
355
355
  description: "Get peer symbols for a company.",
356
- inputSchema: zod__rspack_import_2.z.object({
357
- symbol: zod__rspack_import_2.z.string().min(1)
356
+ inputSchema: zod__rspack_import_2.object({
357
+ symbol: zod__rspack_import_2.string().min(1)
358
358
  })
359
359
  }, async ({ symbol })=>{
360
360
  const data = await fetchFinnhub("/stock/peers", {
@@ -365,12 +365,12 @@ var __webpack_modules__ = {
365
365
  server.registerTool("finnhub.candles", {
366
366
  title: "Finnhub Candles",
367
367
  description: `Get OHLCV candles for a symbol. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
368
- inputSchema: zod__rspack_import_2.z.object({
369
- symbol: zod__rspack_import_2.z.string().min(1),
370
- resolution: zod__rspack_import_2.z.string().optional().default("D"),
371
- from: zod__rspack_import_2.z.number().int().optional(),
372
- to: zod__rspack_import_2.z.number().int().optional(),
373
- lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
368
+ inputSchema: zod__rspack_import_2.object({
369
+ symbol: zod__rspack_import_2.string().min(1),
370
+ resolution: zod__rspack_import_2.string().optional().default("D"),
371
+ from: zod__rspack_import_2.number().int().optional(),
372
+ to: zod__rspack_import_2.number().int().optional(),
373
+ lookbackDays: zod__rspack_import_2.number().int().positive().optional()
374
374
  })
375
375
  }, async ({ symbol, resolution, from, to, lookbackDays })=>{
376
376
  const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
@@ -396,12 +396,12 @@ var __webpack_modules__ = {
396
396
  server.registerTool("finnhub.technicalSnapshot", {
397
397
  title: "Finnhub Technical Snapshot",
398
398
  description: `Fetch candles and compute RSI/EMA/ATR locally. ${candleCapSummary} ${candleSourceSummary} ${candleSessionSummary}`,
399
- inputSchema: zod__rspack_import_2.z.object({
400
- symbol: zod__rspack_import_2.z.string().min(1),
401
- resolution: zod__rspack_import_2.z.string().optional().default("D"),
402
- from: zod__rspack_import_2.z.number().int().optional(),
403
- to: zod__rspack_import_2.z.number().int().optional(),
404
- lookbackDays: zod__rspack_import_2.z.number().int().positive().optional()
399
+ inputSchema: zod__rspack_import_2.object({
400
+ symbol: zod__rspack_import_2.string().min(1),
401
+ resolution: zod__rspack_import_2.string().optional().default("D"),
402
+ from: zod__rspack_import_2.number().int().optional(),
403
+ to: zod__rspack_import_2.number().int().optional(),
404
+ lookbackDays: zod__rspack_import_2.number().int().positive().optional()
405
405
  })
406
406
  }, async ({ symbol, resolution, from, to, lookbackDays })=>{
407
407
  const range = (0, _finance_candleRange_js__rspack_import_5.resolveCandleRange)({
@@ -446,9 +446,9 @@ var __webpack_modules__ = {
446
446
  server.registerTool("finnhub.optionChain", {
447
447
  title: "Finnhub Option Chain",
448
448
  description: "Get option chain data for a symbol (date optional).",
449
- inputSchema: zod__rspack_import_2.z.object({
450
- symbol: zod__rspack_import_2.z.string().min(1),
451
- date: zod__rspack_import_2.z.string().optional()
449
+ inputSchema: zod__rspack_import_2.object({
450
+ symbol: zod__rspack_import_2.string().min(1),
451
+ date: zod__rspack_import_2.string().optional()
452
452
  })
453
453
  }, async ({ symbol, date })=>{
454
454
  const data = await fetchFinnhub("/stock/option-chain", {
@@ -462,25 +462,25 @@ var __webpack_modules__ = {
462
462
  server.registerTool("options.analyze", {
463
463
  title: "Options Structure Analyzer",
464
464
  description: "Compute payoff metrics and optional Greeks for an options structure using supplied leg prices.",
465
- inputSchema: zod__rspack_import_2.z.object({
466
- underlyingPrice: zod__rspack_import_2.z.number().positive(),
467
- daysToExpiry: zod__rspack_import_2.z.number().positive().optional(),
468
- riskFreeRate: zod__rspack_import_2.z.number().optional().default(0),
469
- dividendYield: zod__rspack_import_2.z.number().optional().default(0),
470
- legs: zod__rspack_import_2.z.array(zod__rspack_import_2.z.object({
471
- type: zod__rspack_import_2.z["enum"]([
465
+ inputSchema: zod__rspack_import_2.object({
466
+ underlyingPrice: zod__rspack_import_2.number().positive(),
467
+ daysToExpiry: zod__rspack_import_2.number().positive().optional(),
468
+ riskFreeRate: zod__rspack_import_2.number().optional().default(0),
469
+ dividendYield: zod__rspack_import_2.number().optional().default(0),
470
+ legs: zod__rspack_import_2.array(zod__rspack_import_2.object({
471
+ type: zod__rspack_import_2["enum"]([
472
472
  "call",
473
473
  "put"
474
474
  ]),
475
- side: zod__rspack_import_2.z["enum"]([
475
+ side: zod__rspack_import_2["enum"]([
476
476
  "buy",
477
477
  "sell"
478
478
  ]),
479
- strike: zod__rspack_import_2.z.number().positive(),
480
- premium: zod__rspack_import_2.z.number().nonnegative(),
481
- qty: zod__rspack_import_2.z.number().int().positive().optional(),
482
- contractMultiplier: zod__rspack_import_2.z.number().positive().optional(),
483
- impliedVol: zod__rspack_import_2.z.number().positive().optional()
479
+ strike: zod__rspack_import_2.number().positive(),
480
+ premium: zod__rspack_import_2.number().nonnegative(),
481
+ qty: zod__rspack_import_2.number().int().positive().optional(),
482
+ contractMultiplier: zod__rspack_import_2.number().positive().optional(),
483
+ impliedVol: zod__rspack_import_2.number().positive().optional()
484
484
  })).min(1)
485
485
  })
486
486
  }, async (input)=>{
@@ -31,25 +31,25 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  MCPServersConfigSchema: ()=>MCPServersConfigSchema
32
32
  });
33
33
  const external_zod_namespaceObject = require("zod");
34
- const MCPStdioConfigSchema = external_zod_namespaceObject.z.object({
35
- name: external_zod_namespaceObject.z.string().min(1).describe("Unique server name"),
36
- transport: external_zod_namespaceObject.z.literal("stdio"),
37
- command: external_zod_namespaceObject.z.string().min(1).describe("Command to execute (e.g., 'node', 'python')"),
38
- args: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).optional().describe("Command arguments"),
39
- env: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string()).optional().describe("Environment variables")
34
+ const MCPStdioConfigSchema = external_zod_namespaceObject.object({
35
+ name: external_zod_namespaceObject.string().min(1).describe("Unique server name"),
36
+ transport: external_zod_namespaceObject.literal("stdio"),
37
+ command: external_zod_namespaceObject.string().min(1).describe("Command to execute (e.g., 'node', 'python')"),
38
+ args: external_zod_namespaceObject.array(external_zod_namespaceObject.string()).optional().describe("Command arguments"),
39
+ env: external_zod_namespaceObject.record(external_zod_namespaceObject.string(), external_zod_namespaceObject.string()).optional().describe("Environment variables")
40
40
  });
41
- const MCPSSEConfigSchema = external_zod_namespaceObject.z.object({
42
- name: external_zod_namespaceObject.z.string().min(1).describe("Unique server name"),
43
- transport: external_zod_namespaceObject.z.literal("sse"),
44
- url: external_zod_namespaceObject.z.string().url().describe("Server URL"),
45
- headers: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string()).optional().describe("HTTP headers for authentication")
41
+ const MCPSSEConfigSchema = external_zod_namespaceObject.object({
42
+ name: external_zod_namespaceObject.string().min(1).describe("Unique server name"),
43
+ transport: external_zod_namespaceObject.literal("sse"),
44
+ url: external_zod_namespaceObject.string().url().describe("Server URL"),
45
+ headers: external_zod_namespaceObject.record(external_zod_namespaceObject.string(), external_zod_namespaceObject.string()).optional().describe("HTTP headers for authentication")
46
46
  });
47
- const MCPServerConfigSchema = external_zod_namespaceObject.z.union([
47
+ const MCPServerConfigSchema = external_zod_namespaceObject.union([
48
48
  MCPStdioConfigSchema,
49
49
  MCPSSEConfigSchema
50
50
  ]);
51
- const MCPServersConfigSchema = external_zod_namespaceObject.z.object({
52
- servers: external_zod_namespaceObject.z.array(MCPServerConfigSchema).optional().describe("List of MCP servers")
51
+ const MCPServersConfigSchema = external_zod_namespaceObject.object({
52
+ servers: external_zod_namespaceObject.array(MCPServerConfigSchema).optional().describe("List of MCP servers")
53
53
  });
54
54
  function validateMCPConfig(config) {
55
55
  try {
@@ -59,7 +59,7 @@ function validateMCPConfig(config) {
59
59
  data: validated
60
60
  };
61
61
  } catch (error) {
62
- if (error instanceof external_zod_namespaceObject.z.ZodError) return {
62
+ if (error instanceof external_zod_namespaceObject.ZodError) return {
63
63
  success: false,
64
64
  error: error.issues.map((e)=>`${e.path.join(".")}: ${e.message}`).join(", ")
65
65
  };
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import * as z from "zod";
2
2
  /**
3
3
  * Transport type for MCP server connection
4
4
  */
package/dist/types/mcp.js CHANGED
@@ -1,23 +1,23 @@
1
- import { z } from "zod";
2
- const MCPStdioConfigSchema = z.object({
3
- name: z.string().min(1).describe("Unique server name"),
4
- transport: z.literal("stdio"),
5
- command: z.string().min(1).describe("Command to execute (e.g., 'node', 'python')"),
6
- args: z.array(z.string()).optional().describe("Command arguments"),
7
- env: z.record(z.string(), z.string()).optional().describe("Environment variables")
1
+ import { ZodError, array, literal, object, record, string, union } from "zod";
2
+ const MCPStdioConfigSchema = object({
3
+ name: string().min(1).describe("Unique server name"),
4
+ transport: literal("stdio"),
5
+ command: string().min(1).describe("Command to execute (e.g., 'node', 'python')"),
6
+ args: array(string()).optional().describe("Command arguments"),
7
+ env: record(string(), string()).optional().describe("Environment variables")
8
8
  });
9
- const MCPSSEConfigSchema = z.object({
10
- name: z.string().min(1).describe("Unique server name"),
11
- transport: z.literal("sse"),
12
- url: z.string().url().describe("Server URL"),
13
- headers: z.record(z.string(), z.string()).optional().describe("HTTP headers for authentication")
9
+ const MCPSSEConfigSchema = object({
10
+ name: string().min(1).describe("Unique server name"),
11
+ transport: literal("sse"),
12
+ url: string().url().describe("Server URL"),
13
+ headers: record(string(), string()).optional().describe("HTTP headers for authentication")
14
14
  });
15
- const MCPServerConfigSchema = z.union([
15
+ const MCPServerConfigSchema = union([
16
16
  MCPStdioConfigSchema,
17
17
  MCPSSEConfigSchema
18
18
  ]);
19
- const MCPServersConfigSchema = z.object({
20
- servers: z.array(MCPServerConfigSchema).optional().describe("List of MCP servers")
19
+ const MCPServersConfigSchema = object({
20
+ servers: array(MCPServerConfigSchema).optional().describe("List of MCP servers")
21
21
  });
22
22
  function validateMCPConfig(config) {
23
23
  try {
@@ -27,7 +27,7 @@ function validateMCPConfig(config) {
27
27
  data: validated
28
28
  };
29
29
  } catch (error) {
30
- if (error instanceof z.ZodError) return {
30
+ if (error instanceof ZodError) return {
31
31
  success: false,
32
32
  error: error.issues.map((e)=>`${e.path.join(".")}: ${e.message}`).join(", ")
33
33
  };