@kodus/cli 0.1.12 → 0.2.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 (102) hide show
  1. package/README.md +36 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/__tests__/auth.team-key.test.js +16 -0
  6. package/dist/commands/__tests__/auth.team-key.test.js.map +1 -1
  7. package/dist/commands/__tests__/capture-api.test.d.ts +2 -0
  8. package/dist/commands/__tests__/capture-api.test.d.ts.map +1 -0
  9. package/dist/commands/__tests__/capture-api.test.js +88 -0
  10. package/dist/commands/__tests__/capture-api.test.js.map +1 -0
  11. package/dist/commands/__tests__/disable.test.d.ts +2 -0
  12. package/dist/commands/__tests__/disable.test.d.ts.map +1 -0
  13. package/dist/commands/__tests__/disable.test.js +94 -0
  14. package/dist/commands/__tests__/disable.test.js.map +1 -0
  15. package/dist/commands/__tests__/enable.test.d.ts +2 -0
  16. package/dist/commands/__tests__/enable.test.d.ts.map +1 -0
  17. package/dist/commands/__tests__/enable.test.js +94 -0
  18. package/dist/commands/__tests__/enable.test.js.map +1 -0
  19. package/dist/commands/__tests__/install-merge-hook.test.d.ts +2 -0
  20. package/dist/commands/__tests__/install-merge-hook.test.d.ts.map +1 -0
  21. package/dist/commands/__tests__/install-merge-hook.test.js +54 -0
  22. package/dist/commands/__tests__/install-merge-hook.test.js.map +1 -0
  23. package/dist/commands/auth/team-key.d.ts.map +1 -1
  24. package/dist/commands/auth/team-key.js +1 -1
  25. package/dist/commands/auth/team-key.js.map +1 -1
  26. package/dist/commands/memory/capture.d.ts +8 -0
  27. package/dist/commands/memory/capture.d.ts.map +1 -0
  28. package/dist/commands/memory/capture.js +173 -0
  29. package/dist/commands/memory/capture.js.map +1 -0
  30. package/dist/commands/memory/disable.d.ts +2 -0
  31. package/dist/commands/memory/disable.d.ts.map +1 -0
  32. package/dist/commands/memory/disable.js +20 -0
  33. package/dist/commands/memory/disable.js.map +1 -0
  34. package/dist/commands/memory/enable.d.ts +8 -0
  35. package/dist/commands/memory/enable.d.ts.map +1 -0
  36. package/dist/commands/memory/enable.js +81 -0
  37. package/dist/commands/memory/enable.js.map +1 -0
  38. package/dist/commands/memory/hooks.d.ts +44 -0
  39. package/dist/commands/memory/hooks.d.ts.map +1 -0
  40. package/dist/commands/memory/hooks.js +341 -0
  41. package/dist/commands/memory/hooks.js.map +1 -0
  42. package/dist/commands/memory/index.d.ts +3 -0
  43. package/dist/commands/memory/index.d.ts.map +1 -0
  44. package/dist/commands/memory/index.js +44 -0
  45. package/dist/commands/memory/index.js.map +1 -0
  46. package/dist/commands/memory/promote.d.ts +7 -0
  47. package/dist/commands/memory/promote.d.ts.map +1 -0
  48. package/dist/commands/memory/promote.js +38 -0
  49. package/dist/commands/memory/promote.js.map +1 -0
  50. package/dist/commands/memory/show.d.ts +2 -0
  51. package/dist/commands/memory/show.d.ts.map +1 -0
  52. package/dist/commands/memory/show.js +44 -0
  53. package/dist/commands/memory/show.js.map +1 -0
  54. package/dist/commands/memory/status.d.ts +2 -0
  55. package/dist/commands/memory/status.d.ts.map +1 -0
  56. package/dist/commands/memory/status.js +54 -0
  57. package/dist/commands/memory/status.js.map +1 -0
  58. package/dist/services/__tests__/memory.service.test.d.ts +2 -0
  59. package/dist/services/__tests__/memory.service.test.d.ts.map +1 -0
  60. package/dist/services/__tests__/memory.service.test.js +279 -0
  61. package/dist/services/__tests__/memory.service.test.js.map +1 -0
  62. package/dist/services/__tests__/transcript-parser.service.test.d.ts +2 -0
  63. package/dist/services/__tests__/transcript-parser.service.test.d.ts.map +1 -0
  64. package/dist/services/__tests__/transcript-parser.service.test.js +134 -0
  65. package/dist/services/__tests__/transcript-parser.service.test.js.map +1 -0
  66. package/dist/services/api/__tests__/api.real.test.js +11 -0
  67. package/dist/services/api/__tests__/api.real.test.js.map +1 -1
  68. package/dist/services/api/api.interface.d.ts +5 -1
  69. package/dist/services/api/api.interface.d.ts.map +1 -1
  70. package/dist/services/api/api.real.d.ts +2 -1
  71. package/dist/services/api/api.real.d.ts.map +1 -1
  72. package/dist/services/api/api.real.js +15 -1
  73. package/dist/services/api/api.real.js.map +1 -1
  74. package/dist/services/api/index.d.ts +1 -1
  75. package/dist/services/api/index.d.ts.map +1 -1
  76. package/dist/services/git.service.d.ts +1 -0
  77. package/dist/services/git.service.d.ts.map +1 -1
  78. package/dist/services/git.service.js +9 -0
  79. package/dist/services/git.service.js.map +1 -1
  80. package/dist/services/memory.service.d.ts +49 -0
  81. package/dist/services/memory.service.d.ts.map +1 -0
  82. package/dist/services/memory.service.js +450 -0
  83. package/dist/services/memory.service.js.map +1 -0
  84. package/dist/services/transcript-parser.service.d.ts +10 -0
  85. package/dist/services/transcript-parser.service.d.ts.map +1 -0
  86. package/dist/services/transcript-parser.service.js +96 -0
  87. package/dist/services/transcript-parser.service.js.map +1 -0
  88. package/dist/types/index.d.ts +1 -0
  89. package/dist/types/index.d.ts.map +1 -1
  90. package/dist/types/memory.d.ts +85 -0
  91. package/dist/types/memory.d.ts.map +1 -0
  92. package/dist/types/memory.js +2 -0
  93. package/dist/types/memory.js.map +1 -0
  94. package/dist/utils/__tests__/module-matcher.test.d.ts +2 -0
  95. package/dist/utils/__tests__/module-matcher.test.d.ts.map +1 -0
  96. package/dist/utils/__tests__/module-matcher.test.js +164 -0
  97. package/dist/utils/__tests__/module-matcher.test.js.map +1 -0
  98. package/dist/utils/module-matcher.d.ts +6 -0
  99. package/dist/utils/module-matcher.d.ts.map +1 -0
  100. package/dist/utils/module-matcher.js +94 -0
  101. package/dist/utils/module-matcher.js.map +1 -0
  102. package/package.json +3 -2
