@codeyam/codeyam-cli 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +6 -6
- package/analyzer-template/log.txt +3 -3
- package/codeyam-cli/src/commands/editor.js +132 -9
- package/codeyam-cli/src/commands/editor.js.map +1 -1
- package/codeyam-cli/src/commands/init.js +1 -0
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +212 -10
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +70 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +51 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +20 -1
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +57 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +41 -0
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
- package/codeyam-cli/src/utils/editorAudit.js +51 -11
- package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarioSwitch.js +24 -2
- package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarios.js +28 -1
- package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.js +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
- package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
- package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +5 -0
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/scenarioCoverage.js +4 -1
- package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
- package/codeyam-cli/src/utils/scenariosManifest.js +6 -0
- package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +92 -21
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/clientErrors.js +7 -1
- package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{editor.entity.(_sha)-B7xQ9Sjy.js → editor.entity.(_sha)-Bnx7yUP0.js} +14 -14
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-oepecPae.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-CUobbQdQ.js → entity._sha.scenarios._scenarioId.dev-KTQuL0aj.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{manifest-5d53342d.js → manifest-3157d6b8.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{analysisRunner-DcJSnBCE.js → analysisRunner-BMmkgAkg.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{index-CEaDhUiv.js → index-DxB0pOSt.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{init-DA7guOrE.js → init-DLYLaqqP.js} +2 -2
- package/codeyam-cli/src/webserver/build/server/assets/{server-build-juyiY2m6.js → server-build-CcyitQLQ.js} +111 -111
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/idleDetector.js +41 -8
- package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
- package/codeyam-cli/src/webserver/scripts/journalCapture.ts +36 -0
- package/codeyam-cli/src/webserver/terminalServer.js +4 -4
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/codeyam-editor-reference.md +214 -0
- package/package.json +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CxmrE6AF.js +0 -41
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
2
|
import { Kysely, SqliteDialect } from 'kysely';
|
|
3
|
-
import { isComponent, classifyGlossaryEntries, computeAudit, filterGlossaryByChangeStatus, resolveAuditSessionScope, queryScenarioCounts, queryPageScenarioCounts, queryIncompleteEntities, queryMiscategorizedScenarios, isOnlyIncompleteEntities, isAutoRemediable, identifyScenariosNeedingRecapture, } from "../editorAudit.js";
|
|
3
|
+
import { isComponent, classifyGlossaryEntries, computeAudit, filterGlossaryByChangeStatus, resolveAuditSessionScope, queryScenarioCounts, queryPageScenarioCounts, queryIncompleteEntities, queryMiscategorizedScenarios, isOnlyIncompleteEntities, isAutoRemediable, identifyScenariosNeedingRecapture, detectDuplicateNames, } from "../editorAudit.js";
|
|
4
4
|
describe('editorAudit', () => {
|
|
5
5
|
describe('isComponent', () => {
|
|
6
6
|
it('should return true for JSX.Element return type', () => {
|
|
@@ -1873,7 +1873,12 @@ describe('editorAudit', () => {
|
|
|
1873
1873
|
.execute();
|
|
1874
1874
|
const result = await queryIncompleteEntities(db, projectId, null);
|
|
1875
1875
|
expect(result).toEqual([
|
|
1876
|
-
{
|
|
1876
|
+
{
|
|
1877
|
+
entitySha: 'sha-chips',
|
|
1878
|
+
name: 'CollectionChips',
|
|
1879
|
+
scenarioCount: 2,
|
|
1880
|
+
preExisting: false,
|
|
1881
|
+
},
|
|
1877
1882
|
]);
|
|
1878
1883
|
});
|
|
1879
1884
|
it('should only return entities without analyses, not those with analyses', async () => {
|
|
@@ -1930,10 +1935,15 @@ describe('editorAudit', () => {
|
|
|
1930
1935
|
.execute();
|
|
1931
1936
|
const result = await queryIncompleteEntities(db, projectId, null);
|
|
1932
1937
|
expect(result).toEqual([
|
|
1933
|
-
{
|
|
1938
|
+
{
|
|
1939
|
+
entitySha: 'sha-picker',
|
|
1940
|
+
name: 'CollectionPicker',
|
|
1941
|
+
scenarioCount: 1,
|
|
1942
|
+
preExisting: false,
|
|
1943
|
+
},
|
|
1934
1944
|
]);
|
|
1935
1945
|
});
|
|
1936
|
-
it('should
|
|
1946
|
+
it('should return both pre-session and in-session entities with preExisting flags', async () => {
|
|
1937
1947
|
// Entity without analysis, scenario created BEFORE session
|
|
1938
1948
|
await db
|
|
1939
1949
|
.insertInto('entities')
|
|
@@ -1977,12 +1987,24 @@ describe('editorAudit', () => {
|
|
|
1977
1987
|
})
|
|
1978
1988
|
.execute();
|
|
1979
1989
|
const result = await queryIncompleteEntities(db, projectId, '2026-03-16T23:07:12.698Z');
|
|
1980
|
-
//
|
|
1981
|
-
expect(result).toEqual([
|
|
1982
|
-
{
|
|
1983
|
-
|
|
1990
|
+
// Both should be returned — OldComponent is preExisting, NewComponent is not
|
|
1991
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
1992
|
+
{
|
|
1993
|
+
entitySha: 'sha-old',
|
|
1994
|
+
name: 'OldComponent',
|
|
1995
|
+
scenarioCount: 1,
|
|
1996
|
+
preExisting: true,
|
|
1997
|
+
},
|
|
1998
|
+
{
|
|
1999
|
+
entitySha: 'sha-new',
|
|
2000
|
+
name: 'NewComponent',
|
|
2001
|
+
scenarioCount: 1,
|
|
2002
|
+
preExisting: false,
|
|
2003
|
+
},
|
|
2004
|
+
]));
|
|
2005
|
+
expect(result).toHaveLength(2);
|
|
1984
2006
|
});
|
|
1985
|
-
it('should
|
|
2007
|
+
it('should flag preExisting: false when scenario was updated in session even if created before', async () => {
|
|
1986
2008
|
await db
|
|
1987
2009
|
.insertInto('entities')
|
|
1988
2010
|
.values({
|
|
@@ -2010,6 +2032,7 @@ describe('editorAudit', () => {
|
|
|
2010
2032
|
entitySha: 'sha-updated',
|
|
2011
2033
|
name: 'UpdatedComponent',
|
|
2012
2034
|
scenarioCount: 1,
|
|
2035
|
+
preExisting: false,
|
|
2013
2036
|
},
|
|
2014
2037
|
]);
|
|
2015
2038
|
});
|
|
@@ -2106,6 +2129,7 @@ describe('editorAudit', () => {
|
|
|
2106
2129
|
entitySha: 'sha-icon',
|
|
2107
2130
|
name: 'ExternalLinkIcon',
|
|
2108
2131
|
scenarioCount: 1,
|
|
2132
|
+
preExisting: false,
|
|
2109
2133
|
},
|
|
2110
2134
|
]);
|
|
2111
2135
|
});
|
|
@@ -2124,7 +2148,124 @@ describe('editorAudit', () => {
|
|
|
2124
2148
|
.execute();
|
|
2125
2149
|
const result = await queryIncompleteEntities(db, projectId, null);
|
|
2126
2150
|
expect(result).toEqual([
|
|
2127
|
-
{
|
|
2151
|
+
{
|
|
2152
|
+
entitySha: 'sha-ghost',
|
|
2153
|
+
name: 'GhostComponent',
|
|
2154
|
+
scenarioCount: 1,
|
|
2155
|
+
preExisting: false,
|
|
2156
|
+
},
|
|
2157
|
+
]);
|
|
2158
|
+
});
|
|
2159
|
+
it('should detect incomplete entity whose scenario predates the session', async () => {
|
|
2160
|
+
// Entity with no analyses, scenario created BEFORE session
|
|
2161
|
+
await db
|
|
2162
|
+
.insertInto('entities')
|
|
2163
|
+
.values({
|
|
2164
|
+
sha: 'sha-preexisting',
|
|
2165
|
+
name: 'PreExistingComponent',
|
|
2166
|
+
entity_type: 'visual',
|
|
2167
|
+
file_path: 'src/PreExistingComponent.tsx',
|
|
2168
|
+
})
|
|
2169
|
+
.execute();
|
|
2170
|
+
await db
|
|
2171
|
+
.insertInto('editor_scenarios')
|
|
2172
|
+
.values({
|
|
2173
|
+
id: 'sc-preexisting',
|
|
2174
|
+
project_id: projectId,
|
|
2175
|
+
name: 'PreExistingComponent - Default',
|
|
2176
|
+
component_name: 'PreExistingComponent',
|
|
2177
|
+
entity_sha: 'sha-preexisting',
|
|
2178
|
+
created_at: '2026-03-16 20:00:00',
|
|
2179
|
+
updated_at: '2026-03-16 20:00:00',
|
|
2180
|
+
})
|
|
2181
|
+
.execute();
|
|
2182
|
+
// Session started well after scenario was created/updated
|
|
2183
|
+
const result = await queryIncompleteEntities(db, projectId, '2026-03-16T23:07:12.698Z');
|
|
2184
|
+
// Should still be detected — the old time filter would have excluded it
|
|
2185
|
+
expect(result).toEqual([
|
|
2186
|
+
{
|
|
2187
|
+
entitySha: 'sha-preexisting',
|
|
2188
|
+
name: 'PreExistingComponent',
|
|
2189
|
+
scenarioCount: 1,
|
|
2190
|
+
preExisting: true,
|
|
2191
|
+
},
|
|
2192
|
+
]);
|
|
2193
|
+
});
|
|
2194
|
+
it('should flag preExisting: true when all scenarios predate the session', async () => {
|
|
2195
|
+
await db
|
|
2196
|
+
.insertInto('entities')
|
|
2197
|
+
.values({
|
|
2198
|
+
sha: 'sha-old-entity',
|
|
2199
|
+
name: 'OldEntity',
|
|
2200
|
+
entity_type: 'visual',
|
|
2201
|
+
file_path: 'src/OldEntity.tsx',
|
|
2202
|
+
})
|
|
2203
|
+
.execute();
|
|
2204
|
+
// Two scenarios, both before session
|
|
2205
|
+
await db
|
|
2206
|
+
.insertInto('editor_scenarios')
|
|
2207
|
+
.values({
|
|
2208
|
+
id: 'sc-old-1',
|
|
2209
|
+
project_id: projectId,
|
|
2210
|
+
name: 'OldEntity - Default',
|
|
2211
|
+
component_name: 'OldEntity',
|
|
2212
|
+
entity_sha: 'sha-old-entity',
|
|
2213
|
+
created_at: '2026-03-16 19:00:00',
|
|
2214
|
+
updated_at: '2026-03-16 19:00:00',
|
|
2215
|
+
})
|
|
2216
|
+
.execute();
|
|
2217
|
+
await db
|
|
2218
|
+
.insertInto('editor_scenarios')
|
|
2219
|
+
.values({
|
|
2220
|
+
id: 'sc-old-2',
|
|
2221
|
+
project_id: projectId,
|
|
2222
|
+
name: 'OldEntity - Hover',
|
|
2223
|
+
component_name: 'OldEntity',
|
|
2224
|
+
entity_sha: 'sha-old-entity',
|
|
2225
|
+
created_at: '2026-03-16 19:30:00',
|
|
2226
|
+
updated_at: '2026-03-16 19:30:00',
|
|
2227
|
+
})
|
|
2228
|
+
.execute();
|
|
2229
|
+
const result = await queryIncompleteEntities(db, projectId, '2026-03-16T23:07:12.698Z');
|
|
2230
|
+
expect(result).toEqual([
|
|
2231
|
+
{
|
|
2232
|
+
entitySha: 'sha-old-entity',
|
|
2233
|
+
name: 'OldEntity',
|
|
2234
|
+
scenarioCount: 2,
|
|
2235
|
+
preExisting: true,
|
|
2236
|
+
},
|
|
2237
|
+
]);
|
|
2238
|
+
});
|
|
2239
|
+
it('should flag preExisting: false when scenario is from the current session', async () => {
|
|
2240
|
+
await db
|
|
2241
|
+
.insertInto('entities')
|
|
2242
|
+
.values({
|
|
2243
|
+
sha: 'sha-session-entity',
|
|
2244
|
+
name: 'SessionEntity',
|
|
2245
|
+
entity_type: 'visual',
|
|
2246
|
+
file_path: 'src/SessionEntity.tsx',
|
|
2247
|
+
})
|
|
2248
|
+
.execute();
|
|
2249
|
+
await db
|
|
2250
|
+
.insertInto('editor_scenarios')
|
|
2251
|
+
.values({
|
|
2252
|
+
id: 'sc-session',
|
|
2253
|
+
project_id: projectId,
|
|
2254
|
+
name: 'SessionEntity - Default',
|
|
2255
|
+
component_name: 'SessionEntity',
|
|
2256
|
+
entity_sha: 'sha-session-entity',
|
|
2257
|
+
created_at: '2026-03-16 23:30:00',
|
|
2258
|
+
updated_at: '2026-03-16 23:30:00',
|
|
2259
|
+
})
|
|
2260
|
+
.execute();
|
|
2261
|
+
const result = await queryIncompleteEntities(db, projectId, '2026-03-16T23:07:12.698Z');
|
|
2262
|
+
expect(result).toEqual([
|
|
2263
|
+
{
|
|
2264
|
+
entitySha: 'sha-session-entity',
|
|
2265
|
+
name: 'SessionEntity',
|
|
2266
|
+
scenarioCount: 1,
|
|
2267
|
+
preExisting: false,
|
|
2268
|
+
},
|
|
2128
2269
|
]);
|
|
2129
2270
|
});
|
|
2130
2271
|
});
|
|
@@ -2314,5 +2455,66 @@ describe('editorAudit', () => {
|
|
|
2314
2455
|
expect(result).toHaveLength(0);
|
|
2315
2456
|
});
|
|
2316
2457
|
});
|
|
2458
|
+
// ── detectDuplicateNames ──────────────────────────────────────────
|
|
2459
|
+
describe('detectDuplicateNames', () => {
|
|
2460
|
+
it('should return empty map when no duplicates exist', () => {
|
|
2461
|
+
const entries = [
|
|
2462
|
+
{ name: 'Header', filePath: 'app/components/Header.tsx' },
|
|
2463
|
+
{ name: 'Footer', filePath: 'app/components/Footer.tsx' },
|
|
2464
|
+
{ name: 'Sidebar', filePath: 'app/components/Sidebar.tsx' },
|
|
2465
|
+
];
|
|
2466
|
+
const result = detectDuplicateNames(entries);
|
|
2467
|
+
expect(result.size).toBe(0);
|
|
2468
|
+
});
|
|
2469
|
+
it('should group entries that share a name', () => {
|
|
2470
|
+
const entries = [
|
|
2471
|
+
{ name: 'Page', filePath: 'app/isolated-components/Foo/page.tsx' },
|
|
2472
|
+
{ name: 'Page', filePath: 'app/isolated-components/Bar/page.tsx' },
|
|
2473
|
+
{ name: 'Page', filePath: 'app/isolated-components/Baz/page.tsx' },
|
|
2474
|
+
{ name: 'Header', filePath: 'app/components/Header.tsx' },
|
|
2475
|
+
];
|
|
2476
|
+
const result = detectDuplicateNames(entries);
|
|
2477
|
+
expect(result.size).toBe(1);
|
|
2478
|
+
expect(result.has('Page')).toBe(true);
|
|
2479
|
+
const pageGroup = result.get('Page');
|
|
2480
|
+
expect(pageGroup).toHaveLength(3);
|
|
2481
|
+
expect(pageGroup.map((e) => e.filePath)).toEqual([
|
|
2482
|
+
'app/isolated-components/Foo/page.tsx',
|
|
2483
|
+
'app/isolated-components/Bar/page.tsx',
|
|
2484
|
+
'app/isolated-components/Baz/page.tsx',
|
|
2485
|
+
]);
|
|
2486
|
+
});
|
|
2487
|
+
it('should exclude single-occurrence names', () => {
|
|
2488
|
+
const entries = [
|
|
2489
|
+
{ name: 'Page', filePath: 'app/isolated-components/Foo/page.tsx' },
|
|
2490
|
+
{ name: 'Page', filePath: 'app/isolated-components/Bar/page.tsx' },
|
|
2491
|
+
{ name: 'Header', filePath: 'app/components/Header.tsx' },
|
|
2492
|
+
{ name: 'Footer', filePath: 'app/components/Footer.tsx' },
|
|
2493
|
+
];
|
|
2494
|
+
const result = detectDuplicateNames(entries);
|
|
2495
|
+
expect(result.size).toBe(1);
|
|
2496
|
+
expect(result.has('Header')).toBe(false);
|
|
2497
|
+
expect(result.has('Footer')).toBe(false);
|
|
2498
|
+
});
|
|
2499
|
+
it('should handle multiple duplicate groups', () => {
|
|
2500
|
+
const entries = [
|
|
2501
|
+
{ name: 'Page', filePath: 'app/isolated-components/A/page.tsx' },
|
|
2502
|
+
{ name: 'Page', filePath: 'app/isolated-components/B/page.tsx' },
|
|
2503
|
+
{ name: 'Layout', filePath: 'app/isolated-components/A/layout.tsx' },
|
|
2504
|
+
{ name: 'Layout', filePath: 'app/isolated-components/B/layout.tsx' },
|
|
2505
|
+
{ name: 'Unique', filePath: 'app/components/Unique.tsx' },
|
|
2506
|
+
];
|
|
2507
|
+
const result = detectDuplicateNames(entries);
|
|
2508
|
+
expect(result.size).toBe(2);
|
|
2509
|
+
expect(result.has('Page')).toBe(true);
|
|
2510
|
+
expect(result.has('Layout')).toBe(true);
|
|
2511
|
+
expect(result.get('Page')).toHaveLength(2);
|
|
2512
|
+
expect(result.get('Layout')).toHaveLength(2);
|
|
2513
|
+
});
|
|
2514
|
+
it('should return empty map for empty input', () => {
|
|
2515
|
+
const result = detectDuplicateNames([]);
|
|
2516
|
+
expect(result.size).toBe(0);
|
|
2517
|
+
});
|
|
2518
|
+
});
|
|
2317
2519
|
});
|
|
2318
2520
|
//# sourceMappingURL=editorAudit.test.js.map
|