@defai.digital/ax-cli 0.0.34

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 (181) hide show
  1. package/.automatosx/agents/aerospace-scientist.yaml +159 -0
  2. package/.automatosx/agents/architecture.yaml +244 -0
  3. package/.automatosx/agents/backend.yaml +172 -0
  4. package/.automatosx/agents/ceo.yaml +105 -0
  5. package/.automatosx/agents/creative-marketer.yaml +173 -0
  6. package/.automatosx/agents/cto.yaml +118 -0
  7. package/.automatosx/agents/data-scientist.yaml +200 -0
  8. package/.automatosx/agents/data.yaml +106 -0
  9. package/.automatosx/agents/design.yaml +115 -0
  10. package/.automatosx/agents/devops.yaml +124 -0
  11. package/.automatosx/agents/frontend.yaml +171 -0
  12. package/.automatosx/agents/fullstack.yaml +172 -0
  13. package/.automatosx/agents/mobile.yaml +185 -0
  14. package/.automatosx/agents/product.yaml +103 -0
  15. package/.automatosx/agents/quality.yaml +93 -0
  16. package/.automatosx/agents/quantum-engineer.yaml +167 -0
  17. package/.automatosx/agents/researcher.yaml +122 -0
  18. package/.automatosx/agents/security.yaml +115 -0
  19. package/.automatosx/agents/standard.yaml +214 -0
  20. package/.automatosx/agents/writer.yaml +122 -0
  21. package/.automatosx/feature-flags.json +13 -0
  22. package/.automatosx/memory/memory.db +0 -0
  23. package/.automatosx/providers/README.md +117 -0
  24. package/.automatosx/providers/grok-zai.yaml.template +61 -0
  25. package/.automatosx/providers/grok.yaml.template +71 -0
  26. package/.automatosx/status/backend-1763517593334-85037.json +9 -0
  27. package/.automatosx/status/quality-1763516867087-82043.json +9 -0
  28. package/.automatosx/status/quality-1763516976722-84817.json +9 -0
  29. package/.automatosx/status/security-1763517871950-87357.json +9 -0
  30. package/.automatosx/teams/business.yaml +56 -0
  31. package/.automatosx/teams/core.yaml +60 -0
  32. package/.automatosx/teams/design.yaml +58 -0
  33. package/.automatosx/teams/engineering.yaml +69 -0
  34. package/.automatosx/teams/research.yaml +56 -0
  35. package/.automatosx/templates/analyst.yaml +60 -0
  36. package/.automatosx/templates/assistant.yaml +48 -0
  37. package/.automatosx/templates/basic-agent.yaml +28 -0
  38. package/.automatosx/templates/code-reviewer.yaml +52 -0
  39. package/.automatosx/templates/debugger.yaml +63 -0
  40. package/.automatosx/templates/designer.yaml +69 -0
  41. package/.automatosx/templates/developer.yaml +60 -0
  42. package/.automatosx/templates/fullstack-developer.yaml +395 -0
  43. package/.automatosx/templates/qa-specialist.yaml +71 -0
  44. package/.claude/mcp/automatosx.json +244 -0
  45. package/.claude/settings.local.json +34 -0
  46. package/.grok/settings.json +37 -0
  47. package/LICENSE +26 -0
  48. package/README.md +518 -0
  49. package/automatosx/PRD/README.md +9 -0
  50. package/automatosx/tmp/README.md +10 -0
  51. package/automatosx.config.json +333 -0
  52. package/dist/agent/grok-agent.d.ts +52 -0
  53. package/dist/agent/grok-agent.js +627 -0
  54. package/dist/agent/grok-agent.js.map +1 -0
  55. package/dist/agent/index.d.ts +14 -0
  56. package/dist/agent/index.js +136 -0
  57. package/dist/agent/index.js.map +1 -0
  58. package/dist/commands/mcp.d.ts +2 -0
  59. package/dist/commands/mcp.js +239 -0
  60. package/dist/commands/mcp.js.map +1 -0
  61. package/dist/grok/client.d.ts +49 -0
  62. package/dist/grok/client.js +80 -0
  63. package/dist/grok/client.js.map +1 -0
  64. package/dist/grok/tools.d.ts +8 -0
  65. package/dist/grok/tools.js +349 -0
  66. package/dist/grok/tools.js.map +1 -0
  67. package/dist/hooks/use-enhanced-input.d.ts +37 -0
  68. package/dist/hooks/use-enhanced-input.js +214 -0
  69. package/dist/hooks/use-enhanced-input.js.map +1 -0
  70. package/dist/hooks/use-input-handler.d.ts +34 -0
  71. package/dist/hooks/use-input-handler.js +608 -0
  72. package/dist/hooks/use-input-handler.js.map +1 -0
  73. package/dist/hooks/use-input-history.d.ts +9 -0
  74. package/dist/hooks/use-input-history.js +69 -0
  75. package/dist/hooks/use-input-history.js.map +1 -0
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.js +339 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/mcp/client.d.ts +31 -0
  80. package/dist/mcp/client.js +152 -0
  81. package/dist/mcp/client.js.map +1 -0
  82. package/dist/mcp/config.d.ts +13 -0
  83. package/dist/mcp/config.js +43 -0
  84. package/dist/mcp/config.js.map +1 -0
  85. package/dist/mcp/transports.d.ts +48 -0
  86. package/dist/mcp/transports.js +217 -0
  87. package/dist/mcp/transports.js.map +1 -0
  88. package/dist/schemas/index.d.ts +102 -0
  89. package/dist/schemas/index.js +105 -0
  90. package/dist/schemas/index.js.map +1 -0
  91. package/dist/tools/bash.d.ts +10 -0
  92. package/dist/tools/bash.js +82 -0
  93. package/dist/tools/bash.js.map +1 -0
  94. package/dist/tools/confirmation-tool.d.ts +16 -0
  95. package/dist/tools/confirmation-tool.js +72 -0
  96. package/dist/tools/confirmation-tool.js.map +1 -0
  97. package/dist/tools/index.d.ts +6 -0
  98. package/dist/tools/index.js +7 -0
  99. package/dist/tools/index.js.map +1 -0
  100. package/dist/tools/morph-editor.d.ts +36 -0
  101. package/dist/tools/morph-editor.js +308 -0
  102. package/dist/tools/morph-editor.js.map +1 -0
  103. package/dist/tools/search.d.ts +68 -0
  104. package/dist/tools/search.js +300 -0
  105. package/dist/tools/search.js.map +1 -0
  106. package/dist/tools/text-editor.d.ts +16 -0
  107. package/dist/tools/text-editor.js +526 -0
  108. package/dist/tools/text-editor.js.map +1 -0
  109. package/dist/tools/todo-tool.d.ts +20 -0
  110. package/dist/tools/todo-tool.js +129 -0
  111. package/dist/tools/todo-tool.js.map +1 -0
  112. package/dist/types/index.d.ts +30 -0
  113. package/dist/types/index.js +2 -0
  114. package/dist/types/index.js.map +1 -0
  115. package/dist/ui/app.d.ts +7 -0
  116. package/dist/ui/app.js +99 -0
  117. package/dist/ui/app.js.map +1 -0
  118. package/dist/ui/components/api-key-input.d.ts +7 -0
  119. package/dist/ui/components/api-key-input.js +80 -0
  120. package/dist/ui/components/api-key-input.js.map +1 -0
  121. package/dist/ui/components/chat-history.d.ts +8 -0
  122. package/dist/ui/components/chat-history.js +157 -0
  123. package/dist/ui/components/chat-history.js.map +1 -0
  124. package/dist/ui/components/chat-input.d.ts +9 -0
  125. package/dist/ui/components/chat-input.js +67 -0
  126. package/dist/ui/components/chat-input.js.map +1 -0
  127. package/dist/ui/components/chat-interface.d.ts +8 -0
  128. package/dist/ui/components/chat-interface.js +272 -0
  129. package/dist/ui/components/chat-interface.js.map +1 -0
  130. package/dist/ui/components/command-suggestions.d.ts +17 -0
  131. package/dist/ui/components/command-suggestions.js +22 -0
  132. package/dist/ui/components/command-suggestions.js.map +1 -0
  133. package/dist/ui/components/confirmation-dialog.d.ts +11 -0
  134. package/dist/ui/components/confirmation-dialog.js +105 -0
  135. package/dist/ui/components/confirmation-dialog.js.map +1 -0
  136. package/dist/ui/components/diff-renderer.d.ts +13 -0
  137. package/dist/ui/components/diff-renderer.js +186 -0
  138. package/dist/ui/components/diff-renderer.js.map +1 -0
  139. package/dist/ui/components/loading-spinner.d.ts +8 -0
  140. package/dist/ui/components/loading-spinner.js +59 -0
  141. package/dist/ui/components/loading-spinner.js.map +1 -0
  142. package/dist/ui/components/mcp-status.d.ts +5 -0
  143. package/dist/ui/components/mcp-status.js +36 -0
  144. package/dist/ui/components/mcp-status.js.map +1 -0
  145. package/dist/ui/components/model-selection.d.ts +12 -0
  146. package/dist/ui/components/model-selection.js +17 -0
  147. package/dist/ui/components/model-selection.js.map +1 -0
  148. package/dist/ui/shared/max-sized-box.d.ts +8 -0
  149. package/dist/ui/shared/max-sized-box.js +6 -0
  150. package/dist/ui/shared/max-sized-box.js.map +1 -0
  151. package/dist/ui/utils/code-colorizer.d.ts +2 -0
  152. package/dist/ui/utils/code-colorizer.js +7 -0
  153. package/dist/ui/utils/code-colorizer.js.map +1 -0
  154. package/dist/ui/utils/colors.d.ts +14 -0
  155. package/dist/ui/utils/colors.js +15 -0
  156. package/dist/ui/utils/colors.js.map +1 -0
  157. package/dist/ui/utils/markdown-renderer.d.ts +4 -0
  158. package/dist/ui/utils/markdown-renderer.js +23 -0
  159. package/dist/ui/utils/markdown-renderer.js.map +1 -0
  160. package/dist/utils/confirmation-service.d.ts +32 -0
  161. package/dist/utils/confirmation-service.js +109 -0
  162. package/dist/utils/confirmation-service.js.map +1 -0
  163. package/dist/utils/custom-instructions.d.ts +1 -0
  164. package/dist/utils/custom-instructions.js +17 -0
  165. package/dist/utils/custom-instructions.js.map +1 -0
  166. package/dist/utils/model-config.d.ts +28 -0
  167. package/dist/utils/model-config.js +42 -0
  168. package/dist/utils/model-config.js.map +1 -0
  169. package/dist/utils/settings-manager.d.ts +94 -0
  170. package/dist/utils/settings-manager.js +240 -0
  171. package/dist/utils/settings-manager.js.map +1 -0
  172. package/dist/utils/settings.d.ts +1 -0
  173. package/dist/utils/settings.js +4 -0
  174. package/dist/utils/settings.js.map +1 -0
  175. package/dist/utils/text-utils.d.ts +80 -0
  176. package/dist/utils/text-utils.js +182 -0
  177. package/dist/utils/text-utils.js.map +1 -0
  178. package/dist/utils/token-counter.d.ts +33 -0
  179. package/dist/utils/token-counter.js +78 -0
  180. package/dist/utils/token-counter.js.map +1 -0
  181. package/package.json +70 -0
