oh-my-codex 0.1.1

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 (182) hide show
  1. package/README.md +269 -0
  2. package/bin/omx.js +25 -0
  3. package/dist/agents/definitions.d.ts +22 -0
  4. package/dist/agents/definitions.d.ts.map +1 -0
  5. package/dist/agents/definitions.js +235 -0
  6. package/dist/agents/definitions.js.map +1 -0
  7. package/dist/cli/doctor.d.ts +11 -0
  8. package/dist/cli/doctor.d.ts.map +1 -0
  9. package/dist/cli/doctor.js +157 -0
  10. package/dist/cli/doctor.js.map +1 -0
  11. package/dist/cli/index.d.ts +6 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +266 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/setup.d.ts +12 -0
  16. package/dist/cli/setup.d.ts.map +1 -0
  17. package/dist/cli/setup.js +175 -0
  18. package/dist/cli/setup.js.map +1 -0
  19. package/dist/cli/version.d.ts +2 -0
  20. package/dist/cli/version.d.ts.map +1 -0
  21. package/dist/cli/version.js +17 -0
  22. package/dist/cli/version.js.map +1 -0
  23. package/dist/config/generator.d.ts +14 -0
  24. package/dist/config/generator.d.ts.map +1 -0
  25. package/dist/config/generator.js +106 -0
  26. package/dist/config/generator.js.map +1 -0
  27. package/dist/hooks/__tests__/agents-overlay.test.d.ts +8 -0
  28. package/dist/hooks/__tests__/agents-overlay.test.d.ts.map +1 -0
  29. package/dist/hooks/__tests__/agents-overlay.test.js +148 -0
  30. package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -0
  31. package/dist/hooks/agents-overlay.d.ts +34 -0
  32. package/dist/hooks/agents-overlay.d.ts.map +1 -0
  33. package/dist/hooks/agents-overlay.js +265 -0
  34. package/dist/hooks/agents-overlay.js.map +1 -0
  35. package/dist/hooks/emulator.d.ts +44 -0
  36. package/dist/hooks/emulator.d.ts.map +1 -0
  37. package/dist/hooks/emulator.js +108 -0
  38. package/dist/hooks/emulator.js.map +1 -0
  39. package/dist/hooks/keyword-detector.d.ts +27 -0
  40. package/dist/hooks/keyword-detector.d.ts.map +1 -0
  41. package/dist/hooks/keyword-detector.js +63 -0
  42. package/dist/hooks/keyword-detector.js.map +1 -0
  43. package/dist/hooks/session.d.ts +38 -0
  44. package/dist/hooks/session.d.ts.map +1 -0
  45. package/dist/hooks/session.js +135 -0
  46. package/dist/hooks/session.js.map +1 -0
  47. package/dist/hud/colors.d.ts +26 -0
  48. package/dist/hud/colors.d.ts.map +1 -0
  49. package/dist/hud/colors.js +71 -0
  50. package/dist/hud/colors.js.map +1 -0
  51. package/dist/hud/index.d.ts +12 -0
  52. package/dist/hud/index.d.ts.map +1 -0
  53. package/dist/hud/index.js +107 -0
  54. package/dist/hud/index.js.map +1 -0
  55. package/dist/hud/render.d.ts +9 -0
  56. package/dist/hud/render.d.ts.map +1 -0
  57. package/dist/hud/render.js +192 -0
  58. package/dist/hud/render.js.map +1 -0
  59. package/dist/hud/state.d.ts +21 -0
  60. package/dist/hud/state.d.ts.map +1 -0
  61. package/dist/hud/state.js +101 -0
  62. package/dist/hud/state.js.map +1 -0
  63. package/dist/hud/types.d.ts +87 -0
  64. package/dist/hud/types.d.ts.map +1 -0
  65. package/dist/hud/types.js +8 -0
  66. package/dist/hud/types.js.map +1 -0
  67. package/dist/index.d.ts +18 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +18 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/mcp/code-intel-server.d.ts +7 -0
  72. package/dist/mcp/code-intel-server.d.ts.map +1 -0
  73. package/dist/mcp/code-intel-server.js +567 -0
  74. package/dist/mcp/code-intel-server.js.map +1 -0
  75. package/dist/mcp/memory-server.d.ts +7 -0
  76. package/dist/mcp/memory-server.d.ts.map +1 -0
  77. package/dist/mcp/memory-server.js +359 -0
  78. package/dist/mcp/memory-server.js.map +1 -0
  79. package/dist/mcp/state-server.d.ts +7 -0
  80. package/dist/mcp/state-server.d.ts.map +1 -0
  81. package/dist/mcp/state-server.js +181 -0
  82. package/dist/mcp/state-server.js.map +1 -0
  83. package/dist/mcp/trace-server.d.ts +7 -0
  84. package/dist/mcp/trace-server.d.ts.map +1 -0
  85. package/dist/mcp/trace-server.js +205 -0
  86. package/dist/mcp/trace-server.js.map +1 -0
  87. package/dist/modes/base.d.ts +50 -0
  88. package/dist/modes/base.d.ts.map +1 -0
  89. package/dist/modes/base.js +140 -0
  90. package/dist/modes/base.js.map +1 -0
  91. package/dist/notifications/notifier.d.ts +30 -0
  92. package/dist/notifications/notifier.d.ts.map +1 -0
  93. package/dist/notifications/notifier.js +124 -0
  94. package/dist/notifications/notifier.js.map +1 -0
  95. package/dist/team/orchestrator.d.ts +54 -0
  96. package/dist/team/orchestrator.d.ts.map +1 -0
  97. package/dist/team/orchestrator.js +106 -0
  98. package/dist/team/orchestrator.js.map +1 -0
  99. package/dist/utils/package.d.ts +9 -0
  100. package/dist/utils/package.d.ts.map +1 -0
  101. package/dist/utils/package.js +31 -0
  102. package/dist/utils/package.js.map +1 -0
  103. package/dist/utils/paths.d.ts +27 -0
  104. package/dist/utils/paths.d.ts.map +1 -0
  105. package/dist/utils/paths.js +60 -0
  106. package/dist/utils/paths.js.map +1 -0
  107. package/dist/verification/verifier.d.ts +32 -0
  108. package/dist/verification/verifier.d.ts.map +1 -0
  109. package/dist/verification/verifier.js +81 -0
  110. package/dist/verification/verifier.js.map +1 -0
  111. package/package.json +54 -0
  112. package/prompts/analyst.md +110 -0
  113. package/prompts/api-reviewer.md +98 -0
  114. package/prompts/architect.md +109 -0
  115. package/prompts/build-fixer.md +89 -0
  116. package/prompts/code-reviewer.md +105 -0
  117. package/prompts/critic.md +87 -0
  118. package/prompts/debugger.md +93 -0
  119. package/prompts/deep-executor.md +112 -0
  120. package/prompts/dependency-expert.md +99 -0
  121. package/prompts/designer.md +103 -0
  122. package/prompts/executor.md +99 -0
  123. package/prompts/explore.md +112 -0
  124. package/prompts/git-master.md +92 -0
  125. package/prompts/information-architect.md +267 -0
  126. package/prompts/performance-reviewer.md +94 -0
  127. package/prompts/planner.md +116 -0
  128. package/prompts/product-analyst.md +299 -0
  129. package/prompts/product-manager.md +255 -0
  130. package/prompts/qa-tester.md +98 -0
  131. package/prompts/quality-reviewer.md +105 -0
  132. package/prompts/quality-strategist.md +227 -0
  133. package/prompts/researcher.md +96 -0
  134. package/prompts/scientist.md +92 -0
  135. package/prompts/security-reviewer.md +125 -0
  136. package/prompts/style-reviewer.md +87 -0
  137. package/prompts/test-engineer.md +103 -0
  138. package/prompts/ux-researcher.md +282 -0
  139. package/prompts/verifier.md +95 -0
  140. package/prompts/vision.md +75 -0
  141. package/prompts/writer.md +86 -0
  142. package/scripts/notify-hook.js +237 -0
  143. package/skills/analyze/SKILL.md +93 -0
  144. package/skills/autopilot/SKILL.md +175 -0
  145. package/skills/build-fix/SKILL.md +123 -0
  146. package/skills/cancel/SKILL.md +387 -0
  147. package/skills/code-review/SKILL.md +208 -0
  148. package/skills/configure-discord/SKILL.md +256 -0
  149. package/skills/configure-telegram/SKILL.md +232 -0
  150. package/skills/deepinit/SKILL.md +320 -0
  151. package/skills/deepsearch/SKILL.md +38 -0
  152. package/skills/doctor/SKILL.md +193 -0
  153. package/skills/ecomode/SKILL.md +114 -0
  154. package/skills/frontend-ui-ux/SKILL.md +34 -0
  155. package/skills/git-master/SKILL.md +29 -0
  156. package/skills/help/SKILL.md +192 -0
  157. package/skills/hud/SKILL.md +97 -0
  158. package/skills/learn-about-omx/SKILL.md +37 -0
  159. package/skills/learner/SKILL.md +135 -0
  160. package/skills/note/SKILL.md +62 -0
  161. package/skills/omx-setup/SKILL.md +1147 -0
  162. package/skills/pipeline/SKILL.md +407 -0
  163. package/skills/plan/SKILL.md +223 -0
  164. package/skills/project-session-manager/SKILL.md +560 -0
  165. package/skills/psm/SKILL.md +20 -0
  166. package/skills/ralph/SKILL.md +197 -0
  167. package/skills/ralph-init/SKILL.md +38 -0
  168. package/skills/ralplan/SKILL.md +34 -0
  169. package/skills/release/SKILL.md +83 -0
  170. package/skills/research/SKILL.md +510 -0
  171. package/skills/review/SKILL.md +30 -0
  172. package/skills/security-review/SKILL.md +284 -0
  173. package/skills/skill/SKILL.md +837 -0
  174. package/skills/swarm/SKILL.md +25 -0
  175. package/skills/tdd/SKILL.md +106 -0
  176. package/skills/team/SKILL.md +860 -0
  177. package/skills/trace/SKILL.md +33 -0
  178. package/skills/ultrapilot/SKILL.md +632 -0
  179. package/skills/ultraqa/SKILL.md +130 -0
  180. package/skills/ultrawork/SKILL.md +143 -0
  181. package/skills/writer-memory/SKILL.md +443 -0
  182. package/templates/AGENTS.md +326 -0
