@codeyam/codeyam-cli 0.1.21 → 0.1.23

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 (122) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
  4. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  5. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  6. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +31 -8
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  9. package/analyzer-template/packages/analyze/index.ts +4 -1
  10. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  11. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  14. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  15. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
  16. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
  17. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  18. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  19. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  20. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  21. package/codeyam-cli/src/commands/editor.js +545 -94
  22. package/codeyam-cli/src/commands/editor.js.map +1 -1
  23. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  24. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  25. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +456 -1
  26. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  27. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
  28. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  29. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +140 -1
  30. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  31. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +50 -1
  32. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
  33. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +33 -1
  34. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  35. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  36. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  37. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +217 -0
  38. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  39. package/codeyam-cli/src/utils/analysisRunner.js +28 -1
  40. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  41. package/codeyam-cli/src/utils/analyzer.js +4 -2
  42. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  43. package/codeyam-cli/src/utils/editorAudit.js +136 -5
  44. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  45. package/codeyam-cli/src/utils/editorPreview.js +5 -3
  46. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  47. package/codeyam-cli/src/utils/editorScenarios.js +60 -0
  48. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  49. package/codeyam-cli/src/utils/editorSeedAdapter.js +42 -2
  50. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
  51. package/codeyam-cli/src/utils/entityChangeStatus.server.js +16 -0
  52. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  53. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  54. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  55. package/codeyam-cli/src/utils/queue/job.js +20 -2
  56. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  57. package/codeyam-cli/src/utils/testRunner.js +199 -1
  58. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  59. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +30 -11
  60. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
  61. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +35 -0
  62. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
  63. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  64. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  65. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CJzc4vOH.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  66. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DMv5ESGo.js +96 -0
  67. package/codeyam-cli/src/webserver/build/client/assets/{editorPreview-NTuLi4Xg.js → editorPreview-CluPkvXJ.js} +6 -6
  68. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Blfy9UlN.js → entity._sha._-ByHz6rAQ.js} +13 -12
  69. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-BA5L8bU-.js → entity._sha.scenarios._scenarioId.dev-CmLO432x.js} +1 -1
  70. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-D4dmRgvO.js → entity._sha.scenarios._scenarioId.fullscreen-Bz9sCUF_.js} +1 -1
  71. package/codeyam-cli/src/webserver/build/client/assets/globals-oyPmV37k.css +1 -0
  72. package/codeyam-cli/src/webserver/build/client/assets/{manifest-5025e428.js → manifest-1a45e154.js} +1 -1
  73. package/codeyam-cli/src/webserver/build/client/assets/{root-BCx1S8Z3.js → root-D2_tktnk.js} +6 -6
  74. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-By5slFjw.js +16 -0
  75. package/codeyam-cli/src/webserver/build/server/assets/{index-C91yWWCI.js → index-DXaOwBnm.js} +1 -1
  76. package/codeyam-cli/src/webserver/build/server/assets/{init-Dkas-RUS.js → init-CLG1LjQM.js} +1 -1
  77. package/codeyam-cli/src/webserver/build/server/assets/server-build-NZmUqQv6.js +688 -0
  78. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  79. package/codeyam-cli/src/webserver/build-info.json +5 -5
  80. package/codeyam-cli/src/webserver/editorProxy.js +55 -3
  81. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  82. package/codeyam-cli/src/webserver/idleDetector.js +15 -0
  83. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
  84. package/codeyam-cli/src/webserver/terminalServer.js +8 -2
  85. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  86. package/codeyam-cli/templates/codeyam-editor-reference.md +8 -6
  87. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +42 -34
  88. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +2 -2
  89. package/package.json +1 -1
  90. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  91. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  92. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  93. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  94. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  95. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  96. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +23 -9
  97. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  98. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  99. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  100. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  101. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  102. package/packages/analyze/index.js +1 -1
  103. package/packages/analyze/index.js.map +1 -1
  104. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  105. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  106. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  107. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  108. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  109. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  110. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  111. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  112. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  113. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  114. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  115. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  116. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  117. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  118. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DODLxLcw.js +0 -1
  119. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-Dx-h1rJK.js +0 -130
  120. package/codeyam-cli/src/webserver/build/client/assets/globals-BrPXT1iR.css +0 -1
  121. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-C1kjC9UJ.js +0 -13
  122. package/codeyam-cli/src/webserver/build/server/assets/server-build-pulXLTrG.js +0 -640
