ultraclaude-agent 0.0.16 → 0.0.18

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.
@@ -86,6 +86,15 @@ vi.mock('../src/usage-sync.js', () => ({
86
86
  }),
87
87
  }));
88
88
 
89
+ // Mock socket-client
90
+ vi.mock('../src/socket-client.js', () => ({
91
+ init: vi.fn(),
92
+ addAccount: vi.fn(),
93
+ removeAccount: vi.fn(),
94
+ disconnectAll: vi.fn(),
95
+ getConnectedUserIds: vi.fn().mockReturnValue([]),
96
+ }));
97
+
89
98
  // Mock logger
90
99
  vi.mock('../src/logger.js', () => ({
91
100
  logger: {
@@ -84,6 +84,15 @@ vi.mock('../src/usage-sync.js', () => ({
84
84
  }),
85
85
  }));
86
86
 
87
+ // Mock socket-client
88
+ vi.mock('../src/socket-client.js', () => ({
89
+ init: vi.fn(),
90
+ addAccount: vi.fn(),
91
+ removeAccount: vi.fn(),
92
+ disconnectAll: vi.fn(),
93
+ getConnectedUserIds: vi.fn().mockReturnValue([]),
94
+ }));
95
+
87
96
  // Mock logger
88
97
  vi.mock('../src/logger.js', () => ({
89
98
  logger: {
@@ -0,0 +1,210 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+
3
+ // Mock socket.io-client
4
+ const mockOn = vi.fn().mockReturnThis();
5
+ const mockDisconnect = vi.fn().mockReturnThis();
6
+ const mockSocket = {
7
+ on: mockOn,
8
+ disconnect: mockDisconnect,
9
+ id: 'mock-socket-id',
10
+ connected: true,
11
+ };
12
+ const mockIo = vi.fn().mockReturnValue(mockSocket);
13
+
14
+ vi.mock('socket.io-client', () => ({
15
+ io: (...args: unknown[]) => mockIo(...args),
16
+ }));
17
+
18
+ // Mock logger
19
+ vi.mock('../src/logger.js', () => ({
20
+ logger: {
21
+ child: () => ({
22
+ info: vi.fn(),
23
+ warn: vi.fn(),
24
+ error: vi.fn(),
25
+ debug: vi.fn(),
26
+ }),
27
+ info: vi.fn(),
28
+ warn: vi.fn(),
29
+ error: vi.fn(),
30
+ debug: vi.fn(),
31
+ },
32
+ }));
33
+
34
+ describe('socket-client', () => {
35
+ beforeEach(() => {
36
+ vi.clearAllMocks();
37
+ // Each test gets a fresh socket mock
38
+ mockIo.mockReturnValue({
39
+ on: mockOn,
40
+ disconnect: mockDisconnect,
41
+ id: 'mock-socket-id',
42
+ connected: true,
43
+ });
44
+ });
45
+
46
+ // Re-import module fresh for each describe block to reset module state
47
+ async function loadModule() {
48
+ vi.resetModules();
49
+ return import('../src/socket-client.js');
50
+ }
51
+
52
+ describe('init', () => {
53
+ it('creates one socket per credential entry', async () => {
54
+ const mod = await loadModule();
55
+ const creds = new Map([
56
+ ['user-1', { apiKey: 'key-1' }],
57
+ ['user-2', { apiKey: 'key-2' }],
58
+ ]);
59
+
60
+ mod.init('http://localhost:3000', creds);
61
+
62
+ expect(mockIo).toHaveBeenCalledTimes(2);
63
+ expect(mockIo).toHaveBeenCalledWith('http://localhost:3000', {
64
+ transports: ['websocket'],
65
+ path: '/socket.io',
66
+ auth: { token: 'key-1' },
67
+ forceNew: true,
68
+ });
69
+ expect(mockIo).toHaveBeenCalledWith('http://localhost:3000', {
70
+ transports: ['websocket'],
71
+ path: '/socket.io',
72
+ auth: { token: 'key-2' },
73
+ forceNew: true,
74
+ });
75
+ });
76
+
77
+ it('is idempotent — disconnects existing sockets before creating new ones', async () => {
78
+ const mod = await loadModule();
79
+
80
+ // First init
81
+ mod.init('http://localhost:3000', new Map([['user-1', { apiKey: 'key-1' }]]));
82
+ expect(mockIo).toHaveBeenCalledTimes(1);
83
+
84
+ // Second init — should disconnect first socket, then create new one
85
+ mod.init('http://localhost:3000', new Map([['user-1', { apiKey: 'key-new' }]]));
86
+ expect(mockDisconnect).toHaveBeenCalled();
87
+ expect(mockIo).toHaveBeenCalledTimes(2);
88
+ });
89
+
90
+ it('registers connect, disconnect, and connect_error handlers', async () => {
91
+ const mod = await loadModule();
92
+ mod.init('http://localhost:3000', new Map([['user-1', { apiKey: 'key-1' }]]));
93
+
94
+ const registeredEvents = mockOn.mock.calls.map((call: unknown[]) => call[0]);
95
+ expect(registeredEvents).toContain('connect');
96
+ expect(registeredEvents).toContain('disconnect');
97
+ expect(registeredEvents).toContain('connect_error');
98
+ });
99
+ });
100
+
101
+ describe('addAccount', () => {
102
+ it('creates a new connection', async () => {
103
+ const mod = await loadModule();
104
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-1');
105
+
106
+ expect(mockIo).toHaveBeenCalledTimes(1);
107
+ expect(mockIo).toHaveBeenCalledWith('http://localhost:3000', {
108
+ transports: ['websocket'],
109
+ path: '/socket.io',
110
+ auth: { token: 'key-1' },
111
+ forceNew: true,
112
+ });
113
+ expect(mod.getConnectedUserIds()).toEqual(['user-1']);
114
+ });
115
+
116
+ it('disconnects existing socket before replacing with new one', async () => {
117
+ const firstSocket = {
118
+ on: vi.fn().mockReturnThis(),
119
+ disconnect: vi.fn().mockReturnThis(),
120
+ id: 'first-socket',
121
+ connected: true,
122
+ };
123
+ const secondSocket = {
124
+ on: vi.fn().mockReturnThis(),
125
+ disconnect: vi.fn().mockReturnThis(),
126
+ id: 'second-socket',
127
+ connected: true,
128
+ };
129
+ mockIo.mockReturnValueOnce(firstSocket).mockReturnValueOnce(secondSocket);
130
+
131
+ const mod = await loadModule();
132
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-1');
133
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-new');
134
+
135
+ expect(firstSocket.disconnect).toHaveBeenCalled();
136
+ expect(mockIo).toHaveBeenCalledTimes(2);
137
+ expect(mod.getConnectedUserIds()).toEqual(['user-1']);
138
+ });
139
+ });
140
+
141
+ describe('removeAccount', () => {
142
+ it('disconnects and removes socket', async () => {
143
+ const socket = {
144
+ on: vi.fn().mockReturnThis(),
145
+ disconnect: vi.fn().mockReturnThis(),
146
+ id: 'socket-1',
147
+ connected: true,
148
+ };
149
+ mockIo.mockReturnValue(socket);
150
+
151
+ const mod = await loadModule();
152
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-1');
153
+ expect(mod.getConnectedUserIds()).toEqual(['user-1']);
154
+
155
+ mod.removeAccount('user-1');
156
+ expect(socket.disconnect).toHaveBeenCalled();
157
+ expect(mod.getConnectedUserIds()).toEqual([]);
158
+ });
159
+
160
+ it('is a no-op for unknown userId', async () => {
161
+ const mod = await loadModule();
162
+ mod.removeAccount('nonexistent');
163
+ expect(mod.getConnectedUserIds()).toEqual([]);
164
+ });
165
+ });
166
+
167
+ describe('disconnectAll', () => {
168
+ it('disconnects all sockets and clears the map', async () => {
169
+ const socket1 = {
170
+ on: vi.fn().mockReturnThis(),
171
+ disconnect: vi.fn().mockReturnThis(),
172
+ id: 'socket-1',
173
+ };
174
+ const socket2 = {
175
+ on: vi.fn().mockReturnThis(),
176
+ disconnect: vi.fn().mockReturnThis(),
177
+ id: 'socket-2',
178
+ };
179
+ mockIo.mockReturnValueOnce(socket1).mockReturnValueOnce(socket2);
180
+
181
+ const mod = await loadModule();
182
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-1');
183
+ mod.addAccount('http://localhost:3000', 'user-2', 'key-2');
184
+ expect(mod.getConnectedUserIds()).toHaveLength(2);
185
+
186
+ mod.disconnectAll();
187
+ expect(socket1.disconnect).toHaveBeenCalled();
188
+ expect(socket2.disconnect).toHaveBeenCalled();
189
+ expect(mod.getConnectedUserIds()).toEqual([]);
190
+ });
191
+ });
192
+
193
+ describe('getConnectedUserIds', () => {
194
+ it('returns empty array when no sockets exist', async () => {
195
+ const mod = await loadModule();
196
+ expect(mod.getConnectedUserIds()).toEqual([]);
197
+ });
198
+
199
+ it('returns all user IDs with active socket entries', async () => {
200
+ const mod = await loadModule();
201
+ mod.addAccount('http://localhost:3000', 'user-1', 'key-1');
202
+ mod.addAccount('http://localhost:3000', 'user-2', 'key-2');
203
+
204
+ const ids = mod.getConnectedUserIds();
205
+ expect(ids).toHaveLength(2);
206
+ expect(ids).toContain('user-1');
207
+ expect(ids).toContain('user-2');
208
+ });
209
+ });
210
+ });
@@ -0,0 +1,242 @@
1
+ /**
2
+ * B-001 regression test: Section reordering triggers sync push with updated positions.
3
+ *
4
+ * When sections are reordered in a markdown file (positions change but content stays
5
+ * the same), the diff logic must detect the position change and push the updated sections.
6
+ */
7
+
8
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
9
+ import { join } from 'node:path';
10
+ import { mkdtemp, writeFile, mkdir, rm } from 'node:fs/promises';
11
+ import { tmpdir } from 'node:os';
12
+
13
+ // Mock fetch globally
14
+ const mockFetch = vi.fn();
15
+ vi.stubGlobal('fetch', mockFetch);
16
+
17
+ // Mock config module
18
+ vi.mock('../src/config.js', () => ({
19
+ loadCredentials: vi.fn().mockResolvedValue({
20
+ apiKey: 'test-api-key',
21
+ userId: 'test-user',
22
+ serverUrl: 'http://localhost:3000',
23
+ }),
24
+ getServerUrl: vi.fn().mockReturnValue('http://localhost:3000'),
25
+ getProjectId: vi.fn().mockResolvedValue('test-project-id'),
26
+ writeProjectId: vi.fn().mockResolvedValue(undefined),
27
+ paths: {
28
+ claudeProjects: '/tmp/test-claude-projects',
29
+ projectIdFile: '.claude/ultra/project-id',
30
+ oldConfigDir: '/tmp/test-old-config',
31
+ },
32
+ }));
33
+
34
+ // Mock logger
35
+ vi.mock('../src/logger.js', () => ({
36
+ logger: {
37
+ child: () => ({
38
+ info: vi.fn(),
39
+ warn: vi.fn(),
40
+ error: vi.fn(),
41
+ debug: vi.fn(),
42
+ }),
43
+ info: vi.fn(),
44
+ warn: vi.fn(),
45
+ error: vi.fn(),
46
+ debug: vi.fn(),
47
+ },
48
+ }));
49
+
50
+ const testCreds = { apiKey: 'test-api-key', userId: 'test-user', serverUrl: 'http://localhost:3000' };
51
+
52
+ describe('B-001 regression — section reordering triggers sync push', () => {
53
+ let tempDir: string;
54
+
55
+ beforeEach(async () => {
56
+ vi.resetModules();
57
+ mockFetch.mockReset();
58
+ tempDir = await mkdtemp(join(tmpdir(), 'agent-reorder-test-'));
59
+ await mkdir(join(tempDir, 'documentation'), { recursive: true });
60
+ });
61
+
62
+ afterEach(async () => {
63
+ await rm(tempDir, { recursive: true, force: true });
64
+ });
65
+
66
+ it('pushes sections with updated positions when sections are reordered', async () => {
67
+ const { syncMarkdownFile } = await import('../src/sync.js');
68
+
69
+ const filePath = join(tempDir, 'documentation', 'test.md');
70
+
71
+ // Step 1: Initial push with sections A, B, C at positions 0, 1, 2
72
+ const initialContent = '# A\n\nContent A.\n\n# B\n\nContent B.\n\n# C\n\nContent C.';
73
+ await writeFile(filePath, initialContent);
74
+
75
+ // First call pushes all sections (cache is empty)
76
+ mockFetch.mockResolvedValueOnce({
77
+ ok: true,
78
+ json: async () => ({ data: { upserted: 3 } }),
79
+ });
80
+
81
+ const firstCount = await syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
82
+ expect(firstCount).toBe(3);
83
+
84
+ // Verify positions in first push
85
+ const firstPostCall = mockFetch.mock.calls.find(
86
+ (call: unknown[]) =>
87
+ (call[1] as { method: string }).method === 'POST' &&
88
+ (call[0] as string).includes('/api/sync/sections'),
89
+ );
90
+ expect(firstPostCall).toBeDefined();
91
+ const firstBody = JSON.parse((firstPostCall![1] as { body: string }).body);
92
+ expect(firstBody.sections).toHaveLength(3);
93
+ expect(firstBody.sections[0].slug).toBe('a');
94
+ expect(firstBody.sections[0].position).toBe(0);
95
+ expect(firstBody.sections[1].slug).toBe('b');
96
+ expect(firstBody.sections[1].position).toBe(1);
97
+ expect(firstBody.sections[2].slug).toBe('c');
98
+ expect(firstBody.sections[2].position).toBe(2);
99
+
100
+ mockFetch.mockReset();
101
+
102
+ // Step 2: Reorder sections to B, A, C (same content, different positions)
103
+ const reorderedContent = '# B\n\nContent B.\n\n# A\n\nContent A.\n\n# C\n\nContent C.';
104
+ await writeFile(filePath, reorderedContent);
105
+
106
+ mockFetch.mockResolvedValueOnce({
107
+ ok: true,
108
+ json: async () => ({ data: { upserted: 2 } }),
109
+ });
110
+
111
+ const secondCount = await syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
112
+
113
+ // Step 3: Assert the second call pushes sections with updated positions
114
+ // B moved from position 1 → 0, A moved from position 0 → 1
115
+ // C stayed at position 2 — should NOT be pushed
116
+ expect(secondCount).toBe(2);
117
+
118
+ const secondPostCall = mockFetch.mock.calls.find(
119
+ (call: unknown[]) =>
120
+ (call[1] as { method: string }).method === 'POST' &&
121
+ (call[0] as string).includes('/api/sync/sections'),
122
+ );
123
+ expect(secondPostCall).toBeDefined();
124
+ const secondBody = JSON.parse((secondPostCall![1] as { body: string }).body);
125
+
126
+ // Only A and B should be pushed (position changed), not C
127
+ expect(secondBody.sections).toHaveLength(2);
128
+
129
+ const pushedSlugs = secondBody.sections.map((s: { slug: string }) => s.slug).sort();
130
+ expect(pushedSlugs).toEqual(['a', 'b']);
131
+
132
+ // Verify the pushed positions are correct
133
+ const sectionA = secondBody.sections.find((s: { slug: string }) => s.slug === 'a');
134
+ const sectionB = secondBody.sections.find((s: { slug: string }) => s.slug === 'b');
135
+ expect(sectionB.position).toBe(0); // B is now first
136
+ expect(sectionA.position).toBe(1); // A is now second
137
+ });
138
+
139
+ it('does not push sections when neither content nor position changed', async () => {
140
+ const { syncMarkdownFile } = await import('../src/sync.js');
141
+
142
+ const filePath = join(tempDir, 'documentation', 'test.md');
143
+ const content = '# A\n\nContent A.\n\n# B\n\nContent B.';
144
+ await writeFile(filePath, content);
145
+
146
+ // First push
147
+ mockFetch.mockResolvedValueOnce({
148
+ ok: true,
149
+ json: async () => ({ data: { upserted: 2 } }),
150
+ });
151
+ await syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
152
+ mockFetch.mockReset();
153
+
154
+ // Second push — same content, same order
155
+ const secondCount = await syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
156
+
157
+ // No sections changed — no POST should be made
158
+ expect(secondCount).toBe(0);
159
+ expect(mockFetch).not.toHaveBeenCalled();
160
+ });
161
+
162
+ it('manifest load → first sync (no push, positions populated) → reorder detected', async () => {
163
+ // This is the critical B-001 scenario:
164
+ // 1. Daemon starts, loads manifest (hashes only, no positions)
165
+ // 2. First sync: content unchanged → no push, but positions must be populated
166
+ // 3. User reorders sections → position change detected → push triggered
167
+
168
+ const filePath = join(tempDir, 'documentation', 'test.md');
169
+ const content = '# A\n\nContent A.\n\n# B\n\nContent B.';
170
+ await writeFile(filePath, content);
171
+
172
+ // Step 0: Compute real content hashes by doing a throwaway sync in an isolated module
173
+ vi.resetModules();
174
+ const probe = await import('../src/sync.js');
175
+ mockFetch.mockResolvedValueOnce({
176
+ ok: true,
177
+ json: async () => ({ data: { upserted: 2 } }),
178
+ });
179
+ await probe.syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
180
+ const probeCall = mockFetch.mock.calls.find(
181
+ (call: unknown[]) =>
182
+ (call[1] as { method: string }).method === 'POST' &&
183
+ (call[0] as string).includes('/api/sync/sections'),
184
+ );
185
+ const probeBody = JSON.parse((probeCall![1] as { body: string }).body);
186
+ const hashA = probeBody.sections.find((s: { slug: string }) => s.slug === 'a').content_hash;
187
+ const hashB = probeBody.sections.find((s: { slug: string }) => s.slug === 'b').content_hash;
188
+
189
+ // Step 1: Fresh daemon startup — load manifest with real hashes
190
+ mockFetch.mockReset();
191
+ vi.resetModules();
192
+ const fresh = await import('../src/sync.js');
193
+
194
+ mockFetch.mockResolvedValueOnce({
195
+ ok: true,
196
+ json: async () => ({
197
+ data: {
198
+ files: {
199
+ 'test.md': {
200
+ hash: null,
201
+ sections: { a: hashA, b: hashB },
202
+ },
203
+ },
204
+ },
205
+ }),
206
+ });
207
+ await fresh.loadManifestIntoCache('test-project-id', testCreds);
208
+ mockFetch.mockReset();
209
+
210
+ // Step 2: First sync — hashes match manifest, no push expected.
211
+ // But positions must be populated so future reorders are detectable.
212
+ const firstCount = await fresh.syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
213
+ expect(firstCount).toBe(0);
214
+ expect(mockFetch).not.toHaveBeenCalled();
215
+
216
+ // Step 3: Reorder sections (B, A) — same content, different positions
217
+ const reordered = '# B\n\nContent B.\n\n# A\n\nContent A.';
218
+ await writeFile(filePath, reordered);
219
+
220
+ mockFetch.mockResolvedValueOnce({
221
+ ok: true,
222
+ json: async () => ({ data: { upserted: 2 } }),
223
+ });
224
+
225
+ const reorderCount = await fresh.syncMarkdownFile('test-project-id', tempDir, filePath, testCreds);
226
+
227
+ // Both sections must be pushed — positions changed
228
+ expect(reorderCount).toBe(2);
229
+
230
+ const postCall = mockFetch.mock.calls.find(
231
+ (call: unknown[]) =>
232
+ (call[1] as { method: string }).method === 'POST' &&
233
+ (call[0] as string).includes('/api/sync/sections'),
234
+ );
235
+ expect(postCall).toBeDefined();
236
+ const body = JSON.parse((postCall![1] as { body: string }).body);
237
+ const sectionA = body.sections.find((s: { slug: string }) => s.slug === 'a');
238
+ const sectionB = body.sections.find((s: { slug: string }) => s.slug === 'b');
239
+ expect(sectionB.position).toBe(0); // B moved to first
240
+ expect(sectionA.position).toBe(1); // A moved to second
241
+ });
242
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAW,KAAK,MAAM,EAAyB,MAAM,sBAAsB,CAAC;AAkBnF;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BpD;AAYD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAGnG;AAED,wBAAgB,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE5E;AAED,KAAK,gBAAgB,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAqG3E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA+ChD;AA2KD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAsBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqD/E;AAID,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAiBxD"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAW,KAAK,MAAM,EAAyB,MAAM,sBAAsB,CAAC;AAkBnF;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BpD;AAYD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAGnG;AAED,wBAAgB,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE5E;AAED,KAAK,gBAAgB,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAwG3E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkDhD;AA0LD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAsBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqD/E;AAID,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAiBxD"}
package/dist/daemon.js CHANGED
@@ -10,6 +10,7 @@ import { startProjectWatcher } from './watcher.js';
10
10
  import { createProjectOnServer, initialSync, fetchManifest, stopSync, pushVersionMetadata } from './sync.js';
11
11
  import { startUsageWatcher } from './usage-sync.js';
12
12
  import { startStatusLoop, readStatusFile, removeStatusFile } from './status.js';
13
+ import * as socketClient from './socket-client.js';
13
14
  import { logger } from './logger.js';
14
15
  import { ok, err } from '@ultra-claude/shared';
15
16
  /**
@@ -97,6 +98,8 @@ export async function startDaemon() {
97
98
  }
98
99
  activeCredentials = allCreds;
99
100
  log.info({ serverUrl, accountCount: allCreds.size }, 'Loaded accounts');
101
+ // Connect Socket.IO clients for agent presence signaling
102
+ socketClient.init(serverUrl, allCreds);
100
103
  running = true;
101
104
  daemonStartedAt = new Date().toISOString();
102
105
  await writePid(serverUrl);
@@ -193,6 +196,8 @@ export async function stopDaemon() {
193
196
  const closePromises = Array.from(activeWatchers.values()).map((w) => w.close());
194
197
  await Promise.all(closePromises);
195
198
  activeWatchers.clear();
199
+ // Disconnect presence sockets before stopping sync
200
+ socketClient.disconnectAll();
196
201
  stopSync();
197
202
  if (activeServerUrl) {
198
203
  await removePid(activeServerUrl);
@@ -317,6 +322,19 @@ async function reconcileWatchers() {
317
322
  await stopDaemon();
318
323
  return;
319
324
  }
325
+ // Reconcile presence sockets: diff current sockets against fresh credentials
326
+ const oldSocketUserIds = new Set(socketClient.getConnectedUserIds());
327
+ const newUserIds = new Set(freshCreds.keys());
328
+ for (const userId of oldSocketUserIds) {
329
+ if (!newUserIds.has(userId)) {
330
+ socketClient.removeAccount(userId);
331
+ }
332
+ }
333
+ for (const [userId, creds] of freshCreds) {
334
+ if (!oldSocketUserIds.has(userId)) {
335
+ socketClient.addAccount(serverUrl, userId, creds.apiKey);
336
+ }
337
+ }
320
338
  activeCredentials = freshCreds;
321
339
  const registry = await loadRegistry();
322
340
  const registryPaths = new Set(registry.projects.map((p) => p.path));
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Initialize socket connections for all accounts.
3
+ * Idempotent — disconnects existing sockets before creating new ones.
4
+ */
5
+ export declare function init(serverUrl: string, credentials: Map<string, {
6
+ apiKey: string;
7
+ }>): void;
8
+ /**
9
+ * Connect a new socket for an account. Safe to call if already connected —
10
+ * disconnects the old socket first.
11
+ */
12
+ export declare function addAccount(serverUrl: string, userId: string, apiKey: string): void;
13
+ /**
14
+ * Disconnect and remove a socket for an account.
15
+ * socket.disconnect() sets reason to 'io client disconnect' — no auto-reconnect.
16
+ */
17
+ export declare function removeAccount(userId: string): void;
18
+ /**
19
+ * Disconnect all sockets. Used during daemon shutdown.
20
+ */
21
+ export declare function disconnectAll(): void;
22
+ /**
23
+ * Get the set of user IDs with active socket entries.
24
+ * Used by reconcileWatchers() to diff against fresh credentials.
25
+ */
26
+ export declare function getConnectedUserIds(): string[];
27
+ //# sourceMappingURL=socket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../src/socket-client.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAQ1F;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAkClF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOlD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}