@sumicom/quicksave 0.1.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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ai/commitSummary.d.ts +26 -0
  3. package/dist/ai/commitSummary.d.ts.map +1 -0
  4. package/dist/ai/commitSummary.js +145 -0
  5. package/dist/ai/commitSummary.js.map +1 -0
  6. package/dist/config.d.ts +22 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +76 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/connection/connection.d.ts +54 -0
  11. package/dist/connection/connection.d.ts.map +1 -0
  12. package/dist/connection/connection.js +171 -0
  13. package/dist/connection/connection.js.map +1 -0
  14. package/dist/connection/signaling.d.ts +31 -0
  15. package/dist/connection/signaling.d.ts.map +1 -0
  16. package/dist/connection/signaling.js +144 -0
  17. package/dist/connection/signaling.js.map +1 -0
  18. package/dist/git/operations.d.ts +104 -0
  19. package/dist/git/operations.d.ts.map +1 -0
  20. package/dist/git/operations.js +383 -0
  21. package/dist/git/operations.js.map +1 -0
  22. package/dist/git/operations.test.d.ts +2 -0
  23. package/dist/git/operations.test.d.ts.map +1 -0
  24. package/dist/git/operations.test.js +232 -0
  25. package/dist/git/operations.test.js.map +1 -0
  26. package/dist/handlers/messageHandler.d.ts +33 -0
  27. package/dist/handlers/messageHandler.d.ts.map +1 -0
  28. package/dist/handlers/messageHandler.js +463 -0
  29. package/dist/handlers/messageHandler.js.map +1 -0
  30. package/dist/handlers/messageHandler.test.d.ts +2 -0
  31. package/dist/handlers/messageHandler.test.d.ts.map +1 -0
  32. package/dist/handlers/messageHandler.test.js +233 -0
  33. package/dist/handlers/messageHandler.test.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +127 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/webrtc/connection.d.ts +52 -0
  39. package/dist/webrtc/connection.d.ts.map +1 -0
  40. package/dist/webrtc/connection.js +255 -0
  41. package/dist/webrtc/connection.js.map +1 -0
  42. package/dist/webrtc/signaling.d.ts +41 -0
  43. package/dist/webrtc/signaling.d.ts.map +1 -0
  44. package/dist/webrtc/signaling.js +152 -0
  45. package/dist/webrtc/signaling.js.map +1 -0
  46. package/package.json +36 -0
  47. package/src/ai/commitSummary.ts +199 -0
  48. package/src/config.ts +97 -0
  49. package/src/connection/connection.ts +223 -0
  50. package/src/connection/signaling.ts +172 -0
  51. package/src/git/operations.test.ts +305 -0
  52. package/src/git/operations.ts +443 -0
  53. package/src/handlers/messageHandler.test.ts +294 -0
  54. package/src/handlers/messageHandler.ts +550 -0
  55. package/src/index.ts +151 -0
  56. package/src/types/webrtc.d.ts +38 -0
  57. package/tsconfig.json +13 -0
  58. package/vitest.config.ts +9 -0