@@ -0,0 +1,302 @@
1
+ import { convertTypeInfoToDataForMocks, validateManualEntityInput, readAnalysisFailures, writeAnalysisFailures, clearFailureForPath, } from "../manualEntityAnalysis.js";
2
+ // ─── convertTypeInfoToDataForMocks ────────────────────────────────────
3
+ describe('convertTypeInfoToDataForMocks', () => {
4
+ it('converts simple component props to dot-notation', () => {
5
+ const typeInfo = {
6
+ props: {
7
+ title: 'string',
8
+ count: 'number',
9
+ isActive: 'boolean',
10
+ },
11
+ };
12
+ const result = convertTypeInfoToDataForMocks(typeInfo);
13
+ expect(result).toEqual({
14
+ 'props.title': 'string',
15
+ 'props.count': 'number',
16
+ 'props.isActive': 'boolean',
17
+ });
18
+ });
19
+ it('converts nested props to dot-notation', () => {
20
+ const typeInfo = {
21
+ props: {
22
+ user: {
23
+ name: 'string',
24
+ avatar: 'string',
25
+ },
26
+ },
27
+ };
28
+ const result = convertTypeInfoToDataForMocks(typeInfo);
29
+ expect(result).toEqual({
30
+ 'props.user': 'object',
31
+ 'props.user.name': 'string',
32
+ 'props.user.avatar': 'string',
33
+ });
34
+ });
35
+ it('converts hook return types to dot-notation with call syntax', () => {
36
+ const typeInfo = {
37
+ hooks: {
38
+ useAuth: {
39
+ isLoggedIn: 'boolean',
40
+ user: { id: 'string', name: 'string' },
41
+ },
42
+ },
43
+ };
44
+ const result = convertTypeInfoToDataForMocks(typeInfo);
45
+ expect(result).toEqual({
46
+ 'useAuth()': 'object',
47
+ 'useAuth().isLoggedIn': 'boolean',
48
+ 'useAuth().user': 'object',
49
+ 'useAuth().user.id': 'string',
50
+ 'useAuth().user.name': 'string',
51
+ });
52
+ });
53
+ it('converts function params to dot-notation', () => {
54
+ const typeInfo = {
55
+ params: {
56
+ sortBy: 'string',
57
+ limit: 'number',
58
+ },
59
+ };
60
+ const result = convertTypeInfoToDataForMocks(typeInfo);
61
+ expect(result).toEqual({
62
+ 'params.sortBy': 'string',
63
+ 'params.limit': 'number',
64
+ });
65
+ });
66
+ it('converts function returns to dot-notation', () => {
67
+ const typeInfo = {
68
+ returns: {
69
+ id: 'string',
70
+ name: 'string',
71
+ rank: 'number',
72
+ },
73
+ };
74
+ const result = convertTypeInfoToDataForMocks(typeInfo);
75
+ expect(result).toEqual({
76
+ returns: 'object',
77
+ 'returns.id': 'string',
78
+ 'returns.name': 'string',
79
+ 'returns.rank': 'number',
80
+ });
81
+ });
82
+ it('handles arrays via _type marker', () => {
83
+ const typeInfo = {
84
+ returns: {
85
+ _type: 'array',
86
+ id: 'string',
87
+ name: 'string',
88
+ },
89
+ };
90
+ const result = convertTypeInfoToDataForMocks(typeInfo);
91
+ expect(result).toEqual({
92
+ 'returns[]': 'array',
93
+ 'returns[].id': 'string',
94
+ 'returns[].name': 'string',
95
+ });
96
+ });
97
+ it('returns empty object for empty typeInfo', () => {
98
+ expect(convertTypeInfoToDataForMocks({})).toEqual({});
99
+ expect(convertTypeInfoToDataForMocks(undefined)).toEqual({});
100
+ });
101
+ it('handles mixed props and hooks together', () => {
102
+ const typeInfo = {
103
+ props: { title: 'string' },
104
+ hooks: { useRouter: { pathname: 'string' } },
105
+ };
106
+ const result = convertTypeInfoToDataForMocks(typeInfo);
107
+ expect(result).toEqual({
108
+ 'props.title': 'string',
109
+ 'useRouter()': 'object',
110
+ 'useRouter().pathname': 'string',
111
+ });
112
+ });
113
+ });
114
+ // ─── validateManualEntityInput ────────────────────────────────────────
115
+ describe('validateManualEntityInput', () => {
116
+ const glossaryEntries = [
117
+ { name: 'Icon', filePath: 'src/components/Icon.tsx' },
118
+ { name: 'useAuth', filePath: 'src/hooks/useAuth.ts' },
119
+ { name: 'Button', filePath: 'src/components/Button.tsx' },
120
+ ];
121
+ it('returns no errors for valid input', () => {
122
+ const input = {
123
+ name: 'Header',
124
+ filePath: 'src/components/Header.tsx',
125
+ entityType: 'visual',
126
+ importedExports: [{ name: 'Icon', filePath: 'src/components/Icon.tsx' }],
127
+ };
128
+ const errors = validateManualEntityInput(input, glossaryEntries, {
129
+ fileExists: () => true,
130
+ });
131
+ expect(errors).toEqual([]);
132
+ });
133
+ it('rejects missing name', () => {
134
+ const input = {
135
+ filePath: 'src/components/Header.tsx',
136
+ entityType: 'visual',
137
+ };
138
+ const errors = validateManualEntityInput(input, glossaryEntries, {
139
+ fileExists: () => true,
140
+ });
141
+ expect(errors).toContain('name is required');
142
+ });
143
+ it('rejects missing filePath', () => {
144
+ const input = {
145
+ name: 'Header',
146
+ entityType: 'visual',
147
+ };
148
+ const errors = validateManualEntityInput(input, glossaryEntries, {
149
+ fileExists: () => true,
150
+ });
151
+ expect(errors).toContain('filePath is required');
152
+ });
153
+ it('rejects nonexistent file', () => {
154
+ const input = {
155
+ name: 'Header',
156
+ filePath: 'src/components/Header.tsx',
157
+ entityType: 'visual',
158
+ };
159
+ const errors = validateManualEntityInput(input, glossaryEntries, {
160
+ fileExists: () => false,
161
+ });
162
+ expect(errors).toContain('File does not exist: src/components/Header.tsx');
163
+ });
164
+ it('rejects invalid entityType', () => {
165
+ const input = {
166
+ name: 'Header',
167
+ filePath: 'src/components/Header.tsx',
168
+ entityType: 'invalid',
169
+ };
170
+ const errors = validateManualEntityInput(input, glossaryEntries, {
171
+ fileExists: () => true,
172
+ });
173
+ expect(errors.some((e) => e.includes('entityType'))).toBe(true);
174
+ });
175
+ it('rejects importedExports referencing unknown glossary entities', () => {
176
+ const input = {
177
+ name: 'Header',
178
+ filePath: 'src/components/Header.tsx',
179
+ entityType: 'visual',
180
+ importedExports: [
181
+ { name: 'NonExistent', filePath: 'src/components/NonExistent.tsx' },
182
+ ],
183
+ };
184
+ const errors = validateManualEntityInput(input, glossaryEntries, {
185
+ fileExists: () => true,
186
+ });
187
+ expect(errors.some((e) => e.includes('NonExistent'))).toBe(true);
188
+ });
189
+ it('allows empty importedExports', () => {
190
+ const input = {
191
+ name: 'Header',
192
+ filePath: 'src/components/Header.tsx',
193
+ entityType: 'visual',
194
+ importedExports: [],
195
+ };
196
+ const errors = validateManualEntityInput(input, glossaryEntries, {
197
+ fileExists: () => true,
198
+ });
199
+ expect(errors).toEqual([]);
200
+ });
201
+ it('allows omitted importedExports', () => {
202
+ const input = {
203
+ name: 'Header',
204
+ filePath: 'src/components/Header.tsx',
205
+ entityType: 'visual',
206
+ };
207
+ const errors = validateManualEntityInput(input, glossaryEntries, {
208
+ fileExists: () => true,
209
+ });
210
+ expect(errors).toEqual([]);
211
+ });
212
+ });
213
+ // ─── Failure tracker ──────────────────────────────────────────────────
214
+ describe('failure tracker', () => {
215
+ describe('readAnalysisFailures', () => {
216
+ it('returns empty object when file does not exist', () => {
217
+ const result = readAnalysisFailures('/nonexistent/path');
218
+ expect(result).toEqual({});
219
+ });
220
+ it('returns parsed data from valid JSON file', () => {
221
+ const mockData = {
222
+ 'src/components/Header.tsx': {
223
+ entityName: 'Header',
224
+ error: 'Parse error',
225
+ failedAt: '2026-03-23T10:00:00Z',
226
+ },
227
+ };
228
+ const result = readAnalysisFailures('/test/path', {
229
+ readFileSync: () => JSON.stringify(mockData),
230
+ existsSync: () => true,
231
+ });
232
+ expect(result).toEqual(mockData);
233
+ });
234
+ it('returns empty object when file has invalid JSON', () => {
235
+ const result = readAnalysisFailures('/test/path', {
236
+ readFileSync: () => 'not valid json',
237
+ existsSync: () => true,
238
+ });
239
+ expect(result).toEqual({});
240
+ });
241
+ });
242
+ describe('writeAnalysisFailures', () => {
243
+ it('writes failures to the correct path', () => {
244
+ const written = [];
245
+ const failures = {
246
+ 'src/components/Header.tsx': {
247
+ entityName: 'Header',
248
+ error: 'Parse error',
249
+ failedAt: '2026-03-23T10:00:00Z',
250
+ },
251
+ };
252
+ writeAnalysisFailures('/project/root', failures, {
253
+ writeFileSync: (p, c) => written.push({ path: p, content: c }),
254
+ mkdirSync: () => { },
255
+ });
256
+ expect(written).toHaveLength(1);
257
+ expect(written[0].path).toContain('analysis-failures.json');
258
+ expect(JSON.parse(written[0].content)).toEqual(failures);
259
+ });
260
+ it('removes the file when failures is empty', () => {
261
+ const removed = [];
262
+ writeAnalysisFailures('/project/root', {}, {
263
+ unlinkSync: (p) => removed.push(p),
264
+ existsSync: () => true,
265
+ });
266
+ expect(removed).toHaveLength(1);
267
+ expect(removed[0]).toContain('analysis-failures.json');
268
+ });
269
+ });
270
+ describe('clearFailureForPath', () => {
271
+ it('removes the specified path from failures', () => {
272
+ const failures = {
273
+ 'src/components/Header.tsx': {
274
+ entityName: 'Header',
275
+ error: 'Parse error',
276
+ failedAt: '2026-03-23T10:00:00Z',
277
+ },
278
+ 'src/components/Footer.tsx': {
279
+ entityName: 'Footer',
280
+ error: 'Parse error',
281
+ failedAt: '2026-03-23T10:00:00Z',
282
+ },
283
+ };
284
+ const result = clearFailureForPath(failures, 'src/components/Header.tsx');
285
+ expect(result).toEqual({
286
+ 'src/components/Footer.tsx': failures['src/components/Footer.tsx'],
287
+ });
288
+ });
289
+ it('returns unchanged object when path not found', () => {
290
+ const failures = {
291
+ 'src/components/Header.tsx': {
292
+ entityName: 'Header',
293
+ error: 'Parse error',
294
+ failedAt: '2026-03-23T10:00:00Z',
295
+ },
296
+ };
297
+ const result = clearFailureForPath(failures, 'src/components/Other.tsx');
298
+ expect(result).toEqual(failures);
299
+ });
300
+ });
301
+ });
302
+ //# sourceMappingURL=manualEntityAnalysis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manualEntityAnalysis.test.js","sourceRoot":"","sources":["../../../../../src/utils/__tests__/manualEntityAnalysis.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ import { parseTestOutput, parseMultiTestOutput, buildTestCommand, } from "../testRunner.js";
2
+ describe('testRunner', () => {
3
+ describe('parseTestOutput', () => {
4
+ it('should parse a single passing test file', () => {
5
+ const json = JSON.stringify({
6
+ testResults: [
7
+ {
8
+ assertionResults: [
9
+ {
10
+ title: 'adds numbers',
11
+ status: 'passed',
12
+ ancestorTitles: ['math'],
13
+ duration: 5,
14
+ },
15
+ ],
16
+ },
17
+ ],
18
+ });
19
+ const result = parseTestOutput('app/lib/math.test.ts', json);
20
+ expect(result.testFilePath).toBe('app/lib/math.test.ts');
21
+ expect(result.status).toBe('passed');
22
+ expect(result.testCases).toHaveLength(1);
23
+ expect(result.testCases[0]).toEqual({
24
+ title: 'adds numbers',
25
+ fullName: 'math > adds numbers',
26
+ status: 'passed',
27
+ duration: 5,
28
+ failureMessages: undefined,
29
+ });
30
+ });
31
+ it('should parse a failing test file', () => {
32
+ const json = JSON.stringify({
33
+ testResults: [
34
+ {
35
+ assertionResults: [
36
+ {
37
+ title: 'fails',
38
+ status: 'failed',
39
+ ancestorTitles: ['suite'],
40
+ failureMessages: ['expected true to be false'],
41
+ },
42
+ ],
43
+ },
44
+ ],
45
+ });
46
+ const result = parseTestOutput('test.ts', json);
47
+ expect(result.status).toBe('failed');
48
+ expect(result.testCases[0].status).toBe('failed');
49
+ expect(result.testCases[0].failureMessages).toEqual([
50
+ 'expected true to be false',
51
+ ]);
52
+ });
53
+ });
54
+ describe('parseMultiTestOutput', () => {
55
+ it('should split results by file path, mapping back to relative paths', () => {
56
+ const projectRoot = '/Users/dev/my-project';
57
+ const testFiles = ['app/lib/math.test.ts', 'app/lib/strings.test.ts'];
58
+ const json = JSON.stringify({
59
+ testResults: [
60
+ {
61
+ name: '/Users/dev/my-project/app/lib/math.test.ts',
62
+ assertionResults: [
63
+ {
64
+ title: 'adds',
65
+ status: 'passed',
66
+ ancestorTitles: ['math'],
67
+ },
68
+ ],
69
+ },
70
+ {
71
+ name: '/Users/dev/my-project/app/lib/strings.test.ts',
72
+ assertionResults: [
73
+ {
74
+ title: 'concats',
75
+ status: 'passed',
76
+ ancestorTitles: ['strings'],
77
+ },
78
+ ],
79
+ },
80
+ ],
81
+ });
82
+ const results = parseMultiTestOutput(projectRoot, testFiles, json);
83
+ expect(Object.keys(results)).toHaveLength(2);
84
+ expect(results['app/lib/math.test.ts']).toBeDefined();
85
+ expect(results['app/lib/math.test.ts'].status).toBe('passed');
86
+ expect(results['app/lib/math.test.ts'].testCases).toHaveLength(1);
87
+ expect(results['app/lib/math.test.ts'].testCases[0].fullName).toBe('math > adds');
88
+ expect(results['app/lib/strings.test.ts']).toBeDefined();
89
+ expect(results['app/lib/strings.test.ts'].status).toBe('passed');
90
+ });
91
+ it('should handle mixed pass/fail across files independently', () => {
92
+ const projectRoot = '/project';
93
+ const testFiles = ['a.test.ts', 'b.test.ts'];
94
+ const json = JSON.stringify({
95
+ testResults: [
96
+ {
97
+ name: '/project/a.test.ts',
98
+ assertionResults: [
99
+ { title: 'passes', status: 'passed', ancestorTitles: [] },
100
+ ],
101
+ },
102
+ {
103
+ name: '/project/b.test.ts',
104
+ assertionResults: [
105
+ {
106
+ title: 'fails',
107
+ status: 'failed',
108
+ ancestorTitles: [],
109
+ failureMessages: ['nope'],
110
+ },
111
+ ],
112
+ },
113
+ ],
114
+ });
115
+ const results = parseMultiTestOutput(projectRoot, testFiles, json);
116
+ expect(results['a.test.ts'].status).toBe('passed');
117
+ expect(results['b.test.ts'].status).toBe('failed');
118
+ });
119
+ it('should return error result for requested files missing from output', () => {
120
+ const projectRoot = '/project';
121
+ const testFiles = ['exists.test.ts', 'missing.test.ts'];
122
+ const json = JSON.stringify({
123
+ testResults: [
124
+ {
125
+ name: '/project/exists.test.ts',
126
+ assertionResults: [
127
+ { title: 'ok', status: 'passed', ancestorTitles: [] },
128
+ ],
129
+ },
130
+ ],
131
+ });
132
+ const results = parseMultiTestOutput(projectRoot, testFiles, json);
133
+ expect(results['exists.test.ts'].status).toBe('passed');
134
+ expect(results['missing.test.ts'].status).toBe('error');
135
+ expect(results['missing.test.ts'].errorMessage).toMatch(/not found in test output/i);
136
+ });
137
+ it('should handle empty testResults array', () => {
138
+ const results = parseMultiTestOutput('/project', ['a.test.ts'], JSON.stringify({ testResults: [] }));
139
+ expect(results['a.test.ts'].status).toBe('error');
140
+ });
141
+ it('should handle an empty testFiles list', () => {
142
+ const results = parseMultiTestOutput('/project', [], JSON.stringify({ testResults: [] }));
143
+ expect(Object.keys(results)).toHaveLength(0);
144
+ });
145
+ it('should handle suite with multiple test cases', () => {
146
+ const json = JSON.stringify({
147
+ testResults: [
148
+ {
149
+ name: '/project/big.test.ts',
150
+ assertionResults: [
151
+ {
152
+ title: 'test1',
153
+ status: 'passed',
154
+ ancestorTitles: ['suite'],
155
+ },
156
+ {
157
+ title: 'test2',
158
+ status: 'passed',
159
+ ancestorTitles: ['suite'],
160
+ },
161
+ {
162
+ title: 'test3',
163
+ status: 'failed',
164
+ ancestorTitles: ['suite'],
165
+ failureMessages: ['oops'],
166
+ },
167
+ ],
168
+ },
169
+ ],
170
+ });
171
+ const results = parseMultiTestOutput('/project', ['big.test.ts'], json);
172
+ expect(results['big.test.ts'].testCases).toHaveLength(3);
173
+ expect(results['big.test.ts'].status).toBe('failed');
174
+ });
175
+ });
176
+ describe('buildTestCommand', () => {
177
+ it('should batch multiple files into a single vitest command', () => {
178
+ const result = buildTestCommand('vitest', '/tmp/out.json', [
179
+ 'app/lib/a.test.ts',
180
+ 'app/lib/b.test.ts',
181
+ ]);
182
+ expect(result.cmd).toBe('node');
183
+ expect(result.args).toEqual([
184
+ './node_modules/.bin/vitest',
185
+ 'run',
186
+ '--reporter=json',
187
+ '--outputFile',
188
+ '/tmp/out.json',
189
+ 'app/lib/a.test.ts',
190
+ 'app/lib/b.test.ts',
191
+ ]);
192
+ });
193
+ it('should batch multiple files into a single jest command', () => {
194
+ const result = buildTestCommand('jest', '/tmp/out.json', [
195
+ 'app/lib/a.test.ts',
196
+ 'app/lib/b.test.ts',
197
+ ]);
198
+ expect(result.cmd).toBe('./node_modules/.bin/jest');
199
+ expect(result.args).toEqual([
200
+ '--json',
201
+ '--outputFile',
202
+ '/tmp/out.json',
203
+ '--testPathPatterns',
204
+ 'app/lib/a.test.ts',
205
+ 'app/lib/b.test.ts',
206
+ ]);
207
+ });
208
+ it('should work with a single file', () => {
209
+ const result = buildTestCommand('vitest', '/tmp/out.json', [
210
+ 'app/lib/a.test.ts',
211
+ ]);
212
+ expect(result.args).toContain('app/lib/a.test.ts');
213
+ expect(result.args.filter((a) => a.endsWith('.test.ts'))).toHaveLength(1);
214
+ });
215
+ });
216
+ });
217
+ //# sourceMappingURL=testRunner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRunner.test.js","sourceRoot":"","sources":["../../../../../src/utils/__tests__/testRunner.test.ts"],"names":[],"mappings":"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"}
@@ -154,6 +154,7 @@ export async function runAnalysisForEntities(options) {
154
154
  : 'Running analysis and capture...');
