@sumicom/quicksave 0.6.1 → 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.
- package/dist/ai/cardBuilder.d.ts +14 -3
- package/dist/ai/cardBuilder.d.ts.map +1 -1
- package/dist/ai/cardBuilder.js +219 -66
- package/dist/ai/cardBuilder.js.map +1 -1
- package/dist/ai/claudeCliProvider.d.ts +2 -0
- package/dist/ai/claudeCliProvider.d.ts.map +1 -1
- package/dist/ai/claudeCliProvider.js +81 -20
- package/dist/ai/claudeCliProvider.js.map +1 -1
- package/dist/ai/claudeCodeProvider.d.ts +18 -0
- package/dist/ai/claudeCodeProvider.d.ts.map +1 -0
- package/dist/ai/claudeCodeProvider.js +30 -0
- package/dist/ai/claudeCodeProvider.js.map +1 -0
- package/dist/ai/claudeSdkProvider.d.ts +2 -0
- package/dist/ai/claudeSdkProvider.d.ts.map +1 -1
- package/dist/ai/claudeSdkProvider.js +13 -3
- package/dist/ai/claudeSdkProvider.js.map +1 -1
- package/dist/ai/codexMcpProvider.d.ts +15 -0
- package/dist/ai/codexMcpProvider.d.ts.map +1 -0
- package/dist/ai/codexMcpProvider.js +442 -0
- package/dist/ai/codexMcpProvider.js.map +1 -0
- package/dist/ai/codexSdkProvider.d.ts +35 -0
- package/dist/ai/codexSdkProvider.d.ts.map +1 -0
- package/dist/ai/codexSdkProvider.js +422 -0
- package/dist/ai/codexSdkProvider.js.map +1 -0
- package/dist/ai/debugLogger.d.ts +24 -0
- package/dist/ai/debugLogger.d.ts.map +1 -0
- package/dist/ai/debugLogger.js +55 -0
- package/dist/ai/debugLogger.js.map +1 -0
- package/dist/ai/provider.d.ts +4 -1
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/sessionManager.d.ts +13 -8
- package/dist/ai/sessionManager.d.ts.map +1 -1
- package/dist/ai/sessionManager.js +148 -27
- package/dist/ai/sessionManager.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/connection/connection.d.ts +1 -0
- package/dist/connection/connection.d.ts.map +1 -1
- package/dist/connection/connection.js +19 -1
- package/dist/connection/connection.js.map +1 -1
- package/dist/git/operations.d.ts +20 -0
- package/dist/git/operations.d.ts.map +1 -1
- package/dist/git/operations.js +52 -0
- package/dist/git/operations.js.map +1 -1
- package/dist/handlers/messageHandler.d.ts +16 -0
- package/dist/handlers/messageHandler.d.ts.map +1 -1
- package/dist/handlers/messageHandler.js +289 -19
- package/dist/handlers/messageHandler.js.map +1 -1
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/service/debugHttpServer.d.ts +27 -0
- package/dist/service/debugHttpServer.d.ts.map +1 -0
- package/dist/service/debugHttpServer.js +189 -0
- package/dist/service/debugHttpServer.js.map +1 -0
- package/dist/service/ipcClient.js +1 -1
- package/dist/service/run.d.ts.map +1 -1
- package/dist/service/run.js +21 -1
- package/dist/service/run.js.map +1 -1
- package/package.json +4 -2
- package/dist/ai/asyncQueue.test.d.ts +0 -2
- package/dist/ai/asyncQueue.test.d.ts.map +0 -1
- package/dist/ai/asyncQueue.test.js +0 -56
- package/dist/ai/asyncQueue.test.js.map +0 -1
- package/dist/ai/sessionStore.test.d.ts +0 -2
- package/dist/ai/sessionStore.test.d.ts.map +0 -1
- package/dist/ai/sessionStore.test.js +0 -99
- package/dist/ai/sessionStore.test.js.map +0 -1
- package/dist/connection/pubsub.test.d.ts +0 -2
- package/dist/connection/pubsub.test.d.ts.map +0 -1
- package/dist/connection/pubsub.test.js +0 -96
- package/dist/connection/pubsub.test.js.map +0 -1
- package/dist/git/operations.test.d.ts +0 -2
- package/dist/git/operations.test.d.ts.map +0 -1
- package/dist/git/operations.test.js +0 -300
- package/dist/git/operations.test.js.map +0 -1
- package/dist/handlers/messageHandler.test.d.ts +0 -2
- package/dist/handlers/messageHandler.test.d.ts.map +0 -1
- package/dist/handlers/messageHandler.test.js +0 -361
- package/dist/handlers/messageHandler.test.js.map +0 -1
- package/dist/service/ipc.test.d.ts +0 -2
- package/dist/service/ipc.test.d.ts.map +0 -1
- package/dist/service/ipc.test.js +0 -140
- package/dist/service/ipc.test.js.map +0 -1
- package/dist/service/singleton.test.d.ts +0 -2
- package/dist/service/singleton.test.d.ts.map +0 -1
- package/dist/service/singleton.test.js +0 -39
- package/dist/service/singleton.test.js.map +0 -1
|
@@ -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.1');
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.test.d.ts","sourceRoot":"","sources":["../../src/service/ipc.test.ts"],"names":[],"mappings":""}
|
package/dist/service/ipc.test.js
DELETED
|
@@ -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.1' });
|
|
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.1');
|
|
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.1');
|
|
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.1');
|
|
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.1');
|
|
89
|
-
expect(r2.version).toBe('0.6.1');
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,SAAS,UAAU;IACjB,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,MAAc,CAAC;IACnB,IAAI,MAAiB,CAAC;IACtB,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,UAAU;QACjB,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,IAAY;QACtC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAM,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAM,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAEhE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAM,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,CAAM,MAAM,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,CAAM,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEzC,2BAA2B;QAC3B,MAAM,CAAC,SAAS,CAAC;YACf,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACvB,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACnC,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAM,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,oBAAoB;QACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACpC,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,wCAAwC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.test.d.ts","sourceRoot":"","sources":["../../src/service/singleton.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { isProcessAlive } from './singleton.js';
|
|
3
|
-
import { shouldRestartDaemon, IPC_VERSION, BUILD_ID } from './types.js';
|
|
4
|
-
describe('isProcessAlive', () => {
|
|
5
|
-
it('returns true for the current process', () => {
|
|
6
|
-
expect(isProcessAlive(process.pid)).toBe(true);
|
|
7
|
-
});
|
|
8
|
-
it('returns false for a non-existent PID', () => {
|
|
9
|
-
// PID 99999999 is extremely unlikely to exist
|
|
10
|
-
expect(isProcessAlive(99999999)).toBe(false);
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe('shouldRestartDaemon', () => {
|
|
14
|
-
const makeDaemon = (overrides = {}) => ({
|
|
15
|
-
daemonVersion: '0.6.1',
|
|
16
|
-
daemonIpcVersion: IPC_VERSION,
|
|
17
|
-
daemonBuildId: BUILD_ID,
|
|
18
|
-
daemonPid: 12345,
|
|
19
|
-
...overrides,
|
|
20
|
-
});
|
|
21
|
-
it('returns ok when versions match', () => {
|
|
22
|
-
const result = shouldRestartDaemon(makeDaemon(), { ipcVersion: IPC_VERSION, buildId: BUILD_ID });
|
|
23
|
-
expect(result.action).toBe('ok');
|
|
24
|
-
});
|
|
25
|
-
it('returns restart when daemon ipcVersion is lower', () => {
|
|
26
|
-
const result = shouldRestartDaemon(makeDaemon({ daemonIpcVersion: 0 }), { ipcVersion: IPC_VERSION, buildId: BUILD_ID });
|
|
27
|
-
expect(result.action).toBe('restart');
|
|
28
|
-
});
|
|
29
|
-
it('returns warn_outdated when CLI ipcVersion is lower', () => {
|
|
30
|
-
const result = shouldRestartDaemon(makeDaemon({ daemonIpcVersion: 99 }), { ipcVersion: IPC_VERSION, buildId: BUILD_ID });
|
|
31
|
-
expect(result.action).toBe('warn_outdated');
|
|
32
|
-
});
|
|
33
|
-
it('returns restart when buildId differs in dev mode', () => {
|
|
34
|
-
// In dev mode, BUILD_ID starts with 'dev-' so isDev() returns true
|
|
35
|
-
const result = shouldRestartDaemon(makeDaemon({ daemonBuildId: 'dev-aaa111bbb222' }), { ipcVersion: IPC_VERSION, buildId: 'dev-ccc333ddd444' });
|
|
36
|
-
expect(result.action).toBe('restart');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=singleton.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.test.js","sourceRoot":"","sources":["../../src/service/singleton.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGxE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,8CAA8C;QAC9C,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,UAAU,GAAG,CAAC,YAAkC,EAAE,EAAe,EAAE,CAAC,CAAC;QACzE,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE,WAAW;QAC7B,aAAa,EAAE,QAAQ;QACvB,SAAS,EAAE,KAAK;QAChB,GAAG,SAAS;KACb,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,mBAAmB,CAChC,UAAU,EAAE,EACZ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAC/C,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,mBAAmB,CAChC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,EACnC,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAC/C,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,mBAAmB,CAChC,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,EACpC,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAC/C,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,mEAAmE;QACnE,MAAM,MAAM,GAAG,mBAAmB,CAChC,UAAU,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,EACjD,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,CACzD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|