@@ -0,0 +1,279 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ vi.mock('fs/promises', () => ({
3
+ default: {
4
+ readFile: vi.fn(),
5
+ writeFile: vi.fn(),
6
+ appendFile: vi.fn(),
7
+ mkdir: vi.fn(),
8
+ access: vi.fn(),
9
+ },
10
+ }));
11
+ vi.mock('../../utils/module-matcher.js', () => ({
12
+ loadConfig: vi.fn(),
13
+ matchFiles: vi.fn(),
14
+ }));
15
+ import fs from 'fs/promises';
16
+ import { memoryService } from '../memory.service.js';
17
+ import { loadConfig, matchFiles } from '../../utils/module-matcher.js';
18
+ beforeEach(() => {
19
+ vi.clearAllMocks();
20
+ vi.mocked(fs.mkdir).mockResolvedValue(undefined);
21
+ vi.mocked(fs.writeFile).mockResolvedValue(undefined);
22
+ vi.mocked(fs.appendFile).mockResolvedValue(undefined);
23
+ });
24
+ describe('MemoryService', () => {
25
+ describe('sanitizeBranchName', () => {
26
+ it('preserves simple branch names', () => {
27
+ expect(memoryService.sanitizeBranchName('main')).toBe('main');
28
+ expect(memoryService.sanitizeBranchName('feat/auth')).toBe('feat/auth');
29
+ });
30
+ it('replaces special characters with hyphens', () => {
31
+ expect(memoryService.sanitizeBranchName('feat/auth@v2')).toBe('feat/auth-v2');
32
+ });
33
+ it('strips leading/trailing special chars', () => {
34
+ expect(memoryService.sanitizeBranchName('/leading')).toBe('leading');
35
+ expect(memoryService.sanitizeBranchName('trailing/')).toBe('trailing');
36
+ });
37
+ it('collapses multiple slashes and dots', () => {
38
+ expect(memoryService.sanitizeBranchName('a//b')).toBe('a/b');
39
+ expect(memoryService.sanitizeBranchName('a..b')).toBe('a.b');
40
+ });
41
+ it('truncates long names', () => {
42
+ const long = 'a'.repeat(300);
43
+ expect(memoryService.sanitizeBranchName(long).length).toBeLessThanOrEqual(200);
44
+ });
45
+ it('returns unknown-branch for empty input', () => {
46
+ expect(memoryService.sanitizeBranchName('')).toBe('unknown-branch');
47
+ });
48
+ });
49
+ describe('getBranchMemoryPath', () => {
50
+ it('returns correct path for branch', () => {
51
+ const result = memoryService.getBranchMemoryPath('/repo', 'feat/auth');
52
+ expect(result).toBe('/repo/.kody/pr/feat/auth.md');
53
+ });
54
+ });
55
+ describe('saveBranchCapture', () => {
56
+ const baseInput = {
57
+ repoRoot: '/repo',
58
+ headSha: 'abc1234',
59
+ agent: 'claude-code',
60
+ event: 'stop',
61
+ branch: 'feat/auth',
62
+ };
63
+ const baseSignals = {
64
+ modifiedFiles: ['src/auth.ts'],
65
+ toolUses: [{ tool: 'Write', filePath: 'src/auth.ts' }],
66
+ prompt: 'Refactor auth',
67
+ assistantMessage: 'I decided to use JWT because it scales better.',
68
+ };
69
+ it('creates new branch file with frontmatter', async () => {
70
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
71
+ await memoryService.saveBranchCapture(baseInput, baseSignals);
72
+ const writeCall = vi.mocked(fs.writeFile).mock.calls[0];
73
+ expect(writeCall).toBeDefined();
74
+ const written = writeCall[1];
75
+ expect(written).toContain('---');
76
+ expect(written).toContain('branch: feat/auth');
77
+ expect(written).toContain('last_sha: abc1234');
78
+ expect(written).toContain('# PR Memory: feat/auth');
79
+ expect(written).toContain('## Decisions');
80
+ expect(written).toContain('## Captures');
81
+ });
82
+ it('appends capture and decision blocks', async () => {
83
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
84
+ await memoryService.saveBranchCapture(baseInput, baseSignals);
85
+ expect(fs.appendFile).toHaveBeenCalled();
86
+ const appended = vi.mocked(fs.appendFile).mock.calls[0][1];
87
+ expect(appended).toContain('claude-code | stop');
88
+ expect(appended).toContain('files_modified: src/auth.ts');
89
+ });
90
+ it('classifies decisions from assistant message', async () => {
91
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
92
+ await memoryService.saveBranchCapture(baseInput, baseSignals);
93
+ const appended = vi.mocked(fs.appendFile).mock.calls[0][1];
94
+ expect(appended).toContain('[architectural_decision]');
95
+ });
96
+ it('updates frontmatter for existing file', async () => {
97
+ vi.mocked(fs.access).mockResolvedValue(undefined);
98
+ vi.mocked(fs.readFile).mockResolvedValue('---\nbranch: feat/auth\ncreated: 2025-01-01T00:00:00Z\nupdated: 2025-01-01T00:00:00Z\nlast_sha: old123\nagent: claude-code\nsessions: 2\n---\n\n# PR Memory\n');
99
+ await memoryService.saveBranchCapture(baseInput, baseSignals);
100
+ // Find the writeFile call for frontmatter update (the file path containing .kody/pr/)
101
+ const writeCalls = vi.mocked(fs.writeFile).mock.calls;
102
+ const frontmatterCall = writeCalls.find((c) => c[0].includes('.kody/pr/'));
103
+ expect(frontmatterCall).toBeDefined();
104
+ const updated = frontmatterCall[1];
105
+ expect(updated).toContain('last_sha: abc1234');
106
+ expect(updated).toContain('sessions: 3');
107
+ });
108
+ });
109
+ describe('classifyDecisions', () => {
110
+ const baseInput = {
111
+ repoRoot: '/repo',
112
+ headSha: 'abc1234',
113
+ agent: 'claude-code',
114
+ event: 'stop',
115
+ branch: 'feat/test',
116
+ };
117
+ it('classifies architectural decisions', () => {
118
+ const signals = {
119
+ modifiedFiles: [],
120
+ toolUses: [],
121
+ assistantMessage: 'I decided to use a singleton pattern for the database connection.',
122
+ };
123
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
124
+ expect(decisions.length).toBeGreaterThan(0);
125
+ expect(decisions[0].type).toBe('architectural_decision');
126
+ });
127
+ it('classifies tradeoffs', () => {
128
+ const signals = {
129
+ modifiedFiles: [],
130
+ toolUses: [],
131
+ assistantMessage: 'This is a tradeoff between performance and code readability in the service layer.',
132
+ };
133
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
134
+ expect(decisions.length).toBeGreaterThan(0);
135
+ expect(decisions[0].type).toBe('tradeoff');
136
+ });
137
+ it('classifies deferrals', () => {
138
+ const signals = {
139
+ modifiedFiles: [],
140
+ toolUses: [],
141
+ assistantMessage: 'We should defer the caching implementation to a later sprint for this component.',
142
+ };
143
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
144
+ expect(decisions.length).toBeGreaterThan(0);
145
+ expect(decisions[0].type).toBe('deferral');
146
+ });
147
+ it('classifies conventions', () => {
148
+ const signals = {
149
+ modifiedFiles: [],
150
+ toolUses: [],
151
+ assistantMessage: 'The convention is to always use camelCase for variable names in this codebase.',
152
+ };
153
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
154
+ expect(decisions.length).toBeGreaterThan(0);
155
+ expect(decisions[0].type).toBe('convention');
156
+ });
157
+ it('returns empty for no decision keywords', () => {
158
+ const signals = {
159
+ modifiedFiles: [],
160
+ toolUses: [],
161
+ assistantMessage: 'Here is the updated file with the changes applied.',
162
+ };
163
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
164
+ expect(decisions).toEqual([]);
165
+ });
166
+ it('returns empty for empty text', () => {
167
+ const signals = {
168
+ modifiedFiles: [],
169
+ toolUses: [],
170
+ };
171
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
172
+ expect(decisions).toEqual([]);
173
+ });
174
+ it('includes modified files in scope', () => {
175
+ const signals = {
176
+ modifiedFiles: ['src/auth.ts', 'src/config.ts'],
177
+ toolUses: [],
178
+ assistantMessage: 'I decided to split the config into separate files.',
179
+ };
180
+ const decisions = memoryService.classifyDecisions(signals, baseInput);
181
+ expect(decisions[0].scope.files).toEqual(['src/auth.ts', 'src/config.ts']);
182
+ });
183
+ });
184
+ describe('readPrMemory', () => {
185
+ it('returns null when file does not exist', async () => {
186
+ vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'));
187
+ const result = await memoryService.readPrMemory('/repo', 'feat/auth');
188
+ expect(result).toBeNull();
189
+ });
190
+ it('parses frontmatter from existing file', async () => {
191
+ vi.mocked(fs.readFile).mockResolvedValue('---\nbranch: feat/auth\ncreated: 2025-01-01T00:00:00Z\nupdated: 2025-01-02T00:00:00Z\nlast_sha: abc1234\nagent: claude-code\nsessions: 3\n---\n\n# PR Memory\n');
192
+ const result = await memoryService.readPrMemory('/repo', 'feat/auth');
193
+ expect(result).not.toBeNull();
194
+ expect(result.meta).toEqual({
195
+ branch: 'feat/auth',
196
+ createdAt: '2025-01-01T00:00:00Z',
197
+ updatedAt: '2025-01-02T00:00:00Z',
198
+ lastSha: 'abc1234',
199
+ agent: 'claude-code',
200
+ sessionCount: 3,
201
+ });
202
+ });
203
+ });
204
+ describe('promoteToModuleMemory', () => {
205
+ it('returns zero when no PR memory exists', async () => {
206
+ vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'));
207
+ const result = await memoryService.promoteToModuleMemory('/repo', 'feat/auth');
208
+ expect(result).toEqual({ promoted: 0, modules: [] });
209
+ });
210
+ it('returns zero when no modules config exists', async () => {
211
+ vi.mocked(fs.readFile).mockResolvedValue('---\nbranch: feat/auth\n---\n# PR Memory\n');
212
+ vi.mocked(loadConfig).mockResolvedValue(null);
213
+ const result = await memoryService.promoteToModuleMemory('/repo', 'feat/auth');
214
+ expect(result).toEqual({ promoted: 0, modules: [] });
215
+ });
216
+ it('promotes decisions to matched modules', async () => {
217
+ const prContent = [
218
+ '---',
219
+ 'branch: feat/auth',
220
+ 'created: 2025-01-01T00:00:00Z',
221
+ 'updated: 2025-01-01T00:00:00Z',
222
+ 'last_sha: abc1234',
223
+ 'agent: claude-code',
224
+ 'sessions: 1',
225
+ '---',
226
+ '',
227
+ '# PR Memory: feat/auth',
228
+ '',
229
+ '## Decisions',
230
+ '',
231
+ '### [architectural_decision] Use JWT for auth',
232
+ '- **Rationale:** Stateless auth scales better.',
233
+ '- **Files:** src/auth/jwt.ts',
234
+ '- **Source:** claude-code / stop / 2025-01-01T00:00:00Z',
235
+ '',
236
+ ].join('\n');
237
+ // readPrMemory reads the PR file
238
+ vi.mocked(fs.readFile)
239
+ .mockResolvedValueOnce(prContent) // readPrMemory
240
+ .mockRejectedValueOnce(new Error('ENOENT')); // ensureModuleMemoryHeader (new file)
241
+ vi.mocked(loadConfig).mockResolvedValue({
242
+ version: 1,
243
+ modules: [
244
+ { id: 'auth', name: 'Authentication', paths: ['src/auth/**'], memoryFile: '.kody/memory/auth.md' },
245
+ ],
246
+ });
247
+ vi.mocked(matchFiles)
248
+ .mockReturnValueOnce(['auth']) // allFiles match
249
+ .mockReturnValueOnce(['auth']); // per-decision match
250
+ const result = await memoryService.promoteToModuleMemory('/repo', 'feat/auth');
251
+ expect(result.promoted).toBe(1);
252
+ expect(result.modules).toEqual(['auth']);
253
+ // Find the writeFile call that writes module memory
254
+ const writeCalls = vi.mocked(fs.writeFile).mock.calls;
255
+ const moduleCall = writeCalls.find((c) => c[0].includes('memory/auth.md'));
256
+ expect(moduleCall).toBeDefined();
257
+ const moduleContent = moduleCall[1];
258
+ expect(moduleContent).toContain('Use JWT for auth');
259
+ });
260
+ });
261
+ describe('legacy saveCapture', () => {
262
+ it('creates file with header and entry', async () => {
263
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
264
+ await memoryService.saveCapture({
265
+ repoRoot: '/repo',
266
+ headSha: 'abc1234',
267
+ agent: 'claude-code',
268
+ event: 'stop',
269
+ payload: { prompt: 'hello' },
270
+ });
271
+ expect(fs.writeFile).toHaveBeenCalled();
272
+ expect(fs.appendFile).toHaveBeenCalled();
273
+ const appended = vi.mocked(fs.appendFile).mock.calls[0][1];
274
+ expect(appended).toContain('claude-code');
275
+ expect(appended).toContain('stop');
276
+ });
277
+ });
278
+ });
279
+ //# sourceMappingURL=memory.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/memory.service.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transcript-parser.service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-parser.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/transcript-parser.service.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,134 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { transcriptParserService } from '../transcript-parser.service.js';
3
+ describe('TranscriptParserService', () => {
4
+ describe('parse', () => {
5
+ it('returns empty signals for null/undefined', () => {
6
+ expect(transcriptParserService.parse(null)).toEqual({
7
+ modifiedFiles: [],
8
+ toolUses: [],
9
+ });
10
+ expect(transcriptParserService.parse(undefined)).toEqual({
11
+ modifiedFiles: [],
12
+ toolUses: [],
13
+ });
14
+ });
15
+ it('returns empty signals for non-object input', () => {
16
+ expect(transcriptParserService.parse('string')).toEqual({
17
+ modifiedFiles: [],
18
+ toolUses: [],
19
+ });
20
+ expect(transcriptParserService.parse(42)).toEqual({
21
+ modifiedFiles: [],
22
+ toolUses: [],
23
+ });
24
+ expect(transcriptParserService.parse([1, 2])).toEqual({
25
+ modifiedFiles: [],
26
+ toolUses: [],
27
+ });
28
+ });
29
+ it('extracts session and turn IDs', () => {
30
+ const result = transcriptParserService.parse({
31
+ session_id: 'sess-123',
32
+ turn_id: 'turn-456',
33
+ });
34
+ expect(result.sessionId).toBe('sess-123');
35
+ expect(result.turnId).toBe('turn-456');
36
+ });
37
+ it('extracts prompt and assistant message', () => {
38
+ const result = transcriptParserService.parse({
39
+ prompt: 'Refactor the auth module',
40
+ last_assistant_message: 'I have refactored the auth module.',
41
+ });
42
+ expect(result.prompt).toBe('Refactor the auth module');
43
+ expect(result.assistantMessage).toBe('I have refactored the auth module.');
44
+ });
45
+ it('extracts tool uses from tool_uses array', () => {
46
+ const result = transcriptParserService.parse({
47
+ tool_uses: [
48
+ { tool: 'Write', file_path: 'src/auth.ts' },
49
+ { tool: 'Edit', file_path: 'src/config.ts' },
50
+ { tool: 'Read', file_path: 'src/main.ts' },
51
+ ],
52
+ });
53
+ expect(result.toolUses).toHaveLength(3);
54
+ expect(result.toolUses[0]).toEqual({ tool: 'Write', filePath: 'src/auth.ts', summary: undefined });
55
+ expect(result.toolUses[1]).toEqual({ tool: 'Edit', filePath: 'src/config.ts', summary: undefined });
56
+ });
57
+ it('extracts modified files only from Write/Edit tools', () => {
58
+ const result = transcriptParserService.parse({
59
+ tool_uses: [
60
+ { tool: 'Write', file_path: 'src/auth.ts' },
61
+ { tool: 'Read', file_path: 'src/main.ts' },
62
+ { tool: 'Edit', file_path: 'src/config.ts' },
63
+ ],
64
+ });
65
+ expect(result.modifiedFiles).toEqual(['src/auth.ts', 'src/config.ts']);
66
+ });
67
+ it('deduplicates modified files', () => {
68
+ const result = transcriptParserService.parse({
69
+ tool_uses: [
70
+ { tool: 'Write', file_path: 'src/auth.ts' },
71
+ { tool: 'Edit', file_path: 'src/auth.ts' },
72
+ ],
73
+ });
74
+ expect(result.modifiedFiles).toEqual(['src/auth.ts']);
75
+ });
76
+ it('handles content blocks with tool_use type (Claude format)', () => {
77
+ const result = transcriptParserService.parse({
78
+ content: [
79
+ {
80
+ type: 'tool_use',
81
+ name: 'Write',
82
+ input: { file_path: 'src/new-file.ts' },
83
+ },
84
+ {
85
+ type: 'text',
86
+ text: 'some response',
87
+ },
88
+ ],
89
+ });
90
+ expect(result.toolUses).toHaveLength(1);
91
+ expect(result.toolUses[0]).toEqual({ tool: 'Write', filePath: 'src/new-file.ts' });
92
+ expect(result.modifiedFiles).toEqual(['src/new-file.ts']);
93
+ });
94
+ it('handles alternate key names', () => {
95
+ const result = transcriptParserService.parse({
96
+ sessionId: 'alt-sess',
97
+ callId: 'alt-call',
98
+ user_message: 'hello',
99
+ 'assistant-message': 'world',
100
+ });
101
+ expect(result.sessionId).toBe('alt-sess');
102
+ expect(result.turnId).toBe('alt-call');
103
+ expect(result.prompt).toBe('hello');
104
+ expect(result.assistantMessage).toBe('world');
105
+ });
106
+ it('skips malformed tool_use entries', () => {
107
+ const result = transcriptParserService.parse({
108
+ tool_uses: [
109
+ null,
110
+ 'not-an-object',
111
+ { noToolName: true },
112
+ { tool: 'Write', file_path: 'valid.ts' },
113
+ ],
114
+ });
115
+ expect(result.toolUses).toHaveLength(1);
116
+ expect(result.toolUses[0].tool).toBe('Write');
117
+ });
118
+ it('returns empty signals for empty object', () => {
119
+ const result = transcriptParserService.parse({});
120
+ expect(result.modifiedFiles).toEqual([]);
121
+ expect(result.toolUses).toEqual([]);
122
+ expect(result.sessionId).toBeUndefined();
123
+ });
124
+ it('ignores empty/whitespace-only strings', () => {
125
+ const result = transcriptParserService.parse({
126
+ session_id: ' ',
127
+ prompt: '',
128
+ });
129
+ expect(result.sessionId).toBeUndefined();
130
+ expect(result.prompt).toBeUndefined();
131
+ });
132
+ });
133
+ });
134
+ //# sourceMappingURL=transcript-parser.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-parser.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/transcript-parser.service.test.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,17 @@ describe('RealApi request headers', () => {
70
70
  expect(deviceMocks.updateDeviceToken).toHaveBeenCalledWith('server-issued-token');
