@codeyam/codeyam-cli 0.1.0-staging.30dc541 → 0.1.0-staging.39719f5

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 (159) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +2 -2
  4. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
  5. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  6. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  7. package/analyzer-template/packages/analyze/index.ts +4 -1
  8. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  9. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  10. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  11. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  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/analyzeChange.ts +4 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  17. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +235 -58
  18. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +170 -26
  19. package/analyzer-template/packages/aws/package.json +1 -1
  20. package/analyzer-template/packages/database/package.json +1 -1
  21. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +19 -15
  22. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  23. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  24. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +1 -1
  25. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  26. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  27. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  28. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  29. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  30. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  31. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  32. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  33. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  34. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  35. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  36. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  37. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  38. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +63 -0
  39. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  40. package/codeyam-cli/src/commands/editor.js +775 -125
  41. package/codeyam-cli/src/commands/editor.js.map +1 -1
  42. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +1248 -16
  43. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  44. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
  45. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  46. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +20 -0
  47. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  48. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +33 -1
  49. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  50. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  51. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  52. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  53. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  54. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  55. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  56. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +217 -0
  57. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  58. package/codeyam-cli/src/utils/analysisRunner.js +36 -7
  59. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  60. package/codeyam-cli/src/utils/analyzer.js +11 -1
  61. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  62. package/codeyam-cli/src/utils/editorAudit.js +280 -15
  63. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  64. package/codeyam-cli/src/utils/editorPreview.js +5 -3
  65. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  66. package/codeyam-cli/src/utils/editorScenarios.js +36 -4
  67. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  68. package/codeyam-cli/src/utils/entityChangeStatus.server.js +16 -0
  69. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  70. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  71. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  72. package/codeyam-cli/src/utils/queue/job.js +26 -5
  73. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  74. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  75. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  76. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  77. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  78. package/codeyam-cli/src/utils/testRunner.js +199 -1
  79. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  80. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +28 -1
  81. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
  82. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +57 -2
  83. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
  84. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +57 -1
  85. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -1
  86. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +15 -0
  87. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
  88. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  89. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  90. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  91. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  92. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  93. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-aIHKLB-m.js +96 -0
  94. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  95. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Blfy9UlN.js → entity._sha._-ByHz6rAQ.js} +13 -12
  96. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-KTQuL0aj.js → entity._sha.scenarios._scenarioId.dev-CmLO432x.js} +1 -1
  97. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-C6eeL24i.js → entity._sha.scenarios._scenarioId.fullscreen-Bz9sCUF_.js} +1 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/globals-oyPmV37k.css +1 -0
  99. package/codeyam-cli/src/webserver/build/client/assets/manifest-bcbb3d49.js +1 -0
  100. package/codeyam-cli/src/webserver/build/client/assets/{root-BxUQigda.js → root-D2_tktnk.js} +26 -13
  101. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-DjF-soOH.js +16 -0
  102. package/codeyam-cli/src/webserver/build/server/assets/{index-Cd-ufawF.js → index-nAvHGWbz.js} +1 -1
  103. package/codeyam-cli/src/webserver/build/server/assets/{init-CzeBGOto.js → init-XhpIt-OT.js} +1 -1
  104. package/codeyam-cli/src/webserver/build/server/assets/server-build-DVwiibFu.js +644 -0
  105. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  106. package/codeyam-cli/src/webserver/build-info.json +5 -5
  107. package/codeyam-cli/src/webserver/idleDetector.js +15 -0
  108. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
  109. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +17 -0
  110. package/codeyam-cli/src/webserver/server.js +52 -14
  111. package/codeyam-cli/src/webserver/server.js.map +1 -1
  112. package/codeyam-cli/src/webserver/terminalServer.js +69 -15
  113. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  114. package/codeyam-cli/templates/editor-step-hook.py +21 -0
  115. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +19 -1
  116. package/package.json +1 -1
  117. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  118. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  119. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  120. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  121. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  122. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  123. package/packages/analyze/index.js +1 -1
  124. package/packages/analyze/index.js.map +1 -1
  125. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  126. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  127. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  128. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  129. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  130. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  131. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  132. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  133. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  134. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  135. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  136. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  137. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  138. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  139. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  140. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  141. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  142. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  143. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +116 -28
  144. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  145. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +139 -24
  146. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  147. package/packages/database/src/lib/loadAnalysis.js +1 -1
  148. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  149. package/packages/database/src/lib/loadEntity.js +5 -5
  150. package/packages/database/src/lib/loadEntity.js.map +1 -1
  151. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  152. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  153. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  154. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CGzKlIHg.js +0 -58
  155. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-oepecPae.js +0 -41
  156. package/codeyam-cli/src/webserver/build/client/assets/globals-Yn9W3zp3.css +0 -1
  157. package/codeyam-cli/src/webserver/build/client/assets/manifest-2ef99f38.js +0 -1
  158. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-BPmOG9bE.js +0 -13
  159. package/codeyam-cli/src/webserver/build/server/assets/server-build-Dht7CKXY.js +0 -552
