matex-cli 1.2.82 → 1.2.87

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 (166) hide show
  1. package/dist/index.js +561 -288
  2. package/package.json +13 -6
  3. package/.agents/skills/mcp-server-dev/SKILL.md +0 -60
  4. package/.agents/skills/mcp-server-dev/examples/basic-ts-server/package.json +0 -20
  5. package/.agents/skills/mcp-server-dev/examples/basic-ts-server/src/index.ts +0 -66
  6. package/.agents/skills/mcp-server-dev/resources/best_practices.md +0 -20
  7. package/.agents/skills/pptx-presentation-builder/SKILL.md +0 -338
  8. package/.agents/workflows/deploy.md +0 -27
  9. package/dist/api/client.d.ts +0 -40
  10. package/dist/api/client.d.ts.map +0 -1
  11. package/dist/api/client.js +0 -173
  12. package/dist/api/client.js.map +0 -1
  13. package/dist/commands/ask.d.ts +0 -3
  14. package/dist/commands/ask.d.ts.map +0 -1
  15. package/dist/commands/ask.js +0 -63
  16. package/dist/commands/ask.js.map +0 -1
  17. package/dist/commands/augov.d.ts +0 -3
  18. package/dist/commands/augov.d.ts.map +0 -1
  19. package/dist/commands/augov.js +0 -273
  20. package/dist/commands/augov.js.map +0 -1
  21. package/dist/commands/bro.d.ts +0 -4
  22. package/dist/commands/bro.d.ts.map +0 -1
  23. package/dist/commands/bro.js +0 -304
  24. package/dist/commands/bro.js.map +0 -1
  25. package/dist/commands/chaos.d.ts +0 -3
  26. package/dist/commands/chaos.d.ts.map +0 -1
  27. package/dist/commands/chaos.js +0 -63
  28. package/dist/commands/chaos.js.map +0 -1
  29. package/dist/commands/chat.d.ts +0 -3
  30. package/dist/commands/chat.d.ts.map +0 -1
  31. package/dist/commands/chat.js +0 -59
  32. package/dist/commands/chat.js.map +0 -1
  33. package/dist/commands/code.d.ts +0 -3
  34. package/dist/commands/code.d.ts.map +0 -1
  35. package/dist/commands/code.js +0 -94
  36. package/dist/commands/code.js.map +0 -1
  37. package/dist/commands/config.d.ts +0 -3
  38. package/dist/commands/config.d.ts.map +0 -1
  39. package/dist/commands/config.js +0 -74
  40. package/dist/commands/config.js.map +0 -1
  41. package/dist/commands/dev.d.ts +0 -3
  42. package/dist/commands/dev.d.ts.map +0 -1
  43. package/dist/commands/dev.js +0 -66
  44. package/dist/commands/dev.js.map +0 -1
  45. package/dist/commands/help.d.ts +0 -3
  46. package/dist/commands/help.d.ts.map +0 -1
  47. package/dist/commands/help.js +0 -50
  48. package/dist/commands/help.js.map +0 -1
  49. package/dist/commands/login.d.ts +0 -3
  50. package/dist/commands/login.d.ts.map +0 -1
  51. package/dist/commands/login.js +0 -47
  52. package/dist/commands/login.js.map +0 -1
  53. package/dist/commands/models.d.ts +0 -3
  54. package/dist/commands/models.d.ts.map +0 -1
  55. package/dist/commands/models.js +0 -77
  56. package/dist/commands/models.js.map +0 -1
  57. package/dist/commands/student.d.ts +0 -3
  58. package/dist/commands/student.d.ts.map +0 -1
  59. package/dist/commands/student.js +0 -28
  60. package/dist/commands/student.js.map +0 -1
  61. package/dist/commands/study.d.ts +0 -3
  62. package/dist/commands/study.d.ts.map +0 -1
  63. package/dist/commands/study.js +0 -72
  64. package/dist/commands/study.js.map +0 -1
  65. package/dist/index.d.ts +0 -3
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js.map +0 -1
  68. package/dist/prompts/banter-augov.d.ts +0 -2
  69. package/dist/prompts/banter-augov.d.ts.map +0 -1
  70. package/dist/prompts/banter-augov.js +0 -21
  71. package/dist/prompts/banter-augov.js.map +0 -1
  72. package/dist/prompts/banter.d.ts +0 -6
  73. package/dist/prompts/banter.d.ts.map +0 -1
  74. package/dist/prompts/banter.js +0 -101
  75. package/dist/prompts/banter.js.map +0 -1
  76. package/dist/prompts/chaos-prompts.d.ts +0 -3
  77. package/dist/prompts/chaos-prompts.d.ts.map +0 -1
  78. package/dist/prompts/chaos-prompts.js +0 -52
  79. package/dist/prompts/chaos-prompts.js.map +0 -1
  80. package/dist/prompts/system-prompts.d.ts +0 -4
  81. package/dist/prompts/system-prompts.d.ts.map +0 -1
  82. package/dist/prompts/system-prompts.js +0 -148
  83. package/dist/prompts/system-prompts.js.map +0 -1
  84. package/dist/session/agent-session.d.ts +0 -41
  85. package/dist/session/agent-session.d.ts.map +0 -1
  86. package/dist/session/agent-session.js +0 -421
  87. package/dist/session/agent-session.js.map +0 -1
  88. package/dist/utils/agent-orchestrator.d.ts +0 -44
  89. package/dist/utils/agent-orchestrator.d.ts.map +0 -1
  90. package/dist/utils/agent-orchestrator.js +0 -244
  91. package/dist/utils/agent-orchestrator.js.map +0 -1
  92. package/dist/utils/augov-logger.d.ts +0 -11
  93. package/dist/utils/augov-logger.d.ts.map +0 -1
  94. package/dist/utils/augov-logger.js +0 -35
  95. package/dist/utils/augov-logger.js.map +0 -1
  96. package/dist/utils/augov-scrubber.d.ts +0 -23
  97. package/dist/utils/augov-scrubber.d.ts.map +0 -1
  98. package/dist/utils/augov-scrubber.js +0 -68
  99. package/dist/utils/augov-scrubber.js.map +0 -1
  100. package/dist/utils/command-executor.d.ts +0 -56
  101. package/dist/utils/command-executor.d.ts.map +0 -1
  102. package/dist/utils/command-executor.js +0 -507
  103. package/dist/utils/command-executor.js.map +0 -1
  104. package/dist/utils/config.d.ts +0 -56
  105. package/dist/utils/config.d.ts.map +0 -1
  106. package/dist/utils/config.js +0 -139
  107. package/dist/utils/config.js.map +0 -1
  108. package/dist/utils/mcp-server.d.ts +0 -77
  109. package/dist/utils/mcp-server.d.ts.map +0 -1
  110. package/dist/utils/mcp-server.js +0 -390
  111. package/dist/utils/mcp-server.js.map +0 -1
  112. package/dist/utils/patcher.d.ts +0 -45
  113. package/dist/utils/patcher.d.ts.map +0 -1
  114. package/dist/utils/patcher.js +0 -202
  115. package/dist/utils/patcher.js.map +0 -1
  116. package/dist/utils/repo-mapper.d.ts +0 -32
  117. package/dist/utils/repo-mapper.d.ts.map +0 -1
  118. package/dist/utils/repo-mapper.js +0 -214
  119. package/dist/utils/repo-mapper.js.map +0 -1
  120. package/dist/utils/spinner.d.ts +0 -15
  121. package/dist/utils/spinner.d.ts.map +0 -1
  122. package/dist/utils/spinner.js +0 -67
  123. package/dist/utils/spinner.js.map +0 -1
  124. package/dist/utils/tui.d.ts +0 -134
  125. package/dist/utils/tui.d.ts.map +0 -1
  126. package/dist/utils/tui.js +0 -702
  127. package/dist/utils/tui.js.map +0 -1
  128. package/fix-npm-permissions.sh +0 -23
  129. package/publish-local.sh +0 -16
  130. package/skills-lock.json +0 -10
  131. package/src/api/client.ts +0 -197
  132. package/src/commands/ask.ts +0 -62
  133. package/src/commands/augov.ts +0 -301
  134. package/src/commands/bro.ts +0 -336
  135. package/src/commands/chaos.ts +0 -67
  136. package/src/commands/chat.ts +0 -61
  137. package/src/commands/code.ts +0 -99
  138. package/src/commands/config.ts +0 -78
  139. package/src/commands/dev.ts +0 -68
  140. package/src/commands/help.ts +0 -67
  141. package/src/commands/login.ts +0 -47
  142. package/src/commands/models.ts +0 -81
  143. package/src/commands/student.ts +0 -23
  144. package/src/commands/study.ts +0 -75
  145. package/src/index.ts +0 -284
  146. package/src/prompts/banter-augov.ts +0 -17
  147. package/src/prompts/banter.ts +0 -101
  148. package/src/prompts/chaos-prompts.ts +0 -48
  149. package/src/prompts/system-prompts.ts +0 -145
  150. package/src/session/agent-session.ts +0 -428
  151. package/src/utils/agent-orchestrator.ts +0 -264
  152. package/src/utils/augov-logger.ts +0 -34
  153. package/src/utils/augov-scrubber.ts +0 -67
  154. package/src/utils/command-executor.ts +0 -529
  155. package/src/utils/config.ts +0 -124
  156. package/src/utils/mcp-server.ts +0 -388
  157. package/src/utils/patcher.ts +0 -229
  158. package/src/utils/repo-mapper.ts +0 -198
  159. package/src/utils/spinner.ts +0 -66
  160. package/src/utils/tui.ts +0 -749
  161. package/test-chaos-container.js +0 -16
  162. package/test-chaos-fix.js +0 -18
  163. package/test-config.ts +0 -2
  164. package/test-ui-output.js +0 -16
  165. package/tsconfig.json +0 -27
  166. package/vertex_ai_agent.py +0 -52