@@ -0,0 +1,567 @@
1
+ /**
2
+ * OMX Code Intelligence MCP Server
3
+ * Provides LSP-like diagnostics, symbol search, and AST pattern matching.
4
+ * Uses pragmatic CLI wrappers (tsc, ast-grep/sg) rather than full LSP protocol.
5
+ */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { execFile } from 'child_process';
10
+ import { readFile, readdir } from 'fs/promises';
11
+ import { join, relative, extname, basename } from 'path';
12
+ import { existsSync } from 'fs';
13
+ import { promisify } from 'util';
14
+ const execFileAsync = promisify(execFile);
15
+ // ── Helpers ──────────────────────────────────────────────────────────────────
16
+ function cwd(wd) {
17
+ return wd || process.cwd();
18
+ }
19
+ function text(data) {
20
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
21
+ }
22
+ function errorResult(msg) {
23
+ return { content: [{ type: 'text', text: JSON.stringify({ error: msg }) }], isError: true };
24
+ }
25
+ async function exec(cmd, args, options = {}) {
26
+ try {
27
+ return await execFileAsync(cmd, args, {
28
+ cwd: options.cwd,
29
+ timeout: options.timeout || 30000,
30
+ maxBuffer: 10 * 1024 * 1024,
31
+ });
32
+ }
33
+ catch (err) {
34
+ const e = err;
35
+ // tsc returns exit code 2 for type errors but stdout still has the output
36
+ if (e.stdout !== undefined) {
37
+ return { stdout: e.stdout || '', stderr: e.stderr || '' };
38
+ }
39
+ throw err;
40
+ }
41
+ }
42
+ function parseTscOutput(output, projectDir) {
43
+ const diagnostics = [];
44
+ // tsc format: src/foo.ts(10,5): error TS2304: Cannot find name 'x'.
45
+ const re = /^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm;
46
+ let match;
47
+ while ((match = re.exec(output)) !== null) {
48
+ diagnostics.push({
49
+ file: join(projectDir, match[1]),
50
+ line: parseInt(match[2], 10),
51
+ character: parseInt(match[3], 10),
52
+ severity: match[4],
53
+ code: match[5],
54
+ message: match[6],
55
+ });
56
+ }
57
+ return diagnostics;
58
+ }
59
+ async function findTsconfig(dir) {
60
+ const candidates = ['tsconfig.json', 'tsconfig.build.json'];
61
+ for (const c of candidates) {
62
+ if (existsSync(join(dir, c)))
63
+ return join(dir, c);
64
+ }
65
+ return null;
66
+ }
67
+ async function runTscDiagnostics(target, projectDir, severity) {
68
+ const tsconfig = await findTsconfig(projectDir);
69
+ const args = ['--noEmit', '--pretty', 'false'];
70
+ if (tsconfig) {
71
+ args.push('--project', tsconfig);
72
+ }
73
+ const { stdout, stderr } = await exec('npx', ['tsc', ...args], { cwd: projectDir, timeout: 60000 });
74
+ const output = stdout + '\n' + stderr;
75
+ let diagnostics = parseTscOutput(output, projectDir);
76
+ // Filter to specific file if target is a file (not directory)
77
+ if (target && !target.endsWith('/') && existsSync(target)) {
78
+ diagnostics = diagnostics.filter(d => d.file === target || d.file.endsWith('/' + basename(target)));
79
+ }
80
+ // Filter by severity
81
+ if (severity && severity !== 'error') {
82
+ // tsc only emits errors, so warning/info/hint filters return empty
83
+ }
84
+ return { diagnostics, command: `npx tsc ${args.join(' ')}` };
85
+ }
86
+ const SYMBOL_PATTERNS = [
87
+ // TypeScript/JavaScript
88
+ { kind: 'function', re: /^(?:export\s+)?(?:async\s+)?function\s+(\w+)/m },
89
+ { kind: 'class', re: /^(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/m },
90
+ { kind: 'interface', re: /^(?:export\s+)?interface\s+(\w+)/m },
91
+ { kind: 'type', re: /^(?:export\s+)?type\s+(\w+)\s*=/m },
92
+ { kind: 'enum', re: /^(?:export\s+)?(?:const\s+)?enum\s+(\w+)/m },
93
+ { kind: 'variable', re: /^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*[=:]/m },
94
+ { kind: 'method', re: /^\s+(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+)?\s*\{/m },
95
+ { kind: 'property', re: /^\s+(?:readonly\s+)?(\w+)\s*[?:].*[;,]$/m },
96
+ // Python
97
+ { kind: 'function', re: /^(?:async\s+)?def\s+(\w+)/m },
98
+ { kind: 'class', re: /^class\s+(\w+)/m },
99
+ // Go
100
+ { kind: 'function', re: /^func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/m },
101
+ { kind: 'type', re: /^type\s+(\w+)\s+(?:struct|interface)/m },
102
+ // Rust
103
+ { kind: 'function', re: /^(?:pub\s+)?(?:async\s+)?fn\s+(\w+)/m },
104
+ { kind: 'struct', re: /^(?:pub\s+)?struct\s+(\w+)/m },
105
+ { kind: 'enum', re: /^(?:pub\s+)?enum\s+(\w+)/m },
106
+ { kind: 'trait', re: /^(?:pub\s+)?trait\s+(\w+)/m },
107
+ { kind: 'impl', re: /^impl(?:<[^>]+>)?\s+(\w+)/m },
108
+ ];
109
+ function extractSymbols(content) {
110
+ const symbols = [];
111
+ const lines = content.split('\n');
112
+ const seen = new Set();
113
+ for (let i = 0; i < lines.length; i++) {
114
+ const line = lines[i];
115
+ for (const { kind, re } of SYMBOL_PATTERNS) {
116
+ const match = line.match(re);
117
+ if (match && match[1]) {
118
+ const key = `${kind}:${match[1]}:${i}`;
119
+ if (!seen.has(key)) {
120
+ seen.add(key);
121
+ symbols.push({
122
+ name: match[1],
123
+ kind,
124
+ line: i + 1,
125
+ character: line.indexOf(match[1]),
126
+ });
127
+ }
128
+ }
129
+ }
130
+ }
131
+ return symbols;
132
+ }
133
+ // ── AST-grep wrapper ────────────────────────────────────────────────────────
134
+ async function findSgBinary() {
135
+ for (const bin of ['sg', 'ast-grep']) {
136
+ try {
137
+ await execFileAsync('which', [bin]);
138
+ return bin;
139
+ }
140
+ catch { /* not found */ }
141
+ }
142
+ // Try npx
143
+ try {
144
+ await execFileAsync('npx', ['--yes', '@ast-grep/cli', '--version'], { timeout: 15000 });
145
+ return 'npx-ast-grep';
146
+ }
147
+ catch { /* not available */ }
148
+ return null;
149
+ }
150
+ async function runAstGrep(pattern, language, options) {
151
+ const sg = await findSgBinary();
152
+ if (!sg) {
153
+ return { matches: [], command: 'ast-grep not installed. Install: npm i -g @ast-grep/cli' };
154
+ }
155
+ const args = [];
156
+ const cmd = sg === 'npx-ast-grep' ? 'npx' : sg;
157
+ if (sg === 'npx-ast-grep') {
158
+ args.push('--yes', '@ast-grep/cli');
159
+ }
160
+ if (options.replacement && !options.dryRun) {
161
+ // Rewrite mode
162
+ args.push('run', '--pattern', pattern, '--rewrite', options.replacement, '--lang', language);
163
+ }
164
+ else if (options.replacement && options.dryRun) {
165
+ // Dry run rewrite
166
+ args.push('run', '--pattern', pattern, '--rewrite', options.replacement, '--lang', language);
167
+ }
168
+ else {
169
+ // Search mode
170
+ args.push('run', '--pattern', pattern, '--lang', language, '--json');
171
+ }
172
+ if (options.path) {
173
+ args.push(options.path);
174
+ }
175
+ try {
176
+ const { stdout } = await exec(cmd, args, { timeout: 30000 });
177
+ try {
178
+ const results = JSON.parse(stdout);
179
+ const matches = Array.isArray(results) ? results : [results];
180
+ return {
181
+ matches: options.maxResults ? matches.slice(0, options.maxResults) : matches,
182
+ command: `${cmd} ${args.join(' ')}`,
183
+ };
184
+ }
185
+ catch {
186
+ // Non-JSON output (rewrite mode)
187
+ return { matches: [{ output: stdout }], command: `${cmd} ${args.join(' ')}` };
188
+ }
189
+ }
190
+ catch (err) {
191
+ return { matches: [], command: `${cmd} ${args.join(' ')} (failed: ${err.message})` };
192
+ }
193
+ }
194
+ // ── Workspace symbol search ─────────────────────────────────────────────────
195
+ const CODE_EXTENSIONS = new Set([
196
+ '.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.rs', '.java', '.c', '.cpp', '.h',
197
+ '.cs', '.rb', '.swift', '.kt', '.scala', '.vue', '.svelte',
198
+ ]);
199
+ async function searchWorkspaceSymbols(query, dir, maxResults = 50) {
200
+ const results = [];
201
+ async function walk(d, depth) {
202
+ if (depth > 6 || results.length >= maxResults)
203
+ return;
204
+ const entries = await readdir(d, { withFileTypes: true }).catch(() => []);
205
+ for (const entry of entries) {
206
+ if (results.length >= maxResults)
207
+ break;
208
+ const full = join(d, entry.name);
209
+ if (entry.isDirectory()) {
210
+ if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist' || entry.name === '__pycache__')
211
+ continue;
212
+ await walk(full, depth + 1);
213
+ }
214
+ else if (entry.isFile() && CODE_EXTENSIONS.has(extname(entry.name))) {
215
+ try {
216
+ const content = await readFile(full, 'utf-8');
217
+ const symbols = extractSymbols(content);
218
+ for (const sym of symbols) {
219
+ if (sym.name.toLowerCase().includes(query.toLowerCase())) {
220
+ results.push({ ...sym, file: relative(dir, full) });
221
+ }
222
+ }
223
+ }
224
+ catch { /* skip unreadable */ }
225
+ }
226
+ }
227
+ }
228
+ await walk(dir, 0);
229
+ return results.slice(0, maxResults);
230
+ }
231
+ // ── MCP Server ──────────────────────────────────────────────────────────────
232
+ const server = new Server({ name: 'omx-code-intel', version: '0.1.0' }, { capabilities: { tools: {} } });
233
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
234
+ tools: [
235
+ {
236
+ name: 'lsp_diagnostics',
237
+ description: 'Get diagnostics (errors, warnings) for a file. Uses tsc --noEmit for TypeScript projects.',
238
+ inputSchema: {
239
+ type: 'object',
240
+ properties: {
241
+ file: { type: 'string', description: 'Path to the source file' },
242
+ severity: { type: 'string', enum: ['error', 'warning', 'info', 'hint'] },
243
+ },
244
+ required: ['file'],
245
+ },
246
+ },
247
+ {
248
+ name: 'lsp_diagnostics_directory',
249
+ description: 'Run project-level diagnostics on a directory using tsc --noEmit. Returns all errors across the project.',
250
+ inputSchema: {
251
+ type: 'object',
252
+ properties: {
253
+ directory: { type: 'string', description: 'Project directory to check' },
254
+ strategy: { type: 'string', enum: ['tsc', 'auto'], description: 'Diagnostic strategy (default: auto)' },
255
+ },
256
+ required: ['directory'],
257
+ },
258
+ },
259
+ {
260
+ name: 'lsp_document_symbols',
261
+ description: 'Get a hierarchical outline of all symbols in a file (functions, classes, variables, etc.).',
262
+ inputSchema: {
263
+ type: 'object',
264
+ properties: {
265
+ file: { type: 'string', description: 'Path to the source file' },
266
+ },
267
+ required: ['file'],
268
+ },
269
+ },
270
+ {
271
+ name: 'lsp_workspace_symbols',
272
+ description: 'Search for symbols (functions, classes, etc.) across the workspace by name.',
273
+ inputSchema: {
274
+ type: 'object',
275
+ properties: {
276
+ query: { type: 'string', description: 'Symbol name or pattern to search' },
277
+ file: { type: 'string', description: 'Any file in the workspace (used to determine project root)' },
278
+ },
279
+ required: ['query', 'file'],
280
+ },
281
+ },
282
+ {
283
+ name: 'lsp_hover',
284
+ description: 'Get type information and documentation at a specific position in a file (regex-based approximation).',
285
+ inputSchema: {
286
+ type: 'object',
287
+ properties: {
288
+ file: { type: 'string', description: 'Path to the source file' },
289
+ line: { type: 'integer', description: 'Line number (1-indexed)' },
290
+ character: { type: 'integer', description: 'Character position (0-indexed)' },
291
+ },
292
+ required: ['file', 'line', 'character'],
293
+ },
294
+ },
295
+ {
296
+ name: 'lsp_find_references',
297
+ description: 'Find all references to a symbol across the codebase using grep-based search.',
298
+ inputSchema: {
299
+ type: 'object',
300
+ properties: {
301
+ file: { type: 'string', description: 'Path to the source file' },
302
+ line: { type: 'integer', description: 'Line number (1-indexed)' },
303
+ character: { type: 'integer', description: 'Character position (0-indexed)' },
304
+ includeDeclaration: { type: 'boolean' },
305
+ },
306
+ required: ['file', 'line', 'character'],
307
+ },
308
+ },
309
+ {
310
+ name: 'lsp_servers',
311
+ description: 'List available diagnostic backends and their installation status.',
312
+ inputSchema: {
313
+ type: 'object',
314
+ properties: {},
315
+ },
316
+ },
317
+ {
318
+ name: 'ast_grep_search',
319
+ description: 'Search for code patterns using AST matching. Uses meta-variables: $NAME (single node), $$$ARGS (multiple nodes). Example: "function $NAME($$$ARGS)" finds all function declarations.',
320
+ inputSchema: {
321
+ type: 'object',
322
+ properties: {
323
+ pattern: { type: 'string', description: 'AST pattern with meta-variables ($VAR, $$$VARS)' },
324
+ language: {
325
+ type: 'string',
326
+ enum: ['javascript', 'typescript', 'tsx', 'python', 'ruby', 'go', 'rust', 'java', 'kotlin', 'swift', 'c', 'cpp', 'csharp', 'html', 'css', 'json', 'yaml'],
327
+ },
328
+ path: { type: 'string', description: 'Directory or file to search in' },
329
+ maxResults: { type: 'integer' },
330
+ context: { type: 'integer' },
331
+ },
332
+ required: ['pattern', 'language'],
333
+ },
334
+ },
335
+ {
336
+ name: 'ast_grep_replace',
337
+ description: 'Replace code patterns using AST matching. Use meta-variables in both pattern and replacement. IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to apply.',
338
+ inputSchema: {
339
+ type: 'object',
340
+ properties: {
341
+ pattern: { type: 'string', description: 'Pattern to match' },
342
+ replacement: { type: 'string', description: 'Replacement pattern (use same meta-variables)' },
343
+ language: {
344
+ type: 'string',
345
+ enum: ['javascript', 'typescript', 'tsx', 'python', 'ruby', 'go', 'rust', 'java', 'kotlin', 'swift', 'c', 'cpp', 'csharp', 'html', 'css', 'json', 'yaml'],
346
+ },
347
+ path: { type: 'string' },
348
+ dryRun: { type: 'boolean', description: 'Preview only (default: true)' },
349
+ },
350
+ required: ['pattern', 'replacement', 'language'],
351
+ },
352
+ },
353
+ ],
354
+ }));
355
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
356
+ const { name, arguments: args } = request.params;
357
+ const a = (args || {});
358
+ switch (name) {
359
+ case 'lsp_diagnostics': {
360
+ const file = a.file;
361
+ if (!file)
362
+ return errorResult('file is required');
363
+ const dir = join(file, '..');
364
+ // Walk up to find project root (where tsconfig.json is)
365
+ let projectDir = dir;
366
+ for (let i = 0; i < 10; i++) {
367
+ if (existsSync(join(projectDir, 'tsconfig.json')) || existsSync(join(projectDir, 'package.json')))
368
+ break;
369
+ const parent = join(projectDir, '..');
370
+ if (parent === projectDir)
371
+ break;
372
+ projectDir = parent;
373
+ }
374
+ const result = await runTscDiagnostics(file, projectDir, a.severity);
375
+ return text({
376
+ file,
377
+ diagnosticCount: result.diagnostics.length,
378
+ diagnostics: result.diagnostics,
379
+ command: result.command,
380
+ });
381
+ }
382
+ case 'lsp_diagnostics_directory': {
383
+ const dir = a.directory;
384
+ if (!dir)
385
+ return errorResult('directory is required');
386
+ const result = await runTscDiagnostics('', dir, a.severity);
387
+ // Group by file
388
+ const byFile = {};
389
+ for (const d of result.diagnostics) {
390
+ const rel = relative(dir, d.file);
391
+ if (!byFile[rel])
392
+ byFile[rel] = [];
393
+ byFile[rel].push(d);
394
+ }
395
+ return text({
396
+ directory: dir,
397
+ totalErrors: result.diagnostics.filter(d => d.severity === 'error').length,
398
+ totalWarnings: result.diagnostics.filter(d => d.severity === 'warning').length,
399
+ fileCount: Object.keys(byFile).length,
400
+ diagnosticsByFile: byFile,
401
+ command: result.command,
402
+ });
403
+ }
404
+ case 'lsp_document_symbols': {
405
+ const file = a.file;
406
+ if (!file)
407
+ return errorResult('file is required');
408
+ if (!existsSync(file))
409
+ return errorResult(`File not found: ${file}`);
410
+ const content = await readFile(file, 'utf-8');
411
+ const symbols = extractSymbols(content);
412
+ return text({ file, symbolCount: symbols.length, symbols });
413
+ }
414
+ case 'lsp_workspace_symbols': {
415
+ const query = a.query;
416
+ const file = a.file;
417
+ if (!query)
418
+ return errorResult('query is required');
419
+ // Determine project root from file
420
+ let dir = file ? join(file, '..') : process.cwd();
421
+ for (let i = 0; i < 10; i++) {
422
+ if (existsSync(join(dir, 'package.json')) || existsSync(join(dir, '.git')))
423
+ break;
424
+ const parent = join(dir, '..');
425
+ if (parent === dir)
426
+ break;
427
+ dir = parent;
428
+ }
429
+ const symbols = await searchWorkspaceSymbols(query, dir);
430
+ return text({ query, resultCount: symbols.length, symbols });
431
+ }
432
+ case 'lsp_hover': {
433
+ const file = a.file;
434
+ const line = a.line;
435
+ const char = a.character;
436
+ if (!file || !line)
437
+ return errorResult('file and line are required');
438
+ if (!existsSync(file))
439
+ return errorResult(`File not found: ${file}`);
440
+ const content = await readFile(file, 'utf-8');
441
+ const lines = content.split('\n');
442
+ const targetLine = lines[line - 1] || '';
443
+ // Extract word at position
444
+ let start = char, end = char;
445
+ while (start > 0 && /\w/.test(targetLine[start - 1]))
446
+ start--;
447
+ while (end < targetLine.length && /\w/.test(targetLine[end]))
448
+ end++;
449
+ const word = targetLine.slice(start, end);
450
+ // Find definition in file
451
+ const symbols = extractSymbols(content);
452
+ const match = symbols.find(s => s.name === word);
453
+ return text({
454
+ file,
455
+ position: { line, character: char },
456
+ word,
457
+ lineContent: targetLine.trim(),
458
+ localDefinition: match || null,
459
+ note: 'Regex-based approximation. For full LSP hover, install a language server.',
460
+ });
461
+ }
462
+ case 'lsp_find_references': {
463
+ const file = a.file;
464
+ const line = a.line;
465
+ const char = a.character;
466
+ if (!file || !line)
467
+ return errorResult('file and line are required');
468
+ const content = await readFile(file, 'utf-8');
469
+ const lines = content.split('\n');
470
+ const targetLine = lines[line - 1] || '';
471
+ let start = char, end = char;
472
+ while (start > 0 && /\w/.test(targetLine[start - 1]))
473
+ start--;
474
+ while (end < targetLine.length && /\w/.test(targetLine[end]))
475
+ end++;
476
+ const symbol = targetLine.slice(start, end);
477
+ if (!symbol)
478
+ return errorResult('Could not identify symbol at position');
479
+ // Use grep to find references
480
+ let dir = join(file, '..');
481
+ for (let i = 0; i < 10; i++) {
482
+ if (existsSync(join(dir, 'package.json')) || existsSync(join(dir, '.git')))
483
+ break;
484
+ const parent = join(dir, '..');
485
+ if (parent === dir)
486
+ break;
487
+ dir = parent;
488
+ }
489
+ try {
490
+ const { stdout } = await exec('grep', [
491
+ '-rn', '--include=*.ts', '--include=*.tsx', '--include=*.js', '--include=*.jsx',
492
+ '--include=*.py', '--include=*.go', '--include=*.rs',
493
+ '-w', symbol, dir,
494
+ ], { timeout: 15000 });
495
+ const refs = stdout.split('\n').filter(Boolean).map(line => {
496
+ const match = line.match(/^(.+?):(\d+):(.+)$/);
497
+ if (!match)
498
+ return null;
499
+ return { file: match[1], line: parseInt(match[2], 10), content: match[3].trim() };
500
+ }).filter(Boolean);
501
+ return text({ symbol, referenceCount: refs.length, references: refs.slice(0, 100) });
502
+ }
503
+ catch {
504
+ return text({ symbol, referenceCount: 0, references: [], note: 'grep search returned no results' });
505
+ }
506
+ }
507
+ case 'lsp_servers': {
508
+ const checks = {};
509
+ // Check tsc
510
+ try {
511
+ const { stdout } = await exec('npx', ['tsc', '--version'], { timeout: 10000 });
512
+ checks['typescript'] = { available: true, version: stdout.trim() };
513
+ }
514
+ catch {
515
+ checks['typescript'] = { available: false, note: 'Install: npm i -D typescript' };
516
+ }
517
+ // Check ast-grep
518
+ const sg = await findSgBinary();
519
+ if (sg) {
520
+ checks['ast-grep'] = { available: true, version: sg };
521
+ }
522
+ else {
523
+ checks['ast-grep'] = { available: false, note: 'Install: npm i -g @ast-grep/cli' };
524
+ }
525
+ // Check grep
526
+ try {
527
+ await exec('grep', ['--version']);
528
+ checks['grep'] = { available: true };
529
+ }
530
+ catch {
531
+ checks['grep'] = { available: false };
532
+ }
533
+ return text({ servers: checks });
534
+ }
535
+ case 'ast_grep_search': {
536
+ const pattern = a.pattern;
537
+ const language = a.language;
538
+ if (!pattern || !language)
539
+ return errorResult('pattern and language are required');
540
+ const result = await runAstGrep(pattern, language, {
541
+ path: a.path,
542
+ maxResults: a.maxResults,
543
+ context: a.context,
544
+ });
545
+ return text(result);
546
+ }
547
+ case 'ast_grep_replace': {
548
+ const pattern = a.pattern;
549
+ const replacement = a.replacement;
550
+ const language = a.language;
551
+ if (!pattern || !replacement || !language)
552
+ return errorResult('pattern, replacement, and language are required');
553
+ const dryRun = a.dryRun !== false; // default true
554
+ const result = await runAstGrep(pattern, language, {
555
+ path: a.path,
556
+ replacement,
557
+ dryRun,
558
+ });
559
+ return text({ ...result, dryRun });
560
+ }
561
+ default:
562
+ return { content: [{ type: 'text', text: `Unknown tool: ${name}` }], isError: true };
563
+ }
564
+ });
565
+ const transport = new StdioServerTransport();
566
+ server.connect(transport).catch(console.error);
567
+ //# sourceMappingURL=code-intel-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-intel-server.js","sourceRoot":"","sources":["../../src/mcp/code-intel-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * OMX Project Memory & Notepad MCP Server
3
+ * Provides persistent project memory and session notepad tools
4
+ * Storage: .omx/project-memory.json, .omx/notepad.md
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=memory-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-server.d.ts","sourceRoot":"","sources":["../../src/mcp/memory-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}