@codeyam/codeyam-cli 0.1.0-staging.b8b17a5 → 0.1.0-staging.ba3f279

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 (331) 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/astScopes/methodSemantics.ts +135 -0
  5. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  10. package/analyzer-template/packages/analyze/index.ts +4 -1
  11. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  17. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  18. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  19. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
  22. package/analyzer-template/packages/aws/package.json +1 -1
  23. package/analyzer-template/packages/database/package.json +1 -1
  24. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  25. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  26. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  27. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  28. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  29. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  30. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  31. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  32. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  33. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  34. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  35. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  36. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  37. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  38. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  39. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  40. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  41. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  42. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  43. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  44. package/codeyam-cli/src/cli.js +15 -0
  45. package/codeyam-cli/src/cli.js.map +1 -1
  46. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  47. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  48. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  49. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  50. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  51. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  52. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  53. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  54. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +9 -9
  55. package/codeyam-cli/src/commands/editor.js +1906 -468
  56. package/codeyam-cli/src/commands/editor.js.map +1 -1
  57. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  58. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  59. package/codeyam-cli/src/commands/init.js +1 -0
  60. package/codeyam-cli/src/commands/init.js.map +1 -1
  61. package/codeyam-cli/src/data/designSystems.js +27 -0
  62. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  63. package/codeyam-cli/src/data/techStacks.js +1 -1
  64. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +44 -0
  65. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
  66. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +2114 -70
  67. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  68. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  69. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  70. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +66 -0
  71. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -1
  72. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  73. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  74. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
  75. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  76. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +190 -0
  77. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
  78. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +249 -1
  79. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  80. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +134 -1
  81. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
  82. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +266 -2
  83. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  84. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  85. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  86. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +16 -1
  87. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -1
  88. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  89. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  90. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  91. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  92. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +57 -0
  93. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -1
  94. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +180 -1
  95. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
  96. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  97. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  98. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  99. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  100. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +6 -0
  101. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -1
  102. package/codeyam-cli/src/utils/analysisRunner.js +36 -7
  103. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  104. package/codeyam-cli/src/utils/analyzer.js +11 -1
  105. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  106. package/codeyam-cli/src/utils/backgroundServer.js +1 -1
  107. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  108. package/codeyam-cli/src/utils/editorApi.js +16 -0
  109. package/codeyam-cli/src/utils/editorApi.js.map +1 -1
  110. package/codeyam-cli/src/utils/editorAudit.js +499 -43
  111. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  112. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  113. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  114. package/codeyam-cli/src/utils/editorPreview.js +5 -3
  115. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  116. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  117. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  118. package/codeyam-cli/src/utils/editorScenarioSwitch.js +39 -2
  119. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
  120. package/codeyam-cli/src/utils/editorScenarios.js +131 -7
  121. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  122. package/codeyam-cli/src/utils/editorSeedAdapter.js +69 -16
  123. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
  124. package/codeyam-cli/src/utils/entityChangeStatus.js +31 -3
  125. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  126. package/codeyam-cli/src/utils/entityChangeStatus.server.js +31 -0
  127. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  128. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  129. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  130. package/codeyam-cli/src/utils/install-skills.js +5 -0
  131. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  132. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  133. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  134. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  135. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  136. package/codeyam-cli/src/utils/queue/job.js +35 -6
  137. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  138. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  139. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  140. package/codeyam-cli/src/utils/scenarioCoverage.js +4 -1
  141. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
  142. package/codeyam-cli/src/utils/scenariosManifest.js +66 -2
  143. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
  144. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  145. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  146. package/codeyam-cli/src/utils/simulationGateMiddleware.js +9 -0
  147. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  148. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  149. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  150. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  151. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  152. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  153. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  155. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/testRunner.js +193 -1
  157. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  158. package/codeyam-cli/src/utils/webappDetection.js +4 -2
  159. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  160. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +98 -0
  161. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  162. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +68 -1
  163. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
  164. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +30 -11
  165. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
  166. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +190 -21
  167. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
  168. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  169. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  170. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +22 -1
  171. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
  172. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  173. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  174. package/codeyam-cli/src/webserver/backgroundServer.js +42 -57
  175. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  176. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CzTDWkF2.js → CopyButton-CLe80MMu.js} +1 -1
  177. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BFbq6iFk.js → EntityItem-Crt_KN_U.js} +1 -1
  178. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-B6OMi58N.js → EntityTypeIcon-CD7lGABo.js} +1 -1
  179. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-DuYodzo1.js → InlineSpinner-CgTNOhnu.js} +1 -1
  180. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CXo9EeCl.js → InteractivePreview-DtYTSPL2.js} +2 -2
  181. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-DYCNb2It.js → LibraryFunctionPreview-D3s1MFkb.js} +1 -1
  182. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CZgY3sxX.js → LogViewer-CM5zg40N.js} +1 -1
  183. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  184. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-CnYYwRDw.js → ReportIssueModal-C2PLkej3.js} +1 -1
  185. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CDoF7ZpU.js → SafeScreenshot-DanvyBPb.js} +1 -1
  186. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DrnfvaLL.js → ScenarioViewer-CefgqbCr.js} +1 -1
  187. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bc8BG-Lw.js +34 -0
  188. package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-DRKR9T0U.js → ViewportInspectBar-BA_Ry-rs.js} +1 -1
  189. package/codeyam-cli/src/webserver/build/client/assets/{_index-ClR-g3tY.js → _index-C1YkzTAV.js} +1 -1
  190. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DTH6ydEA.js → activity.(_tab)-yH46LLUz.js} +1 -1
  191. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-74hnHF59.js → addon-web-links-CHx25PAe.js} +1 -1
  192. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-B8CYhCO9.js → agent-transcripts-Bg3e7q4S.js} +1 -1
  193. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  195. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  196. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/{book-open-CLaoh4ac.js → book-open-CL-lMgHh.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BZ2DZxbW.js → chevron-down-GmAjGS9-.js} +1 -1
  200. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-BBXArFPl.js → chunk-JZWAC4HX-BAdwhyCx.js} +11 -11
  201. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CT4unAk-.js → circle-check-DFcQkN5j.js} +1 -1
  202. package/codeyam-cli/src/webserver/build/client/assets/{copy-zK0B6Nu-.js → copy-C6iF61Xs.js} +1 -1
  203. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-DJB0YQJL.js → createLucideIcon-4ImjHTVC.js} +1 -1
  204. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  206. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-CkXFP_i-.js → dev.empty-CRepiabR.js} +1 -1
  207. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +96 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BqAN7hyG.js → entity._sha._-DYJRGiDI.js} +13 -12
  211. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-D1eikpe1.js → entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js} +1 -1
  212. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js → entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js} +1 -1
  213. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-CJX6kkkV.js → entity._sha_.create-scenario-DxfhekTZ.js} +1 -1
  214. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BhVjZhKg.js → entity._sha_.edit._scenarioId-CRXJWmpB.js} +1 -1
  215. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-_gzKltPN.js → entry.client-SuW9syRS.js} +1 -1
  216. package/codeyam-cli/src/webserver/build/client/assets/{files-CV_17tZS.js → files-D-xGrg29.js} +1 -1
  217. package/codeyam-cli/src/webserver/build/client/assets/{git-D-YXmMbR.js → git-Bq_fbXP5.js} +1 -1
  218. package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{index-CCrgCshv.js → index-Bp1l4hSv.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/client/assets/{index-BsX0F-9C.js → index-CWV9XZiG.js} +1 -1
  221. package/codeyam-cli/src/webserver/build/client/assets/{index-Blo6EK8G.js → index-DE3jI_dv.js} +1 -1
  222. package/codeyam-cli/src/webserver/build/client/assets/{labs-Byazq8Pv.js → labs-B_IX45ih.js} +1 -1
  223. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DVQ0oHR7.js → loader-circle-De-7qQ2u.js} +1 -1
  224. package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +1 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/{memory-b-VmA2Vj.js → memory-Cx2xEx7s.js} +1 -1
  226. package/codeyam-cli/src/webserver/build/client/assets/{pause-DGcndCAa.js → pause-CFxEKL1u.js} +1 -1
  227. package/codeyam-cli/src/webserver/build/client/assets/root-dKFRTYcy.js +80 -0
  228. package/codeyam-cli/src/webserver/build/client/assets/{search-C0Uw0bcK.js → search-BdBb5aqc.js} +1 -1
  229. package/codeyam-cli/src/webserver/build/client/assets/{settings-OoNgHIfW.js → settings-DdE-Untf.js} +1 -1
  230. package/codeyam-cli/src/webserver/build/client/assets/{simulations-Bcemfu8a.js → simulations-DSCdE99u.js} +1 -1
  231. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BgMmG7R9.js → terminal-CrplD4b1.js} +1 -1
  232. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-Cs87hJYK.js → triangle-alert-DqJ0j69l.js} +1 -1
  233. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BR3Rs7JY.js → useCustomSizes-DhXHbEjP.js} +1 -1
  234. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-D9QZKaLJ.js +2 -0
  235. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-BermyNU5.js → useReportContext-Cy5Qg_UR.js} +1 -1
  236. package/codeyam-cli/src/webserver/build/client/assets/{useToast-a_QN_W9_.js → useToast-5HR2j9ZE.js} +1 -1
  237. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-OLsM110H.js +16 -0
  238. package/codeyam-cli/src/webserver/build/server/assets/{index-CHymws6l.js → index-WHdB6WTN.js} +1 -1
  239. package/codeyam-cli/src/webserver/build/server/assets/{init-D3HkMDbI.js → init-DbSiZoE6.js} +2 -2
  240. package/codeyam-cli/src/webserver/build/server/assets/server-build-DZbLY6O_.js +690 -0
  241. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  242. package/codeyam-cli/src/webserver/build-info.json +5 -5
  243. package/codeyam-cli/src/webserver/editorProxy.js +55 -3
  244. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  245. package/codeyam-cli/src/webserver/idleDetector.js +65 -8
  246. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
  247. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +53 -0
  248. package/codeyam-cli/src/webserver/server.js +52 -14
  249. package/codeyam-cli/src/webserver/server.js.map +1 -1
  250. package/codeyam-cli/src/webserver/terminalServer.js +153 -32
  251. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  252. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  253. package/codeyam-cli/templates/codeyam-editor-claude.md +2 -0
  254. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  255. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  256. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  257. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  258. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  259. package/codeyam-cli/templates/editor-step-hook.py +93 -46
  260. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +204 -5
  261. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  262. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +6 -3
  263. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  264. package/codeyam-cli/templates/expo-react-native/app.json +11 -0
  265. package/codeyam-cli/templates/expo-react-native/babel.config.js +1 -0
  266. package/codeyam-cli/templates/expo-react-native/gitignore +2 -0
  267. package/codeyam-cli/templates/expo-react-native/global.css +7 -0
  268. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  269. package/codeyam-cli/templates/expo-react-native/package.json +32 -16
  270. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  271. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  272. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +47 -34
  273. package/codeyam-cli/templates/seed-adapters/supabase.ts +101 -9
  274. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +34 -1
  275. package/package.json +1 -1
  276. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  277. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  278. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  279. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  280. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  281. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  282. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  283. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  284. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  285. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  286. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  287. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  288. package/packages/analyze/index.js +1 -1
  289. package/packages/analyze/index.js.map +1 -1
  290. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  291. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  292. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  293. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  294. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  295. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  296. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  297. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  298. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  299. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  300. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  301. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  302. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  303. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  304. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  305. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  306. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  307. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  308. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  309. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  310. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  311. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  312. package/packages/database/src/lib/loadAnalysis.js +7 -1
  313. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  314. package/packages/database/src/lib/loadEntity.js +5 -5
  315. package/packages/database/src/lib/loadEntity.js.map +1 -1
  316. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  317. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  318. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +0 -34
  319. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  320. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +0 -1
  321. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DYqG1D_d.js +0 -58
  322. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DggyRwOr.js +0 -41
  323. package/codeyam-cli/src/webserver/build/client/assets/globals-DRvOjyO3.css +0 -1
  324. package/codeyam-cli/src/webserver/build/client/assets/manifest-f4212c17.js +0 -1
  325. package/codeyam-cli/src/webserver/build/client/assets/root-F-k2uYj5.js +0 -67
  326. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +0 -2
  327. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-if8kM_1Q.js +0 -13
  328. package/codeyam-cli/src/webserver/build/server/assets/server-build-DTCzJQiH.js +0 -551
  329. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +0 -33
  330. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +0 -12
  331. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +0 -12
