@sumicom/quicksave 0.6.0 → 0.6.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.
Files changed (122) hide show
  1. package/dist/ai/asyncQueue.d.ts +7 -6
  2. package/dist/ai/asyncQueue.d.ts.map +1 -1
  3. package/dist/ai/asyncQueue.js +31 -21
  4. package/dist/ai/asyncQueue.js.map +1 -1
  5. package/dist/ai/cardBuilder.d.ts +22 -2
  6. package/dist/ai/cardBuilder.d.ts.map +1 -1
  7. package/dist/ai/cardBuilder.js +275 -30
  8. package/dist/ai/cardBuilder.js.map +1 -1
  9. package/dist/ai/claudeCliProvider.d.ts +21 -0
  10. package/dist/ai/claudeCliProvider.d.ts.map +1 -0
  11. package/dist/ai/claudeCliProvider.js +527 -0
  12. package/dist/ai/claudeCliProvider.js.map +1 -0
  13. package/dist/ai/claudeCodeProvider.d.ts +18 -0
  14. package/dist/ai/claudeCodeProvider.d.ts.map +1 -0
  15. package/dist/ai/claudeCodeProvider.js +30 -0
  16. package/dist/ai/claudeCodeProvider.js.map +1 -0
  17. package/dist/ai/claudeSdkProvider.d.ts +20 -0
  18. package/dist/ai/claudeSdkProvider.d.ts.map +1 -0
  19. package/dist/ai/claudeSdkProvider.js +428 -0
  20. package/dist/ai/claudeSdkProvider.js.map +1 -0
  21. package/dist/ai/codexMcpProvider.d.ts +15 -0
  22. package/dist/ai/codexMcpProvider.d.ts.map +1 -0
  23. package/dist/ai/codexMcpProvider.js +442 -0
  24. package/dist/ai/codexMcpProvider.js.map +1 -0
  25. package/dist/ai/codexSdkProvider.d.ts +35 -0
  26. package/dist/ai/codexSdkProvider.d.ts.map +1 -0
  27. package/dist/ai/codexSdkProvider.js +422 -0
  28. package/dist/ai/codexSdkProvider.js.map +1 -0
  29. package/dist/ai/commitSummary.d.ts +4 -0
  30. package/dist/ai/commitSummary.d.ts.map +1 -1
  31. package/dist/ai/commitSummary.js +80 -40
  32. package/dist/ai/commitSummary.js.map +1 -1
  33. package/dist/ai/debugLogger.d.ts +24 -0
  34. package/dist/ai/debugLogger.d.ts.map +1 -0
  35. package/dist/ai/debugLogger.js +55 -0
  36. package/dist/ai/debugLogger.js.map +1 -0
  37. package/dist/ai/provider.d.ts +57 -0
  38. package/dist/ai/provider.d.ts.map +1 -0
  39. package/dist/ai/provider.js +2 -0
  40. package/dist/ai/provider.js.map +1 -0
  41. package/dist/ai/sandboxMcp.d.ts +12 -0
  42. package/dist/ai/sandboxMcp.d.ts.map +1 -0
  43. package/dist/ai/sandboxMcp.js +12 -0
  44. package/dist/ai/sandboxMcp.js.map +1 -0
  45. package/dist/ai/sandboxMcpStdio.d.ts +16 -0
  46. package/dist/ai/sandboxMcpStdio.d.ts.map +1 -0
  47. package/dist/ai/sandboxMcpStdio.js +127 -0
  48. package/dist/ai/sandboxMcpStdio.js.map +1 -0
  49. package/dist/ai/sessionManager.d.ts +105 -0
  50. package/dist/ai/sessionManager.d.ts.map +1 -0
  51. package/dist/ai/sessionManager.js +716 -0
  52. package/dist/ai/sessionManager.js.map +1 -0
  53. package/dist/ai/sessionRegistry.d.ts +28 -0
  54. package/dist/ai/sessionRegistry.d.ts.map +1 -0
  55. package/dist/ai/sessionRegistry.js +148 -0
  56. package/dist/ai/sessionRegistry.js.map +1 -0
  57. package/dist/config.d.ts +1 -0
  58. package/dist/config.d.ts.map +1 -1
  59. package/dist/config.js +12 -0
  60. package/dist/config.js.map +1 -1
  61. package/dist/connection/connection.d.ts +1 -0
  62. package/dist/connection/connection.d.ts.map +1 -1
  63. package/dist/connection/connection.js +19 -1
  64. package/dist/connection/connection.js.map +1 -1
  65. package/dist/git/operations.d.ts +26 -1
  66. package/dist/git/operations.d.ts.map +1 -1
  67. package/dist/git/operations.js +83 -2
  68. package/dist/git/operations.js.map +1 -1
  69. package/dist/handlers/messageHandler.d.ts +24 -3
  70. package/dist/handlers/messageHandler.d.ts.map +1 -1
  71. package/dist/handlers/messageHandler.js +378 -24
  72. package/dist/handlers/messageHandler.js.map +1 -1
  73. package/dist/index.js +23 -40
  74. package/dist/index.js.map +1 -1
  75. package/dist/service/debugHttpServer.d.ts +27 -0
  76. package/dist/service/debugHttpServer.d.ts.map +1 -0
  77. package/dist/service/debugHttpServer.js +189 -0
  78. package/dist/service/debugHttpServer.js.map +1 -0
  79. package/dist/service/ensureDaemon.d.ts.map +1 -1
  80. package/dist/service/ensureDaemon.js +15 -2
  81. package/dist/service/ensureDaemon.js.map +1 -1
  82. package/dist/service/ipcClient.js +1 -1
  83. package/dist/service/run.d.ts.map +1 -1
  84. package/dist/service/run.js +42 -15
  85. package/dist/service/run.js.map +1 -1
  86. package/dist/service/singleton.d.ts +4 -0
  87. package/dist/service/singleton.d.ts.map +1 -1
  88. package/dist/service/singleton.js +28 -2
  89. package/dist/service/singleton.js.map +1 -1
  90. package/package.json +7 -3
  91. package/dist/ai/asyncQueue.test.d.ts +0 -2
  92. package/dist/ai/asyncQueue.test.d.ts.map +0 -1
  93. package/dist/ai/asyncQueue.test.js +0 -56
  94. package/dist/ai/asyncQueue.test.js.map +0 -1
  95. package/dist/ai/claudeCodeService.d.ts +0 -122
  96. package/dist/ai/claudeCodeService.d.ts.map +0 -1
  97. package/dist/ai/claudeCodeService.js +0 -869
  98. package/dist/ai/claudeCodeService.js.map +0 -1
  99. package/dist/ai/sessionStore.test.d.ts +0 -2
  100. package/dist/ai/sessionStore.test.d.ts.map +0 -1
  101. package/dist/ai/sessionStore.test.js +0 -99
  102. package/dist/ai/sessionStore.test.js.map +0 -1
  103. package/dist/connection/pubsub.test.d.ts +0 -2
  104. package/dist/connection/pubsub.test.d.ts.map +0 -1
  105. package/dist/connection/pubsub.test.js +0 -96
  106. package/dist/connection/pubsub.test.js.map +0 -1
  107. package/dist/git/operations.test.d.ts +0 -2
  108. package/dist/git/operations.test.d.ts.map +0 -1
  109. package/dist/git/operations.test.js +0 -300
  110. package/dist/git/operations.test.js.map +0 -1
  111. package/dist/handlers/messageHandler.test.d.ts +0 -2
  112. package/dist/handlers/messageHandler.test.d.ts.map +0 -1
  113. package/dist/handlers/messageHandler.test.js +0 -361
  114. package/dist/handlers/messageHandler.test.js.map +0 -1
  115. package/dist/service/ipc.test.d.ts +0 -2
  116. package/dist/service/ipc.test.d.ts.map +0 -1
  117. package/dist/service/ipc.test.js +0 -140
  118. package/dist/service/ipc.test.js.map +0 -1
  119. package/dist/service/singleton.test.d.ts +0 -2
  120. package/dist/service/singleton.test.d.ts.map +0 -1
  121. package/dist/service/singleton.test.js +0 -39
  122. package/dist/service/singleton.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.test.js","sourceRoot":"","sources":["../../src/git/operations.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=messageHandler.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageHandler.test.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.test.ts"],"names":[],"mappings":""}