155
155
  // Set up log file streaming for progress updates
156
156
  const logPath = getLogPath(projectSlug);
157
+ reporter.info(`Full analysis log: ${logPath}`);
157
158
  let lastLogPosition = 0;
158
159
  let lastProgressUpdate = 0;
159
160
  const collectedErrors = [];
@@ -241,9 +242,35 @@ export async function runAnalysisForEntities(options) {
241
242
  else {
242
243
  reporter.succeed('Analysis completed');
243
244
  }
245
+ // Write full error report for sharing with CodeYam team
246
+ const errorReportPath = path.join(projectRoot, '.codeyam', 'analysis-errors.txt');
247
+ if (collectedErrors.length > 0) {
248
+ const header = [
249
+ `Analysis errors — ${new Date().toISOString()}`,
250
+ `Project: ${projectSlug}`,
251
+ `Commit: ${fakeCommit.sha}`,
252
+ `Total errors: ${collectedErrors.length}`,
253
+ '─'.repeat(60),
254
+ '',
255
+ ].join('\n');
256
+ const body = collectedErrors
257
+ .map((err, i) => `[${i + 1}] ${err}`)
258
+ .join('\n\n');
259
+ await fs.writeFile(errorReportPath, header + body, 'utf8');
260
+ reporter.warn('Full error report saved to .codeyam/analysis-errors.txt');
261
+ }
262
+ else {
263
+ // Clean up stale report
264
+ try {
265
+ await fs.unlink(errorReportPath);
266
+ }
267
+ catch {
268
+ // File doesn't exist — nothing to clean up
269
+ }
270
+ }
244
271
  }
