@nils.del/supergrok 1.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 (59) hide show
  1. package/.env +45 -0
  2. package/.grok/settings.json +13 -0
  3. package/dist/agent/index.d.ts +35 -0
  4. package/dist/agent/index.d.ts.map +1 -0
  5. package/dist/agent/index.js +244 -0
  6. package/dist/agent/index.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +242 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/mcp/client.d.ts +33 -0
  12. package/dist/mcp/client.d.ts.map +1 -0
  13. package/dist/mcp/client.js +134 -0
  14. package/dist/mcp/client.js.map +1 -0
  15. package/dist/mcp/config.d.ts +15 -0
  16. package/dist/mcp/config.d.ts.map +1 -0
  17. package/dist/mcp/config.js +123 -0
  18. package/dist/mcp/config.js.map +1 -0
  19. package/dist/mcp/transports.d.ts +24 -0
  20. package/dist/mcp/transports.d.ts.map +1 -0
  21. package/dist/mcp/transports.js +91 -0
  22. package/dist/mcp/transports.js.map +1 -0
  23. package/dist/tools/bash.d.ts +28 -0
  24. package/dist/tools/bash.d.ts.map +1 -0
  25. package/dist/tools/bash.js +70 -0
  26. package/dist/tools/bash.js.map +1 -0
  27. package/dist/tools/index.d.ts +77 -0
  28. package/dist/tools/index.d.ts.map +1 -0
  29. package/dist/tools/index.js +80 -0
  30. package/dist/tools/index.js.map +1 -0
  31. package/dist/tools/text-editor.d.ts +69 -0
  32. package/dist/tools/text-editor.d.ts.map +1 -0
  33. package/dist/tools/text-editor.js +178 -0
  34. package/dist/tools/text-editor.js.map +1 -0
  35. package/dist/tools/types.d.ts +14 -0
  36. package/dist/tools/types.d.ts.map +1 -0
  37. package/dist/tools/types.js +2 -0
  38. package/dist/tools/types.js.map +1 -0
  39. package/dist/ui/readline-ui.d.ts +32 -0
  40. package/dist/ui/readline-ui.d.ts.map +1 -0
  41. package/dist/ui/readline-ui.js +256 -0
  42. package/dist/ui/readline-ui.js.map +1 -0
  43. package/dist/utils/settings.d.ts +20 -0
  44. package/dist/utils/settings.d.ts.map +1 -0
  45. package/dist/utils/settings.js +101 -0
  46. package/dist/utils/settings.js.map +1 -0
  47. package/package.json +51 -0
  48. package/src/agent/index.ts +302 -0
  49. package/src/index.ts +275 -0
  50. package/src/mcp/client.ts +178 -0
  51. package/src/mcp/config.ts +149 -0
  52. package/src/mcp/transports.ts +142 -0
  53. package/src/tools/bash.ts +84 -0
  54. package/src/tools/index.ts +91 -0
  55. package/src/tools/text-editor.ts +222 -0
  56. package/src/tools/types.ts +14 -0
  57. package/src/ui/readline-ui.ts +294 -0
  58. package/src/utils/settings.ts +129 -0
  59. package/tsconfig.json +20 -0