71
71
  });
72
72
  it('maps DEVICE_LIMIT_REACHED to a user-friendly message', async () => {
73
+ fetchMock.mockResolvedValue(new Response(JSON.stringify({
74
+ code: 'DEVICE_LIMIT_REACHED',
75
+ details: { limit: 5, current: 5 },
76
+ }), {
77
+ status: 401,
78
+ headers: { 'Content-Type': 'application/json' },
79
+ }));
80
+ const api = new RealApi();
81
+ await expect(api.trial.getStatus('fp')).rejects.toThrow('Device limit reached (5/5).');
82
+ });
83
+ it('keeps compatibility with legacy activeDevices field', async () => {
73
84
  fetchMock.mockResolvedValue(new Response(JSON.stringify({
74
85
  code: 'DEVICE_LIMIT_REACHED',
75
86
  details: { limit: 5, activeDevices: 5 },
@@ -1 +1 @@
1
- {"version":3,"file":"api.real.test.js","sourceRoot":"","sources":["../../../../src/services/api/__tests__/api.real.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.real.test.js","sourceRoot":"","sources":["../../../../src/services/api/__tests__/api.real.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AuthResponse, ReviewConfig, ReviewResult, PullRequestSuggestionsResponse, TrialReviewResult, TrialStatus, UserInfo } from '../../types/index.js';
1
+ import type { AuthResponse, ReviewConfig, ReviewResult, PullRequestSuggestionsResponse, TrialReviewResult, TrialStatus, UserInfo, MemoryCaptureApiRequest, MemoryCaptureApiResponse } from '../../types/index.js';
2
2
  export interface IAuthApi {
3
3
  login(email: string, password: string): Promise<AuthResponse>;
4
4
  refresh(refreshToken: string): Promise<AuthResponse>;
@@ -33,9 +33,13 @@ export interface IReviewApi {
33
33
  export interface ITrialApi {
34
34
  getStatus(fingerprint: string): Promise<TrialStatus>;
35
35
  }
36
+ export interface IMemoryApi {
37
+ submitCapture(payload: MemoryCaptureApiRequest, accessToken: string): Promise<MemoryCaptureApiResponse>;
38
+ }
36
39
  export interface IKodusApi {
37
40
  auth: IAuthApi;
38
41
  review: IReviewApi;
39
42
  trial: ITrialApi;
43
+ memory: IMemoryApi;
40
44
  }
41
45
  //# sourceMappingURL=api.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.interface.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,8BAA8B,EAC9B,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1H,yBAAyB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9H,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB"}
1
+ {"version":3,"file":"api.interface.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,8BAA8B,EAC9B,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1H,yBAAyB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9H,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB"}
@@ -1,7 +1,8 @@
1
- import type { IKodusApi, IAuthApi, IReviewApi, ITrialApi } from './api.interface.js';
1
+ import type { IKodusApi, IAuthApi, IReviewApi, ITrialApi, IMemoryApi } from './api.interface.js';
2
2
  export declare class RealApi implements IKodusApi {
3
3
  auth: IAuthApi;
4
4
  review: IReviewApi;
5
5
  trial: ITrialApi;
6
+ memory: IMemoryApi;
6
7
  }
7
8
  //# sourceMappingURL=api.real.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.real.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.real.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAifjG,qBAAa,OAAQ,YAAW,SAAS;IACvC,IAAI,EAAE,QAAQ,CAAqB;IACnC,MAAM,EAAE,UAAU,CAAuB;IACzC,KAAK,EAAE,SAAS,CAAsB;CACvC"}
1
+ {"version":3,"file":"api.real.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.real.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAc,MAAM,oBAAoB,CAAC;AAigB7G,qBAAa,OAAQ,YAAW,SAAS;IACvC,IAAI,EAAE,QAAQ,CAAqB;IACnC,MAAM,EAAE,UAAU,CAAuB;IACzC,KAAK,EAAE,SAAS,CAAsB;IACtC,MAAM,EAAE,UAAU,CAAuB;CAC1C"}
@@ -66,7 +66,7 @@ function getDefaultApiErrorMessage(statusCode, endpoint) {
66
66
  function normalizeApiErrorMessage(statusCode, endpoint, errorData) {
67
67
  if (errorData.code === 'DEVICE_LIMIT_REACHED') {
68
68
  const limit = errorData.details?.limit;
69
- const activeDevices = errorData.details?.activeDevices;
69
+ const activeDevices = errorData.details?.current ?? errorData.details?.activeDevices;
70
70
  if (typeof limit === 'number' && typeof activeDevices === 'number') {
71
71
  return `Device limit reached (${activeDevices}/${limit}). Remove an old device or contact your admin.`;
72
72
  }
@@ -400,9 +400,23 @@ class RealTrialApi {
400
400
  return requestWithRetry(`/cli/trial/status?fingerprint=${fingerprint}`);
401
401
  }
402
402
  }
403
+ class RealMemoryApi {
404
+ async submitCapture(payload, accessToken) {
405
+ const isTeamKey = accessToken.startsWith('kodus_');
406
+ const headers = isTeamKey
407
+ ? { 'X-Team-Key': accessToken }
408
+ : { Authorization: `Bearer ${accessToken}` };
409
+ return request('/cli/memory/captures', {
410
+ method: 'POST',
411
+ headers,
412
+ body: JSON.stringify(payload),
413
+ });
414
+ }
415
+ }
403
416
  export class RealApi {
404
417
  auth = new RealAuthApi();
405
418
  review = new RealReviewApi();
406
419
  trial = new RealTrialApi();
420
+ memory = new RealMemoryApi();
407
421
  }
408
422
  //# sourceMappingURL=api.real.js.map