@@ -0,0 +1,14 @@
1
+ import { ToolResult, AgentState } from '../types/index.js';
2
+ export declare class Agent {
3
+ private textEditor;
4
+ private bash;
5
+ private state;
6
+ constructor();
7
+ processCommand(input: string): Promise<ToolResult>;
8
+ private parseViewCommand;
9
+ private parseStrReplaceCommand;
10
+ private parseCreateCommand;
11
+ private parseInsertCommand;
12
+ private getHelp;
13
+ getCurrentState(): AgentState;
14
+ }
@@ -0,0 +1,136 @@
1
+ import { TextEditorTool, BashTool } from '../tools/index.js';
2
+ export class Agent {
3
+ textEditor;
4
+ bash;
5
+ state;
6
+ constructor() {
7
+ this.textEditor = new TextEditorTool();
8
+ this.bash = new BashTool();
9
+ this.state = {
10
+ currentDirectory: process.cwd(),
11
+ editHistory: [],
12
+ tools: []
13
+ };
14
+ }
15
+ async processCommand(input) {
16
+ const trimmedInput = input.trim();
17
+ if (trimmedInput.startsWith('view ')) {
18
+ const args = this.parseViewCommand(trimmedInput);
19
+ return this.textEditor.view(args.path, args.range);
20
+ }
21
+ if (trimmedInput.startsWith('str_replace ')) {
22
+ const args = this.parseStrReplaceCommand(trimmedInput);
23
+ if (!args) {
24
+ return { success: false, error: 'Invalid str_replace command format' };
25
+ }
26
+ return this.textEditor.strReplace(args.path, args.oldStr, args.newStr);
27
+ }
28
+ if (trimmedInput.startsWith('create ')) {
29
+ const args = this.parseCreateCommand(trimmedInput);
30
+ if (!args) {
31
+ return { success: false, error: 'Invalid create command format' };
32
+ }
33
+ return this.textEditor.create(args.path, args.content);
34
+ }
35
+ if (trimmedInput.startsWith('insert ')) {
36
+ const args = this.parseInsertCommand(trimmedInput);
37
+ if (!args) {
38
+ return { success: false, error: 'Invalid insert command format' };
39
+ }
40
+ return this.textEditor.insert(args.path, args.line, args.content);
41
+ }
42
+ if (trimmedInput === 'undo_edit') {
43
+ return this.textEditor.undoEdit();
44
+ }
45
+ if (trimmedInput.startsWith('bash ') || trimmedInput.startsWith('$ ')) {
46
+ const command = trimmedInput.startsWith('bash ')
47
+ ? trimmedInput.substring(5)
48
+ : trimmedInput.substring(2);
49
+ return this.bash.execute(command);
50
+ }
51
+ if (trimmedInput === 'pwd') {
52
+ return {
53
+ success: true,
54
+ output: this.bash.getCurrentDirectory()
55
+ };
56
+ }
57
+ if (trimmedInput === 'history') {
58
+ const history = this.textEditor.getEditHistory();
59
+ return {
60
+ success: true,
61
+ output: history.length > 0
62
+ ? JSON.stringify(history, null, 2)
63
+ : 'No edit history'
64
+ };
65
+ }
66
+ if (trimmedInput === 'help') {
67
+ return this.getHelp();
68
+ }
69
+ return this.bash.execute(trimmedInput);
70
+ }
71
+ parseViewCommand(input) {
72
+ const parts = input.split(' ');
73
+ const path = parts[1];
74
+ if (parts.length > 2) {
75
+ const rangePart = parts[2];
76
+ if (rangePart.includes('-')) {
77
+ const [start, end] = rangePart.split('-').map(Number);
78
+ return { path, range: [start, end] };
79
+ }
80
+ }
81
+ return { path };
82
+ }
83
+ parseStrReplaceCommand(input) {
84
+ const match = input.match(/str_replace\s+(\S+)\s+"([^"]+)"\s+"([^"]*)"/);
85
+ if (!match)
86
+ return null;
87
+ return {
88
+ path: match[1],
89
+ oldStr: match[2],
90
+ newStr: match[3]
91
+ };
92
+ }
93
+ parseCreateCommand(input) {
94
+ const match = input.match(/create\s+(\S+)\s+"([^"]*)"/);
95
+ if (!match)
96
+ return null;
97
+ return {
98
+ path: match[1],
99
+ content: match[2]
100
+ };
101
+ }
102
+ parseInsertCommand(input) {
103
+ const match = input.match(/insert\s+(\S+)\s+(\d+)\s+"([^"]*)"/);
104
+ if (!match)
105
+ return null;
106
+ return {
107
+ path: match[1],
108
+ line: parseInt(match[2]),
109
+ content: match[3]
110
+ };
111
+ }
112
+ getHelp() {
113
+ return {
114
+ success: true,
115
+ output: `Available commands:
116
+ view <path> [start-end] - View file contents or directory
117
+ str_replace <path> "old" "new" - Replace text in file
118
+ create <path> "content" - Create new file with content
119
+ insert <path> <line> "text" - Insert text at specific line
120
+ undo_edit - Undo last edit operation
121
+ bash <command> - Execute bash command
122
+ $ <command> - Execute bash command (shorthand)
123
+ pwd - Show current directory
124
+ history - Show edit history
125
+ help - Show this help message`
126
+ };
127
+ }
128
+ getCurrentState() {
129
+ return {
130
+ ...this.state,
131
+ currentDirectory: this.bash.getCurrentDirectory(),
132
+ editHistory: this.textEditor.getEditHistory()
133
+ };
134
+ }
135
+ }
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function createMCPCommand(): Command;
@@ -0,0 +1,239 @@
1
+ import { Command } from 'commander';
2
+ import { addMCPServer, removeMCPServer, loadMCPConfig, PREDEFINED_SERVERS } from '../mcp/config.js';
3
+ import { getMCPManager } from '../grok/tools.js';
4
+ import chalk from 'chalk';
5
+ export function createMCPCommand() {
6
+ const mcpCommand = new Command('mcp');
7
+ mcpCommand.description('Manage MCP (Model Context Protocol) servers');
8
+ // Add server command
9
+ mcpCommand
10
+ .command('add <name>')
11
+ .description('Add an MCP server')
12
+ .option('-t, --transport <type>', 'Transport type (stdio, http, sse, streamable_http)', 'stdio')
13
+ .option('-c, --command <command>', 'Command to run the server (for stdio transport)')
14
+ .option('-a, --args [args...]', 'Arguments for the server command (for stdio transport)', [])
15
+ .option('-u, --url <url>', 'URL for HTTP/SSE transport')
16
+ .option('-h, --headers [headers...]', 'HTTP headers (key=value format)', [])
17
+ .option('-e, --env [env...]', 'Environment variables (key=value format)', [])
18
+ .action(async (name, options) => {
19
+ try {
20
+ // Check if it's a predefined server
21
+ if (PREDEFINED_SERVERS[name]) {
22
+ const config = PREDEFINED_SERVERS[name];
23
+ addMCPServer(config);
24
+ console.log(chalk.green(`✓ Added predefined MCP server: ${name}`));
25
+ // Try to connect immediately
26
+ const manager = getMCPManager();
27
+ await manager.addServer(config);
28
+ console.log(chalk.green(`✓ Connected to MCP server: ${name}`));
29
+ const tools = manager.getTools().filter(t => t.serverName === name);
30
+ console.log(chalk.blue(` Available tools: ${tools.length}`));
31
+ return;
32
+ }
33
+ // Custom server
34
+ const transportType = options.transport.toLowerCase();
35
+ if (transportType === 'stdio') {
36
+ if (!options.command) {
37
+ console.error(chalk.red('Error: --command is required for stdio transport'));
38
+ process.exit(1);
39
+ }
40
+ }
41
+ else if (transportType === 'http' || transportType === 'sse' || transportType === 'streamable_http') {
42
+ if (!options.url) {
43
+ console.error(chalk.red(`Error: --url is required for ${transportType} transport`));
44
+ process.exit(1);
45
+ }
46
+ }
47
+ else {
48
+ console.error(chalk.red('Error: Transport type must be stdio, http, sse, or streamable_http'));
49
+ process.exit(1);
50
+ }
51
+ // Parse environment variables
52
+ const env = {};
53
+ for (const envVar of options.env || []) {
54
+ const [key, value] = envVar.split('=', 2);
55
+ if (key && value) {
56
+ env[key] = value;
57
+ }
58
+ }
59
+ // Parse headers
60
+ const headers = {};
61
+ for (const header of options.headers || []) {
62
+ const [key, value] = header.split('=', 2);
63
+ if (key && value) {
64
+ headers[key] = value;
65
+ }
66
+ }
67
+ const config = {
68
+ name,
69
+ transport: {
70
+ type: transportType,
71
+ command: options.command,
72
+ args: options.args || [],
73
+ url: options.url,
74
+ env,
75
+ headers: Object.keys(headers).length > 0 ? headers : undefined
76
+ }
77
+ };
78
+ addMCPServer(config);
79
+ console.log(chalk.green(`✓ Added MCP server: ${name}`));
80
+ // Try to connect immediately
81
+ const manager = getMCPManager();
82
+ await manager.addServer(config);
83
+ console.log(chalk.green(`✓ Connected to MCP server: ${name}`));
84
+ const tools = manager.getTools().filter(t => t.serverName === name);
85
+ console.log(chalk.blue(` Available tools: ${tools.length}`));
86
+ }
87
+ catch (error) {
88
+ console.error(chalk.red(`Error adding MCP server: ${error.message}`));
89
+ process.exit(1);
90
+ }
91
+ });
92
+ // Add server from JSON command
93
+ mcpCommand
94
+ .command('add-json <name> <json>')
95
+ .description('Add an MCP server from JSON configuration')
96
+ .action(async (name, jsonConfig) => {
97
+ try {
98
+ let config;
99
+ try {
100
+ config = JSON.parse(jsonConfig);
101
+ }
102
+ catch (error) {
103
+ console.error(chalk.red('Error: Invalid JSON configuration'));
104
+ process.exit(1);
105
+ }
106
+ const serverConfig = {
107
+ name,
108
+ transport: {
109
+ type: 'stdio', // default
110
+ command: config.command,
111
+ args: config.args || [],
112
+ env: config.env || {},
113
+ url: config.url,
114
+ headers: config.headers
115
+ }
116
+ };
117
+ // Override transport type if specified
118
+ if (config.transport) {
119
+ if (typeof config.transport === 'string') {
120
+ serverConfig.transport.type = config.transport;
121
+ }
122
+ else if (typeof config.transport === 'object') {
123
+ serverConfig.transport = { ...serverConfig.transport, ...config.transport };
124
+ }
125
+ }
126
+ addMCPServer(serverConfig);
127
+ console.log(chalk.green(`✓ Added MCP server: ${name}`));
128
+ // Try to connect immediately
129
+ const manager = getMCPManager();
130
+ await manager.addServer(serverConfig);
131
+ console.log(chalk.green(`✓ Connected to MCP server: ${name}`));
132
+ const tools = manager.getTools().filter(t => t.serverName === name);
133
+ console.log(chalk.blue(` Available tools: ${tools.length}`));
134
+ }
135
+ catch (error) {
136
+ console.error(chalk.red(`Error adding MCP server: ${error.message}`));
137
+ process.exit(1);
138
+ }
139
+ });
140
+ // Remove server command
141
+ mcpCommand
142
+ .command('remove <name>')
143
+ .description('Remove an MCP server')
144
+ .action(async (name) => {
145
+ try {
146
+ const manager = getMCPManager();
147
+ await manager.removeServer(name);
148
+ removeMCPServer(name);
149
+ console.log(chalk.green(`✓ Removed MCP server: ${name}`));
150
+ }
151
+ catch (error) {
152
+ console.error(chalk.red(`Error removing MCP server: ${error.message}`));
153
+ process.exit(1);
154
+ }
155
+ });
156
+ // List servers command
157
+ mcpCommand
158
+ .command('list')
159
+ .description('List configured MCP servers')
160
+ .action(() => {
161
+ const config = loadMCPConfig();
162
+ const manager = getMCPManager();
163
+ if (config.servers.length === 0) {
164
+ console.log(chalk.yellow('No MCP servers configured'));
165
+ return;
166
+ }
167
+ console.log(chalk.bold('Configured MCP servers:'));
168
+ console.log();
169
+ for (const server of config.servers) {
170
+ const isConnected = manager.getServers().includes(server.name);
171
+ const status = isConnected
172
+ ? chalk.green('✓ Connected')
173
+ : chalk.red('✗ Disconnected');
174
+ console.log(`${chalk.bold(server.name)}: ${status}`);
175
+ // Display transport information
176
+ if (server.transport) {
177
+ console.log(` Transport: ${server.transport.type}`);
178
+ if (server.transport.type === 'stdio') {
179
+ console.log(` Command: ${server.transport.command} ${(server.transport.args || []).join(' ')}`);
180
+ }
181
+ else if (server.transport.type === 'http' || server.transport.type === 'sse') {
182
+ console.log(` URL: ${server.transport.url}`);
183
+ }
184
+ }
185
+ else if (server.command) {
186
+ // Legacy format
187
+ console.log(` Command: ${server.command} ${(server.args || []).join(' ')}`);
188
+ }
189
+ if (isConnected) {
190
+ const transportType = manager.getTransportType(server.name);
191
+ if (transportType) {
192
+ console.log(` Active Transport: ${transportType}`);
193
+ }
194
+ const tools = manager.getTools().filter(t => t.serverName === server.name);
195
+ console.log(` Tools: ${tools.length}`);
196
+ if (tools.length > 0) {
197
+ tools.forEach(tool => {
198
+ const displayName = tool.name.replace(`mcp__${server.name}__`, '');
199
+ console.log(` - ${displayName}: ${tool.description}`);
200
+ });
201
+ }
202
+ }
203
+ console.log();
204
+ }
205
+ });
206
+ // Test server command
207
+ mcpCommand
208
+ .command('test <name>')
209
+ .description('Test connection to an MCP server')
210
+ .action(async (name) => {
211
+ try {
212
+ const config = loadMCPConfig();
213
+ const serverConfig = config.servers.find(s => s.name === name);
214
+ if (!serverConfig) {
215
+ console.error(chalk.red(`Server ${name} not found`));
216
+ process.exit(1);
217
+ }
218
+ console.log(chalk.blue(`Testing connection to ${name}...`));
219
+ const manager = getMCPManager();
220
+ await manager.addServer(serverConfig);
221
+ const tools = manager.getTools().filter(t => t.serverName === name);
222
+ console.log(chalk.green(`✓ Successfully connected to ${name}`));
223
+ console.log(chalk.blue(` Available tools: ${tools.length}`));
224
+ if (tools.length > 0) {
225
+ console.log(' Tools:');
226
+ tools.forEach(tool => {
227
+ const displayName = tool.name.replace(`mcp__${name}__`, '');
228
+ console.log(` - ${displayName}: ${tool.description}`);
229
+ });
230
+ }
231
+ }
232
+ catch (error) {
233
+ console.error(chalk.red(`✗ Failed to connect to ${name}: ${error.message}`));
234
+ process.exit(1);
235
+ }
236
+ });
237
+ return mcpCommand;
238
+ }
239
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { ChatCompletionMessageParam } from "openai/resources/chat";
2
+ export type GrokMessage = ChatCompletionMessageParam;
3
+ export interface GrokTool {
4
+ type: "function";
5
+ function: {
6
+ name: string;
7
+ description: string;
8
+ parameters: {
9
+ type: "object";
10
+ properties: Record<string, any>;
11
+ required: string[];
12
+ };
13
+ };
14
+ }
15
+ export interface GrokToolCall {
16
+ id: string;
17
+ type: "function";
18
+ function: {
19
+ name: string;
20
+ arguments: string;
21
+ };
22
+ }
23
+ export interface SearchParameters {
24
+ mode?: "auto" | "on" | "off";
25
+ }
26
+ export interface SearchOptions {
27
+ search_parameters?: SearchParameters;
28
+ }
29
+ export interface GrokResponse {
30
+ choices: Array<{
31
+ message: {
32
+ role: string;
33
+ content: string | null;
34
+ tool_calls?: GrokToolCall[];
35
+ };
36
+ finish_reason: string;
37
+ }>;
38
+ }
39
+ export declare class GrokClient {
40
+ private client;
41
+ private currentModel;
42
+ private defaultMaxTokens;
43
+ constructor(apiKey: string, model?: string, baseURL?: string);
44
+ setModel(model: string): void;
45
+ getCurrentModel(): string;
46
+ chat(messages: GrokMessage[], tools?: GrokTool[], model?: string, searchOptions?: SearchOptions): Promise<GrokResponse>;
47
+ chatStream(messages: GrokMessage[], tools?: GrokTool[], model?: string, searchOptions?: SearchOptions): AsyncGenerator<any, void, unknown>;
48
+ search(query: string, searchParameters?: SearchParameters): Promise<GrokResponse>;
49
+ }
@@ -0,0 +1,80 @@
1
+ import OpenAI from "openai";
2
+ export class GrokClient {
3
+ client;
4
+ currentModel = "grok-code-fast-1";
5
+ defaultMaxTokens;
6
+ constructor(apiKey, model, baseURL) {
7
+ this.client = new OpenAI({
8
+ apiKey,
9
+ baseURL: baseURL || process.env.GROK_BASE_URL || "https://api.x.ai/v1",
10
+ timeout: 360000,
11
+ });
12
+ const envMax = Number(process.env.GROK_MAX_TOKENS);
13
+ this.defaultMaxTokens = Number.isFinite(envMax) && envMax > 0 ? envMax : 1536;
14
+ if (model) {
15
+ this.currentModel = model;
16
+ }
17
+ }
18
+ setModel(model) {
19
+ this.currentModel = model;
20
+ }
21
+ getCurrentModel() {
22
+ return this.currentModel;
23
+ }
24
+ async chat(messages, tools, model, searchOptions) {
25
+ try {
26
+ const requestPayload = {
27
+ model: model || this.currentModel,
28
+ messages,
29
+ tools: tools || [],
30
+ tool_choice: tools && tools.length > 0 ? "auto" : undefined,
31
+ temperature: 0.7,
32
+ max_tokens: this.defaultMaxTokens,
33
+ };
34
+ // Add search parameters if specified
35
+ if (searchOptions?.search_parameters) {
36
+ requestPayload.search_parameters = searchOptions.search_parameters;
37
+ }
38
+ const response = await this.client.chat.completions.create(requestPayload);
39
+ return response;
40
+ }
41
+ catch (error) {
42
+ throw new Error(`Grok API error: ${error.message}`);
43
+ }
44
+ }
45
+ async *chatStream(messages, tools, model, searchOptions) {
46
+ try {
47
+ const requestPayload = {
48
+ model: model || this.currentModel,
49
+ messages,
50
+ tools: tools || [],
51
+ tool_choice: tools && tools.length > 0 ? "auto" : undefined,
52
+ temperature: 0.7,
53
+ max_tokens: this.defaultMaxTokens,
54
+ stream: true,
55
+ };
56
+ // Add search parameters if specified
57
+ if (searchOptions?.search_parameters) {
58
+ requestPayload.search_parameters = searchOptions.search_parameters;
59
+ }
60
+ const stream = (await this.client.chat.completions.create(requestPayload));
61
+ for await (const chunk of stream) {
62
+ yield chunk;
63
+ }
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Grok API error: ${error.message}`);
67
+ }
68
+ }
69
+ async search(query, searchParameters) {
70
+ const searchMessage = {
71
+ role: "user",
72
+ content: query,
73
+ };
74
+ const searchOptions = {
75
+ search_parameters: searchParameters || { mode: "on" },
76
+ };
77
+ return this.chat([searchMessage], [], undefined, searchOptions);
78
+ }
79
+ }
80
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/grok/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { GrokTool } from "./client.js";
2
+ import { MCPManager, MCPTool } from "../mcp/client.js";
3
+ export declare const GROK_TOOLS: GrokTool[];
4
+ export declare function getMCPManager(): MCPManager;
5
+ export declare function initializeMCPServers(): Promise<void>;
6
+ export declare function convertMCPToolToGrokTool(mcpTool: MCPTool): GrokTool;
7
+ export declare function addMCPToolsToGrokTools(baseTools: GrokTool[]): GrokTool[];
8
+ export declare function getAllGrokTools(): Promise<GrokTool[]>;