@@ -1,361 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import { MessageHandler } from './messageHandler.js';
3
- import { createMessage } from '@sumicom/quicksave-shared';
4
- import { mkdir, writeFile, rm, readFile } from 'fs/promises';
5
- import { join } from 'path';
6
- import { tmpdir } from 'os';
7
- import { simpleGit } from 'simple-git';
8
- describe('MessageHandler', () => {
9
- let testRepoPath;
10
- let handler;
11
- let defaultBranch;
12
- beforeEach(async () => {
13
- // Create temporary test repo
14
- testRepoPath = join(tmpdir(), `quicksave-handler-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
15
- await mkdir(testRepoPath, { recursive: true });
16
- // Initialize git repo
17
- const git = simpleGit(testRepoPath);
18
- await git.init();
19
- await git.addConfig('user.email', 'test@test.com');
20
- await git.addConfig('user.name', 'Test User');
21
- // Create initial commit
22
- await writeFile(join(testRepoPath, 'README.md'), '# Test Repo\n');
23
- await git.add('README.md');
24
- await git.commit('Initial commit');
25
- // Get the default branch name (could be 'main' or 'master' depending on git config)
26
- const status = await git.status();
27
- defaultBranch = status.current || 'main';
28
- handler = new MessageHandler([{ path: testRepoPath, name: 'test-repo' }]);
29
- });
30
- afterEach(async () => {
31
- try {
32
- await rm(testRepoPath, { recursive: true, force: true });
33
- }
34
- catch {
35
- // Ignore cleanup errors
36
- }
37
- });
38
- describe('handleMessage - ping/pong', () => {
39
- it('should respond to ping with pong', async () => {
40
- const message = createMessage('ping', { timestamp: Date.now() });
41
- const response = await handler.handleMessage(message);
42
- expect(response.type).toBe('pong');
43
- expect(response.payload).toHaveProperty('timestamp');
44
- });
45
- });
46
- describe('handleMessage - handshake', () => {
47
- it('should respond to handshake with ack', async () => {
48
- const message = createMessage('handshake', { publicKey: 'test-key' });
49
- const response = await handler.handleMessage(message);
50
- expect(response.type).toBe('handshake:ack');
51
- expect(response.id).toBe(message.id);
52
- expect(response.payload.success).toBe(true);
53
- expect(response.payload.agentVersion).toBe('0.6.0');
54
- expect(response.payload.repoPath).toBe(testRepoPath);
55
- });
56
- });
57
- describe('handleMessage - git:status', () => {
58
- it('should return git status', async () => {
59
- const message = createMessage('git:status', {});
60
- const response = await handler.handleMessage(message);
61
- expect(response.type).toBe('git:status:response');
62
- expect(response.id).toBe(message.id);
63
- const payload = response.payload;
64
- expect(payload.branch).toBe(defaultBranch);
65
- expect(Array.isArray(payload.staged)).toBe(true);
66
- expect(Array.isArray(payload.unstaged)).toBe(true);
67
- expect(Array.isArray(payload.untracked)).toBe(true);
68
- });
69
- it('should detect changes in status', async () => {
70
- await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
71
- const message = createMessage('git:status', {});
72
- const response = await handler.handleMessage(message);
73
- const payload = response.payload;
74
- expect(payload.untracked).toContain('newfile.txt');
75
- });
76
- });
77
- describe('handleMessage - git:diff', () => {
78
- it('should return diff for modified file', async () => {
79
- await writeFile(join(testRepoPath, 'README.md'), '# Modified\n');
80
- const message = createMessage('git:diff', { path: 'README.md', staged: false });
81
- const response = await handler.handleMessage(message);
82
- expect(response.type).toBe('git:diff:response');
83
- expect(response.id).toBe(message.id);
84
- const payload = response.payload;
85
- expect(payload.path).toBe('README.md');
86
- expect(payload.hunks.length).toBeGreaterThan(0);
87
- });
88
- });
89
- describe('handleMessage - git:stage', () => {
90
- it('should stage files successfully', async () => {
91
- await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
92
- const message = createMessage('git:stage', { paths: ['newfile.txt'] });
93
- const response = await handler.handleMessage(message);
94
- expect(response.type).toBe('git:stage:response');
95
- expect(response.payload.success).toBe(true);
96
- // Verify file was staged
97
- const statusMsg = createMessage('git:status', {});
98
- const statusResp = await handler.handleMessage(statusMsg);
99
- const status = statusResp.payload;
100
- expect(status.staged.some((f) => f.path === 'newfile.txt')).toBe(true);
101
- });
102
- it('should return error for invalid path', async () => {
103
- const message = createMessage('git:stage', { paths: ['nonexistent.txt'] });
104
- const response = await handler.handleMessage(message);
105
- expect(response.type).toBe('git:stage:response');
106
- expect(response.payload.success).toBe(false);
107
- expect(response.payload.error).toBeDefined();
108
- });
109
- });
110
- describe('handleMessage - git:unstage', () => {
111
- it('should unstage files successfully', async () => {
112
- await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
113
- await simpleGit(testRepoPath).add('newfile.txt');
114
- const message = createMessage('git:unstage', { paths: ['newfile.txt'] });
115
- const response = await handler.handleMessage(message);
116
- expect(response.type).toBe('git:unstage:response');
117
- expect(response.payload.success).toBe(true);
118
- });
119
- });
120
- describe('handleMessage - git:commit', () => {
121
- it('should create commit successfully', async () => {
122
- await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
123
- await simpleGit(testRepoPath).add('newfile.txt');
124
- const message = createMessage('git:commit', { message: 'Test commit' });
125
- const response = await handler.handleMessage(message);
126
- expect(response.type).toBe('git:commit:response');
127
- expect(response.payload.success).toBe(true);
128
- expect(response.payload.hash).toBeDefined();
129
- });
130
- it('should create commit with description', async () => {
131
- await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
132
- await simpleGit(testRepoPath).add('newfile.txt');
133
- const message = createMessage('git:commit', {
134
- message: 'Title',
135
- description: 'Extended description',
136
- });
137
- const response = await handler.handleMessage(message);
138
- expect(response.type).toBe('git:commit:response');
139
- expect(response.payload.success).toBe(true);
140
- });
141
- it('should handle empty commit gracefully', async () => {
142
- const message = createMessage('git:commit', { message: 'Empty commit' });
143
- const response = await handler.handleMessage(message);
144
- // The behavior depends on git - it might succeed with empty commit or fail
145
- // We just verify it returns a proper response
146
- expect(response.type).toBe('git:commit:response');
147
- });
148
- });
149
- describe('handleMessage - git:log', () => {
150
- it('should return commit log', async () => {
151
- const message = createMessage('git:log', { limit: 10 });
152
- const response = await handler.handleMessage(message);
153
- expect(response.type).toBe('git:log:response');
154
- expect(response.id).toBe(message.id);
155
- const payload = response.payload;
156
- expect(Array.isArray(payload.commits)).toBe(true);
157
- expect(payload.commits.length).toBeGreaterThan(0);
158
- expect(payload.commits[0].message).toBe('Initial commit');
159
- });
160
- it('should use default limit when not specified', async () => {
161
- const message = createMessage('git:log', {});
162
- const response = await handler.handleMessage(message);
163
- expect(response.type).toBe('git:log:response');
164
- });
165
- });
166
- describe('handleMessage - git:branches', () => {
167
- it('should return branches', async () => {
168
- const message = createMessage('git:branches', {});
169
- const response = await handler.handleMessage(message);
170
- expect(response.type).toBe('git:branches:response');
171
- const payload = response.payload;
172
- expect(Array.isArray(payload.branches)).toBe(true);
173
- expect(payload.current).toBe(defaultBranch);
174
- });
175
- });
176
- describe('handleMessage - git:checkout', () => {
177
- it('should checkout existing branch', async () => {
178
- await simpleGit(testRepoPath).checkoutLocalBranch('feature');
179
- const message = createMessage('git:checkout', { branch: defaultBranch });
180
- const response = await handler.handleMessage(message);
181
- expect(response.type).toBe('git:checkout:response');
182
- expect(response.payload.success).toBe(true);
183
- });
184
- it('should create and checkout new branch', async () => {
185
- const message = createMessage('git:checkout', { branch: 'new-feature', create: true });
186
- const response = await handler.handleMessage(message);
187
- expect(response.type).toBe('git:checkout:response');
188
- expect(response.payload.success).toBe(true);
189
- // Verify branch was created
190
- const branchMsg = createMessage('git:branches', {});
191
- const branchResp = await handler.handleMessage(branchMsg);
192
- expect(branchResp.payload.current).toBe('new-feature');
193
- });
194
- it('should fail for non-existent branch', async () => {
195
- const message = createMessage('git:checkout', { branch: 'nonexistent' });
196
- const response = await handler.handleMessage(message);
197
- expect(response.type).toBe('git:checkout:response');
198
- expect(response.payload.success).toBe(false);
199
- });
200
- });
201
- describe('handleMessage - git:discard', () => {
202
- it('should discard changes', async () => {
203
- await writeFile(join(testRepoPath, 'README.md'), '# Modified\n');
204
- const message = createMessage('git:discard', { paths: ['README.md'] });
205
- const response = await handler.handleMessage(message);
206
- expect(response.type).toBe('git:discard:response');
207
- expect(response.payload.success).toBe(true);
208
- // Verify changes were discarded
209
- const statusMsg = createMessage('git:status', {});
210
- const statusResp = await handler.handleMessage(statusMsg);
211
- expect(statusResp.payload.unstaged).toHaveLength(0);
212
- });
213
- });
214
- describe('handleMessage - git:untrack', () => {
215
- it('should untrack a tracked file', async () => {
216
- const message = createMessage('git:untrack', { paths: ['README.md'] });
217
- const response = await handler.handleMessage(message);
218
- expect(response.type).toBe('git:untrack:response');
219
- expect(response.id).toBe(message.id);
220
- expect(response.payload.success).toBe(true);
221
- });
222
- });
223
- describe('handleMessage - git:gitignore-add', () => {
224
- it('should add a pattern to .gitignore', async () => {
225
- const message = createMessage('git:gitignore-add', { pattern: 'node_modules/' });
226
- const response = await handler.handleMessage(message);
227
- expect(response.type).toBe('git:gitignore-add:response');
228
- expect(response.payload.success).toBe(true);
229
- const content = await readFile(join(testRepoPath, '.gitignore'), 'utf-8');
230
- expect(content).toContain('node_modules/');
231
- });
232
- });
233
- describe('handleMessage - git:gitignore-read', () => {
234
- it('should read .gitignore content', async () => {
235
- await writeFile(join(testRepoPath, '.gitignore'), '*.log\n');
236
- const message = createMessage('git:gitignore-read', {});
237
- const response = await handler.handleMessage(message);
238
- expect(response.type).toBe('git:gitignore-read:response');
239
- expect(response.payload.content).toBe('*.log\n');
240
- expect(response.payload.exists).toBe(true);
241
- });
242
- it('should return empty when .gitignore does not exist', async () => {
243
- const message = createMessage('git:gitignore-read', {});
244
- const response = await handler.handleMessage(message);
245
- expect(response.payload.content).toBe('');
246
- expect(response.payload.exists).toBe(false);
247
- });
248
- });
249
- describe('handleMessage - git:gitignore-write', () => {
250
- it('should write .gitignore content', async () => {
251
- const message = createMessage('git:gitignore-write', { content: 'dist/\n*.log\n' });
252
- const response = await handler.handleMessage(message);
253
- expect(response.type).toBe('git:gitignore-write:response');
254
- expect(response.payload.success).toBe(true);
255
- const content = await readFile(join(testRepoPath, '.gitignore'), 'utf-8');
256
- expect(content).toBe('dist/\n*.log\n');
257
- });
258
- });
259
- describe('handleMessage - unknown type', () => {
260
- it('should return error for unknown message type', async () => {
261
- const message = createMessage('unknown:type', {});
262
- const response = await handler.handleMessage(message);
263
- expect(response.type).toBe('error');
264
- expect(response.payload.code).toBe('UNKNOWN_MESSAGE_TYPE');
265
- });
266
- });
267
- describe('handleMessage - error handling', () => {
268
- it('should preserve message ID in responses', async () => {
269
- const message = createMessage('ping', {});
270
- message.id = 'custom-id-123';
271
- const response = await handler.handleMessage(message);
272
- // pong doesn't preserve ID in current implementation
273
- // but status and other git ops should
274
- expect(response).toBeDefined();
275
- });
276
- });
277
- describe('multi-client support', () => {
278
- const clientA = 'pwa:clientA';
279
- const clientB = 'pwa:clientB';
280
- let secondRepoPath;
281
- beforeEach(async () => {
282
- // Create a second repo for multi-repo tests
283
- secondRepoPath = join(tmpdir(), `quicksave-handler-test2-${Date.now()}-${Math.random().toString(36).slice(2)}`);
284
- await mkdir(secondRepoPath, { recursive: true });
285
- const git2 = simpleGit(secondRepoPath);
286
- await git2.init();
287
- await git2.addConfig('user.email', 'test@test.com');
288
- await git2.addConfig('user.name', 'Test User');
289
- await writeFile(join(secondRepoPath, 'README.md'), '# Second Repo\n');
290
- await git2.add('README.md');
291
- await git2.commit('Initial commit');
292
- // Recreate handler with two repos
293
- handler = new MessageHandler([
294
- { path: testRepoPath, name: 'test-repo' },
295
- { path: secondRepoPath, name: 'second-repo' },
296
- ]);
297
- });
298
- afterEach(async () => {
299
- try {
300
- await rm(secondRepoPath, { recursive: true, force: true });
301
- }
302
- catch {
303
- // Ignore
304
- }
305
- });
306
- it('should isolate repo context per client', async () => {
307
- // Client A switches to second repo
308
- const switchMsg = createMessage('agent:switch-repo', { path: secondRepoPath });
309
- const switchResp = await handler.handleMessage(switchMsg, clientA);
310
- expect(switchResp.payload.success).toBe(true);
311
- // Client B should still be on default repo
312
- const listMsgB = createMessage('agent:list-repos', {});
313
- const listRespB = await handler.handleMessage(listMsgB, clientB);
314
- expect(listRespB.payload.current).toBe(testRepoPath);
315
- });
316
- it('should return per-client current repo in list-repos', async () => {
317
- // Client A switches to second repo
318
- const switchMsg = createMessage('agent:switch-repo', { path: secondRepoPath });
319
- await handler.handleMessage(switchMsg, clientA);
320
- // Client A's list-repos should show second repo as current
321
- const listMsgA = createMessage('agent:list-repos', {});
322
- const listRespA = await handler.handleMessage(listMsgA, clientA);
323
- expect(listRespA.payload.current).toBe(secondRepoPath);
324
- // Client B's list-repos should show first repo as current
325
- const listMsgB = createMessage('agent:list-repos', {});
326
- const listRespB = await handler.handleMessage(listMsgB, clientB);
327
- expect(listRespB.payload.current).toBe(testRepoPath);
328
- });
329
- it('should return per-client repo path in handshake', async () => {
330
- // Client A switches repo
331
- const switchMsg = createMessage('agent:switch-repo', { path: secondRepoPath });
332
- await handler.handleMessage(switchMsg, clientA);
333
- // Client B handshake should return default repo
334
- const handshakeMsg = createMessage('handshake', { publicKey: 'test-key' });
335
- const handshakeResp = await handler.handleMessage(handshakeMsg, clientB);
336
- expect(handshakeResp.payload.repoPath).toBe(testRepoPath);
337
- });
338
- it('should clean up client state on removeClient', async () => {
339
- // Client A switches repo
340
- const switchMsg = createMessage('agent:switch-repo', { path: secondRepoPath });
341
- await handler.handleMessage(switchMsg, clientA);
342
- // Remove client A
343
- handler.removeClient(clientA);
344
- // Client A reconnecting should get default repo again
345
- const listMsg = createMessage('agent:list-repos', {});
346
- const listResp = await handler.handleMessage(listMsg, clientA);
347
- expect(listResp.payload.current).toBe(testRepoPath);
348
- });
349
- it('should allow sequential mutating ops from different clients', async () => {
350
- await writeFile(join(testRepoPath, 'file1.txt'), 'content1');
351
- await writeFile(join(testRepoPath, 'file2.txt'), 'content2');
352
- const stageMsg1 = createMessage('git:stage', { paths: ['file1.txt'] });
353
- const resp1 = await handler.handleMessage(stageMsg1, clientA);
354
- expect(resp1.payload.success).toBe(true);
355
- const stageMsg2 = createMessage('git:stage', { paths: ['file2.txt'] });
356
- const resp2 = await handler.handleMessage(stageMsg2, clientB);
357
- expect(resp2.payload.success).toBe(true);
358
- });
359
- });
360
- });
361
- //# sourceMappingURL=messageHandler.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageHandler.test.js","sourceRoot":"","sources":["../../src/handlers/messageHandler.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ipc.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ipc.test.d.ts","sourceRoot":"","sources":["../../src/service/ipc.test.ts"],"names":[],"mappings":""}
@@ -1,140 +0,0 @@
1
- import { describe, it, expect, afterEach } from 'vitest';
2
- import { join } from 'path';
3
- import { tmpdir } from 'os';
4
- import { mkdtempSync, rmSync } from 'fs';
5
- import { IpcServer } from './ipcServer.js';
6
- import { IpcClient } from './ipcClient.js';
7
- function makeTmpDir() {
8
- return mkdtempSync(join(tmpdir(), 'qs-ipc-test-'));
9
- }
10
- describe('IPC Server + Client', () => {
11
- let tmpDir;
12
- let server;
13
- const clients = [];
14
- afterEach(async () => {
15
- for (const c of clients)
16
- c.close();
17
- clients.length = 0;
18
- if (server)
19
- await server.close();
20
- if (tmpDir) {
21
- try {
22
- rmSync(tmpDir, { recursive: true, force: true });
23
- }
24
- catch { /* ignore */ }
25
- }
26
- });
27
- function socketPath() {
28
- tmpDir = makeTmpDir();
29
- return join(tmpDir, 'test.sock');
30
- }
31
- async function createServer() {
32
- const sock = socketPath();
33
- server = new IpcServer({ version: '0.6.0' });
34
- await server.listen(sock);
35
- return sock;
36
- }
37
- async function createClient(sock) {
38
- const client = new IpcClient();
39
- const hello = await client.connect(sock);
40
- clients.push(client);
41
- return { client, hello };
42
- }
43
- it('hello handshake returns daemon version info', async () => {
44
- const sock = await createServer();
45
- const { hello } = await createClient(sock);
46
- expect(hello.daemonVersion).toBe('0.6.0');
47
- expect(hello.daemonIpcVersion).toBe(1);
48
- expect(hello.daemonPid).toBe(process.pid);
49
- expect(typeof hello.daemonBuildId).toBe('string');
50
- });
51
- it('ping returns uptime and version', async () => {
52
- const sock = await createServer();
53
- const { client } = await createClient(sock);
54
- const result = await client.request('ping');
55
- expect(result.version).toBe('0.6.0');
56
- expect(result.ipcVersion).toBe(1);
57
- expect(typeof result.uptime).toBe('number');
58
- expect(result.uptime).toBeGreaterThanOrEqual(0);
59
- });
60
- it('status returns daemon status summary', async () => {
61
- const sock = await createServer();
62
- const { client } = await createClient(sock);
63
- const result = await client.request('status');
64
- expect(result.pid).toBe(process.pid);
65
- expect(result.version).toBe('0.6.0');
66
- expect(typeof result.uptime).toBe('number');
67
- expect(result.connectionState).toBe('disconnected');
68
- expect(result.peerCount).toBe(0);
69
- });
70
- it('unknown method returns error', async () => {
71
- const sock = await createServer();
72
- const { client } = await createClient(sock);
73
- await expect(client.request('nonexistent')).rejects.toThrow('Method not found');
74
- });
75
- it('custom method handler works', async () => {
76
- const sock = await createServer();
77
- server.registerMethod('echo', (params) => ({ echoed: params }));
78
- const { client } = await createClient(sock);
79
- const result = await client.request('echo', { message: 'hello' });
80
- expect(result.echoed).toEqual({ message: 'hello' });
81
- });
82
- it('multiple clients can connect', async () => {
83
- const sock = await createServer();
84
- const { client: c1 } = await createClient(sock);
85
- const { client: c2 } = await createClient(sock);
86
- const r1 = await c1.request('ping');
87
- const r2 = await c2.request('ping');
88
- expect(r1.version).toBe('0.6.0');
89
- expect(r2.version).toBe('0.6.0');
90
- expect(server.getClientCount()).toBe(2);
91
- });
92
- it('subscribe-events enables notifications', async () => {
93
- const sock = await createServer();
94
- const { client } = await createClient(sock);
95
- const received = [];
96
- client.onNotification((method, params) => {
97
- received.push({ method, params });
98
- });
99
- await client.request('subscribe-events');
100
- // Broadcast a notification
101
- server.broadcast({
102
- jsonrpc: '2.0',
103
- method: 'event.test',
104
- params: { foo: 'bar' },
105
- });
106
- // Give the event a moment to arrive
107
- await new Promise((r) => setTimeout(r, 50));
108
- expect(received.length).toBe(1);
109
- expect(received[0].method).toBe('event.test');
110
- expect(received[0].params).toEqual({ foo: 'bar' });
111
- });
112
- it('shutdown request triggers shutdown event', async () => {
113
- const sock = await createServer();
114
- const { client } = await createClient(sock);
115
- let shutdownRequested = false;
116
- server.on('shutdown-requested', () => {
117
- shutdownRequested = true;
118
- });
119
- const result = await client.request('shutdown');
120
- expect(result.ok).toBe(true);
121
- // Wait for nextTick
122
- await new Promise((r) => setTimeout(r, 10));
123
- expect(shutdownRequested).toBe(true);
124
- });
125
- it('client disconnect is detected by server', async () => {
126
- const sock = await createServer();
127
- const { client } = await createClient(sock);
128
- expect(server.getClientCount()).toBe(1);
129
- let disconnected = false;
130
- server.on('client-disconnected', () => {
131
- disconnected = true;
132
- });
133
- client.close();
134
- // Wait for the close event to propagate
135
- await new Promise((r) => setTimeout(r, 50));
136
- expect(server.getClientCount()).toBe(0);
137
- expect(disconnected).toBe(true);
138
- });
139
- });
140
- //# sourceMappingURL=ipc.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ipc.test.js","sourceRoot":"","sources":["../../src/service/ipc.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=singleton.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.test.d.ts","sourceRoot":"","sources":["../../src/service/singleton.test.ts"],"names":[],"mappings":""}