@@ -1,139 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.configManager = exports.ConfigManager = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const os = __importStar(require("os"));
40
- class ConfigManager {
41
- constructor() {
42
- this.configDir = path.join(os.homedir(), '.matex');
43
- this.configPath = path.join(this.configDir, 'config.json');
44
- // Ensure config directory exists
45
- if (!fs.existsSync(this.configDir)) {
46
- fs.mkdirSync(this.configDir, { recursive: true });
47
- }
48
- }
49
- /**
50
- * Load config from file
51
- */
52
- loadConfig() {
53
- if (!fs.existsSync(this.configPath)) {
54
- return {};
55
- }
56
- try {
57
- const data = fs.readFileSync(this.configPath, 'utf-8');
58
- return JSON.parse(data);
59
- }
60
- catch (error) {
61
- return {};
62
- }
63
- }
64
- /**
65
- * Save config to file
66
- */
67
- saveConfig(config) {
68
- fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
69
- }
70
- /**
71
- * Set API key
72
- */
73
- setAPIKey(apiKey) {
74
- const config = this.loadConfig();
75
- config.apiKey = apiKey;
76
- this.saveConfig(config);
77
- }
78
- /**
79
- * Get API key
80
- */
81
- getAPIKey() {
82
- return this.loadConfig().apiKey;
83
- }
84
- /**
85
- * Set default model
86
- */
87
- setDefaultModel(model) {
88
- const config = this.loadConfig();
89
- let normalizedModel = model.toLowerCase().trim().replace(/\s+/g, '');
90
- if (normalizedModel === 'matexfree') {
91
- normalizedModel = 'matex-free';
92
- }
93
- config.defaultModel = normalizedModel;
94
- this.saveConfig(config);
95
- }
96
- /**
97
- * Get default model
98
- */
99
- getDefaultModel() {
100
- return this.loadConfig().defaultModel || 'matexcodex';
101
- }
102
- /**
103
- * Set base URL
104
- */
105
- setBaseURL(url) {
106
- const config = this.loadConfig();
107
- config.baseURL = url;
108
- this.saveConfig(config);
109
- }
110
- /**
111
- * Get base URL
112
- */
113
- getBaseURL() {
114
- return this.loadConfig().baseURL || 'https://matexai-backend-550499663766.us-central1.run.app';
115
- }
116
- /**
117
- * Get all config
118
- */
119
- getAll() {
120
- return this.loadConfig();
121
- }
122
- /**
123
- * Clear all config
124
- */
125
- clear() {
126
- if (fs.existsSync(this.configPath)) {
127
- fs.unlinkSync(this.configPath);
128
- }
129
- }
130
- /**
131
- * Check if API key is set
132
- */
133
- hasAPIKey() {
134
- return !!this.getAPIKey();
135
- }
136
- }
137
- exports.ConfigManager = ConfigManager;
138
- exports.configManager = new ConfigManager();
139
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- /**
2
- * MCP (Model Context Protocol) Server Manager
3
- * =============================================
4
- * Production-level MCP servers that give CLI agents the ability to:
5
- * - Read/write/search files on the local filesystem
6
- * - Execute shell commands
7
- * - Fetch web content (URL context)
8
- * - Search Google (via SearxNG or Brave)
9
- * - Access project context (repo map, git status)
10
- *
11
- * These tools are injected into agent system prompts so the AI
12
- * knows what capabilities it has and can request them.
13
- */
14
- export interface MCPToolDefinition {
15
- name: string;
16
- description: string;
17
- parameters: Record<string, any>;
18
- }
19
- export interface MCPToolResult {
20
- success: boolean;
21
- output?: string;
22
- error?: string;
23
- }
24
- /**
25
- * All available MCP tools for CLI agents
26
- */
27
- export declare const MCP_TOOLS: MCPToolDefinition[];
28
- export declare class MCPServer {
29
- private cwd;
30
- private braveApiKey?;
31
- private searxngUrl?;
32
- constructor(cwd: string, options?: {
33
- braveApiKey?: string;
34
- searxngUrl?: string;
35
- });
36
- /**
37
- * Execute an MCP tool by name
38
- */
39
- execute(toolName: string, args: Record<string, any>): Promise<MCPToolResult>;
40
- /**
41
- * Read a file
42
- */
43
- private readFile;
44
- /**
45
- * Write a file (creates directories if needed)
46
- */
47
- private writeFile;
48
- /**
49
- * List directory contents
50
- */
51
- private listDirectory;
52
- /**
53
- * Search files with grep
54
- */
55
- private searchFiles;
56
- /**
57
- * Run a shell command
58
- */
59
- private runCommand;
60
- /**
61
- * Fetch URL content
62
- */
63
- private fetchUrl;
64
- /**
65
- * Git status
66
- */
67
- private gitStatus;
68
- /**
69
- * Web search via SearxNG or Brave
70
- */
71
- private webSearch;
72
- /**
73
- * Generate the MCP tool capabilities section for system prompts
74
- */
75
- static getToolsPromptSection(): string;
76
- }
77
- //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,iBAAiB,EAiGxC,CAAC;AAMF,qBAAa,SAAS;IAClB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAMhF;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBlF;;OAEG;IACH,OAAO,CAAC,QAAQ;IAoBhB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;YACW,QAAQ;IAoBtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;YACW,SAAS;IAkDvB;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM;CAwBzC"}
@@ -1,390 +0,0 @@
1
- "use strict";
2
- /**
3
- * MCP (Model Context Protocol) Server Manager
4
- * =============================================
5
- * Production-level MCP servers that give CLI agents the ability to:
6
- * - Read/write/search files on the local filesystem
7
- * - Execute shell commands
8
- * - Fetch web content (URL context)
9
- * - Search Google (via SearxNG or Brave)
10
- * - Access project context (repo map, git status)
11
- *
12
- * These tools are injected into agent system prompts so the AI
13
- * knows what capabilities it has and can request them.
14
- */
15
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- var desc = Object.getOwnPropertyDescriptor(m, k);
18
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
- desc = { enumerable: true, get: function() { return m[k]; } };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }) : (function(o, m, k, k2) {
23
- if (k2 === undefined) k2 = k;
24
- o[k2] = m[k];
25
- }));
26
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
- Object.defineProperty(o, "default", { enumerable: true, value: v });
28
- }) : function(o, v) {
29
- o["default"] = v;
30
- });
31
- var __importStar = (this && this.__importStar) || (function () {
32
- var ownKeys = function(o) {
33
- ownKeys = Object.getOwnPropertyNames || function (o) {
34
- var ar = [];
35
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
- return ar;
37
- };
38
- return ownKeys(o);
39
- };
40
- return function (mod) {
41
- if (mod && mod.__esModule) return mod;
42
- var result = {};
43
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
- __setModuleDefault(result, mod);
45
- return result;
46
- };
47
- })();
48
- var __importDefault = (this && this.__importDefault) || function (mod) {
49
- return (mod && mod.__esModule) ? mod : { "default": mod };
50
- };
51
- Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.MCPServer = exports.MCP_TOOLS = void 0;
53
- const fs = __importStar(require("fs"));
54
- const path = __importStar(require("path"));
55
- const child_process_1 = require("child_process");
56
- const https_1 = __importDefault(require("https"));
57
- const http_1 = __importDefault(require("http"));
58
- /**
59
- * All available MCP tools for CLI agents
60
- */
61
- exports.MCP_TOOLS = [
62
- {
63
- name: 'read_file',
64
- description: 'Read the full contents of a file at the given path.',
65
- parameters: {
66
- type: 'object',
67
- properties: {
68
- path: { type: 'string', description: 'Absolute or relative file path' },
69
- start_line: { type: 'number', description: 'Optional start line (1-indexed)' },
70
- end_line: { type: 'number', description: 'Optional end line (1-indexed)' },
71
- },
72
- required: ['path'],
73
- },
74
- },
75
- {
76
- name: 'write_file',
77
- description: 'Create or overwrite a file with the given content.',
78
- parameters: {
79
- type: 'object',
80
- properties: {
81
- path: { type: 'string', description: 'File path to write' },
82
- content: { type: 'string', description: 'File content to write' },
83
- },
84
- required: ['path', 'content'],
85
- },
86
- },
87
- {
88
- name: 'list_directory',
89
- description: 'List files and subdirectories at a given path.',
90
- parameters: {
91
- type: 'object',
92
- properties: {
93
- path: { type: 'string', description: 'Directory path to list' },
94
- recursive: { type: 'boolean', description: 'If true, list recursively (max depth 3)' },
95
- },
96
- required: ['path'],
97
- },
98
- },
99
- {
100
- name: 'search_files',
101
- description: 'Search for a text pattern across files using grep.',
102
- parameters: {
103
- type: 'object',
104
- properties: {
105
- pattern: { type: 'string', description: 'Search pattern (regex supported)' },
106
- path: { type: 'string', description: 'Directory or file to search in' },
107
- include: { type: 'string', description: 'Glob pattern to filter files (e.g., "*.ts")' },
108
- },
109
- required: ['pattern', 'path'],
110
- },
111
- },
112
- {
113
- name: 'run_command',
114
- description: 'Execute a shell command and return its output.',
115
- parameters: {
116
- type: 'object',
117
- properties: {
118
- command: { type: 'string', description: 'Shell command to execute' },
119
- cwd: { type: 'string', description: 'Working directory for the command' },
120
- },
121
- required: ['command'],
122
- },
123
- },
124
- {
125
- name: 'fetch_url',
126
- description: 'Fetch content from a URL and return it as text.',
127
- parameters: {
128
- type: 'object',
129
- properties: {
130
- url: { type: 'string', description: 'URL to fetch' },
131
- },
132
- required: ['url'],
133
- },
134
- },
135
- {
136
- name: 'git_status',
137
- description: 'Get the current git status of the repository.',
138
- parameters: {
139
- type: 'object',
140
- properties: {
141
- path: { type: 'string', description: 'Repository path' },
142
- },
143
- required: ['path'],
144
- },
145
- },
146
- {
147
- name: 'web_search',
148
- description: 'Search the web using SearxNG or Brave Search API.',
149
- parameters: {
150
- type: 'object',
151
- properties: {
152
- query: { type: 'string', description: 'Search query' },
153
- num_results: { type: 'number', description: 'Number of results (default 5)' },
154
- },
155
- required: ['query'],
156
- },
157
- },
158
- ];
159
- // ============================================================
160
- // TOOL EXECUTORS
161
- // ============================================================
162
- class MCPServer {
163
- constructor(cwd, options) {
164
- this.cwd = cwd;
165
- this.braveApiKey = options?.braveApiKey;
166
- this.searxngUrl = options?.searxngUrl;
167
- }
168
- /**
169
- * Execute an MCP tool by name
170
- */
171
- async execute(toolName, args) {
172
- try {
173
- switch (toolName) {
174
- case 'read_file': return this.readFile(args.path, args.start_line, args.end_line);
175
- case 'write_file': return this.writeFile(args.path, args.content);
176
- case 'list_directory': return this.listDirectory(args.path, args.recursive);
177
- case 'search_files': return this.searchFiles(args.pattern, args.path, args.include);
178
- case 'run_command': return this.runCommand(args.command, args.cwd);
179
- case 'fetch_url': return await this.fetchUrl(args.url);
180
- case 'git_status': return this.gitStatus(args.path);
181
- case 'web_search': return await this.webSearch(args.query, args.num_results);
182
- default: return { success: false, error: `Unknown tool: ${toolName}` };
183
- }
184
- }
185
- catch (err) {
186
- return { success: false, error: err.message };
187
- }
188
- }
189
- /**
190
- * Read a file
191
- */
192
- readFile(filePath, startLine, endLine) {
193
- const resolved = path.isAbsolute(filePath) ? filePath : path.resolve(this.cwd, filePath);
194
- if (!fs.existsSync(resolved)) {
195
- return { success: false, error: `File not found: ${resolved}` };
196
- }
197
- const content = fs.readFileSync(resolved, 'utf-8');
198
- if (startLine || endLine) {
199
- const lines = content.split('\n');
200
- const start = Math.max(0, (startLine || 1) - 1);
201
- const end = Math.min(lines.length, endLine || lines.length);
202
- return { success: true, output: lines.slice(start, end).join('\n') };
203
- }
204
- // Cap output at 500 lines
205
- const lines = content.split('\n');
206
- if (lines.length > 500) {
207
- return { success: true, output: lines.slice(0, 500).join('\n') + `\n\n... (${lines.length - 500} more lines truncated)` };
208
- }
209
- return { success: true, output: content };
210
- }
211
- /**
212
- * Write a file (creates directories if needed)
213
- */
214
- writeFile(filePath, content) {
215
- const resolved = path.isAbsolute(filePath) ? filePath : path.resolve(this.cwd, filePath);
216
- const dir = path.dirname(resolved);
217
- if (!fs.existsSync(dir)) {
218
- fs.mkdirSync(dir, { recursive: true });
219
- }
220
- fs.writeFileSync(resolved, content, 'utf-8');
221
- return { success: true, output: `File written: ${resolved}` };
222
- }
223
- /**
224
- * List directory contents
225
- */
226
- listDirectory(dirPath, recursive) {
227
- const resolved = path.isAbsolute(dirPath) ? dirPath : path.resolve(this.cwd, dirPath);
228
- if (!fs.existsSync(resolved)) {
229
- return { success: false, error: `Directory not found: ${resolved}` };
230
- }
231
- try {
232
- const maxDepth = recursive ? 3 : 1;
233
- const result = (0, child_process_1.execSync)(`find "${resolved}" -maxdepth ${maxDepth} -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' | head -200`, { encoding: 'utf-8', timeout: 5000 }).trim();
234
- return { success: true, output: result };
235
- }
236
- catch {
237
- return { success: false, error: `Failed to list directory: ${resolved}` };
238
- }
239
- }
240
- /**
241
- * Search files with grep
242
- */
243
- searchFiles(pattern, searchPath, include) {
244
- const resolved = path.isAbsolute(searchPath) ? searchPath : path.resolve(this.cwd, searchPath);
245
- try {
246
- const includeFlag = include ? `--include='${include}'` : '';
247
- const result = (0, child_process_1.execSync)(`grep -rn ${includeFlag} --color=never "${pattern}" "${resolved}" 2>/dev/null | head -50`, { encoding: 'utf-8', timeout: 10000 }).trim();
248
- return { success: true, output: result || 'No matches found.' };
249
- }
250
- catch {
251
- return { success: true, output: 'No matches found.' };
252
- }
253
- }
254
- /**
255
- * Run a shell command
256
- */
257
- runCommand(command, cwd) {
258
- const workDir = cwd ? (path.isAbsolute(cwd) ? cwd : path.resolve(this.cwd, cwd)) : this.cwd;
259
- try {
260
- const result = (0, child_process_1.execSync)(command, {
261
- encoding: 'utf-8',
262
- cwd: workDir,
263
- timeout: 30000,
264
- env: { ...process.env, FORCE_COLOR: '0' },
265
- }).trim();
266
- return { success: true, output: result || '(No output)' };
267
- }
268
- catch (err) {
269
- return { success: false, error: err.stderr || err.message };
270
- }
271
- }
272
- /**
273
- * Fetch URL content
274
- */
275
- async fetchUrl(url) {
276
- return new Promise((resolve) => {
277
- const client = url.startsWith('https') ? https_1.default : http_1.default;
278
- const req = client.get(url, { timeout: 10000 }, (res) => {
279
- let data = '';
280
- res.on('data', (chunk) => { data += chunk.toString(); });
281
- res.on('end', () => {
282
- // Strip HTML tags for readability, cap at 5000 chars
283
- const text = data.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
284
- resolve({
285
- success: true,
286
- output: text.length > 5000 ? text.substring(0, 5000) + '...' : text,
287
- });
288
- });
289
- });
290
- req.on('error', (err) => resolve({ success: false, error: err.message }));
291
- req.on('timeout', () => { req.destroy(); resolve({ success: false, error: 'Request timed out' }); });
292
- });
293
- }
294
- /**
295
- * Git status
296
- */
297
- gitStatus(repoPath) {
298
- const resolved = path.isAbsolute(repoPath) ? repoPath : path.resolve(this.cwd, repoPath);
299
- try {
300
- const status = (0, child_process_1.execSync)('git status --short', { encoding: 'utf-8', cwd: resolved }).trim();
301
- const branch = (0, child_process_1.execSync)('git branch --show-current', { encoding: 'utf-8', cwd: resolved }).trim();
302
- const lastCommit = (0, child_process_1.execSync)('git log -1 --oneline', { encoding: 'utf-8', cwd: resolved }).trim();
303
- return {
304
- success: true,
305
- output: `Branch: ${branch}\nLast commit: ${lastCommit}\n\nChanged files:\n${status || '(clean)'}`,
306
- };
307
- }
308
- catch (err) {
309
- return { success: false, error: 'Not a git repository or git not available.' };
310
- }
311
- }
312
- /**
313
- * Web search via SearxNG or Brave
314
- */
315
- async webSearch(query, numResults = 5) {
316
- // Try SearxNG first
317
- if (this.searxngUrl) {
318
- try {
319
- const url = `${this.searxngUrl}/search?q=${encodeURIComponent(query)}&format=json&engines=google,bing&results=${numResults}`;
320
- const result = await this.fetchUrl(url);
321
- if (result.success && result.output) {
322
- try {
323
- const data = JSON.parse(result.output);
324
- const results = (data.results || []).slice(0, numResults).map((r, i) => `${i + 1}. ${r.title}\n ${r.url}\n ${(r.content || '').substring(0, 200)}`).join('\n\n');
325
- return { success: true, output: results || 'No results found.' };
326
- }
327
- catch { /* fall through */ }
328
- }
329
- }
330
- catch { /* fall through to Brave */ }
331
- }
332
- // Fallback: Brave Search
333
- if (this.braveApiKey) {
334
- return new Promise((resolve) => {
335
- const url = `https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}&count=${numResults}`;
336
- const req = https_1.default.get(url, {
337
- headers: {
338
- 'Accept': 'application/json',
339
- 'X-Subscription-Token': this.braveApiKey,
340
- },
341
- timeout: 10000,
342
- }, (res) => {
343
- let data = '';
344
- res.on('data', (chunk) => { data += chunk.toString(); });
345
- res.on('end', () => {
346
- try {
347
- const parsed = JSON.parse(data);
348
- const results = (parsed.web?.results || []).slice(0, numResults).map((r, i) => `${i + 1}. ${r.title}\n ${r.url}\n ${(r.description || '').substring(0, 200)}`).join('\n\n');
349
- resolve({ success: true, output: results || 'No results found.' });
350
- }
351
- catch {
352
- resolve({ success: false, error: 'Failed to parse search results.' });
353
- }
354
- });
355
- });
356
- req.on('error', (err) => resolve({ success: false, error: err.message }));
357
- });
358
- }
359
- return { success: false, error: 'No search backend configured. Set BRAVE_SEARCH_API_KEY or SEARXNG_URL.' };
360
- }
361
- /**
362
- * Generate the MCP tool capabilities section for system prompts
363
- */
364
- static getToolsPromptSection() {
365
- return `### 🔌 MCP TOOLS (Model Context Protocol):
366
- You have access to the following production-level tools via MCP. Use them to navigate, read, write, and search:
367
-
368
- | Tool | Description |
369
- |------|-------------|
370
- | \`read_file(path, start_line?, end_line?)\` | Read file contents (supports line ranges) |
371
- | \`write_file(path, content)\` | Create or overwrite a file |
372
- | \`list_directory(path, recursive?)\` | List files and subdirectories |
373
- | \`search_files(pattern, path, include?)\` | Search for text patterns (grep) |
374
- | \`run_command(command, cwd?)\` | Execute a shell command |
375
- | \`fetch_url(url)\` | Fetch web content from a URL |
376
- | \`git_status(path)\` | Get git status, branch, and last commit |
377
- | \`web_search(query, num_results?)\` | Search the web via SearxNG/Brave |
378
-
379
- **HOW TO USE:** When you need to use a tool, output it as a shell command:
380
- - To read: \`head -50 path/to/file\` or \`cat path/to/file\`
381
- - To search: \`grep -rn "pattern" path/\`
382
- - To list: \`ls -la path/\` or \`find path/ -maxdepth 2\`
383
- - To execute: wrap in \`\`\`bash code blocks
384
- - To fetch URL: \`curl -s "url" | head -100\`
385
-
386
- These tools allow you to **navigate any file/directory** on the system using your own brain to decide where to go.`;
387
- }
388
- }
389
- exports.MCPServer = MCPServer;
390
- //# sourceMappingURL=mcp-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/utils/mcp-server.ts"],"names":[],"mappings":"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"}