@@ -16,6 +16,15 @@ You MUST follow a step-by-step workflow driven by `codeyam editor` commands. Eac
16
16
 
17
17
  **The rule:** After completing what a command tells you to do, run the NEXT command it specifies. The commands are your instructions — follow them one at a time.
18
18
 
19
+ ## TASK Directive
20
+
21
+ Some `codeyam editor N` commands output a `━━━ TASK ━━━` section with an `EXACT_TASK_TITLE:` line. When you see one:
22
+
23
+ 1. Delete ALL existing tasks: run TaskList, then run TaskUpdate with status "deleted" for every task returned
24
+ 2. Run TaskCreate with the EXACT title from the `EXACT_TASK_TITLE:` line — copy it character-for-character, do NOT paraphrase
25
+
26
+ This ensures only one task is ever visible. Do NOT create tasks on your own. Only create them when a `━━━ TASK ━━━` directive tells you to.
27
+
19
28
  ## Migration Mode
20
29
 
21
30
  When `codeyam editor steps` shows **"Project Migration"** instead of "Feature Cycle", the project is being migrated from an existing codebase. Follow the `codeyam editor migrate` commands instead of the normal 13-step cycle.
@@ -117,6 +126,9 @@ This command gives you the post-change checklist (re-register scenarios, re-run
117
126
  ## Key Rules
118
127
 
119
128
  - **Run the commands** — they ARE your instructions, not suggestions
129
+ - **One step at a time** — run each `codeyam editor N` command, read its FULL output, complete every checklist item, then advance. The CLI enforces a minimum time per step.
130
+ - **NEVER batch-run steps** — `for step in 5 6 7 8; do codeyam editor $step; done` or piping to `head` defeats the entire workflow. Each step has unique instructions you must read and follow.
131
+ - **NEVER delegate multiple steps to a subagent** — each step must be run, read, and completed in the main conversation. You MAY use subagents for parallelizable work _within_ a single step (e.g. extracting components + writing tests in step 5).
120
132
  - **Every feature gets scenarios** — this is the core value of CodeYam
121
133
  - **Always scaffold with a database** (Prisma + SQLite)
122
134
  - **Build real API routes** — the proxy handles scenario data transparently
@@ -176,7 +188,13 @@ codeyam editor register '{"name":"Full Catalog","type":"application","url":"/","
176
188
  # Register app scenario with localStorage (for apps using client-side storage instead of a database)
177
189
  codeyam editor register '{"name":"Full Library","type":"application","url":"/","dimensions":["<name from screenSizes>"],"localStorage":{"articles":[...],"collections":[...]}}'
178
190
 
179
- # For large seed/localStorage data, write JSON to a temp file and use @ prefix:
191
+ # BULK REGISTRATION (preferred register all scenarios at once):
192
+ # Write an array of scenarios to a temp file, then register with @ prefix.
193
+ # This is faster and avoids repeated screenshot capture overhead.
194
+ # File format: [{"name":"...","type":"...","url":"...","seed":{...}}, ...]
195
+ codeyam editor register @.codeyam/tmp/scenarios.json
196
+
197
+ # Single scenario from file (for large seed/localStorage data):
180
198
  codeyam editor register @/tmp/scenario-data.json
181
199
 
182
200
  # Journal entry (one per feature, references scenario names)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeyam/codeyam-cli",
3
- "version": "0.1.0-staging.30dc541",
3
+ "version": "0.1.0-staging.39719f5",
4
4
  "description": "Local development CLI for CodeYam analysis",
5
5
  "type": "module",
6
6
  "bin": {
@@ -182,6 +182,7 @@ const SILENTLY_IGNORED_EQUIVALENCY_REASONS = new Set([
182
182
  'transformed non-object function equivalency - Array.from() equivalency',
183
183
  'Spread operator equivalency key update: Explicit array deconstruction equivalency value',
184
184
  // 'transformed non-object function equivalency - Explicit array deconstruction equivalency value',
185
+ 'useState setter call equivalency (direct)',
185
186
  ]);
186
187
  export class ScopeDataStructure {
187
188
  // Getter for backward compatibility - returns the tree structure
@@ -648,9 +649,29 @@ export class ScopeDataStructure {
648
649
  delete schema[path];
649
650
  }
650
651
  addEquivalency(path, equivalentPath, equivalentScopeName, scopeNode, equivalencyReason, equivalencyValueChain, traceId) {
652
+ // Fast early exits that don't count toward the limit.
653
+ // These are "no-op" calls that would be caught further below anyway,
654
+ // but checking them first prevents counter inflation from redundant calls
655
+ // generated by managers and followEquivalencies during scope processing.
651
656
  var _a;
657
+ // Skip silently-ignored reasons before counting
658
+ if (SILENTLY_IGNORED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
659
+ return;
660
+ }
661
+ // Skip exact duplicates before counting (Phase 1 only — Phase 2 needs
662
+ // to process duplicates for database chain tracking)
663
+ if (this.onlyEquivalencies) {
664
+ const existing = scopeNode.equivalencies[path];
665
+ if (existing?.some((v) => v.schemaPath === equivalentPath &&
666
+ v.scopeNodeName === equivalentScopeName)) {
667
+ return;
668
+ }
669
+ }
652
670
  addEquivalencyCallCount++;
653
- if (addEquivalencyCallCount > 50000) {
671
+ const limit = typeof globalThis.__CODEYAM_EQUIVALENCY_LIMIT === 'number'
672
+ ? globalThis.__CODEYAM_EQUIVALENCY_LIMIT
673
+ : 50000;
674
+ if (addEquivalencyCallCount > limit) {
654
675
  console.error('INFINITE LOOP DETECTED in addEquivalency', {
655
676
  callCount: addEquivalencyCallCount,
656
677
  path,
@@ -663,15 +684,11 @@ export class ScopeDataStructure {
663
684
  }
664
685
  // Filter equivalency reasons - use pre-computed Sets for O(1) lookup
665
686
  if (!ALLOWED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
666
- if (SILENTLY_IGNORED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
667
- return;
668
- }
669
- else {
670
- // Log and skip - if an equivalency reason isn't in ALLOWED or SILENTLY_IGNORED,
671
- // it shouldn't be stored (was previously missing the return)
672
- console.info('Not tracked equivalency reason', { equivalencyReason });
673
- return;
674
- }
687
+ // Silently-ignored reasons already handled above
688
+ // Log and skip - if an equivalency reason isn't in ALLOWED or SILENTLY_IGNORED,
689
+ // it shouldn't be stored (was previously missing the return)
690
+ console.info('Not tracked equivalency reason', { equivalencyReason });
691
+ return;
675
692
  }
676
693
  // Skip self-referential equivalencies that would create infinite loops.
677
694
  // Case 1: Direct self-reference (path === equivalentPath)