@@ -0,0 +1,232 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { GitOperations } from './operations.js';
3
+ import { mkdir, writeFile, rm } from 'fs/promises';
4
+ import { join } from 'path';
5
+ import { tmpdir } from 'os';
6
+ import { simpleGit } from 'simple-git';
7
+ describe('GitOperations', () => {
8
+ let testRepoPath;
9
+ let gitOps;
10
+ let defaultBranch;
11
+ beforeEach(async () => {
12
+ // Create temporary test repo
13
+ testRepoPath = join(tmpdir(), `quicksave-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
14
+ await mkdir(testRepoPath, { recursive: true });
15
+ // Initialize git repo
16
+ const git = simpleGit(testRepoPath);
17
+ await git.init();
18
+ await git.addConfig('user.email', 'test@test.com');
19
+ await git.addConfig('user.name', 'Test User');
20
+ // Create initial commit
21
+ await writeFile(join(testRepoPath, 'README.md'), '# Test Repo\n');
22
+ await git.add('README.md');
23
+ await git.commit('Initial commit');
24
+ // Get the default branch name (could be 'main' or 'master' depending on git config)
25
+ const status = await git.status();
26
+ defaultBranch = status.current || 'main';
27
+ gitOps = new GitOperations(testRepoPath);
28
+ });
29
+ afterEach(async () => {
30
+ // Cleanup
31
+ try {
32
+ await rm(testRepoPath, { recursive: true, force: true });
33
+ }
34
+ catch {
35
+ // Ignore cleanup errors
36
+ }
37
+ });
38
+ describe('isValidRepo', () => {
39
+ it('should return true for valid git repo', async () => {
40
+ const isValid = await gitOps.isValidRepo();
41
+ expect(isValid).toBe(true);
42
+ });
43
+ it('should return false for non-git directory', async () => {
44
+ const nonGitPath = join(tmpdir(), `non-git-${Date.now()}`);
45
+ await mkdir(nonGitPath, { recursive: true });
46
+ const ops = new GitOperations(nonGitPath);
47
+ const isValid = await ops.isValidRepo();
48
+ expect(isValid).toBe(false);
49
+ await rm(nonGitPath, { recursive: true, force: true });
50
+ });
51
+ });
52
+ describe('getStatus', () => {
53
+ it('should return clean status for unchanged repo', async () => {
54
+ const status = await gitOps.getStatus();
55
+ expect(status.branch).toBe(defaultBranch);
56
+ expect(status.staged).toHaveLength(0);
57
+ expect(status.unstaged).toHaveLength(0);
58
+ expect(status.untracked).toHaveLength(0);
59
+ });
60
+ it('should detect untracked files', async () => {
61
+ await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
62
+ const status = await gitOps.getStatus();
63
+ expect(status.untracked).toContain('newfile.txt');
64
+ });
65
+ it('should detect modified files', async () => {
66
+ await writeFile(join(testRepoPath, 'README.md'), '# Modified\n');
67
+ const status = await gitOps.getStatus();
68
+ expect(status.unstaged).toHaveLength(1);
69
+ expect(status.unstaged[0].path).toBe('README.md');
70
+ expect(status.unstaged[0].status).toBe('modified');
71
+ });
72
+ it('should detect staged files', async () => {
73
+ await writeFile(join(testRepoPath, 'README.md'), '# Modified\n');
74
+ await simpleGit(testRepoPath).add('README.md');
75
+ const status = await gitOps.getStatus();
76
+ expect(status.staged).toHaveLength(1);
77
+ expect(status.staged[0].path).toBe('README.md');
78
+ });
79
+ it('should detect new staged files as added', async () => {
80
+ await writeFile(join(testRepoPath, 'newfile.txt'), 'content');
81
+ await simpleGit(testRepoPath).add('newfile.txt');
82
+ const status = await gitOps.getStatus();
83
+ expect(status.staged).toHaveLength(1);
84
+ expect(status.staged[0].path).toBe('newfile.txt');
85
+ expect(status.staged[0].status).toBe('added');
86
+ });
87
+ });
88
+ describe('stage', () => {
89
+ it('should stage a single file', async () => {
90
+ await writeFile(join(testRepoPath, 'file.txt'), 'content');
91
+ await gitOps.stage(['file.txt']);
92
+ const status = await gitOps.getStatus();
93
+ expect(status.staged.some(f => f.path === 'file.txt')).toBe(true);
94
+ expect(status.untracked).not.toContain('file.txt');
95
+ });
96
+ it('should stage multiple files', async () => {
97
+ await writeFile(join(testRepoPath, 'file1.txt'), 'content1');
98
+ await writeFile(join(testRepoPath, 'file2.txt'), 'content2');
99
+ await gitOps.stage(['file1.txt', 'file2.txt']);
100
+ const status = await gitOps.getStatus();
101
+ expect(status.staged).toHaveLength(2);
102
+ });
103
+ });
104
+ describe('unstage', () => {
105
+ it('should unstage a staged file', async () => {
106
+ await writeFile(join(testRepoPath, 'file.txt'), 'content');
107
+ await simpleGit(testRepoPath).add('file.txt');
108
+ await gitOps.unstage(['file.txt']);
109
+ const status = await gitOps.getStatus();
110
+ expect(status.staged).toHaveLength(0);
111
+ expect(status.untracked).toContain('file.txt');
112
+ });
113
+ });
114
+ describe('commit', () => {
115
+ it('should create a commit with message', async () => {
116
+ await writeFile(join(testRepoPath, 'file.txt'), 'content');
117
+ await simpleGit(testRepoPath).add('file.txt');
118
+ const hash = await gitOps.commit('Test commit');
119
+ expect(hash).toBeDefined();
120
+ expect(typeof hash).toBe('string');
121
+ const log = await gitOps.getLog(1);
122
+ expect(log[0].message).toBe('Test commit');
123
+ });
124
+ it('should create a commit with message and description', async () => {
125
+ await writeFile(join(testRepoPath, 'file.txt'), 'content');
126
+ await simpleGit(testRepoPath).add('file.txt');
127
+ await gitOps.commit('Title', 'Description body');
128
+ const log = await gitOps.getLog(1);
129
+ expect(log[0].message).toContain('Title');
130
+ });
131
+ });
132
+ describe('getLog', () => {
133
+ it('should return commit history', async () => {
134
+ const log = await gitOps.getLog();
135
+ expect(log).toHaveLength(1);
136
+ expect(log[0].message).toBe('Initial commit');
137
+ expect(log[0].author).toBe('Test User');
138
+ expect(log[0].email).toBe('test@test.com');
139
+ });
140
+ it('should return limited commits', async () => {
141
+ // Create more commits
142
+ for (let i = 0; i < 5; i++) {
143
+ await writeFile(join(testRepoPath, `file${i}.txt`), `content${i}`);
144
+ await simpleGit(testRepoPath).add(`file${i}.txt`);
145
+ await simpleGit(testRepoPath).commit(`Commit ${i}`);
146
+ }
147
+ const log = await gitOps.getLog(3);
148
+ expect(log).toHaveLength(3);
149
+ });
150
+ it('should have proper commit structure', async () => {
151
+ const log = await gitOps.getLog(1);
152
+ const commit = log[0];
153
+ expect(commit.hash).toMatch(/^[a-f0-9]{40}$/);
154
+ expect(commit.shortHash).toHaveLength(7);
155
+ expect(commit.shortHash).toBe(commit.hash.slice(0, 7));
156
+ });
157
+ });
158
+ describe('getBranches', () => {
159
+ it('should return current branch', async () => {
160
+ const { branches, current } = await gitOps.getBranches();
161
+ expect(current).toBe(defaultBranch);
162
+ expect(branches.some(b => b.name === defaultBranch && b.current)).toBe(true);
163
+ });
164
+ it('should list multiple branches', async () => {
165
+ await simpleGit(testRepoPath).checkoutLocalBranch('feature');
166
+ const { branches } = await gitOps.getBranches();
167
+ expect(branches.some(b => b.name === defaultBranch)).toBe(true);
168
+ expect(branches.some(b => b.name === 'feature')).toBe(true);
169
+ });
170
+ });
171
+ describe('checkout', () => {
172
+ it('should checkout existing branch', async () => {
173
+ await simpleGit(testRepoPath).checkoutLocalBranch('feature');
174
+ // Go back to default branch
175
+ await gitOps.checkout(defaultBranch);
176
+ let { current } = await gitOps.getBranches();
177
+ expect(current).toBe(defaultBranch);
178
+ // Now checkout feature again
179
+ await gitOps.checkout('feature');
180
+ ({ current } = await gitOps.getBranches());
181
+ expect(current).toBe('feature');
182
+ });
183
+ it('should create and checkout new branch', async () => {
184
+ await gitOps.checkout('new-branch', true);
185
+ const { current } = await gitOps.getBranches();
186
+ expect(current).toBe('new-branch');
187
+ });
188
+ });
189
+ describe('discard', () => {
190
+ it('should discard changes in modified file', async () => {
191
+ await writeFile(join(testRepoPath, 'README.md'), '# Modified\n');
192
+ let status = await gitOps.getStatus();
193
+ expect(status.unstaged).toHaveLength(1);
194
+ await gitOps.discard(['README.md']);
195
+ status = await gitOps.getStatus();
196
+ expect(status.unstaged).toHaveLength(0);
197
+ });
198
+ });
199
+ describe('getDiff', () => {
200
+ it('should return diff for modified file', async () => {
201
+ await writeFile(join(testRepoPath, 'README.md'), '# Modified Content\n');
202
+ const diff = await gitOps.getDiff('README.md');
203
+ expect(diff.path).toBe('README.md');
204
+ expect(diff.isBinary).toBe(false);
205
+ expect(diff.hunks.length).toBeGreaterThan(0);
206
+ });
207
+ it('should return diff for staged file', async () => {
208
+ await writeFile(join(testRepoPath, 'README.md'), '# Staged Change\n');
209
+ await simpleGit(testRepoPath).add('README.md');
210
+ const diff = await gitOps.getDiff('README.md', true);
211
+ expect(diff.path).toBe('README.md');
212
+ expect(diff.hunks.length).toBeGreaterThan(0);
213
+ });
214
+ it('should parse hunk headers correctly', async () => {
215
+ // Create a file with multiple lines
216
+ await writeFile(join(testRepoPath, 'multi.txt'), 'line1\nline2\nline3\n');
217
+ await simpleGit(testRepoPath).add('multi.txt');
218
+ await simpleGit(testRepoPath).commit('Add multi.txt');
219
+ // Modify middle line
220
+ await writeFile(join(testRepoPath, 'multi.txt'), 'line1\nmodified\nline3\n');
221
+ const diff = await gitOps.getDiff('multi.txt');
222
+ expect(diff.hunks).toHaveLength(1);
223
+ expect(diff.hunks[0].content).toContain('-line2');
224
+ expect(diff.hunks[0].content).toContain('+modified');
225
+ });
226
+ it('should return empty hunks for unchanged file', async () => {
227
+ const diff = await gitOps.getDiff('README.md');
228
+ expect(diff.hunks).toHaveLength(0);
229
+ });
230
+ });
231
+ });
232
+ //# sourceMappingURL=operations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.test.js","sourceRoot":"","sources":["../../src/git/operations.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { Message, License, Repository } from '@sumicom/quicksave-shared';
2
+ export declare class MessageHandler {
3
+ private repos;
4
+ private agentVersion;
5
+ private currentRepoPath;
6
+ private availableRepos;
7
+ private aiService;
8
+ constructor(repos: Repository[], _license?: License);
9
+ private get git();
10
+ private getAiService;
11
+ handleMessage(message: Message): Promise<Message>;
12
+ private handleHandshake;
13
+ private handleStatus;
14
+ private handleDiff;
15
+ private handleStage;
16
+ private handleUnstage;
17
+ private handleStagePatch;
18
+ private handleUnstagePatch;
19
+ private handleCommit;
20
+ private handleLog;
21
+ private handleBranches;
22
+ private handleCheckout;
23
+ private handleDiscard;
24
+ private handleGenerateCommitSummary;
25
+ private handleSetApiKey;
26
+ private handleGetApiKeyStatus;
27
+ private handleListRepos;
28
+ private handleSwitchRepo;
29
+ private handleBrowseDirectory;
30
+ private handleAddRepo;
31
+ private createErrorResponse;
32
+ }
33
+ //# sourceMappingURL=messageHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EA0BP,OAAO,EAMP,UAAU,EASX,MAAM,2BAA2B,CAAC;AAQnC,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,SAAS,CAAqC;gBAE1C,KAAK,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO;IAUnD,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,CAAC,YAAY;IAWd,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDvD,OAAO,CAAC,eAAe;YAWT,YAAY;YAOZ,UAAU;YAQV,WAAW;YAgBX,aAAa;YAgBb,gBAAgB;YAgBhB,kBAAkB;YAgBlB,YAAY;YAoBZ,SAAS;YAQT,cAAc;YAQd,cAAc;YAiBd,aAAa;YAgBb,2BAA2B;IAwEzC,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,qBAAqB;YAQf,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;YAuBV,qBAAqB;YAiErB,aAAa;IA6C3B,OAAO,CAAC,mBAAmB;CAK5B"}