@sumicom/quicksave 0.5.1 → 0.6.0
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/asyncQueue.d.ts +16 -0
- package/dist/ai/asyncQueue.d.ts.map +1 -0
- package/dist/ai/asyncQueue.js +39 -0
- package/dist/ai/asyncQueue.js.map +1 -0
- package/dist/ai/asyncQueue.test.d.ts +2 -0
- package/dist/ai/asyncQueue.test.d.ts.map +1 -0
- package/dist/ai/asyncQueue.test.js +56 -0
- package/dist/ai/asyncQueue.test.js.map +1 -0
- package/dist/ai/cardBuilder.d.ts +64 -0
- package/dist/ai/cardBuilder.d.ts.map +1 -0
- package/dist/ai/cardBuilder.js +503 -0
- package/dist/ai/cardBuilder.js.map +1 -0
- package/dist/ai/claudeCodeService.d.ts +65 -32
- package/dist/ai/claudeCodeService.d.ts.map +1 -1
- package/dist/ai/claudeCodeService.js +534 -267
- package/dist/ai/claudeCodeService.js.map +1 -1
- package/dist/connection/connection.d.ts +24 -1
- package/dist/connection/connection.d.ts.map +1 -1
- package/dist/connection/connection.js +92 -6
- package/dist/connection/connection.js.map +1 -1
- package/dist/connection/pubsub.d.ts +41 -0
- package/dist/connection/pubsub.d.ts.map +1 -0
- package/dist/connection/pubsub.js +101 -0
- package/dist/connection/pubsub.js.map +1 -0
- package/dist/connection/pubsub.test.d.ts +2 -0
- package/dist/connection/pubsub.test.d.ts.map +1 -0
- package/dist/connection/pubsub.test.js +96 -0
- package/dist/connection/pubsub.test.js.map +1 -0
- package/dist/connection/relay.d.ts +4 -0
- package/dist/connection/relay.d.ts.map +1 -1
- package/dist/connection/relay.js +30 -0
- package/dist/connection/relay.js.map +1 -1
- package/dist/handlers/messageHandler.d.ts +22 -2
- package/dist/handlers/messageHandler.d.ts.map +1 -1
- package/dist/handlers/messageHandler.js +207 -16
- package/dist/handlers/messageHandler.js.map +1 -1
- package/dist/handlers/messageHandler.test.js +1 -1
- package/dist/index.js +192 -4
- package/dist/index.js.map +1 -1
- package/dist/service/ipc.test.js +6 -6
- package/dist/service/ipcClient.js +1 -1
- package/dist/service/run.d.ts.map +1 -1
- package/dist/service/run.js +125 -13
- package/dist/service/run.js.map +1 -1
- package/dist/service/singleton.test.js +1 -1
- package/dist/service/types.d.ts +29 -0
- package/dist/service/types.d.ts.map +1 -1
- package/dist/service/types.js +11 -0
- package/dist/service/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub.test.js","sourceRoot":"","sources":["../../src/connection/pubsub.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,10 @@ export declare class SignalingClient extends EventEmitter {
|
|
|
25
25
|
private send;
|
|
26
26
|
private attemptReconnect;
|
|
27
27
|
private intentionalDisconnect;
|
|
28
|
+
private heartbeatInterval;
|
|
29
|
+
private pongTimeout;
|
|
30
|
+
private startHeartbeat;
|
|
31
|
+
private clearHeartbeat;
|
|
28
32
|
disconnect(): void;
|
|
29
33
|
getAgentId(): string;
|
|
30
34
|
getConnectionUrl(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/connection/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;gBAEhB,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/connection/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;gBAEhB,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DxB,OAAO,CAAC,aAAa;IA0BrB,OAAO,IAAI,IAAI;IAIf,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;YAkB5C,QAAQ;YAKR,UAAU;IAMxB,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,WAAW,CAA8C;IAEjE,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,cAAc;IAWtB,UAAU,IAAI,IAAI;IAUlB,UAAU,IAAI,MAAM;IAIpB,gBAAgB,IAAI,MAAM;CAG3B"}
|
package/dist/connection/relay.js
CHANGED
|
@@ -24,6 +24,7 @@ export class SignalingClient extends EventEmitter {
|
|
|
24
24
|
this.ws.on('open', () => {
|
|
25
25
|
this.isConnected = true;
|
|
26
26
|
this.reconnectAttempts = 0;
|
|
27
|
+
this.startHeartbeat();
|
|
27
28
|
this.emit('connected');
|
|
28
29
|
resolve();
|
|
29
30
|
});
|
|
@@ -57,6 +58,7 @@ export class SignalingClient extends EventEmitter {
|
|
|
57
58
|
});
|
|
58
59
|
this.ws.on('close', () => {
|
|
59
60
|
this.isConnected = false;
|
|
61
|
+
this.clearHeartbeat();
|
|
60
62
|
this.emit('disconnected');
|
|
61
63
|
this.attemptReconnect();
|
|
62
64
|
});
|
|
@@ -151,8 +153,36 @@ export class SignalingClient extends EventEmitter {
|
|
|
151
153
|
}, delay);
|
|
152
154
|
}
|
|
153
155
|
intentionalDisconnect = false;
|
|
156
|
+
heartbeatInterval = null;
|
|
157
|
+
pongTimeout = null;
|
|
158
|
+
startHeartbeat() {
|
|
159
|
+
this.clearHeartbeat();
|
|
160
|
+
this.ws?.on('pong', () => {
|
|
161
|
+
if (this.pongTimeout) {
|
|
162
|
+
clearTimeout(this.pongTimeout);
|
|
163
|
+
this.pongTimeout = null;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
this.heartbeatInterval = setInterval(() => {
|
|
167
|
+
this.ws?.ping();
|
|
168
|
+
this.pongTimeout = setTimeout(() => {
|
|
169
|
+
this.ws?.terminate();
|
|
170
|
+
}, 15000);
|
|
171
|
+
}, 60000);
|
|
172
|
+
}
|
|
173
|
+
clearHeartbeat() {
|
|
174
|
+
if (this.heartbeatInterval) {
|
|
175
|
+
clearInterval(this.heartbeatInterval);
|
|
176
|
+
this.heartbeatInterval = null;
|
|
177
|
+
}
|
|
178
|
+
if (this.pongTimeout) {
|
|
179
|
+
clearTimeout(this.pongTimeout);
|
|
180
|
+
this.pongTimeout = null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
154
183
|
disconnect() {
|
|
155
184
|
this.intentionalDisconnect = true; // Prevent reconnection
|
|
185
|
+
this.clearHeartbeat();
|
|
156
186
|
if (this.ws) {
|
|
157
187
|
this.sendBye();
|
|
158
188
|
this.ws.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/connection/relay.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/connection/relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,17 @@ export declare class MessageHandler {
|
|
|
10
10
|
private codingPaths;
|
|
11
11
|
private aiService;
|
|
12
12
|
private claudeService;
|
|
13
|
-
|
|
13
|
+
private latestVersionCache;
|
|
14
|
+
private versionCheckInFlight;
|
|
15
|
+
onPeerSubscribed?: (peerAddress: string, sessionId: string) => void;
|
|
16
|
+
onPeerUnsubscribed?: (peerAddress: string, sessionId: string) => void;
|
|
17
|
+
private productionBuild;
|
|
18
|
+
constructor(repos: Repository[], _license?: License, codingPaths?: string[], productionBuild?: boolean);
|
|
19
|
+
/**
|
|
20
|
+
* Check npm registry for latest version. Deduped: returns cached value
|
|
21
|
+
* if checked within the last 12 hours. Only runs in production builds.
|
|
22
|
+
*/
|
|
23
|
+
private checkLatestVersion;
|
|
14
24
|
addRepo(repo: Repository): void;
|
|
15
25
|
removeRepo(path: string): void;
|
|
16
26
|
private getClientRepoPath;
|
|
@@ -48,13 +58,23 @@ export declare class MessageHandler {
|
|
|
48
58
|
private handleAddRepo;
|
|
49
59
|
private handleListCodingPaths;
|
|
50
60
|
private handleAddCodingPath;
|
|
61
|
+
/** Callback set by run.ts to trigger daemon restart after update. */
|
|
62
|
+
onRestartRequested?: () => void;
|
|
63
|
+
private handleAgentCheckUpdate;
|
|
64
|
+
private handleAgentUpdate;
|
|
51
65
|
private handleClaudeListSessions;
|
|
52
66
|
private handleClaudeStart;
|
|
53
67
|
private handleClaudeResume;
|
|
54
68
|
private handleClaudeCancel;
|
|
55
69
|
private handleClaudeClose;
|
|
56
70
|
private handleClaudeUserInputResponse;
|
|
57
|
-
private
|
|
71
|
+
private handleClaudeGetCards;
|
|
72
|
+
private handleGetPreferences;
|
|
73
|
+
private handleSetPreferences;
|
|
74
|
+
private handleSetSessionPermission;
|
|
75
|
+
private handleGetSessionConfig;
|
|
76
|
+
private handleSetSessionConfig;
|
|
77
|
+
private handleGetActiveSessions;
|
|
58
78
|
private createErrorResponse;
|
|
59
79
|
}
|
|
60
80
|
//# sourceMappingURL=messageHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAiCP,OAAO,EAMP,UAAU,
|
|
1
|
+
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAiCP,OAAO,EAMP,UAAU,EAuCX,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAO/D,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,kBAAkB,CAAuD;IACjF,OAAO,CAAC,oBAAoB,CAAuC;IACnE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtE,OAAO,CAAC,eAAe,CAAU;gBAErB,KAAK,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,UAAQ;IAiBpG;;;OAGG;YACW,kBAAkB;IAgChC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAS/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ9B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAMvB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAWvC,OAAO,IAAI,IAAI;IAIf,qBAAqB,IAAI,MAAM;IAI/B,gBAAgB,IAAI,iBAAiB;IAIrC,OAAO,CAAC,YAAY;IAWd,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAAkB,GAC9B,OAAO,CAAC,OAAO,CAAC;IAwGnB,OAAO,CAAC,eAAe;YAsBT,YAAY;YAOZ,UAAU;YAQV,WAAW;YA2BX,aAAa;YA2Bb,gBAAgB;YA2BhB,kBAAkB;YA2BlB,YAAY;YA+BZ,SAAS;YAQT,cAAc;YAQd,cAAc;YA4Bd,aAAa;YA2Bb,aAAa;YA2Bb,kBAAkB;YA2BlB,mBAAmB;YAOnB,oBAAoB;YA2BpB,2BAA2B;IA0EzC,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,qBAAqB;YAQf,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;YAuBV,qBAAqB;YAiErB,aAAa;IA8D3B,OAAO,CAAC,qBAAqB;YASf,mBAAmB;IAkDjC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;YAElB,sBAAsB;YA8BtB,iBAAiB;YAuEjB,wBAAwB;YAuBxB,iBAAiB;YAiCjB,kBAAkB;IAyChC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,6BAA6B;YAWvB,oBAAoB;IA4BlC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,mBAAmB;CAK5B"}
|
|
@@ -6,9 +6,10 @@ import { ClaudeCodeService } from '../ai/claudeCodeService.js';
|
|
|
6
6
|
import { readdir, stat } from 'fs/promises';
|
|
7
7
|
import { join, dirname, basename } from 'path';
|
|
8
8
|
import { homedir } from 'os';
|
|
9
|
+
const VERSION_CHECK_INTERVAL_MS = 12 * 60 * 60 * 1000; // 12 hours
|
|
9
10
|
export class MessageHandler {
|
|
10
11
|
repos;
|
|
11
|
-
agentVersion = '0.
|
|
12
|
+
agentVersion = '0.6.0';
|
|
12
13
|
defaultRepoPath;
|
|
13
14
|
clientRepos = new Map(); // peerAddress -> repoPath
|
|
14
15
|
repoLocks = new Map(); // repoPath -> peerAddress holding lock
|
|
@@ -16,13 +17,19 @@ export class MessageHandler {
|
|
|
16
17
|
codingPaths = new Map(); // path -> CodingPath
|
|
17
18
|
aiService = null;
|
|
18
19
|
claudeService = new ClaudeCodeService();
|
|
19
|
-
|
|
20
|
+
latestVersionCache = null;
|
|
21
|
+
versionCheckInFlight = null;
|
|
22
|
+
onPeerSubscribed;
|
|
23
|
+
onPeerUnsubscribed;
|
|
24
|
+
productionBuild;
|
|
25
|
+
constructor(repos, _license, codingPaths, productionBuild = false) {
|
|
20
26
|
this.repos = new Map();
|
|
21
27
|
for (const repo of repos) {
|
|
22
28
|
this.repos.set(repo.path, new GitOperations(repo.path));
|
|
23
29
|
}
|
|
24
30
|
this.availableRepos = repos;
|
|
25
31
|
this.defaultRepoPath = repos.length > 0 ? repos[0].path : '';
|
|
32
|
+
this.productionBuild = productionBuild;
|
|
26
33
|
// Load explicit coding paths only (repos and coding paths are independent)
|
|
27
34
|
if (codingPaths) {
|
|
28
35
|
for (const p of codingPaths) {
|
|
@@ -30,6 +37,42 @@ export class MessageHandler {
|
|
|
30
37
|
}
|
|
31
38
|
}
|
|
32
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Check npm registry for latest version. Deduped: returns cached value
|
|
42
|
+
* if checked within the last 12 hours. Only runs in production builds.
|
|
43
|
+
*/
|
|
44
|
+
async checkLatestVersion(force = false) {
|
|
45
|
+
if (!force && !this.productionBuild)
|
|
46
|
+
return null;
|
|
47
|
+
// Return cached value if fresh
|
|
48
|
+
if (!force && this.latestVersionCache &&
|
|
49
|
+
Date.now() - this.latestVersionCache.checkedAt < VERSION_CHECK_INTERVAL_MS) {
|
|
50
|
+
return this.latestVersionCache.version;
|
|
51
|
+
}
|
|
52
|
+
// Dedup concurrent requests
|
|
53
|
+
if (this.versionCheckInFlight)
|
|
54
|
+
return this.versionCheckInFlight;
|
|
55
|
+
this.versionCheckInFlight = (async () => {
|
|
56
|
+
try {
|
|
57
|
+
const res = await fetch('https://registry.npmjs.org/@sumicom/quicksave/latest');
|
|
58
|
+
if (!res.ok)
|
|
59
|
+
return null;
|
|
60
|
+
const data = await res.json();
|
|
61
|
+
if (data.version) {
|
|
62
|
+
this.latestVersionCache = { version: data.version, checkedAt: Date.now() };
|
|
63
|
+
return data.version;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
this.versionCheckInFlight = null;
|
|
72
|
+
}
|
|
73
|
+
})();
|
|
74
|
+
return this.versionCheckInFlight;
|
|
75
|
+
}
|
|
33
76
|
addRepo(repo) {
|
|
34
77
|
if (this.repos.has(repo.path))
|
|
35
78
|
return;
|
|
@@ -158,6 +201,10 @@ export class MessageHandler {
|
|
|
158
201
|
return this.handleListCodingPaths(message);
|
|
159
202
|
case 'agent:add-coding-path':
|
|
160
203
|
return this.handleAddCodingPath(message);
|
|
204
|
+
case 'agent:check-update':
|
|
205
|
+
return this.handleAgentCheckUpdate(message);
|
|
206
|
+
case 'agent:update':
|
|
207
|
+
return this.handleAgentUpdate(message);
|
|
161
208
|
// Claude Code SDK
|
|
162
209
|
case 'claude:list-sessions':
|
|
163
210
|
return this.handleClaudeListSessions(message, peerAddress);
|
|
@@ -169,10 +216,27 @@ export class MessageHandler {
|
|
|
169
216
|
return this.handleClaudeCancel(message);
|
|
170
217
|
case 'claude:close':
|
|
171
218
|
return this.handleClaudeClose(message);
|
|
172
|
-
case 'claude:get-messages':
|
|
173
|
-
return this.handleClaudeGetMessages(message, peerAddress);
|
|
174
219
|
case 'claude:user-input-response':
|
|
175
220
|
return this.handleClaudeUserInputResponse(message);
|
|
221
|
+
case 'claude:get-preferences':
|
|
222
|
+
return this.handleGetPreferences(message);
|
|
223
|
+
case 'claude:set-preferences':
|
|
224
|
+
return this.handleSetPreferences(message);
|
|
225
|
+
case 'claude:set-session-permission':
|
|
226
|
+
return this.handleSetSessionPermission(message);
|
|
227
|
+
case 'claude:active-sessions':
|
|
228
|
+
return this.handleGetActiveSessions(message);
|
|
229
|
+
case 'claude:get-cards':
|
|
230
|
+
return this.handleClaudeGetCards(message, peerAddress);
|
|
231
|
+
case 'claude:unsubscribe': {
|
|
232
|
+
const unsub = message.payload;
|
|
233
|
+
this.onPeerUnsubscribed?.(peerAddress, unsub.sessionId);
|
|
234
|
+
return createMessage('claude:unsubscribe:response', { ok: true });
|
|
235
|
+
}
|
|
236
|
+
case 'session:get-config':
|
|
237
|
+
return this.handleGetSessionConfig(message);
|
|
238
|
+
case 'session:set-config':
|
|
239
|
+
return this.handleSetSessionConfig(message);
|
|
176
240
|
default:
|
|
177
241
|
return this.createErrorResponse(message.id, 'UNKNOWN_MESSAGE_TYPE', `Unknown message type: ${message.type}`);
|
|
178
242
|
}
|
|
@@ -183,20 +247,19 @@ export class MessageHandler {
|
|
|
183
247
|
}
|
|
184
248
|
}
|
|
185
249
|
handleHandshake(message, peerAddress) {
|
|
250
|
+
// Fire-and-forget: check npm registry for latest version (12h dedup, production only)
|
|
251
|
+
this.checkLatestVersion().catch(() => { });
|
|
186
252
|
const response = createMessage('handshake:ack', {
|
|
187
253
|
success: true,
|
|
188
254
|
agentVersion: this.agentVersion,
|
|
189
255
|
repoPath: this.getClientRepoPath(peerAddress),
|
|
190
256
|
availableRepos: this.availableRepos,
|
|
191
257
|
availableCodingPaths: [...this.codingPaths.values()],
|
|
258
|
+
preferences: this.claudeService.getPreferences(),
|
|
259
|
+
latestVersion: this.latestVersionCache?.version,
|
|
260
|
+
devBuild: !this.productionBuild || undefined,
|
|
192
261
|
});
|
|
193
262
|
response.id = message.id;
|
|
194
|
-
// Re-emit pending user input requests so they get broadcast to the new peer
|
|
195
|
-
const pending = this.claudeService.getPendingInputRequests();
|
|
196
|
-
for (const request of pending) {
|
|
197
|
-
console.log(`[handshake] re-emitting pending user input: requestId=${request.requestId}`);
|
|
198
|
-
this.claudeService.emit('user-input-request', request);
|
|
199
|
-
}
|
|
200
263
|
return response;
|
|
201
264
|
}
|
|
202
265
|
async handleStatus(message, peerAddress) {
|
|
@@ -782,6 +845,85 @@ export class MessageHandler {
|
|
|
782
845
|
}
|
|
783
846
|
}
|
|
784
847
|
// ============================================================================
|
|
848
|
+
// Agent Self-Update
|
|
849
|
+
// ============================================================================
|
|
850
|
+
/** Callback set by run.ts to trigger daemon restart after update. */
|
|
851
|
+
onRestartRequested;
|
|
852
|
+
async handleAgentCheckUpdate(message) {
|
|
853
|
+
const currentVersion = this.agentVersion;
|
|
854
|
+
try {
|
|
855
|
+
const latestVersion = await this.checkLatestVersion(/* force */ true);
|
|
856
|
+
const response = createMessage('agent:check-update:response', {
|
|
857
|
+
currentVersion,
|
|
858
|
+
latestVersion: latestVersion || undefined,
|
|
859
|
+
updateAvailable: !!latestVersion && latestVersion !== currentVersion,
|
|
860
|
+
});
|
|
861
|
+
response.id = message.id;
|
|
862
|
+
return response;
|
|
863
|
+
}
|
|
864
|
+
catch (error) {
|
|
865
|
+
const response = createMessage('agent:check-update:response', {
|
|
866
|
+
currentVersion,
|
|
867
|
+
updateAvailable: false,
|
|
868
|
+
error: error instanceof Error ? error.message : 'Failed to check for updates',
|
|
869
|
+
});
|
|
870
|
+
response.id = message.id;
|
|
871
|
+
return response;
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
async handleAgentUpdate(message) {
|
|
875
|
+
const previousVersion = this.agentVersion;
|
|
876
|
+
try {
|
|
877
|
+
const { execFile } = await import('child_process');
|
|
878
|
+
const { promisify } = await import('util');
|
|
879
|
+
const execFileAsync = promisify(execFile);
|
|
880
|
+
// Use npm to install the latest global package
|
|
881
|
+
const { stdout, stderr } = await execFileAsync('npm', [
|
|
882
|
+
'install', '-g', '@sumicom/quicksave@latest',
|
|
883
|
+
], { timeout: 120_000 });
|
|
884
|
+
const output = (stdout + '\n' + stderr).trim();
|
|
885
|
+
// Parse the installed version from npm output
|
|
886
|
+
// npm output typically contains lines like: + @sumicom/quicksave@0.5.3
|
|
887
|
+
let newVersion = output.match(/@sumicom\/quicksave@(\d+\.\d+\.\d+)/)?.[1];
|
|
888
|
+
// Fallback: query npm for the actually installed version
|
|
889
|
+
if (!newVersion) {
|
|
890
|
+
try {
|
|
891
|
+
const { stdout: listOut } = await execFileAsync('npm', [
|
|
892
|
+
'list', '-g', '@sumicom/quicksave', '--json',
|
|
893
|
+
], { timeout: 10_000 });
|
|
894
|
+
const listData = JSON.parse(listOut);
|
|
895
|
+
newVersion = listData.dependencies?.['@sumicom/quicksave']?.version;
|
|
896
|
+
}
|
|
897
|
+
catch { /* best-effort */ }
|
|
898
|
+
}
|
|
899
|
+
const needsRestart = !!newVersion && newVersion !== previousVersion;
|
|
900
|
+
const response = createMessage('agent:update:response', {
|
|
901
|
+
success: true,
|
|
902
|
+
previousVersion,
|
|
903
|
+
newVersion: newVersion || undefined,
|
|
904
|
+
restarting: needsRestart,
|
|
905
|
+
});
|
|
906
|
+
response.id = message.id;
|
|
907
|
+
// Schedule daemon restart AFTER we send the response back to PWA
|
|
908
|
+
if (needsRestart && this.onRestartRequested) {
|
|
909
|
+
setTimeout(() => this.onRestartRequested?.(), 500);
|
|
910
|
+
}
|
|
911
|
+
return response;
|
|
912
|
+
}
|
|
913
|
+
catch (error) {
|
|
914
|
+
const response = createMessage('agent:update:response', {
|
|
915
|
+
success: false,
|
|
916
|
+
previousVersion,
|
|
917
|
+
restarting: false,
|
|
918
|
+
error: error instanceof Error
|
|
919
|
+
? (error.message.includes('EACCES') ? `Permission denied. Try: sudo npm install -g @sumicom/quicksave@latest` : error.message)
|
|
920
|
+
: 'Failed to update agent',
|
|
921
|
+
});
|
|
922
|
+
response.id = message.id;
|
|
923
|
+
return response;
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
// ============================================================================
|
|
785
927
|
// Claude Code SDK Handlers
|
|
786
928
|
// ============================================================================
|
|
787
929
|
async handleClaudeListSessions(message, peerAddress) {
|
|
@@ -808,6 +950,7 @@ export class MessageHandler {
|
|
|
808
950
|
prompt, cwd, streamId, allowedTools, systemPrompt, model, permissionMode,
|
|
809
951
|
});
|
|
810
952
|
console.log(`[claude:start] session created: ${sessionId}`);
|
|
953
|
+
this.onPeerSubscribed?.(peerAddress, sessionId);
|
|
811
954
|
const response = createMessage('claude:start:response', { success: true, sessionId, streamId });
|
|
812
955
|
response.id = message.id;
|
|
813
956
|
return response;
|
|
@@ -824,11 +967,19 @@ export class MessageHandler {
|
|
|
824
967
|
const cwd = payloadCwd || this.getClientRepoPath(peerAddress);
|
|
825
968
|
const streamId = generateMessageId();
|
|
826
969
|
console.log(`[claude:resume] session=${requestedId} cwd=${cwd} prompt=${prompt.slice(0, 80)}`);
|
|
970
|
+
// Subscribe before resumeSession starts streaming — hot resume emits events
|
|
971
|
+
// immediately (user_message, then assistant turns), so we must be subscribed
|
|
972
|
+
// before session.send() fires, not after resumeSession() returns.
|
|
973
|
+
this.onPeerSubscribed?.(peerAddress, requestedId);
|
|
827
974
|
try {
|
|
828
975
|
const actualSessionId = await this.claudeService.resumeSession({
|
|
829
976
|
sessionId: requestedId, prompt, cwd, streamId,
|
|
830
977
|
});
|
|
831
978
|
console.log(`[claude:resume] session resumed: ${actualSessionId}`);
|
|
979
|
+
// Re-subscribe with actual session ID (cold resume may return a different ID)
|
|
980
|
+
if (actualSessionId !== requestedId) {
|
|
981
|
+
this.onPeerSubscribed?.(peerAddress, actualSessionId);
|
|
982
|
+
}
|
|
832
983
|
const response = createMessage('claude:resume:response', { success: true, sessionId: actualSessionId, streamId });
|
|
833
984
|
response.id = message.id;
|
|
834
985
|
return response;
|
|
@@ -863,26 +1014,66 @@ export class MessageHandler {
|
|
|
863
1014
|
response.id = message.id;
|
|
864
1015
|
return response;
|
|
865
1016
|
}
|
|
866
|
-
async
|
|
1017
|
+
async handleClaudeGetCards(message, peerAddress) {
|
|
867
1018
|
const { sessionId, cwd: payloadCwd, offset = 0, limit = 50 } = message.payload;
|
|
868
1019
|
const cwd = payloadCwd || this.getClientRepoPath(peerAddress);
|
|
869
1020
|
try {
|
|
870
|
-
const result = await this.claudeService.
|
|
871
|
-
|
|
1021
|
+
const result = await this.claudeService.getCards(sessionId, cwd, offset, limit);
|
|
1022
|
+
this.onPeerSubscribed?.(peerAddress, sessionId);
|
|
1023
|
+
const response = createMessage('claude:get-cards:response', result);
|
|
872
1024
|
response.id = message.id;
|
|
873
1025
|
return response;
|
|
874
1026
|
}
|
|
875
1027
|
catch (error) {
|
|
876
|
-
const response = createMessage('claude:get-
|
|
877
|
-
|
|
1028
|
+
const response = createMessage('claude:get-cards:response', {
|
|
1029
|
+
cards: [],
|
|
878
1030
|
total: 0,
|
|
879
1031
|
hasMore: false,
|
|
880
|
-
error: error instanceof Error ? error.message : 'Failed to get
|
|
1032
|
+
error: error instanceof Error ? error.message : 'Failed to get cards',
|
|
881
1033
|
});
|
|
882
1034
|
response.id = message.id;
|
|
883
1035
|
return response;
|
|
884
1036
|
}
|
|
885
1037
|
}
|
|
1038
|
+
handleGetPreferences(message) {
|
|
1039
|
+
const response = createMessage('claude:get-preferences:response', { preferences: this.claudeService.getPreferences() });
|
|
1040
|
+
response.id = message.id;
|
|
1041
|
+
return response;
|
|
1042
|
+
}
|
|
1043
|
+
handleSetPreferences(message) {
|
|
1044
|
+
const applied = this.claudeService.setPreferences(message.payload.preferences);
|
|
1045
|
+
const response = createMessage('claude:set-preferences:response', { success: true, preferences: applied });
|
|
1046
|
+
response.id = message.id;
|
|
1047
|
+
return response;
|
|
1048
|
+
}
|
|
1049
|
+
handleSetSessionPermission(message) {
|
|
1050
|
+
const { sessionId, permissionMode } = message.payload;
|
|
1051
|
+
const validModes = ['default', 'acceptEdits', 'bypassPermissions', 'plan'];
|
|
1052
|
+
const success = validModes.includes(permissionMode) && this.claudeService.setPermissionLevel(sessionId, permissionMode);
|
|
1053
|
+
const response = createMessage('claude:set-session-permission:response', { success, sessionId, permissionMode });
|
|
1054
|
+
response.id = message.id;
|
|
1055
|
+
return response;
|
|
1056
|
+
}
|
|
1057
|
+
handleGetSessionConfig(message) {
|
|
1058
|
+
const { sessionId } = message.payload;
|
|
1059
|
+
const config = this.claudeService.getSessionConfig(sessionId);
|
|
1060
|
+
const response = createMessage('session:get-config:response', { sessionId, config });
|
|
1061
|
+
response.id = message.id;
|
|
1062
|
+
return response;
|
|
1063
|
+
}
|
|
1064
|
+
handleSetSessionConfig(message) {
|
|
1065
|
+
const { sessionId, key, value } = message.payload;
|
|
1066
|
+
const config = this.claudeService.setSessionConfig(sessionId, key, value);
|
|
1067
|
+
const response = createMessage('session:set-config:response', { success: true, sessionId, config });
|
|
1068
|
+
response.id = message.id;
|
|
1069
|
+
return response;
|
|
1070
|
+
}
|
|
1071
|
+
handleGetActiveSessions(message) {
|
|
1072
|
+
const sessions = this.claudeService.getActiveSessions();
|
|
1073
|
+
const response = createMessage('claude:active-sessions:response', { sessions });
|
|
1074
|
+
response.id = message.id;
|
|
1075
|
+
return response;
|
|
1076
|
+
}
|
|
886
1077
|
createErrorResponse(id, code, message) {
|
|
887
1078
|
const response = createMessage('error', { code, message });
|
|
888
1079
|
response.id = id;
|