@ebowwa/claude-code-mcp 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/advanced.test.d.ts +6 -0
- package/dist/__tests__/advanced.test.d.ts.map +1 -0
- package/dist/__tests__/advanced.test.js +354 -0
- package/dist/__tests__/advanced.test.js.map +1 -0
- package/dist/advanced.d.ts +109 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +427 -0
- package/dist/advanced.js.map +1 -0
- package/dist/cli-wrapper.d.ts +202 -0
- package/dist/cli-wrapper.d.ts.map +1 -0
- package/dist/cli-wrapper.js +347 -0
- package/dist/cli-wrapper.js.map +1 -0
- package/dist/cli-wrapper.test.d.ts +12 -0
- package/dist/cli-wrapper.test.d.ts.map +1 -0
- package/dist/cli-wrapper.test.js +354 -0
- package/dist/cli-wrapper.test.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +354 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +561 -0
- package/dist/index.js.map +1 -0
- package/dist/integration.test.d.ts +12 -0
- package/dist/integration.test.d.ts.map +1 -0
- package/dist/integration.test.js +716 -0
- package/dist/integration.test.js.map +1 -0
- package/dist/queue.d.ts +87 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +273 -0
- package/dist/queue.js.map +1 -0
- package/dist/teammates-integration.d.ts +128 -0
- package/dist/teammates-integration.d.ts.map +1 -0
- package/dist/teammates-integration.js +353 -0
- package/dist/teammates-integration.js.map +1 -0
- package/dist/test-config.d.ts +104 -0
- package/dist/test-config.d.ts.map +1 -0
- package/dist/test-config.js +439 -0
- package/dist/test-config.js.map +1 -0
- package/dist/tools.d.ts +97 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +627 -0
- package/dist/tools.js.map +1 -0
- package/package.json +7 -1
- package/ARCHITECTURE.md +0 -1802
- package/DOCUMENTATION.md +0 -747
- package/TESTING.md +0 -318
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* CLI Wrapper Unit Tests
|
|
4
|
+
*
|
|
5
|
+
* Tests the ClaudeCodeWrapper class which handles:
|
|
6
|
+
* - Spawning Claude Code CLI processes
|
|
7
|
+
* - Doppler flag handling
|
|
8
|
+
* - Process lifecycle management
|
|
9
|
+
* - Output streaming
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect, mock, beforeEach } from 'bun:test';
|
|
12
|
+
// Mock child_process for testing
|
|
13
|
+
const mockSpawn = mock(() => ({
|
|
14
|
+
stdout: { on: mock() },
|
|
15
|
+
stderr: { on: mock() },
|
|
16
|
+
on: mock(),
|
|
17
|
+
kill: mock(),
|
|
18
|
+
pid: 12345
|
|
19
|
+
}));
|
|
20
|
+
describe('ClaudeCodeWrapper', () => {
|
|
21
|
+
let ClaudeCodeWrapper;
|
|
22
|
+
let mockProcess;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
// Reset mocks before each test
|
|
25
|
+
mockProcess = mockSpawn();
|
|
26
|
+
// Mock the module import
|
|
27
|
+
ClaudeCodeWrapper = class {
|
|
28
|
+
constructor(options) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
this.process = null;
|
|
31
|
+
}
|
|
32
|
+
spawn(args) {
|
|
33
|
+
// Mock implementation
|
|
34
|
+
this.process = mockProcess;
|
|
35
|
+
this.process.pid = Math.floor(Math.random() * 100000);
|
|
36
|
+
return this.process;
|
|
37
|
+
}
|
|
38
|
+
kill(signal) {
|
|
39
|
+
if (this.process) {
|
|
40
|
+
this.process.killed = true;
|
|
41
|
+
this.process.kill(signal || 'SIGTERM');
|
|
42
|
+
this.process = null;
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
isAlive() {
|
|
48
|
+
return this.process !== null && !this.process?.killed;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
describe('Constructor', () => {
|
|
53
|
+
it('should initialize with default options', () => {
|
|
54
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
55
|
+
expect(wrapper.options).toBeDefined();
|
|
56
|
+
expect(wrapper.options.useDoppler).toBe(false);
|
|
57
|
+
expect(wrapper.options.timeout).toBe(300000);
|
|
58
|
+
});
|
|
59
|
+
it('should accept custom options', () => {
|
|
60
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
61
|
+
useDoppler: true,
|
|
62
|
+
timeout: 600000,
|
|
63
|
+
claudePath: '/custom/path/to/claude'
|
|
64
|
+
});
|
|
65
|
+
expect(wrapper.options.useDoppler).toBe(true);
|
|
66
|
+
expect(wrapper.options.timeout).toBe(600000);
|
|
67
|
+
expect(wrapper.options.claudePath).toBe('/custom/path/to/claude');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('spawn', () => {
|
|
71
|
+
it('should spawn Claude Code without Doppler by default', () => {
|
|
72
|
+
const wrapper = new ClaudeCodeWrapper({ useDoppler: false });
|
|
73
|
+
const process = wrapper.spawn(['--help']);
|
|
74
|
+
expect(process).toBeDefined();
|
|
75
|
+
expect(process.pid).toBeGreaterThan(0);
|
|
76
|
+
expect(wrapper.isAlive()).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
it('should spawn with Doppler wrapper when enabled', () => {
|
|
79
|
+
const wrapper = new ClaudeCodeWrapper({ useDoppler: true });
|
|
80
|
+
const process = wrapper.spawn(['--resume', 'abc-123']);
|
|
81
|
+
expect(process).toBeDefined();
|
|
82
|
+
expect(wrapper.isAlive()).toBe(true);
|
|
83
|
+
});
|
|
84
|
+
it('should handle --resume flag with Doppler workaround', () => {
|
|
85
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
86
|
+
useDoppler: true,
|
|
87
|
+
dopplerProject: 'test-project',
|
|
88
|
+
dopplerConfig: 'dev'
|
|
89
|
+
});
|
|
90
|
+
// When useDoppler is true and --resume is used
|
|
91
|
+
// The wrapper should construct: doppler run --command "claude --resume UUID"
|
|
92
|
+
const args = ['--resume', 'test-uuid-123'];
|
|
93
|
+
const process = wrapper.spawn(args);
|
|
94
|
+
expect(process).toBeDefined();
|
|
95
|
+
expect(wrapper.process.dopplerWrapped).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('should pass through custom environment variables', () => {
|
|
98
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
99
|
+
env: {
|
|
100
|
+
CUSTOM_VAR: 'test-value',
|
|
101
|
+
ANOTHER_VAR: 'another-value'
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
const process = wrapper.spawn(['--version']);
|
|
105
|
+
expect(process).toBeDefined();
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('kill', () => {
|
|
109
|
+
it('should kill running process gracefully', () => {
|
|
110
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
111
|
+
wrapper.spawn(['--help']);
|
|
112
|
+
const killed = wrapper.kill();
|
|
113
|
+
expect(killed).toBe(true);
|
|
114
|
+
expect(wrapper.isAlive()).toBe(false);
|
|
115
|
+
});
|
|
116
|
+
it('should support force kill with SIGKILL', () => {
|
|
117
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
118
|
+
wrapper.spawn(['--help']);
|
|
119
|
+
const killed = wrapper.kill('SIGKILL');
|
|
120
|
+
expect(killed).toBe(true);
|
|
121
|
+
expect(wrapper.isAlive()).toBe(false);
|
|
122
|
+
});
|
|
123
|
+
it('should return false when no process is running', () => {
|
|
124
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
125
|
+
const killed = wrapper.kill();
|
|
126
|
+
expect(killed).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
it('should handle multiple kill calls safely', () => {
|
|
129
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
130
|
+
wrapper.spawn(['--help']);
|
|
131
|
+
const firstKill = wrapper.kill();
|
|
132
|
+
const secondKill = wrapper.kill();
|
|
133
|
+
expect(firstKill).toBe(true);
|
|
134
|
+
expect(secondKill).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe('isAlive', () => {
|
|
138
|
+
it('should return true when process is running', () => {
|
|
139
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
140
|
+
wrapper.spawn(['--help']);
|
|
141
|
+
expect(wrapper.isAlive()).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
it('should return false when no process is running', () => {
|
|
144
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
145
|
+
expect(wrapper.isAlive()).toBe(false);
|
|
146
|
+
});
|
|
147
|
+
it('should return false after process is killed', () => {
|
|
148
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
149
|
+
wrapper.spawn(['--help']);
|
|
150
|
+
wrapper.kill();
|
|
151
|
+
expect(wrapper.isAlive()).toBe(false);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe('Doppler Integration', () => {
|
|
155
|
+
it('should construct correct doppler command for --resume', () => {
|
|
156
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
157
|
+
useDoppler: true,
|
|
158
|
+
dopplerProject: 'my-project',
|
|
159
|
+
dopplerConfig: 'prd'
|
|
160
|
+
});
|
|
161
|
+
const args = ['--resume', 'session-uuid'];
|
|
162
|
+
wrapper.spawn(args);
|
|
163
|
+
// Verify doppler wrapping was applied
|
|
164
|
+
expect(wrapper.process.dopplerWrapped).toBe(true);
|
|
165
|
+
});
|
|
166
|
+
it('should handle doppler with custom config', () => {
|
|
167
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
168
|
+
useDoppler: true,
|
|
169
|
+
dopplerConfig: 'staging'
|
|
170
|
+
});
|
|
171
|
+
const process = wrapper.spawn(['--help']);
|
|
172
|
+
expect(process).toBeDefined();
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('Error Handling', () => {
|
|
176
|
+
it('should handle spawn failures gracefully', () => {
|
|
177
|
+
const wrapper = new ClaudeCodeWrapper({
|
|
178
|
+
claudePath: '/nonexistent/path/to/claude'
|
|
179
|
+
});
|
|
180
|
+
expect(() => {
|
|
181
|
+
wrapper.spawn(['--help']);
|
|
182
|
+
}).not.toThrow();
|
|
183
|
+
});
|
|
184
|
+
it('should handle kill failures gracefully', () => {
|
|
185
|
+
const wrapper = new ClaudeCodeWrapper({});
|
|
186
|
+
const killed = wrapper.kill();
|
|
187
|
+
expect(killed).toBe(false); // No process to kill
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('Doppler Flag Handling Edge Cases', () => {
|
|
192
|
+
describe('--resume with Doppler', () => {
|
|
193
|
+
it('should work with valid UUID', () => {
|
|
194
|
+
const uuid = 'abc-123-def-456';
|
|
195
|
+
const wrapper = new (class {
|
|
196
|
+
constructor() { this.useDoppler = true; }
|
|
197
|
+
buildResumeCommand(uuid) {
|
|
198
|
+
if (!this.useDoppler)
|
|
199
|
+
return ['claude', '--resume', uuid];
|
|
200
|
+
return ['doppler', 'run', '--command', `claude --resume ${uuid}`];
|
|
201
|
+
}
|
|
202
|
+
})();
|
|
203
|
+
const cmd = wrapper.buildResumeCommand(uuid);
|
|
204
|
+
expect(cmd).toContain('--resume');
|
|
205
|
+
expect(cmd).toContain(uuid);
|
|
206
|
+
});
|
|
207
|
+
it('should handle malformed UUID gracefully', () => {
|
|
208
|
+
const malformedUuids = [
|
|
209
|
+
'',
|
|
210
|
+
'not-a-uuid',
|
|
211
|
+
'abc-123',
|
|
212
|
+
'!!!invalid!!!'
|
|
213
|
+
];
|
|
214
|
+
malformedUuids.forEach(uuid => {
|
|
215
|
+
const wrapper = new (class {
|
|
216
|
+
buildResumeCommand(uuid) {
|
|
217
|
+
// Should still construct command, validation happens at Claude level
|
|
218
|
+
return ['doppler', 'run', '--command', `claude --resume ${uuid}`];
|
|
219
|
+
}
|
|
220
|
+
})();
|
|
221
|
+
const cmd = wrapper.buildResumeCommand(uuid);
|
|
222
|
+
expect(cmd).toBeDefined();
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
it('should escape special characters in UUID if present', () => {
|
|
226
|
+
// UUIDs shouldn't have special chars, but test defensive coding
|
|
227
|
+
const uuid = 'abc-123-def-456'; // Standard UUID format
|
|
228
|
+
const wrapper = new (class {
|
|
229
|
+
buildResumeCommand(uuid) {
|
|
230
|
+
// Should not escape standard UUIDs
|
|
231
|
+
return ['doppler', 'run', '--command', `claude --resume ${uuid}`];
|
|
232
|
+
}
|
|
233
|
+
})();
|
|
234
|
+
const cmd = wrapper.buildResumeCommand(uuid);
|
|
235
|
+
expect(cmd).toContain(uuid);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
describe('Doppler Configuration', () => {
|
|
239
|
+
it('should handle missing DOPPLER_PROJECT', () => {
|
|
240
|
+
const wrapper = new (class {
|
|
241
|
+
constructor() { this.dopplerProject = undefined; }
|
|
242
|
+
getDopplerCommand() {
|
|
243
|
+
return ['doppler', 'run'];
|
|
244
|
+
}
|
|
245
|
+
})();
|
|
246
|
+
const cmd = wrapper.getDopplerCommand();
|
|
247
|
+
expect(cmd).toContain('doppler');
|
|
248
|
+
expect(cmd).toContain('run');
|
|
249
|
+
});
|
|
250
|
+
it('should handle missing DOPPLER_CONFIG', () => {
|
|
251
|
+
const wrapper = new (class {
|
|
252
|
+
constructor() { this.dopplerConfig = undefined; }
|
|
253
|
+
getDopplerCommand() {
|
|
254
|
+
return ['doppler', 'run'];
|
|
255
|
+
}
|
|
256
|
+
})();
|
|
257
|
+
const cmd = wrapper.getDopplerCommand();
|
|
258
|
+
expect(cmd).toBeDefined();
|
|
259
|
+
});
|
|
260
|
+
it('should handle empty DOPPLER_TOKEN', () => {
|
|
261
|
+
const wrapper = new (class {
|
|
262
|
+
constructor() { this.dopplerToken = ''; }
|
|
263
|
+
shouldUseDoppler() {
|
|
264
|
+
return this.dopplerToken !== undefined;
|
|
265
|
+
}
|
|
266
|
+
})();
|
|
267
|
+
// Empty token should not prevent doppler usage
|
|
268
|
+
// (authentication will fail at runtime, which is correct)
|
|
269
|
+
expect(wrapper.shouldUseDoppler()).toBe(true);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
describe('Message with Doppler', () => {
|
|
273
|
+
it('should escape quotes in message when using doppler --command', () => {
|
|
274
|
+
const message = 'Fix the "auth" bug';
|
|
275
|
+
const wrapper = new (class {
|
|
276
|
+
escapeMessageForDoppler(msg) {
|
|
277
|
+
return msg.replace(/"/g, '\\"');
|
|
278
|
+
}
|
|
279
|
+
})();
|
|
280
|
+
const escaped = wrapper.escapeMessageForDoppler(message);
|
|
281
|
+
expect(escaped).toBe('Fix the \\"auth\\" bug');
|
|
282
|
+
});
|
|
283
|
+
it('should handle newlines in message', () => {
|
|
284
|
+
const message = 'Line 1\nLine 2\nLine 3';
|
|
285
|
+
const wrapper = new (class {
|
|
286
|
+
escapeMessageForDoppler(msg) {
|
|
287
|
+
return msg.replace(/\n/g, '\\n');
|
|
288
|
+
}
|
|
289
|
+
})();
|
|
290
|
+
const escaped = wrapper.escapeMessageForDoppler(message);
|
|
291
|
+
expect(escaped).toBe('Line 1\\nLine 2\\nLine 3');
|
|
292
|
+
});
|
|
293
|
+
it('should handle empty message', () => {
|
|
294
|
+
const message = '';
|
|
295
|
+
const wrapper = new (class {
|
|
296
|
+
buildResumeCommand(uuid, message) {
|
|
297
|
+
if (!message)
|
|
298
|
+
return ['doppler', 'run', '--command', `claude --resume ${uuid}`];
|
|
299
|
+
return ['doppler', 'run', '--command', `claude --resume ${uuid} -- '${message}'`];
|
|
300
|
+
}
|
|
301
|
+
})();
|
|
302
|
+
const cmd = wrapper.buildResumeCommand('test-uuid');
|
|
303
|
+
expect(cmd).toBeDefined();
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
describe('Process Lifecycle', () => {
|
|
308
|
+
it('should track process state correctly', () => {
|
|
309
|
+
const wrapper = new (class {
|
|
310
|
+
constructor() {
|
|
311
|
+
this.process = null;
|
|
312
|
+
this.state = 'idle';
|
|
313
|
+
}
|
|
314
|
+
spawn() {
|
|
315
|
+
this.state = 'running';
|
|
316
|
+
this.process = { pid: 12345 };
|
|
317
|
+
return this.process;
|
|
318
|
+
}
|
|
319
|
+
kill() {
|
|
320
|
+
if (this.process) {
|
|
321
|
+
this.state = 'killed';
|
|
322
|
+
this.process = null;
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
getState() {
|
|
328
|
+
return this.state;
|
|
329
|
+
}
|
|
330
|
+
})();
|
|
331
|
+
expect(wrapper.getState()).toBe('idle');
|
|
332
|
+
wrapper.spawn();
|
|
333
|
+
expect(wrapper.getState()).toBe('running');
|
|
334
|
+
wrapper.kill();
|
|
335
|
+
expect(wrapper.getState()).toBe('killed');
|
|
336
|
+
});
|
|
337
|
+
it('should handle rapid spawn-kill cycles', () => {
|
|
338
|
+
const wrapper = new (class {
|
|
339
|
+
constructor() { this.processCount = 0; }
|
|
340
|
+
spawn() {
|
|
341
|
+
this.processCount++;
|
|
342
|
+
return { pid: 1000 + this.processCount };
|
|
343
|
+
}
|
|
344
|
+
kill() { return true; }
|
|
345
|
+
getCount() { return this.processCount; }
|
|
346
|
+
})();
|
|
347
|
+
for (let i = 0; i < 10; i++) {
|
|
348
|
+
wrapper.spawn();
|
|
349
|
+
wrapper.kill();
|
|
350
|
+
}
|
|
351
|
+
expect(wrapper.getCount()).toBe(10);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
//# sourceMappingURL=cli-wrapper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-wrapper.test.js","sourceRoot":"","sources":["../src/cli-wrapper.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code MCP CLI Launcher
|
|
4
|
+
*
|
|
5
|
+
* Standalone CLI for testing and running the Claude Code MCP server.
|
|
6
|
+
* This launcher can be used independently of MCP clients for development and testing.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* bun run src/cli.ts # Start MCP server on stdio
|
|
10
|
+
* bun run src/cli.ts start # Start a new Claude Code session
|
|
11
|
+
* bun run src/cli.ts list # List active sessions
|
|
12
|
+
* bun run src/cli.ts kill <sessionId> # Kill a session
|
|
13
|
+
* bun run src/cli.ts send <message> # Send message to session
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|