245
272
  catch (err) {
246
- reporter.fail('Analysis failed');
273
+ reporter.fail(`Analysis failed — see full log: ${logPath}`);
247
274
  // Enhance the error with context if not already present
248
275
  if (err && typeof err === 'object' && !('commitSha' in err)) {
249
276
  err.commitSha =
@@ -1 +1 @@
1
- {"version":3,"file":"analysisRunner.js","sourceRoot":"","sources":["../../../../src/utils/analysisRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysisRunner.js","sourceRoot":"","sources":["../../../../src/utils/analysisRunner.ts"],"names":[],"mappings":"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"}
@@ -92,9 +92,11 @@ export async function createAnalyzer(projectSlug) {
92
92
  silent: true,
93
93
  });
94
94
  console.log(`[createAnalyzer] rsync completed (${elapsed()})`);
95
- // Build the analyzer if dist/ doesn't exist (rsync from template won't include it)
95
+ // dist/ should exist after rsync since the template includes it.
96
+ // If it's missing, the template wasn't built — log a warning but don't
97
+ // silently rebuild (which takes 20+ seconds with no user feedback).
96
98
  if (!fsSync.existsSync(path.join(analyzerPath, 'dist'))) {
97
- console.log(`[createAnalyzer] dist/ not found, running npm install + build`);
99
+ console.warn(`[createAnalyzer] WARNING: dist/ not found after rsync template may not be built. Attempting build...`);
98
100
  execSync('npm install --include=dev && npm run build', {
99
101
  cwd: analyzerPath,
100
102
  stdio: 'pipe',