@@ -0,0 +1,134 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { EventEmitter } from "events";
3
+ import { createTransport } from "./transports.js";
4
+ export class MCPManager extends EventEmitter {
5
+ clients = new Map();
6
+ transports = new Map();
7
+ tools = new Map();
8
+ initPromise = null;
9
+ async addServer(config) {
10
+ try {
11
+ let transportConfig = config.transport;
12
+ if (!transportConfig && config.command) {
13
+ transportConfig = {
14
+ type: 'stdio',
15
+ command: config.command,
16
+ args: config.args,
17
+ env: config.env
18
+ };
19
+ }
20
+ if (!transportConfig) {
21
+ throw new Error('Transport configuration is required');
22
+ }
23
+ const transport = createTransport(transportConfig);
24
+ this.transports.set(config.name, transport);
25
+ const client = new Client({
26
+ name: "grok-cli-fixed",
27
+ version: "1.0.0"
28
+ });
29
+ this.clients.set(config.name, client);
30
+ const sdkTransport = await transport.connect();
31
+ await client.connect(sdkTransport);
32
+ const toolsResult = await client.listTools();
33
+ for (const tool of toolsResult.tools) {
34
+ const mcpTool = {
35
+ name: `mcp__${config.name}__${tool.name}`,
36
+ description: tool.description || `Tool from ${config.name} server`,
37
+ inputSchema: tool.inputSchema,
38
+ serverName: config.name
39
+ };
40
+ this.tools.set(mcpTool.name, mcpTool);
41
+ }
42
+ this.emit('serverAdded', config.name, toolsResult.tools.length);
43
+ }
44
+ catch (error) {
45
+ this.emit('serverError', config.name, error);
46
+ throw error;
47
+ }
48
+ }
49
+ async removeServer(serverName) {
50
+ for (const [toolName, tool] of this.tools.entries()) {
51
+ if (tool.serverName === serverName) {
52
+ this.tools.delete(toolName);
53
+ }
54
+ }
55
+ const client = this.clients.get(serverName);
56
+ if (client) {
57
+ await client.close();
58
+ this.clients.delete(serverName);
59
+ }
60
+ const transport = this.transports.get(serverName);
61
+ if (transport) {
62
+ await transport.disconnect();
63
+ this.transports.delete(serverName);
64
+ }
65
+ this.emit('serverRemoved', serverName);
66
+ }
67
+ async callTool(toolName, arguments_) {
68
+ const tool = this.tools.get(toolName);
69
+ if (!tool) {
70
+ throw new Error(`Tool ${toolName} not found`);
71
+ }
72
+ const client = this.clients.get(tool.serverName);
73
+ if (!client) {
74
+ throw new Error(`Server ${tool.serverName} not connected`);
75
+ }
76
+ const originalToolName = toolName.replace(`mcp__${tool.serverName}__`, '');
77
+ const result = await client.callTool({
78
+ name: originalToolName,
79
+ arguments: arguments_
80
+ });
81
+ // Ensure result has proper content structure
82
+ return {
83
+ content: result.content || [],
84
+ isError: result.isError,
85
+ _meta: result._meta
86
+ };
87
+ }
88
+ getTools() {
89
+ return Array.from(this.tools.values());
90
+ }
91
+ getServers() {
92
+ return Array.from(this.clients.keys());
93
+ }
94
+ async shutdown() {
95
+ const serverNames = Array.from(this.clients.keys());
96
+ await Promise.all(serverNames.map(name => this.removeServer(name)));
97
+ }
98
+ getTransportType(serverName) {
99
+ const transport = this.transports.get(serverName);
100
+ return transport?.getType();
101
+ }
102
+ async ensureServersInitialized() {
103
+ if (this.initPromise) {
104
+ return this.initPromise;
105
+ }
106
+ if (this.clients.size > 0) {
107
+ return;
108
+ }
109
+ this.initPromise = this.initializeServers();
110
+ return this.initPromise;
111
+ }
112
+ async initializeServers() {
113
+ const { loadMCPConfig } = await import('./config.js');
114
+ const config = loadMCPConfig();
115
+ const initPromises = config.servers.map(async (serverConfig) => {
116
+ try {
117
+ await this.addServer(serverConfig);
118
+ }
119
+ catch (error) {
120
+ // Silently fail for individual servers
121
+ }
122
+ });
123
+ await Promise.all(initPromises);
124
+ }
125
+ }
126
+ // Singleton instance
127
+ let mcpManager = null;
128
+ export function getMCPManager() {
129
+ if (!mcpManager) {
130
+ mcpManager = new MCPManager();
131
+ }
132
+ return mcpManager;
133
+ }
134
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { TransportConfig } from './transports.js';
2
+ export interface MCPServerConfig {
3
+ name: string;
4
+ transport: TransportConfig;
5
+ command?: string;
6
+ args?: string[];
7
+ env?: Record<string, string>;
8
+ }
9
+ export interface MCPConfig {
10
+ servers: MCPServerConfig[];
11
+ }
12
+ export declare function loadMCPConfig(): MCPConfig;
13
+ export declare function saveMCPServerConfig(serverConfig: MCPServerConfig): void;
14
+ export declare function removeMCPServerConfig(serverName: string): boolean;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAUD,wBAAgB,aAAa,IAAI,SAAS,CA6DzC;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI,CAsCvE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAoBjE"}
@@ -0,0 +1,123 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ function getProjectSettingsPath() {
5
+ return path.join(process.cwd(), '.grok', 'settings.json');
6
+ }
7
+ function getUserSettingsPath() {
8
+ return path.join(os.homedir(), '.grok', 'user-settings.json');
9
+ }
10
+ export function loadMCPConfig() {
11
+ const config = { servers: [] };
12
+ // Try loading project-level settings first
13
+ const projectSettingsPath = getProjectSettingsPath();
14
+ if (fs.existsSync(projectSettingsPath)) {
15
+ try {
16
+ const projectSettings = JSON.parse(fs.readFileSync(projectSettingsPath, 'utf-8'));
17
+ if (projectSettings.mcpServers) {
18
+ for (const [name, serverConfig] of Object.entries(projectSettings.mcpServers)) {
19
+ const server = serverConfig;
20
+ config.servers.push({
21
+ name,
22
+ transport: server.transport || {
23
+ type: 'stdio',
24
+ command: server.command,
25
+ args: server.args,
26
+ env: server.env
27
+ },
28
+ command: server.command,
29
+ args: server.args,
30
+ env: server.env
31
+ });
32
+ }
33
+ }
34
+ }
35
+ catch (error) {
36
+ console.warn('Failed to parse project MCP settings:', error);
37
+ }
38
+ }
39
+ // Also check user-level settings for global MCP servers
40
+ const userSettingsPath = getUserSettingsPath();
41
+ if (fs.existsSync(userSettingsPath)) {
42
+ try {
43
+ const userSettings = JSON.parse(fs.readFileSync(userSettingsPath, 'utf-8'));
44
+ if (userSettings.mcpServers) {
45
+ for (const [name, serverConfig] of Object.entries(userSettings.mcpServers)) {
46
+ // Don't duplicate if already defined in project settings
47
+ if (!config.servers.find(s => s.name === name)) {
48
+ const server = serverConfig;
49
+ config.servers.push({
50
+ name,
51
+ transport: server.transport || {
52
+ type: 'stdio',
53
+ command: server.command,
54
+ args: server.args,
55
+ env: server.env
56
+ },
57
+ command: server.command,
58
+ args: server.args,
59
+ env: server.env
60
+ });
61
+ }
62
+ }
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.warn('Failed to parse user MCP settings:', error);
67
+ }
68
+ }
69
+ return config;
70
+ }
71
+ export function saveMCPServerConfig(serverConfig) {
72
+ const settingsPath = getProjectSettingsPath();
73
+ const settingsDir = path.dirname(settingsPath);
74
+ if (!fs.existsSync(settingsDir)) {
75
+ fs.mkdirSync(settingsDir, { recursive: true });
76
+ }
77
+ let settings = {};
78
+ if (fs.existsSync(settingsPath)) {
79
+ try {
80
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
81
+ }
82
+ catch (error) {
83
+ // Start fresh if parsing fails
84
+ }
85
+ }
86
+ if (!settings.mcpServers) {
87
+ settings.mcpServers = {};
88
+ }
89
+ // Save the server configuration
90
+ const serverData = {
91
+ name: serverConfig.name,
92
+ transport: serverConfig.transport.type
93
+ };
94
+ if (serverConfig.transport.type === 'stdio') {
95
+ serverData.command = serverConfig.transport.command;
96
+ serverData.args = serverConfig.transport.args;
97
+ serverData.env = serverConfig.transport.env;
98
+ }
99
+ else if (serverConfig.transport.type === 'http' || serverConfig.transport.type === 'sse') {
100
+ serverData.url = serverConfig.transport.url;
101
+ }
102
+ settings.mcpServers[serverConfig.name] = serverData;
103
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
104
+ }
105
+ export function removeMCPServerConfig(serverName) {
106
+ const settingsPath = getProjectSettingsPath();
107
+ if (!fs.existsSync(settingsPath)) {
108
+ return false;
109
+ }
110
+ try {
111
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
112
+ if (!settings.mcpServers || !settings.mcpServers[serverName]) {
113
+ return false;
114
+ }
115
+ delete settings.mcpServers[serverName];
116
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
117
+ return true;
118
+ }
119
+ catch (error) {
120
+ return false;
121
+ }
122
+ }
123
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAepB,SAAS,sBAAsB;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE1C,2CAA2C;IAC3C,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC;YAClF,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;gBAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9E,MAAM,MAAM,GAAG,YAAmB,CAAC;oBACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;wBAClB,IAAI;wBACJ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI;4BAC7B,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,GAAG,EAAE,MAAM,CAAC,GAAG;yBAChB;wBACD,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3E,yDAAyD;oBACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBAC/C,MAAM,MAAM,GAAG,YAAmB,CAAC;wBACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;4BAClB,IAAI;4BACJ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI;gCAC7B,IAAI,EAAE,OAAO;gCACb,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,GAAG,EAAE,MAAM,CAAC,GAAG;6BAChB;4BACD,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,GAAG,EAAE,MAAM,CAAC,GAAG;yBAChB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAA6B;IAC/D,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,QAAQ,GAAQ,EAAE,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAQ;QACtB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI;KACvC,CAAC;IAEF,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5C,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC;QACpD,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QAC9C,UAAU,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9C,CAAC;SAAM,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3F,UAAU,CAAC,GAAG,GAAI,YAAY,CAAC,SAAiB,CAAC,GAAG,CAAC;IACvD,CAAC;IAED,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;IAEpD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
2
+ export type TransportType = 'stdio' | 'http' | 'sse';
3
+ export interface StdioTransportConfig {
4
+ type: 'stdio';
5
+ command: string;
6
+ args?: string[];
7
+ env?: Record<string, string>;
8
+ }
9
+ export interface HttpTransportConfig {
10
+ type: 'http';
11
+ url: string;
12
+ }
13
+ export interface SSETransportConfig {
14
+ type: 'sse';
15
+ url: string;
16
+ }
17
+ export type TransportConfig = StdioTransportConfig | HttpTransportConfig | SSETransportConfig;
18
+ export interface MCPTransport {
19
+ connect(): Promise<Transport>;
20
+ disconnect(): Promise<void>;
21
+ getType(): TransportType;
22
+ }
23
+ export declare function createTransport(config: TransportConfig): MCPTransport;
24
+ //# sourceMappingURL=transports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/mcp/transports.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAE9F,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,aAAa,CAAC;CAC1B;AAoGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAWrE"}
@@ -0,0 +1,91 @@
1
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
2
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
3
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
4
+ class StdioMCPTransport {
5
+ config;
6
+ transport = null;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async connect() {
11
+ const env = {};
12
+ // Copy process.env, filtering out undefined values
13
+ for (const [key, value] of Object.entries(process.env)) {
14
+ if (value !== undefined) {
15
+ env[key] = value;
16
+ }
17
+ }
18
+ // Merge with config env
19
+ if (this.config.env) {
20
+ Object.assign(env, this.config.env);
21
+ }
22
+ this.transport = new StdioClientTransport({
23
+ command: this.config.command,
24
+ args: this.config.args || [],
25
+ env
26
+ });
27
+ return this.transport;
28
+ }
29
+ async disconnect() {
30
+ if (this.transport) {
31
+ await this.transport.close();
32
+ this.transport = null;
33
+ }
34
+ }
35
+ getType() {
36
+ return 'stdio';
37
+ }
38
+ }
39
+ class HttpMCPTransport {
40
+ config;
41
+ transport = null;
42
+ constructor(config) {
43
+ this.config = config;
44
+ }
45
+ async connect() {
46
+ this.transport = new StreamableHTTPClientTransport(new URL(this.config.url));
47
+ return this.transport;
48
+ }
49
+ async disconnect() {
50
+ if (this.transport) {
51
+ await this.transport.close();
52
+ this.transport = null;
53
+ }
54
+ }
55
+ getType() {
56
+ return 'http';
57
+ }
58
+ }
59
+ class SSEMCPTransport {
60
+ config;
61
+ transport = null;
62
+ constructor(config) {
63
+ this.config = config;
64
+ }
65
+ async connect() {
66
+ this.transport = new SSEClientTransport(new URL(this.config.url));
67
+ return this.transport;
68
+ }
69
+ async disconnect() {
70
+ if (this.transport) {
71
+ await this.transport.close();
72
+ this.transport = null;
73
+ }
74
+ }
75
+ getType() {
76
+ return 'sse';
77
+ }
78
+ }
79
+ export function createTransport(config) {
80
+ switch (config.type) {
81
+ case 'stdio':
82
+ return new StdioMCPTransport(config);
83
+ case 'http':
84
+ return new HttpMCPTransport(config);
85
+ case 'sse':
86
+ return new SSEMCPTransport(config);
87
+ default:
88
+ throw new Error(`Unknown transport type: ${config.type}`);
89
+ }
90
+ }
91
+ //# sourceMappingURL=transports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/mcp/transports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { ToolResult } from './types.js';
2
+ export interface BashToolArgs {
3
+ command: string;
4
+ timeout?: number;
5
+ }
6
+ export declare function executeBashCommand(args: BashToolArgs): Promise<ToolResult>;
7
+ export declare const bashToolDefinition: {
8
+ type: "function";
9
+ function: {
10
+ name: string;
11
+ description: string;
12
+ parameters: {
13
+ type: string;
14
+ properties: {
15
+ command: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ timeout: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ };
24
+ required: string[];
25
+ };
26
+ };
27
+ };
28
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDhF;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { spawn } from 'child_process';
2
+ export async function executeBashCommand(args) {
3
+ const { command, timeout = 120000 } = args;
4
+ return new Promise((resolve) => {
5
+ const childProcess = spawn('bash', ['-c', command], {
6
+ cwd: process.cwd(),
7
+ env: process.env,
8
+ stdio: ['pipe', 'pipe', 'pipe']
9
+ });
10
+ let stdout = '';
11
+ let stderr = '';
12
+ const timer = setTimeout(() => {
13
+ childProcess.kill('SIGTERM');
14
+ resolve({
15
+ success: false,
16
+ error: `Command timed out after ${timeout}ms`
17
+ });
18
+ }, timeout);
19
+ childProcess.stdout.on('data', (data) => {
20
+ stdout += data.toString();
21
+ });
22
+ childProcess.stderr.on('data', (data) => {
23
+ stderr += data.toString();
24
+ });
25
+ childProcess.on('close', (code) => {
26
+ clearTimeout(timer);
27
+ if (code === 0) {
28
+ resolve({
29
+ success: true,
30
+ output: stdout.trim() || stderr.trim() || 'Command completed successfully'
31
+ });
32
+ }
33
+ else {
34
+ resolve({
35
+ success: false,
36
+ error: stderr.trim() || stdout.trim() || `Command failed with exit code ${code}`
37
+ });
38
+ }
39
+ });
40
+ childProcess.on('error', (error) => {
41
+ clearTimeout(timer);
42
+ resolve({
43
+ success: false,
44
+ error: `Failed to execute command: ${error.message}`
45
+ });
46
+ });
47
+ });
48
+ }
49
+ export const bashToolDefinition = {
50
+ type: "function",
51
+ function: {
52
+ name: "bash",
53
+ description: "Execute a bash command and return the output. Use this for running shell commands, file operations, git commands, etc.",
54
+ parameters: {
55
+ type: "object",
56
+ properties: {
57
+ command: {
58
+ type: "string",
59
+ description: "The bash command to execute"
60
+ },
61
+ timeout: {
62
+ type: "number",
63
+ description: "Optional timeout in milliseconds (default: 120000)"
64
+ }
65
+ },
66
+ required: ["command"]
67
+ }
68
+ }
69
+ };
70
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAkB;IACzD,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAClD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,CAAC;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,2BAA2B,OAAO,IAAI;aAC9C,CAAC,CAAC;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,gCAAgC;iBAC3E,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC;oBACN,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,iCAAiC,IAAI,EAAE;iBACjF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE;aACrD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,UAAmB;IACzB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,wHAAwH;QACrI,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;CACF,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { ToolResult, ToolCall } from './types.js';
2
+ export { ToolResult, ToolCall };
3
+ export declare function getBuiltInTools(): ({
4
+ type: "function";
5
+ function: {
6
+ name: string;
7
+ description: string;
8
+ parameters: {
9
+ type: string;
10
+ properties: {
11
+ command: {
12
+ type: string;
13
+ description: string;
14
+ };
15
+ timeout: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ };
20
+ required: string[];
21
+ };
22
+ };
23
+ } | {
24
+ type: "function";
25
+ function: {
26
+ name: string;
27
+ description: string;
28
+ parameters: {
29
+ type: string;
30
+ properties: {
31
+ command: {
32
+ type: string;
33
+ enum: string[];
34
+ description: string;
35
+ };
36
+ path: {
37
+ type: string;
38
+ description: string;
39
+ };
40
+ file_text: {
41
+ type: string;
42
+ description: string;
43
+ };
44
+ old_str: {
45
+ type: string;
46
+ description: string;
47
+ };
48
+ new_str: {
49
+ type: string;
50
+ description: string;
51
+ };
52
+ insert_line: {
53
+ type: string;
54
+ description: string;
55
+ };
56
+ view_range: {
57
+ type: string;
58
+ items: {
59
+ type: string;
60
+ };
61
+ description: string;
62
+ };
63
+ };
64
+ required: string[];
65
+ };
66
+ };
67
+ })[];
68
+ export declare function getAllTools(): Promise<{
69
+ type: "function";
70
+ function: {
71
+ name: string;
72
+ description: string;
73
+ parameters: any;
74
+ };
75
+ }[]>;
76
+ export declare function executeToolCall(toolCall: ToolCall): Promise<ToolResult>;
77
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKlD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAEhC,wBAAgB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAE9B;AAED,wBAAsB,WAAW;;;;;;;KAiBhC;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA4D7E"}