@@ -31,6 +31,7 @@ import { telemetryMiddleware } from "./utils/telemetryMiddleware.js";
31
31
  import { captureEvent } from "./utils/telemetry.js";
32
32
  import { getDisplayVersion } from "./utils/versionInfo.js";
33
33
  import { simulationGateMiddleware, buildSimulationEpilogue, } from "./utils/simulationGateMiddleware.js";
34
+ import { checkEditorGuard } from "./utils/editorGuard.js";
34
35
  import telemetryCommand from "./commands/telemetry.js";
35
36
  // Install global signal handlers for automatic process cleanup
36
37
  // This ensures all child processes (analyzer, capture, etc.) are cleaned up on:
@@ -50,6 +51,20 @@ yargs(hideBin(process.argv))
50
51
  .scriptName('codeyam')
51
52
  .version(getDisplayVersion())
52
53
  .usage('CodeYam local development CLI')
54
+ .middleware(() => {
55
+ // Block dangerous commands from inside the editor terminal.
56
+ // Uses process.argv directly because yargs absorbs named positionals.
57
+ const args = hideBin(process.argv);
58
+ const command = args[0];
59
+ if (command) {
60
+ const rest = args.slice(1);
61
+ const guard = checkEditorGuard(command, rest);
62
+ if (guard.blocked) {
63
+ console.error(guard.message);
64
+ process.exit(1);
65
+ }
66
+ }
67
+ })
53
68
  .middleware(simulationGateMiddleware)
