@sumicom/quicksave 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/ai/asyncQueue.d.ts +7 -6
  2. package/dist/ai/asyncQueue.d.ts.map +1 -1
  3. package/dist/ai/asyncQueue.js +31 -21
  4. package/dist/ai/asyncQueue.js.map +1 -1
  5. package/dist/ai/asyncQueue.test.js +18 -18
  6. package/dist/ai/asyncQueue.test.js.map +1 -1
  7. package/dist/ai/cardBuilder.d.ts +11 -2
  8. package/dist/ai/cardBuilder.d.ts.map +1 -1
  9. package/dist/ai/cardBuilder.js +113 -21
  10. package/dist/ai/cardBuilder.js.map +1 -1
  11. package/dist/ai/claudeCliProvider.d.ts +19 -0
  12. package/dist/ai/claudeCliProvider.d.ts.map +1 -0
  13. package/dist/ai/claudeCliProvider.js +466 -0
  14. package/dist/ai/claudeCliProvider.js.map +1 -0
  15. package/dist/ai/claudeSdkProvider.d.ts +18 -0
  16. package/dist/ai/claudeSdkProvider.d.ts.map +1 -0
  17. package/dist/ai/claudeSdkProvider.js +418 -0
  18. package/dist/ai/claudeSdkProvider.js.map +1 -0
  19. package/dist/ai/commitSummary.d.ts +4 -0
  20. package/dist/ai/commitSummary.d.ts.map +1 -1
  21. package/dist/ai/commitSummary.js +80 -40
  22. package/dist/ai/commitSummary.js.map +1 -1
  23. package/dist/ai/provider.d.ts +54 -0
  24. package/dist/ai/provider.d.ts.map +1 -0
  25. package/dist/ai/provider.js +2 -0
  26. package/dist/ai/provider.js.map +1 -0
  27. package/dist/ai/sandboxMcp.d.ts +12 -0
  28. package/dist/ai/sandboxMcp.d.ts.map +1 -0
  29. package/dist/ai/sandboxMcp.js +12 -0
  30. package/dist/ai/sandboxMcp.js.map +1 -0
  31. package/dist/ai/sandboxMcpStdio.d.ts +16 -0
  32. package/dist/ai/sandboxMcpStdio.d.ts.map +1 -0
  33. package/dist/ai/sandboxMcpStdio.js +127 -0
  34. package/dist/ai/sandboxMcpStdio.js.map +1 -0
  35. package/dist/ai/sessionManager.d.ts +100 -0
  36. package/dist/ai/sessionManager.d.ts.map +1 -0
  37. package/dist/ai/sessionManager.js +595 -0
  38. package/dist/ai/sessionManager.js.map +1 -0
  39. package/dist/ai/sessionRegistry.d.ts +28 -0
  40. package/dist/ai/sessionRegistry.d.ts.map +1 -0
  41. package/dist/ai/sessionRegistry.js +148 -0
  42. package/dist/ai/sessionRegistry.js.map +1 -0
  43. package/dist/git/operations.d.ts +6 -1
  44. package/dist/git/operations.d.ts.map +1 -1
  45. package/dist/git/operations.js +31 -2
  46. package/dist/git/operations.js.map +1 -1
  47. package/dist/handlers/messageHandler.d.ts +8 -3
  48. package/dist/handlers/messageHandler.d.ts.map +1 -1
  49. package/dist/handlers/messageHandler.js +96 -12
  50. package/dist/handlers/messageHandler.js.map +1 -1
  51. package/dist/handlers/messageHandler.test.js +1 -1
  52. package/dist/index.js +3 -40
  53. package/dist/index.js.map +1 -1
  54. package/dist/service/ensureDaemon.d.ts.map +1 -1
  55. package/dist/service/ensureDaemon.js +15 -2
  56. package/dist/service/ensureDaemon.js.map +1 -1
  57. package/dist/service/ipc.test.js +6 -6
  58. package/dist/service/ipcClient.js +1 -1
  59. package/dist/service/run.d.ts.map +1 -1
  60. package/dist/service/run.js +22 -15
  61. package/dist/service/run.js.map +1 -1
  62. package/dist/service/singleton.d.ts +4 -0
  63. package/dist/service/singleton.d.ts.map +1 -1
  64. package/dist/service/singleton.js +28 -2
  65. package/dist/service/singleton.js.map +1 -1
  66. package/dist/service/singleton.test.js +1 -1
  67. package/package.json +5 -3
  68. package/dist/ai/claudeCodeService.d.ts +0 -122
  69. package/dist/ai/claudeCodeService.d.ts.map +0 -1
  70. package/dist/ai/claudeCodeService.js +0 -869
  71. package/dist/ai/claudeCodeService.js.map +0 -1
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Session registry — tracks which sessions have been opened via quicksave.
3
+ *
4
+ * Storage layout:
5
+ * ~/.quicksave/state/session-registry/{encoded-project-path}/{sessionId}.json
6
+ *
7
+ * Path encoding: `/` → `-` (same convention as Claude Code's ~/.claude/projects/).
8
+ *
9
+ * In-memory: two-level Map<cwd, Map<sessionId, entry>>.
10
+ * Loaded once at daemon startup; writes update memory + single file synchronously.
11
+ */
12
+ import { readdirSync, readFileSync, writeFileSync, unlinkSync, mkdirSync, existsSync, statSync, } from 'fs';
13
+ import { join } from 'path';
14
+ import { getSessionRegistryDir } from '../service/singleton.js';
15
+ function encodeProjectPath(cwd) {
16
+ return cwd.replace(/\//g, '-');
17
+ }
18
+ export class SessionRegistry {
19
+ registry = new Map();
20
+ /**
21
+ * Scan session-registry directory and load all entries into memory.
22
+ */
23
+ loadAll() {
24
+ const baseDir = getSessionRegistryDir();
25
+ if (!existsSync(baseDir))
26
+ return;
27
+ let subdirs;
28
+ try {
29
+ subdirs = readdirSync(baseDir);
30
+ }
31
+ catch (err) {
32
+ console.error('[sessionRegistry] Failed to read registry dir:', err);
33
+ return;
34
+ }
35
+ for (const subdir of subdirs) {
36
+ const subdirPath = join(baseDir, subdir);
37
+ try {
38
+ if (!statSync(subdirPath).isDirectory())
39
+ continue;
40
+ }
41
+ catch {
42
+ continue;
43
+ }
44
+ let files;
45
+ try {
46
+ files = readdirSync(subdirPath).filter((f) => f.endsWith('.json'));
47
+ }
48
+ catch {
49
+ continue;
50
+ }
51
+ for (const file of files) {
52
+ try {
53
+ const raw = readFileSync(join(subdirPath, file), 'utf-8');
54
+ const entry = JSON.parse(raw);
55
+ if (!entry.sessionId || !entry.cwd) {
56
+ console.warn(`[sessionRegistry] Skipping invalid entry: ${join(subdir, file)}`);
57
+ continue;
58
+ }
59
+ this.setInMemory(entry);
60
+ }
61
+ catch (err) {
62
+ console.warn(`[sessionRegistry] Skipping malformed file: ${join(subdir, file)}`, err);
63
+ }
64
+ }
65
+ }
66
+ const totalEntries = Array.from(this.registry.values()).reduce((sum, m) => sum + m.size, 0);
67
+ console.log(`[sessionRegistry] Loaded ${totalEntries} entries from ${this.registry.size} projects`);
68
+ }
69
+ getEntry(cwd, sessionId) {
70
+ return this.registry.get(cwd)?.get(sessionId);
71
+ }
72
+ getEntriesForProject(cwd) {
73
+ if (cwd) {
74
+ const projectMap = this.registry.get(cwd);
75
+ if (!projectMap)
76
+ return [];
77
+ return Array.from(projectMap.values()).sort((a, b) => b.lastAccessedAt - a.lastAccessedAt);
78
+ }
79
+ // Return all entries across all projects
80
+ const all = [];
81
+ for (const projectMap of this.registry.values()) {
82
+ for (const entry of projectMap.values()) {
83
+ all.push(entry);
84
+ }
85
+ }
86
+ return all.sort((a, b) => b.lastAccessedAt - a.lastAccessedAt);
87
+ }
88
+ upsertEntry(entry) {
89
+ this.setInMemory(entry);
90
+ this.writeToDisk(entry);
91
+ }
92
+ updateEntry(cwd, sessionId, updates) {
93
+ const existing = this.getEntry(cwd, sessionId);
94
+ if (!existing)
95
+ return null;
96
+ const updated = { ...existing, ...updates };
97
+ this.upsertEntry(updated);
98
+ return updated;
99
+ }
100
+ deleteEntry(cwd, sessionId) {
101
+ const projectMap = this.registry.get(cwd);
102
+ if (!projectMap || !projectMap.has(sessionId))
103
+ return false;
104
+ projectMap.delete(sessionId);
105
+ if (projectMap.size === 0) {
106
+ this.registry.delete(cwd);
107
+ }
108
+ // Remove file
109
+ try {
110
+ const filePath = join(getSessionRegistryDir(), encodeProjectPath(cwd), `${sessionId}.json`);
111
+ unlinkSync(filePath);
112
+ }
113
+ catch (err) {
114
+ console.error(`[sessionRegistry] Failed to delete file for session=${sessionId}:`, err);
115
+ }
116
+ return true;
117
+ }
118
+ setInMemory(entry) {
119
+ let projectMap = this.registry.get(entry.cwd);
120
+ if (!projectMap) {
121
+ projectMap = new Map();
122
+ this.registry.set(entry.cwd, projectMap);
123
+ }
124
+ projectMap.set(entry.sessionId, entry);
125
+ }
126
+ writeToDisk(entry) {
127
+ try {
128
+ const dir = join(getSessionRegistryDir(), encodeProjectPath(entry.cwd));
129
+ if (!existsSync(dir)) {
130
+ mkdirSync(dir, { recursive: true });
131
+ }
132
+ const filePath = join(dir, `${entry.sessionId}.json`);
133
+ writeFileSync(filePath, JSON.stringify(entry, null, 2) + '\n', 'utf-8');
134
+ }
135
+ catch (err) {
136
+ console.error(`[sessionRegistry] Failed to write entry for session=${entry.sessionId}:`, err);
137
+ }
138
+ }
139
+ }
140
+ let instance = null;
141
+ export function getSessionRegistry() {
142
+ if (!instance) {
143
+ instance = new SessionRegistry();
144
+ instance.loadAll();
145
+ }
146
+ return instance;
147
+ }
148
+ //# sourceMappingURL=sessionRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionRegistry.js","sourceRoot":"","sources":["../../src/ai/sessionRegistry.ts"],"names":[],"mappings":"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"}
@@ -79,7 +79,7 @@ export declare class GitOperations {
79
79
  /**
80
80
  * Create a commit
81
81
  */
82
- commit(message: string, description?: string): Promise<string>;
82
+ commit(message: string, description?: string, attribution?: boolean): Promise<string>;
83
83
  /**
84
84
  * Get commit history
85
85
  */
@@ -110,6 +110,11 @@ export declare class GitOperations {
110
110
  content: string;
111
111
  exists: boolean;
112
112
  }>;
113
+ /**
114
+ * Read commit convention files (CONTRIBUTING.md, .github/COMMIT_CONVENTION.md, etc.)
115
+ * Returns the first found convention content, truncated to avoid bloating prompts.
116
+ */
117
+ readCommitConventions(): Promise<string | undefined>;
113
118
  /**
114
119
  * Write .gitignore content
115
120
  */
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/git/operations.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EAET,QAAQ,EAGR,MAAM,EACN,MAAM,EAEP,MAAM,2BAA2B,CAAC;AAYnC,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAO5D;;;OAGG;YACW,iBAAiB;IAQ/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAQnC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAerC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0DvE;;OAEG;YACW,aAAa;IAW3B;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,cAAc;IAmB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAKjB;;;OAGG;YACW,YAAY;IAoC1B;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;YACW,cAAc;IAO5B;;OAEG;YACW,eAAe;IAQ7B;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpE;;OAEG;IACG,MAAM,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAanD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBrE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAWpE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAavB,iBAAiB;IAY/B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,SAAS;CAsClB"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/git/operations.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EAET,QAAQ,EAGR,MAAM,EACN,MAAM,EAEP,MAAM,2BAA2B,CAAC;AAYnC,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAO5D;;;OAGG;YACW,iBAAiB;IAQ/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAQnC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAerC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0DvE;;OAEG;YACW,aAAa;IAW3B;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,cAAc;IAmB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAKjB;;;OAGG;YACW,YAAY;IAoC1B;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;YACW,cAAc;IAO5B;;OAEG;YACW,eAAe;IAQ7B;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IASxF;;OAEG;IACG,MAAM,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAanD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBrE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAWpE;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqB1D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAavB,iBAAiB;IAY/B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,SAAS;CAsClB"}
@@ -299,8 +299,13 @@ export class GitOperations {
299
299
  /**
300
300
  * Create a commit
301
301
  */
302
- async commit(message, description) {
303
- const fullMessage = description ? `${message}\n\n${description}` : message;
302
+ async commit(message, description, attribution = true) {
303
+ const parts = [message];
304
+ if (description)
305
+ parts.push(description);
306
+ if (attribution)
307
+ parts.push('Generated-by: Quicksave <save@quicksave.dev>');
308
+ const fullMessage = parts.join('\n\n');
304
309
  const result = await this.git.commit(fullMessage);
305
310
  return result.commit;
306
311
  }
@@ -372,6 +377,30 @@ export class GitOperations {
372
377
  return { content: '', exists: false };
373
378
  }
374
379
  }
380
+ /**
381
+ * Read commit convention files (CONTRIBUTING.md, .github/COMMIT_CONVENTION.md, etc.)
382
+ * Returns the first found convention content, truncated to avoid bloating prompts.
383
+ */
384
+ async readCommitConventions() {
385
+ const gitRoot = await this.getGitRoot();
386
+ const candidates = [
387
+ '.github/COMMIT_CONVENTION.md',
388
+ '.github/commit-convention.md',
389
+ 'CONTRIBUTING.md',
390
+ 'contributing.md',
391
+ ];
392
+ for (const candidate of candidates) {
393
+ try {
394
+ const content = await readFile(join(gitRoot, candidate), 'utf-8');
395
+ // Truncate to keep prompt reasonable
396
+ return content.slice(0, 2000);
397
+ }
398
+ catch {
399
+ // File not found, try next
400
+ }
401
+ }
402
+ return undefined;
403
+ }
375
404
  /**
376
405
  * Write .gitignore content
377
406
  */
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/git/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/git/operations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Message, License, Repository } from '@sumicom/quicksave-shared';
2
- import { ClaudeCodeService } from '../ai/claudeCodeService.js';
1
+ import { Message, License, Repository, SessionRegistryEntry } from '@sumicom/quicksave-shared';
2
+ import { SessionManager } from '../ai/sessionManager.js';
3
3
  export declare class MessageHandler {
4
4
  private repos;
5
5
  private agentVersion;
@@ -14,6 +14,7 @@ export declare class MessageHandler {
14
14
  private versionCheckInFlight;
15
15
  onPeerSubscribed?: (peerAddress: string, sessionId: string) => void;
16
16
  onPeerUnsubscribed?: (peerAddress: string, sessionId: string) => void;
17
+ onHistoryUpdated?: (cwd: string, entry: SessionRegistryEntry, action: 'upsert' | 'delete') => void;
17
18
  private productionBuild;
18
19
  constructor(repos: Repository[], _license?: License, codingPaths?: string[], productionBuild?: boolean);
19
20
  /**
@@ -30,7 +31,7 @@ export declare class MessageHandler {
30
31
  removeClient(peerAddress: string): void;
31
32
  cleanup(): void;
32
33
  getActiveSessionCount(): number;
33
- getClaudeService(): ClaudeCodeService;
34
+ getClaudeService(): SessionManager;
34
35
  private getAiService;
35
36
  handleMessage(message: Message, peerAddress?: string): Promise<Message>;
36
37
  private handleHandshake;
@@ -75,6 +76,10 @@ export declare class MessageHandler {
75
76
  private handleGetSessionConfig;
76
77
  private handleSetSessionConfig;
77
78
  private handleGetActiveSessions;
79
+ private handleListHistory;
80
+ private handleUpdateHistory;
81
+ private handleDeleteHistory;
82
+ private getGitBranchQuiet;
78
83
  private createErrorResponse;
79
84
  }
80
85
  //# 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,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"}
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"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"}
@@ -2,25 +2,29 @@ import { createMessage, generateMessageId, } from '@sumicom/quicksave-shared';
2
2
  import { GitOperations } from '../git/operations.js';
3
3
  import { getAnthropicApiKey, setAnthropicApiKey, hasAnthropicApiKey, addManagedRepo, addManagedCodingPath } from '../config.js';
4
4
  import { CommitSummaryService } from '../ai/commitSummary.js';
5
- import { ClaudeCodeService } from '../ai/claudeCodeService.js';
5
+ import { SessionManager } from '../ai/sessionManager.js';
6
+ import { ClaudeCliProvider } from '../ai/claudeCliProvider.js';
7
+ import { ClaudeSdkProvider } from '../ai/claudeSdkProvider.js';
8
+ import { getSessionRegistry } from '../ai/sessionRegistry.js';
6
9
  import { readdir, stat } from 'fs/promises';
7
10
  import { join, dirname, basename } from 'path';
8
11
  import { homedir } from 'os';
9
12
  const VERSION_CHECK_INTERVAL_MS = 12 * 60 * 60 * 1000; // 12 hours
10
13
  export class MessageHandler {
11
14
  repos;
12
- agentVersion = '0.6.0';
15
+ agentVersion = '0.6.1';
13
16
  defaultRepoPath;
14
17
  clientRepos = new Map(); // peerAddress -> repoPath
15
18
  repoLocks = new Map(); // repoPath -> peerAddress holding lock
16
19
  availableRepos;
17
20
  codingPaths = new Map(); // path -> CodingPath
18
21
  aiService = null;
19
- claudeService = new ClaudeCodeService();
22
+ claudeService = new SessionManager(new ClaudeCliProvider(), new ClaudeSdkProvider());
20
23
  latestVersionCache = null;
21
24
  versionCheckInFlight = null;
22
25
  onPeerSubscribed;
23
26
  onPeerUnsubscribed;
27
+ onHistoryUpdated;
24
28
  productionBuild;
25
29
  constructor(repos, _license, codingPaths, productionBuild = false) {
26
30
  this.repos = new Map();
@@ -237,6 +241,12 @@ export class MessageHandler {
237
241
  return this.handleGetSessionConfig(message);
238
242
  case 'session:set-config':
239
243
  return this.handleSetSessionConfig(message);
244
+ case 'session:list-history':
245
+ return this.handleListHistory(message, peerAddress);
246
+ case 'session:update-history':
247
+ return this.handleUpdateHistory(message);
248
+ case 'session:delete-history':
249
+ return this.handleDeleteHistory(message);
240
250
  default:
241
251
  return this.createErrorResponse(message.id, 'UNKNOWN_MESSAGE_TYPE', `Unknown message type: ${message.type}`);
242
252
  }
@@ -398,8 +408,8 @@ export class MessageHandler {
398
408
  return response;
399
409
  }
400
410
  try {
401
- const { message: commitMessage, description } = message.payload;
402
- const hash = await this.getGit(peerAddress).commit(commitMessage, description);
411
+ const { message: commitMessage, description, attribution } = message.payload;
412
+ const hash = await this.getGit(peerAddress).commit(commitMessage, description, attribution ?? true);
403
413
  const response = createMessage('git:commit:response', {
404
414
  success: true,
405
415
  hash,
@@ -603,13 +613,24 @@ export class MessageHandler {
603
613
  response.id = message.id;
604
614
  return response;
605
615
  }
606
- // Collect diffs for all staged files
607
- const diffs = await Promise.all(status.staged.map((file) => git.getDiff(file.path, true)));
616
+ // Collect diffs and context in parallel
617
+ const [diffs, recentLog, branchInfo, conventions] = await Promise.all([
618
+ Promise.all(status.staged.map((file) => git.getDiff(file.path, true))),
619
+ git.getLog(10).catch(() => []),
620
+ git.getBranches().catch(() => ({ current: '' })),
621
+ git.readCommitConventions().catch(() => undefined),
622
+ ]);
623
+ const recentCommits = recentLog.map((c) => c.message);
624
+ const branchName = branchInfo.current;
608
625
  // Generate summary (uses internal queue and cache)
609
626
  const result = await aiService.generateSummary({
610
627
  diffs,
611
628
  context: message.payload.context,
612
629
  model: message.payload.model,
630
+ recentCommits: recentCommits.length > 0 ? recentCommits : undefined,
631
+ branchName: branchName || undefined,
632
+ conventions,
633
+ attribution: message.payload.attribution,
613
634
  });
614
635
  const response = createMessage('ai:generate-commit-summary:response', {
615
636
  success: true,
@@ -941,16 +962,29 @@ export class MessageHandler {
941
962
  }
942
963
  }
943
964
  async handleClaudeStart(message, peerAddress) {
944
- const { prompt, cwd: payloadCwd, allowedTools, systemPrompt, model, permissionMode } = message.payload;
965
+ const { prompt, cwd: payloadCwd, allowedTools, systemPrompt, model, permissionMode, sandboxed } = message.payload;
945
966
  const cwd = payloadCwd || this.getClientRepoPath(peerAddress);
946
967
  const streamId = generateMessageId();
947
- console.log(`[claude:start] cwd=${cwd} prompt=${prompt.slice(0, 80)}`);
968
+ console.log(`[claude:start] cwd=${cwd} prompt=${prompt.slice(0, 80)}${sandboxed ? ' [sandboxed]' : ''}`);
948
969
  try {
949
970
  const sessionId = await this.claudeService.startSession({
950
- prompt, cwd, streamId, allowedTools, systemPrompt, model, permissionMode,
971
+ prompt, cwd, streamId, allowedTools, systemPrompt, model, permissionMode, sandboxed,
951
972
  });
952
973
  console.log(`[claude:start] session created: ${sessionId}`);
953
974
  this.onPeerSubscribed?.(peerAddress, sessionId);
975
+ // Register in session history
976
+ const now = Date.now();
977
+ const registry = getSessionRegistry();
978
+ const gitBranch = await this.getGitBranchQuiet(cwd);
979
+ registry.upsertEntry({
980
+ sessionId, cwd,
981
+ repoName: basename(cwd),
982
+ gitBranch,
983
+ firstPrompt: prompt.slice(0, 100),
984
+ createdAt: now,
985
+ lastAccessedAt: now,
986
+ });
987
+ this.onHistoryUpdated?.(cwd, registry.getEntry(cwd, sessionId), 'upsert');
954
988
  const response = createMessage('claude:start:response', { success: true, sessionId, streamId });
955
989
  response.id = message.id;
956
990
  return response;
@@ -980,6 +1014,17 @@ export class MessageHandler {
980
1014
  if (actualSessionId !== requestedId) {
981
1015
  this.onPeerSubscribed?.(peerAddress, actualSessionId);
982
1016
  }
1017
+ // Update session history
1018
+ const registry = getSessionRegistry();
1019
+ const existing = registry.getEntry(cwd, requestedId) ?? registry.getEntry(cwd, actualSessionId);
1020
+ const gitBranch = await this.getGitBranchQuiet(cwd);
1021
+ registry.upsertEntry({
1022
+ ...(existing ?? { sessionId: actualSessionId, cwd, repoName: basename(cwd), createdAt: Date.now() }),
1023
+ sessionId: actualSessionId,
1024
+ lastAccessedAt: Date.now(),
1025
+ gitBranch,
1026
+ });
1027
+ this.onHistoryUpdated?.(cwd, registry.getEntry(cwd, actualSessionId), 'upsert');
983
1028
  const response = createMessage('claude:resume:response', { success: true, sessionId: actualSessionId, streamId });
984
1029
  response.id = message.id;
985
1030
  return response;
@@ -991,9 +1036,9 @@ export class MessageHandler {
991
1036
  return response;
992
1037
  }
993
1038
  }
994
- handleClaudeCancel(message) {
1039
+ async handleClaudeCancel(message) {
995
1040
  const { sessionId } = message.payload;
996
- const success = this.claudeService.cancelSession(sessionId);
1041
+ const success = await this.claudeService.cancelSession(sessionId);
997
1042
  const response = createMessage('claude:cancel:response', { success, error: success ? undefined : 'Session not found or already ended' });
998
1043
  response.id = message.id;
999
1044
  return response;
@@ -1074,6 +1119,45 @@ export class MessageHandler {
1074
1119
  response.id = message.id;
1075
1120
  return response;
1076
1121
  }
1122
+ // ── Session Registry (History) ──────────────────────────────────────
1123
+ handleListHistory(message, peerAddress) {
1124
+ const cwd = message.payload.cwd || this.getClientRepoPath(peerAddress);
1125
+ const entries = getSessionRegistry().getEntriesForProject(cwd);
1126
+ const response = createMessage('session:list-history:response', { entries });
1127
+ response.id = message.id;
1128
+ return response;
1129
+ }
1130
+ handleUpdateHistory(message) {
1131
+ const { sessionId, cwd, updates } = message.payload;
1132
+ const entry = getSessionRegistry().updateEntry(cwd, sessionId, updates);
1133
+ const response = createMessage('session:update-history:response', entry ? { success: true, entry } : { success: false, error: 'Entry not found' });
1134
+ response.id = message.id;
1135
+ if (entry) {
1136
+ this.onHistoryUpdated?.(cwd, entry, 'upsert');
1137
+ }
1138
+ return response;
1139
+ }
1140
+ handleDeleteHistory(message) {
1141
+ const { sessionId, cwd } = message.payload;
1142
+ const entry = getSessionRegistry().getEntry(cwd, sessionId);
1143
+ const success = getSessionRegistry().deleteEntry(cwd, sessionId);
1144
+ const response = createMessage('session:delete-history:response', { success, error: success ? undefined : 'Entry not found' });
1145
+ response.id = message.id;
1146
+ if (success && entry) {
1147
+ this.onHistoryUpdated?.(cwd, entry, 'delete');
1148
+ }
1149
+ return response;
1150
+ }
1151
+ async getGitBranchQuiet(cwd) {
1152
+ try {
1153
+ const git = new GitOperations(cwd);
1154
+ const { current } = await git.getBranches();
1155
+ return current || undefined;
1156
+ }
1157
+ catch {
1158
+ return undefined;
1159
+ }
1160
+ }
1077
1161
  createErrorResponse(id, code, message) {
1078
1162
  const response = createMessage('error', { code, message });
1079
1163
  response.id = id;