@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.
- package/.wingman/agents/README.md +7 -1
- package/.wingman/agents/coding/agent.md +295 -202
- package/.wingman/agents/coding-v2/agent.md +127 -0
- package/.wingman/agents/coding-v2/implementor.md +89 -0
- package/dist/agent/config/agentConfig.cjs +31 -17
- package/dist/agent/config/agentConfig.d.ts +23 -1
- package/dist/agent/config/agentConfig.js +30 -19
- package/dist/agent/config/agentLoader.cjs +26 -8
- package/dist/agent/config/agentLoader.d.ts +4 -2
- package/dist/agent/config/agentLoader.js +26 -8
- package/dist/agent/config/modelFactory.cjs +77 -27
- package/dist/agent/config/modelFactory.d.ts +11 -1
- package/dist/agent/config/modelFactory.js +77 -27
- package/dist/agent/config/toolRegistry.cjs +19 -6
- package/dist/agent/config/toolRegistry.d.ts +5 -2
- package/dist/agent/config/toolRegistry.js +19 -6
- package/dist/agent/middleware/hooks/types.cjs +13 -13
- package/dist/agent/middleware/hooks/types.d.ts +1 -1
- package/dist/agent/middleware/hooks/types.js +14 -14
- package/dist/agent/tests/agentConfig.test.cjs +22 -2
- package/dist/agent/tests/agentConfig.test.js +22 -2
- package/dist/agent/tests/agentLoader.test.cjs +38 -1
- package/dist/agent/tests/agentLoader.test.js +38 -1
- package/dist/agent/tests/backgroundTerminal.test.cjs +70 -0
- package/dist/agent/tests/backgroundTerminal.test.d.ts +1 -0
- package/dist/agent/tests/backgroundTerminal.test.js +64 -0
- package/dist/agent/tests/commandExecuteTool.test.cjs +29 -0
- package/dist/agent/tests/commandExecuteTool.test.d.ts +1 -0
- package/dist/agent/tests/commandExecuteTool.test.js +23 -0
- package/dist/agent/tests/modelFactory.test.cjs +35 -0
- package/dist/agent/tests/modelFactory.test.js +35 -0
- package/dist/agent/tests/terminalSessionManager.test.cjs +121 -0
- package/dist/agent/tests/terminalSessionManager.test.d.ts +1 -0
- package/dist/agent/tests/terminalSessionManager.test.js +115 -0
- package/dist/agent/tests/toolRegistry.test.cjs +14 -2
- package/dist/agent/tests/toolRegistry.test.js +14 -2
- package/dist/agent/tools/background_terminal.cjs +128 -0
- package/dist/agent/tools/background_terminal.d.ts +41 -0
- package/dist/agent/tools/background_terminal.js +94 -0
- package/dist/agent/tools/code_search.cjs +6 -6
- package/dist/agent/tools/code_search.d.ts +1 -1
- package/dist/agent/tools/code_search.js +7 -7
- package/dist/agent/tools/command_execute.cjs +22 -7
- package/dist/agent/tools/command_execute.d.ts +3 -2
- package/dist/agent/tools/command_execute.js +23 -8
- package/dist/agent/tools/git_status.cjs +3 -3
- package/dist/agent/tools/git_status.d.ts +1 -1
- package/dist/agent/tools/git_status.js +4 -4
- package/dist/agent/tools/internet_search.cjs +6 -6
- package/dist/agent/tools/internet_search.d.ts +1 -1
- package/dist/agent/tools/internet_search.js +7 -7
- package/dist/agent/tools/terminal_session_manager.cjs +321 -0
- package/dist/agent/tools/terminal_session_manager.d.ts +77 -0
- package/dist/agent/tools/terminal_session_manager.js +284 -0
- package/dist/agent/tools/think.cjs +4 -4
- package/dist/agent/tools/think.d.ts +1 -1
- package/dist/agent/tools/think.js +5 -5
- package/dist/agent/tools/ui_registry.cjs +13 -13
- package/dist/agent/tools/ui_registry.d.ts +4 -4
- package/dist/agent/tools/ui_registry.js +14 -14
- package/dist/agent/tools/web_crawler.cjs +4 -4
- package/dist/agent/tools/web_crawler.d.ts +1 -1
- package/dist/agent/tools/web_crawler.js +5 -5
- package/dist/agent/utils.cjs +2 -1
- package/dist/agent/utils.js +2 -1
- package/dist/cli/config/schema.cjs +89 -89
- package/dist/cli/config/schema.d.ts +1 -1
- package/dist/cli/config/schema.js +90 -90
- package/dist/cli/core/agentInvoker.cjs +170 -21
- package/dist/cli/core/agentInvoker.d.ts +25 -4
- package/dist/cli/core/agentInvoker.js +157 -20
- package/dist/cli/core/streamParser.cjs +15 -0
- package/dist/cli/core/streamParser.js +15 -0
- package/dist/cli/ui/toolDisplayHelpers.cjs +2 -0
- package/dist/cli/ui/toolDisplayHelpers.js +2 -0
- package/dist/gateway/hooks/registry.cjs +2 -1
- package/dist/gateway/hooks/registry.d.ts +1 -1
- package/dist/gateway/hooks/registry.js +2 -1
- package/dist/gateway/hooks/types.cjs +11 -11
- package/dist/gateway/hooks/types.d.ts +1 -1
- package/dist/gateway/hooks/types.js +12 -12
- package/dist/gateway/http/agents.cjs +67 -4
- package/dist/gateway/http/agents.js +67 -4
- package/dist/gateway/http/types.d.ts +5 -3
- package/dist/gateway/http/webhooks.cjs +6 -5
- package/dist/gateway/http/webhooks.js +6 -5
- package/dist/gateway/server.cjs +7 -0
- package/dist/gateway/server.d.ts +1 -0
- package/dist/gateway/server.js +7 -0
- package/dist/gateway/validation.cjs +39 -39
- package/dist/gateway/validation.d.ts +1 -1
- package/dist/gateway/validation.js +40 -40
- package/dist/providers/codex.cjs +230 -37
- package/dist/providers/codex.d.ts +2 -0
- package/dist/providers/codex.js +231 -38
- package/dist/tests/additionalMessageMiddleware.test.cjs +3 -0
- package/dist/tests/additionalMessageMiddleware.test.js +3 -0
- package/dist/tests/agentInvokerSummarization.test.cjs +171 -12
- package/dist/tests/agentInvokerSummarization.test.js +172 -13
- package/dist/tests/agents-api.test.cjs +45 -5
- package/dist/tests/agents-api.test.js +45 -5
- package/dist/tests/cli-init.test.cjs +27 -3
- package/dist/tests/cli-init.test.js +27 -3
- package/dist/tests/codex-provider.test.cjs +197 -0
- package/dist/tests/codex-provider.test.js +198 -1
- package/dist/tests/gateway.test.cjs +7 -7
- package/dist/tests/gateway.test.js +7 -7
- package/dist/tests/toolDisplayHelpers.test.cjs +3 -0
- package/dist/tests/toolDisplayHelpers.test.js +3 -0
- package/dist/tools/mcp-finance.cjs +48 -48
- package/dist/tools/mcp-finance.js +48 -48
- package/dist/types/mcp.cjs +15 -15
- package/dist/types/mcp.d.ts +1 -1
- package/dist/types/mcp.js +16 -16
- package/dist/types/voice.cjs +21 -21
- package/dist/types/voice.d.ts +1 -1
- package/dist/types/voice.js +22 -22
- package/dist/webui/assets/index-C7EuTbnE.js +270 -0
- package/dist/webui/assets/index-DVWQluit.css +11 -0
- package/dist/webui/favicon-32x32.png +0 -0
- package/dist/webui/favicon-64x64.png +0 -0
- package/dist/webui/favicon.webp +0 -0
- package/dist/webui/index.html +4 -2
- package/package.json +13 -12
- package/.wingman/agents/coding/implementor.md +0 -103
- package/dist/webui/assets/index-BVMavpud.css +0 -11
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
250
|
-
query: zod__rspack_import_2.
|
|
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.
|
|
262
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
274
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
286
|
-
symbol: zod__rspack_import_2.
|
|
287
|
-
metric: zod__rspack_import_2.
|
|
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.
|
|
300
|
-
symbol: zod__rspack_import_2.
|
|
301
|
-
limit: zod__rspack_import_2.
|
|
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.
|
|
316
|
-
symbol: zod__rspack_import_2.
|
|
317
|
-
from: zod__rspack_import_2.
|
|
318
|
-
to: zod__rspack_import_2.
|
|
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.
|
|
339
|
-
category: zod__rspack_import_2.
|
|
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.
|
|
351
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
363
|
-
symbol: zod__rspack_import_2.
|
|
364
|
-
resolution: zod__rspack_import_2.
|
|
365
|
-
from: zod__rspack_import_2.
|
|
366
|
-
to: zod__rspack_import_2.
|
|
367
|
-
lookbackDays: zod__rspack_import_2.
|
|
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.
|
|
394
|
-
symbol: zod__rspack_import_2.
|
|
395
|
-
resolution: zod__rspack_import_2.
|
|
396
|
-
from: zod__rspack_import_2.
|
|
397
|
-
to: zod__rspack_import_2.
|
|
398
|
-
lookbackDays: zod__rspack_import_2.
|
|
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.
|
|
444
|
-
symbol: zod__rspack_import_2.
|
|
445
|
-
date: zod__rspack_import_2.
|
|
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.
|
|
460
|
-
underlyingPrice: zod__rspack_import_2.
|
|
461
|
-
daysToExpiry: zod__rspack_import_2.
|
|
462
|
-
riskFreeRate: zod__rspack_import_2.
|
|
463
|
-
dividendYield: zod__rspack_import_2.
|
|
464
|
-
legs: zod__rspack_import_2.
|
|
465
|
-
type: zod__rspack_import_2
|
|
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
|
|
469
|
+
side: zod__rspack_import_2["enum"]([
|
|
470
470
|
"buy",
|
|
471
471
|
"sell"
|
|
472
472
|
]),
|
|
473
|
-
strike: zod__rspack_import_2.
|
|
474
|
-
premium: zod__rspack_import_2.
|
|
475
|
-
qty: zod__rspack_import_2.
|
|
476
|
-
contractMultiplier: zod__rspack_import_2.
|
|
477
|
-
impliedVol: zod__rspack_import_2.
|
|
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.
|
|
256
|
-
query: zod__rspack_import_2.
|
|
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.
|
|
268
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
280
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
292
|
-
symbol: zod__rspack_import_2.
|
|
293
|
-
metric: zod__rspack_import_2.
|
|
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.
|
|
306
|
-
symbol: zod__rspack_import_2.
|
|
307
|
-
limit: zod__rspack_import_2.
|
|
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.
|
|
322
|
-
symbol: zod__rspack_import_2.
|
|
323
|
-
from: zod__rspack_import_2.
|
|
324
|
-
to: zod__rspack_import_2.
|
|
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.
|
|
345
|
-
category: zod__rspack_import_2.
|
|
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.
|
|
357
|
-
symbol: zod__rspack_import_2.
|
|
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.
|
|
369
|
-
symbol: zod__rspack_import_2.
|
|
370
|
-
resolution: zod__rspack_import_2.
|
|
371
|
-
from: zod__rspack_import_2.
|
|
372
|
-
to: zod__rspack_import_2.
|
|
373
|
-
lookbackDays: zod__rspack_import_2.
|
|
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.
|
|
400
|
-
symbol: zod__rspack_import_2.
|
|
401
|
-
resolution: zod__rspack_import_2.
|
|
402
|
-
from: zod__rspack_import_2.
|
|
403
|
-
to: zod__rspack_import_2.
|
|
404
|
-
lookbackDays: zod__rspack_import_2.
|
|
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.
|
|
450
|
-
symbol: zod__rspack_import_2.
|
|
451
|
-
date: zod__rspack_import_2.
|
|
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.
|
|
466
|
-
underlyingPrice: zod__rspack_import_2.
|
|
467
|
-
daysToExpiry: zod__rspack_import_2.
|
|
468
|
-
riskFreeRate: zod__rspack_import_2.
|
|
469
|
-
dividendYield: zod__rspack_import_2.
|
|
470
|
-
legs: zod__rspack_import_2.
|
|
471
|
-
type: zod__rspack_import_2
|
|
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
|
|
475
|
+
side: zod__rspack_import_2["enum"]([
|
|
476
476
|
"buy",
|
|
477
477
|
"sell"
|
|
478
478
|
]),
|
|
479
|
-
strike: zod__rspack_import_2.
|
|
480
|
-
premium: zod__rspack_import_2.
|
|
481
|
-
qty: zod__rspack_import_2.
|
|
482
|
-
contractMultiplier: zod__rspack_import_2.
|
|
483
|
-
impliedVol: zod__rspack_import_2.
|
|
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)=>{
|
package/dist/types/mcp.cjs
CHANGED
|
@@ -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.
|
|
35
|
-
name: external_zod_namespaceObject.
|
|
36
|
-
transport: external_zod_namespaceObject.
|
|
37
|
-
command: external_zod_namespaceObject.
|
|
38
|
-
args: external_zod_namespaceObject.
|
|
39
|
-
env: external_zod_namespaceObject.
|
|
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.
|
|
42
|
-
name: external_zod_namespaceObject.
|
|
43
|
-
transport: external_zod_namespaceObject.
|
|
44
|
-
url: external_zod_namespaceObject.
|
|
45
|
-
headers: external_zod_namespaceObject.
|
|
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.
|
|
47
|
+
const MCPServerConfigSchema = external_zod_namespaceObject.union([
|
|
48
48
|
MCPStdioConfigSchema,
|
|
49
49
|
MCPSSEConfigSchema
|
|
50
50
|
]);
|
|
51
|
-
const MCPServersConfigSchema = external_zod_namespaceObject.
|
|
52
|
-
servers: external_zod_namespaceObject.
|
|
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.
|
|
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
|
};
|
package/dist/types/mcp.d.ts
CHANGED
package/dist/types/mcp.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const MCPStdioConfigSchema =
|
|
3
|
-
name:
|
|
4
|
-
transport:
|
|
5
|
-
command:
|
|
6
|
-
args:
|
|
7
|
-
env:
|
|
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 =
|
|
10
|
-
name:
|
|
11
|
-
transport:
|
|
12
|
-
url:
|
|
13
|
-
headers:
|
|
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 =
|
|
15
|
+
const MCPServerConfigSchema = union([
|
|
16
16
|
MCPStdioConfigSchema,
|
|
17
17
|
MCPSSEConfigSchema
|
|
18
18
|
]);
|
|
19
|
-
const MCPServersConfigSchema =
|
|
20
|
-
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
|
|
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
|
};
|