54
69
  .middleware(syncMocksMiddleware)
55
70
  .middleware(telemetryMiddleware)
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Tests that `codeyam editor analyze-imports` correctly parses optional
3
+ * file path arguments to scope analysis to specific files.
4
+ *
5
+ * Without file paths, analyze-imports analyzes all glossary entities.
6
+ * With file paths, it scopes analysis to only those files.
7
+ */
8
+ import { parseAnalyzeImportsArgs } from "../editorAnalyzeImportsArgs.js";
9
+ describe('parseAnalyzeImportsArgs', () => {
10
+ it('should return empty array when no args provided', () => {
11
+ expect(parseAnalyzeImportsArgs(undefined, [])).toEqual([]);
12
+ expect(parseAnalyzeImportsArgs('', [])).toEqual([]);
13
+ });
14
+ it('should parse a single file path from json arg', () => {
15
+ // codeyam editor analyze-imports app/components/Foo.tsx
16
+ expect(parseAnalyzeImportsArgs('app/components/Foo.tsx', [])).toEqual([
17
+ 'app/components/Foo.tsx',
18
+ ]);
19
+ });
20
+ it('should collect extra positional args from argv._', () => {
21
+ // codeyam editor analyze-imports app/components/Foo.tsx app/components/Bar.tsx
22
+ // yargs: json="app/components/Foo.tsx", argv._=["editor", "app/components/Bar.tsx"]
23
+ expect(parseAnalyzeImportsArgs('app/components/Foo.tsx', [
24
+ 'editor',
25
+ 'app/components/Bar.tsx',
26
+ ])).toEqual(['app/components/Foo.tsx', 'app/components/Bar.tsx']);
27
+ });
28
+ it('should filter out "editor" from argv._', () => {
29
+ expect(parseAnalyzeImportsArgs(undefined, [
30
+ 'editor',
31
+ 'app/components/Foo.tsx',
32
+ 'app/lib/utils.ts',
33
+ ])).toEqual(['app/components/Foo.tsx', 'app/lib/utils.ts']);
34
+ });
35
+ it('should deduplicate file paths', () => {
36
+ expect(parseAnalyzeImportsArgs('app/components/Foo.tsx', [
37
+ 'editor',
38
+ 'app/components/Foo.tsx',
39
+ 'app/components/Bar.tsx',
40
+ ])).toEqual(['app/components/Foo.tsx', 'app/components/Bar.tsx']);
41
+ });
42
+ it('should handle numeric extras gracefully', () => {
43
+ // yargs can put numbers in argv._
44
+ expect(parseAnalyzeImportsArgs('app/components/Foo.tsx', [42, 'editor'])).toEqual(['app/components/Foo.tsx']);
45
+ });
46
+ });
47
+ //# sourceMappingURL=editor.analyzeImportsArgs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.analyzeImportsArgs.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.analyzeImportsArgs.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,uBAAuB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,wDAAwD;QACxD,MAAM,CAAC,uBAAuB,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACpE,wBAAwB;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,+EAA+E;QAC/E,oFAAoF;QACpF,MAAM,CACJ,uBAAuB,CAAC,wBAAwB,EAAE;YAChD,QAAQ;YACR,wBAAwB;SACzB,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CACJ,uBAAuB,CAAC,SAAS,EAAE;YACjC,QAAQ;YACR,wBAAwB;YACxB,kBAAkB;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CACJ,uBAAuB,CAAC,wBAAwB,EAAE;YAChD,QAAQ;YACR,wBAAwB;YACxB,wBAAwB;SACzB,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,kCAAkC;QAClC,MAAM,CACJ,uBAAuB,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAClE,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Structural test: handleAudit must NOT call runAnalysisForEntities.
5
+ *
6
+ * Previously, handleAudit auto-ran full analysis for incomplete entities,
7
+ * which was slow (analyzer startup + AST scan for all glossary entries).
8
+ *
9
+ * Targeted analysis (with filePaths for 1-3 specific files) is acceptable,
10
+ * but a full scan (without filePaths) must never be used here.
11
+ * This test ensures the full auto-analysis doesn't creep back in.
12
+ */
13
+ describe('handleAudit - no auto-analysis', () => {
14
+ it('should not call runAnalysisForEntities inside handleAudit', () => {
15
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
16
+ const source = fs.readFileSync(editorTsPath, 'utf8');
17
+ // Extract the handleAudit function body.
18
+ // It starts with "async function handleAudit" and ends at the next
19
+ // top-level "async function" or "function" declaration (unindented).
20
+ const handleAuditStart = source.indexOf('async function handleAudit');
21
+ expect(handleAuditStart).toBeGreaterThan(-1);
22
+ // Find the next top-level function declaration after handleAudit starts.
23
+ // Top-level functions start at the beginning of a line (no indentation).
24
+ const afterStart = source.slice(handleAuditStart + 1);
25
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
26
+ const handleAuditEnd = nextFnMatch
27
+ ? handleAuditStart + 1 + nextFnMatch.index
28
+ : source.length;
29
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
30
+ // The function body must NOT contain runAnalysisForEntities
31
+ expect(handleAuditBody).not.toContain('runAnalysisForEntities');
32
+ });
33
+ it('should report incomplete entities with guidance instead of auto-fixing', () => {
34
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
35
+ const source = fs.readFileSync(editorTsPath, 'utf8');
36
+ const handleAuditStart = source.indexOf('async function handleAudit');
37
+ const afterStart = source.slice(handleAuditStart + 1);
38
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
39
+ const handleAuditEnd = nextFnMatch
40
+ ? handleAuditStart + 1 + nextFnMatch.index
41
+ : source.length;
42
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
43
+ // Should still report incomplete entities
44
+ expect(handleAuditBody).toContain('incompleteEntities');
45
+ expect(handleAuditBody).toContain('formatIncompleteEntityGuidance');
46
+ });
47
+ it('should only call handleAnalyzeImports with filePaths (targeted, not full scan)', () => {
48
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
49
+ const source = fs.readFileSync(editorTsPath, 'utf8');
50
+ const handleAuditStart = source.indexOf('async function handleAudit');
51
+ expect(handleAuditStart).toBeGreaterThan(-1);
52
+ const afterStart = source.slice(handleAuditStart + 1);
53
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
54
+ const handleAuditEnd = nextFnMatch
55
+ ? handleAuditStart + 1 + nextFnMatch.index
56
+ : source.length;
57
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
58
+ // Targeted handleAnalyzeImports (with filePaths) is OK — it only
59
+ // analyzes 1-3 specific files. A full scan (without filePaths) takes
60
+ // minutes on large projects and must never be used here.
61
+ const calls = [...handleAuditBody.matchAll(/handleAnalyzeImports\s*\(/g)];
62
+ for (const call of calls) {
63
+ const afterCall = handleAuditBody.slice(call.index + call[0].length);
64
+ // Each call must include filePaths in its arguments
65
+ const closingParen = afterCall.indexOf(')');
66
+ const callArgs = afterCall.slice(0, closingParen);
67
+ expect(callArgs).toContain('filePaths');
68
+ }
69
+ });
70
+ });
71
+ //# sourceMappingURL=editor.auditNoAutoAnalysis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.auditNoAutoAnalysis.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.auditNoAutoAnalysis.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { DESIGN_SYSTEMS } from "../../data/designSystems.js";
4
+ /**
5
+ * Structural tests for built-in design system selection in the editor.
6
+ * Ensures template files exist, editor.ts references each design system,
7
+ * and the subcommand dispatch is wired up.
8
+ */
9
+ describe('editor design system selection', () => {
10
+ const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
11
+ const templatesDir = path.join(__dirname, '..', // commands
12
+ '..', // src
13
+ '..', // codeyam-cli
14
+ 'templates', 'design-systems');
15
+ it('should have a template file for each design system', () => {
16
+ for (const ds of DESIGN_SYSTEMS) {
17
+ const filePath = path.join(templatesDir, ds.fileName);
18
+ expect(fs.existsSync(filePath)).toBe(true);
19
+ }
20
+ });
21
+ it('should iterate over DESIGN_SYSTEMS in printSetup to output design-system commands', () => {
22
+ // printSetup dynamically iterates DESIGN_SYSTEMS and outputs
23
+ // `codeyam editor design-system ${ds.id}` for each — verify the template literal is present
24
+ expect(editorSource).toContain('codeyam editor design-system ${ds.id}');
25
+ });
26
+ it('should have a design-system subcommand dispatch', () => {
27
+ expect(editorSource).toMatch(/argv\.step === ['"]design-system['"]/);
28
+ });
29
+ });
30
+ //# sourceMappingURL=editor.designSystem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.designSystem.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.designSystem.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;GAIG;AACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,SAAS,EACT,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,cAAc;IACpB,WAAW,EACX,gBAAgB,CACjB,CAAC;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,6DAA6D;QAC7D,4FAA4F;QAC5F,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Structural test: every writeState() call in editor.ts must preserve
5
+ * `techStackId` and `appFormats` from the previous state.
6
+ *
7
+ * Bug: Steps 4-18 dropped techStackId from writeState calls, causing
8
+ * getTechStackContext() to fall back to Next.js defaults. This broke
9
+ * `codeyam editor isolate` for Expo projects — it created Next.js-style
10
+ * subdirectories instead of Expo flat files.
11
+ */
12
+ describe('editor state persistence', () => {
13
+ const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
14
+ // Find all writeState blocks in the source.
15
+ // Each writeState call spans multiple lines like:
16
+ // writeState(root, {
17
+ // feature,
18
+ // step: N,
19
+ // ...
20
+ // });
21
+ const writeStateBlocks = [];
22
+ const lines = editorSource.split('\n');
23
+ for (let i = 0; i < lines.length; i++) {
24
+ if (lines[i].includes('writeState(root,')) {
25
+ // Collect lines until we find the closing `});`
26
+ let block = '';
27
+ for (let j = i; j < lines.length; j++) {
28
+ block += lines[j] + '\n';
29
+ if (lines[j].match(/^\s*\}\);/))
30
+ break;
31
+ }
32
+ writeStateBlocks.push({ lineNumber: i + 1, block });
33
+ }
34
+ }
35
+ it('should find writeState calls in editor.ts', () => {
36
+ expect(writeStateBlocks.length).toBeGreaterThan(10);
37
+ });
38
+ // Filter to only writeState blocks that set a step number (printStep functions).
39
+ // Exclude the handleTemplate/migration-survey writeState that sets step: 0.
40
+ const stepWriteStates = writeStateBlocks.filter(({ block }) => block.match(/step:\s*\d+/) && !block.match(/step:\s*0/));
41
+ it('should find step writeState calls', () => {
42
+ expect(stepWriteStates.length).toBeGreaterThanOrEqual(18);
43
+ });
44
+ for (const { lineNumber, block } of stepWriteStates) {
45
+ const stepMatch = block.match(/step:\s*(\d+)/);
46
+ const stepNum = stepMatch ? stepMatch[1] : '?';
47
+ it(`step ${stepNum} writeState (line ${lineNumber}) should preserve techStackId`, () => {
48
+ expect(block).toContain('techStackId');
49
+ });
50
+ it(`step ${stepNum} writeState (line ${lineNumber}) should preserve appFormats`, () => {
51
+ expect(block).toContain('appFormats');
52
+ });
53
+ }
54
+ });
55
+ //# sourceMappingURL=editor.statePersistence.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.statePersistence.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.statePersistence.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;GAQG;AACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,4CAA4C;IAC5C,kDAAkD;IAClD,uBAAuB;IACvB,eAAe;IACf,eAAe;IACf,UAAU;IACV,QAAQ;IACR,MAAM,gBAAgB,GAA4C,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,gDAAgD;YAChD,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;oBAAE,MAAM;YACzC,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,4EAA4E;IAC5E,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAC7C,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CACvE,CAAC;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE/C,EAAE,CAAC,QAAQ,OAAO,qBAAqB,UAAU,+BAA+B,EAAE,GAAG,EAAE;YACrF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,OAAO,qBAAqB,UAAU,8BAA8B,EAAE,GAAG,EAAE;YACpF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -2,8 +2,8 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  /**
4
4
  * Structural test: the CLI dispatch switch in editor.ts must have case labels
5
- * for every step 1–16. Without this test, it's easy to add new steps
6
- * (e.g. 14, 15, 16) to the printStep functions and STEP_LABELS but forget
5
+ * for every step 1–18. Without this test, it's easy to add new steps
6
+ * (e.g. 16, 17, 18) to the printStep functions and STEP_LABELS but forget
7
7
  * to add matching case labels to the switch statement — causing `codeyam editor N`
8
8
  * to silently do nothing for the missing steps.
9
9
  *
@@ -12,31 +12,31 @@ import path from 'path';
12
12
  */
13
13
  describe('editor CLI step dispatch', () => {
14
14
  const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
15
- it('should have switch case labels for all steps 1–16', () => {
15
+ it('should have switch case labels for all steps 1–18', () => {
16
16
  // Find the switch(step) block in the CLI dispatch section.
17
17
  // There are two stepFns definitions in editor.ts:
18
18
  // 1. Test/debug scenario generator (~line 4658) — uses a for-loop, not a switch
19
19
  // 2. CLI dispatch (~line 5263) — uses switch(step) { case N: ... }
20
20
  //
21
- // We need to verify the second one (CLI dispatch) has cases for all 16 steps.
21
+ // We need to verify the second one (CLI dispatch) has cases for all 18 steps.
22
22
  // Find all `case N:` labels in the file. The CLI dispatch switch is the
23
23
  // only switch on `step` that uses numbered cases.
24
24
  const switchMatch = editorSource.match(/switch\s*\(step\)\s*\{([\s\S]*?)\n\s{4}\}/);
25
25
  expect(switchMatch).not.toBeNull();
26
26
  const switchBody = switchMatch[1];
27
- for (let step = 1; step <= 16; step++) {
27
+ for (let step = 1; step <= 18; step++) {
28
28
  const casePattern = new RegExp(`case\\s+${step}\\s*[:{]`);
29
29
  expect(switchBody).toMatch(casePattern);
30
30
  }
31
31
  });
32
- it('should have STEP_LABELS entries for all steps 1–16', () => {
33
- for (let step = 1; step <= 16; step++) {
32
+ it('should have STEP_LABELS entries for all steps 1–18', () => {
33
+ for (let step = 1; step <= 18; step++) {
34
34
  const labelPattern = new RegExp(`${step}:\\s*'[^']+'`);
35
35
  expect(editorSource).toMatch(labelPattern);
36
36
  }
37
37
  });
38
- it('should have printStep functions defined for all steps 1–16', () => {
39
- for (let step = 1; step <= 16; step++) {
38
+ it('should have printStep functions defined for all steps 1–18', () => {
39
+ for (let step = 1; step <= 18; step++) {
40
40
  const fnPattern = new RegExp(`function\\s+printStep${step}\\s*\\(`);
41
41
  expect(editorSource).toMatch(fnPattern);
42
42
  }