@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
@@ -7,6 +7,98 @@ import * as pty from 'node-pty';
7
7
  import { createMarkerTransformer } from "../utils/scenarioMarkers.js";
8
8
  import { IdleDetector } from "./idleDetector.js";
9
9
  import { mockStateEventEmitter } from "./mockStateEvents.js";
10
+ /**
11
+ * Strip the raw `claude ...` shell command from suppressed PTY output
12
+ * so it doesn't leak to the user in the fallback timeout path.
13
+ */
14
+ export function stripClaudeCommand(output) {
15
+ // Find the line containing the claude command and strip everything before
16
+ // and including it (shell prompt, ANSI codes, command echo). Preserve any
17
+ // real output that follows.
18
+ const idx = output.indexOf('claude ');
19
+ if (idx === -1)
20
+ return output;
21
+ // Find the end of the command line (\r or \n after "claude")
22
+ let end = idx;
23
+ while (end < output.length && output[end] !== '\r' && output[end] !== '\n') {
24
+ end++;
25
+ }
26
+ // Skip past trailing \r\n
27
+ while (end < output.length &&
28
+ (output[end] === '\r' || output[end] === '\n')) {
29
+ end++;
30
+ }
31
+ // Strip leading ANSI escape sequences from the remainder
32
+ // (e.g. bracketed paste mode toggles like \x1b[?2004l)
33
+ let rest = output.slice(end);
34
+ rest = rest.replace(/^(\x1b\[[\x20-\x3f]*[\x40-\x7e]|\x1b[()][A-Z0-9])*/, '');
35
+ return rest;
36
+ }
37
+ /**
38
+ * Detect whether a PTY output chunk contains Claude Code's welcome banner.
39
+ * Supports both the old box-drawing format (`╭─── Claude Code ───╮`)
40
+ * and the new block-art format (`▐▛███▜▌ Claude Code`).
41
+ */
42
+ export function isBannerChunk(data) {
43
+ // Strip ANSI escape sequences before checking — Claude Code's Ink renderer
44
+ // inserts SGR color codes between the banner characters (e.g. ▐\x1b[48;5;16m▛).
45
+ const plain = data.replace(/\x1b\[[0-9;?]*[A-Za-z]|\x1b\][^\x07]*\x07|\x1b[()][A-Z0-9]/g, '');
46
+ return plain.includes('╭') || plain.includes('▐▛');
47
+ }
48
+ /**
49
+ * Determine whether the startup output filter should be active.
50
+ * The filter strips the raw `claude --session-id ...` command from the
51
+ * terminal so the user never sees it.
52
+ */
53
+ export function shouldFilterStartup(opts) {
54
+ return opts.hasContext || opts.editorMode;
55
+ }
56
+ /**
57
+ * Manages PTY output suppression during Claude startup.
58
+ *
59
+ * Suppresses all output until the welcome banner arrives, then clears
60
+ * the screen. The claude command is stripped from any chunk that is forwarded
61
+ * (both the banner chunk on the normal path and the buffered output on the
62
+ * fallback timeout path).
63
+ */
64
+ export class StartupOutputFilter {
65
+ constructor() {
66
+ this.hasClearedScreen = false;
67
+ this.suppressedOutput = '';
68
+ }
69
+ /**
70
+ * Process a PTY data chunk. Returns an object describing what action to take:
71
+ * - `type: 'suppress'` — buffer the chunk, send nothing
72
+ * - `type: 'clear-and-send'` — clear screen, then send `data`
73
+ * - `type: 'send'` — send `data` as-is (post-startup)
74
+ */
75
+ processChunk(data) {
76
+ if (!this.hasClearedScreen && isBannerChunk(data)) {
77
+ this.hasClearedScreen = true;
78
+ const cleaned = stripClaudeCommand(data);
79
+ return { type: 'clear-and-send', data: cleaned };
80
+ }
81
+ if (!this.hasClearedScreen) {
82
+ this.suppressedOutput += data;
83
+ return { type: 'suppress' };
84
+ }
85
+ return { type: 'send', data };
86
+ }
87
+ /**
88
+ * Called when the fallback timeout fires (╭ never arrived).
89
+ * Returns the buffered output with the command stripped, or null if
90
+ * the screen was already cleared.
91
+ */
92
+ getTimeoutOutput() {
93
+ if (this.hasClearedScreen)
94
+ return null;
95
+ this.hasClearedScreen = true;
96
+ if (this.suppressedOutput.length === 0)
97
+ return null;
98
+ const cleaned = stripClaudeCommand(this.suppressedOutput);
99
+ return cleaned.length > 0 ? cleaned : null;
100
+ }
101
+ }
10
102
  // Use globalThis so the sessions Set is shared across module instances.
11
103
  // In Vite dev mode, this file is loaded twice: once by the Vite plugin (Node.js native)
12
104
  // and once by the SSR context (ssrLoadModule). Without globalThis, each instance
@@ -234,9 +326,10 @@ function writeEditorModeContext(ctx) {
234
326
  `- **Proxy:** http://localhost:${proxyPort} (used by the browser iframe only — do NOT use for health checks)`,
235
327
  '',
236
328
  '## Workflow',
237
- '- **Guided steps:** Run `codeyam editor steps` for the next step (plan → prototype → confirm → deconstruct → extract → glossary → analyze → app scenarios → user scenarios → verify → journal → review → present → commit → finalize → push)',
238
- '- Each feature follows 16 steps: `codeyam editor 1` through `codeyam editor 16`',
239
- '- Steps 1, 3, 13, and 16 require user confirmation before proceeding',
329
+ '- **Guided steps:** Run `codeyam editor steps` for the next step (plan → prepare → prototype → verify prototype → confirm → deconstruct → extract → glossary → analyze → app scenarios → user scenarios → verify → journal → review → present → commit → finalize → push)',
330
+ '- Each feature follows 18 steps — run `codeyam editor steps` to see what to do next. Never expose `codeyam editor` commands to the user.',
331
+ '- **Run ONE step at a time.** Read the FULL output, complete every checklist item, then advance. NEVER batch-run steps in a loop or delegate them to a subagent.',
332
+ '- Steps 1, 5, 15, and 18 require user confirmation before proceeding',
240
333
  '',
241
334
  '## Preview Updates',
242
335
  '- **Refresh the preview frequently** — the user watches the preview as you work. Refresh after every meaningful change (new page, UI section, data seeding, styling), not just at the end.',
@@ -247,8 +340,7 @@ function writeEditorModeContext(ctx) {
247
340
  '- Get the dev server URL: `curl -s http://localhost:' +
248
341
  serverPort +
249
342
  '/api/editor-dev-server` → look at the `"url"` field (e.g., `http://localhost:3000`)',
250
- '- Check the page loads: `curl -s -o /dev/null -w "%{http_code}" http://localhost:3000` (use the actual dev server URL, NOT the proxy)',
251
- '- Check API routes work: `curl -s http://localhost:3000/api/your-route` (should return JSON, not "Internal Server Error")',
343
+ '- Verify pages and API routes: `codeyam editor verify-routes \'{"paths":["/"],"apiRoutes":["/api/your-route"]}\'` (checks HTTP status and JSON validity)',
252
344
  '- **NEVER check localhost:' +
253
345
  proxyPort +
254
346
  ' for health** — the proxy returns 200 even when the app is broken',
@@ -278,8 +370,10 @@ function writeEditorModeContext(ctx) {
278
370
  '- Create ONE isolation route page per component:',
279
371
  ' - **Remix:** `app/routes/isolated-components.ComponentName.tsx` → `/isolated-components/ComponentName`',
280
372
  ' - **Next.js:** `app/isolated-components/ComponentName/page.tsx` → `/isolated-components/ComponentName`',
373
+ ' - **Expo:** `app/isolated-components/ComponentName.tsx` → `/isolated-components/ComponentName` (use `useLocalSearchParams` from expo-router)',
281
374
  '- The route defines a `scenarios` object mapping scenario names to props, reads `?s=ScenarioName` from the URL, and renders the component',
282
- '- Wrap the component in a centered container: `<div style="display:flex;justify-content:center;align-items:center;min-height:100vh;padding:20px"><div style="width:100%;max-width:...">` — set max-width to match the component\'s real container (e.g. card in 3-col grid → 24rem)',
375
+ '- For web apps: Wrap the component in a centered container: `<div style="display:flex;justify-content:center;align-items:center;min-height:100vh"><div style="width:100%;max-width:...">` — set max-width to match the component\'s real container (e.g. card in 3-col grid → 24rem)',
376
+ '- For Expo: Wrap with `<View nativeID="codeyam-capture">` (nativeID maps to id on web for screenshot capture)',
283
377
  '- **Create multiple scenarios per component** (like tests): default/happy path, edge cases (empty data, long text, max items), different visual states (loading, error, disabled)',
284
378
  '- Register each scenario: `codeyam editor register \'{"name":"ComponentName - Scenario","componentName":"ComponentName","componentPath":"path/to/file.tsx","url":"/isolated-components/ComponentName?s=Scenario","mockData":{"routes":{"/api/...":{"body":[...]}}}}\'`',
285
379
  '- The url is a PATH, not a full URL — the proxy appends it and intercepts API calls the component makes',
@@ -299,7 +393,7 @@ function writeEditorModeContext(ctx) {
299
393
  const hasPackageJson = fs.existsSync(path.join(codeyamRoot, 'package.json'));
300
394
  if (!hasPackageJson) {
301
395
  lines.push('## Status');
302
- lines.push('- **Empty project** — no package.json found. Ask the user what they want to build.');
396
+ lines.push('- **Empty project** — no package.json found. Run `codeyam editor steps` to begin.');
303
397
  lines.push('');
304
398
  }
305
399
  fs.writeFileSync(contextPath, lines.join('\n'), 'utf8');
@@ -360,6 +454,7 @@ export function attachTerminalServer(httpServer) {
360
454
  const reconnectId = url.searchParams.get('reconnectId') || '';
361
455
  const claudeStartMode = url.searchParams.get('claudeStartMode') || '';
362
456
  const claudeSessionId = url.searchParams.get('claudeSessionId') || '';
457
+ const editorStepLabel = url.searchParams.get('editorStepLabel') || '';
363
458
  // --- Reconnection: reattach to a detached PTY ---
364
459
  if (reconnectId && detachedPtys.has(reconnectId)) {
365
460
  const detached = detachedPtys.get(reconnectId);
@@ -389,22 +484,24 @@ export function attachTerminalServer(httpServer) {
389
484
  const reconnectIdleDetector = new IdleDetector({
390
485
  onIdle: () => {
391
486
  if (ws.readyState === WebSocket.OPEN) {
487
+ console.log('[terminalServer] Sending claude-idle (reconnected)');
392
488
  ws.send(JSON.stringify({ type: 'claude-idle' }));
393
489
  }
394
490
  },
395
491
  onActive: () => {
396
492
  if (ws.readyState === WebSocket.OPEN) {
493
+ console.log('[terminalServer] Sending claude-active (reconnected)');
397
494
  ws.send(JSON.stringify({ type: 'claude-active' }));
398
495
  }
399
496
  },
400
- });
497
+ }, { activeOutputPattern: /[✶✢·◼]/ });
401
498
  detached.ptyProcess.onData((data) => {
402
499
  if (detachedFlag)
403
500
  return; // Superseded by a newer listener
404
501
  if (ws.readyState === WebSocket.OPEN) {
405
502
  if (!detached.hasClearedScreen &&
406
503
  detached.hasContext &&
407
- data.includes('╭')) {
504
+ isBannerChunk(data)) {
408
505
  detached.hasClearedScreen = true;
409
506
  ws.send(JSON.stringify({ type: 'output', data: '\x1b[2J\x1b[H' }));
410
507
  }
@@ -412,11 +509,12 @@ export function attachTerminalServer(httpServer) {
412
509
  if (transformed.length > 0) {
413
510
  ws.send(JSON.stringify({ type: 'output', data: transformed }));
414
511
  }
415
- reconnectIdleDetector.onPtyOutput(data.length);
512
+ reconnectIdleDetector.onPtyOutput(data);
416
513
  }
417
514
  });
418
515
  detached.ptyProcess.onExit(() => {
419
- reconnectIdleDetector.dispose();
516
+ console.log('[terminalServer] PTY exited (reconnected), flushing idle state');
517
+ reconnectIdleDetector.disposeAndFlush();
420
518
  sessions.delete(session);
421
519
  if (ws.readyState === WebSocket.OPEN) {
422
520
  ws.close();
@@ -500,28 +598,41 @@ export function attachTerminalServer(httpServer) {
500
598
  projectSlug,
501
599
  });
502
600
  let hasClearedScreen = false;
601
+ const filterStartup = shouldFilterStartup({ hasContext, editorMode });
602
+ const startupFilter = filterStartup ? new StartupOutputFilter() : null;
503
603
  // Safety timeout: stop suppressing output after 5s even if ╭ never arrives.
504
604
  // Prevents "Starting Claude..." hanging forever if the banner format changes.
505
- if (hasContext) {
605
+ if (filterStartup) {
506
606
  setTimeout(() => {
507
- if (!hasClearedScreen) {
607
+ const output = startupFilter.getTimeoutOutput();
608
+ if (output !== null) {
508
609
  hasClearedScreen = true;
509
610
  console.log('[terminalServer] Suppression timeout — showing output');
611
+ if (ws.readyState === WebSocket.OPEN) {
612
+ // Clear the "Starting Claude..." message
613
+ ws.send(JSON.stringify({ type: 'output', data: '\x1b[2J\x1b[H' }));
614
+ const transformed = transformMarkers(output);
615
+ if (transformed.length > 0) {
616
+ ws.send(JSON.stringify({ type: 'output', data: transformed }));
617
+ }
618
+ }
510
619
  }
511
620
  }, 5000);
512
621
  }
513
622
  const idleDetector = new IdleDetector({
514
623
  onIdle: () => {
515
624
  if (ws.readyState === WebSocket.OPEN) {
625
+ console.log('[terminalServer] Sending claude-idle');
516
626
  ws.send(JSON.stringify({ type: 'claude-idle' }));
517
627
  }
518
628
  },
519
629
  onActive: () => {
520
630
  if (ws.readyState === WebSocket.OPEN) {
631
+ console.log('[terminalServer] Sending claude-active');
521
632
  ws.send(JSON.stringify({ type: 'claude-active' }));
522
633
  }
523
634
  },
524
- });
635
+ }, { activeOutputPattern: /[✶✢·◼]/ });
525
636
  // PTY output -> WebSocket
526
637
  const serverPort = process.env.CODEYAM_PORT || '3111';
527
638
  // Stateful transformer that buffers partial {{scenario:...}} markers
@@ -529,19 +640,22 @@ export function attachTerminalServer(httpServer) {
529
640
  const transformMarkers = createMarkerTransformer(serverPort);
530
641
  ptyProcess.onData((data) => {
531
642
  if (ws.readyState === WebSocket.OPEN) {
532
- // When Claude Code starts (indicated by its box-drawing welcome banner),
533
- // clear the screen to hide the raw shell command.
534
- if (!hasClearedScreen && hasContext && data.includes('╭')) {
535
- hasClearedScreen = true;
536
- ws.send(JSON.stringify({ type: 'output', data: '\x1b[2J\x1b[H' }));
537
- }
538
- // Suppress output before the screen clear so the user doesn't see
539
- // the raw `claude '/codeyam-editor'` command being echoed by the shell.
540
- if (!hasClearedScreen && hasContext) {
541
- // Skip sending to client AND idle detection — Claude hasn't started
542
- // yet, so any output gap is just startup latency, not Claude waiting
543
- // for input. Without this, the idle detector fires a false positive
544
- // during the startup gap and the user gets a spurious notification.
643
+ // During startup, suppress output until Claude's welcome banner (╭)
644
+ // arrives, then clear screen and strip the raw command from the chunk.
645
+ if (startupFilter && !hasClearedScreen) {
646
+ const result = startupFilter.processChunk(data);
647
+ if (result.type === 'clear-and-send') {
648
+ hasClearedScreen = true;
649
+ ws.send(JSON.stringify({ type: 'output', data: '\x1b[2J\x1b[H' }));
650
+ if (result.data.length > 0) {
651
+ const transformed = transformMarkers(result.data);
652
+ if (transformed.length > 0) {
653
+ ws.send(JSON.stringify({ type: 'output', data: transformed }));
654
+ }
655
+ }
656
+ idleDetector.onPtyOutput(data);
657
+ }
658
+ // type === 'suppress': skip sending and idle detection
545
659
  }
546
660
  else {
547
661
  // Transform {{scenario:Name:ID}} markers into OSC 8 clickable hyperlinks.
@@ -550,12 +664,13 @@ export function attachTerminalServer(httpServer) {
550
664
  if (transformed.length > 0) {
551
665
  ws.send(JSON.stringify({ type: 'output', data: transformed }));
552
666
  }
553
- idleDetector.onPtyOutput(data.length);
667
+ idleDetector.onPtyOutput(data);
554
668
  }
555
669
  }
556
670
  });
557
671
  ptyProcess.onExit(() => {
558
- idleDetector.dispose();
672
+ console.log('[terminalServer] PTY exited, flushing idle state');
673
+ idleDetector.disposeAndFlush();
559
674
  sessions.delete(session);
560
675
  // Also clean up from detachedPtys if it was detached
561
676
  if (detachedPtys.has(sessionId)) {
@@ -592,7 +707,7 @@ export function attachTerminalServer(httpServer) {
592
707
  // Show a loading indicator while Claude Code starts up.
593
708
  // PTY output is suppressed until Claude's welcome banner (╭) appears
594
709
  // and triggers a screen clear, so the user never sees the raw command.
595
- if (hasContext) {
710
+ if (filterStartup) {
596
711
  ws.send(JSON.stringify({
597
712
  type: 'output',
598
713
  data: '\x1b[2J\x1b[H\r\n\x1b[90m Starting Claude...\x1b[0m\r\n',
@@ -612,11 +727,17 @@ export function attachTerminalServer(httpServer) {
612
727
  setTimeout(() => {
613
728
  if (editorMode && hasContext) {
614
729
  if (claudeStartMode === 'resume' && claudeSessionId) {
615
- ptyProcess.write(`claude --resume '${claudeSessionId}' 'The session was interrupted. Please continue where you left off.'\r`);
730
+ const resumePrompt = editorStepLabel === 'Present'
731
+ ? 'The session was interrupted. Please rerun show-results.'
732
+ : 'The session was interrupted. Please continue where you left off.';
733
+ ptyProcess.write(`claude --resume '${claudeSessionId}' '${resumePrompt}'\r`);
616
734
  }
617
735
  else if (claudeStartMode === 'resume') {
618
736
  // No session ID available — fall back to most recent session
619
- ptyProcess.write("claude --continue 'The session was interrupted. Please continue where you left off.'\r");
737
+ const resumePrompt = editorStepLabel === 'Present'
738
+ ? 'The session was interrupted. Please rerun show-results.'
739
+ : 'The session was interrupted. Please continue where you left off.';
740
+ ptyProcess.write(`claude --continue '${resumePrompt}'\r`);
620
741
  }
621
742
  else {
622
743
  // Fresh session: generate a trackable UUID
@@ -1 +1 @@
1
- {"version":3,"file":"terminalServer.js","sourceRoot":"","sources":["../../../../src/webserver/terminalServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminalServer.js","sourceRoot":"","sources":["../../../../src/webserver/terminalServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { execFileSync } from 'child_process';
2
+ import fs from 'fs';
3
+ import os from 'os';
4
+ import path from 'path';
5
+
6
+ /**
7
+ * Tests for the prompt capture logic in editor-step-hook.py.
8
+ *
9
+ * The hook captures the user's feature request text on UserPromptSubmit events
10
+ * and writes it to `.codeyam/editor-user-prompt.txt`. This prompt is later
11
+ * recorded in the journal entry.
12
+ *
13
+ * The critical invariant: when a new feature starts (previous feature at step 18
14
+ * or no state file), the hook must overwrite the stale prompt from the previous
15
+ * feature — not skip writing because the file already exists.
16
+ */
17
+ describe('editor-step-hook prompt capture', () => {
18
+ const hookPath = path.join(__dirname, '..', 'editor-step-hook.py');
19
+ let tmpDir: string;
20
+ let codeyamDir: string;
21
+ let promptPath: string;
22
+ let statePath: string;
23
+
24
+ beforeEach(() => {
25
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hook-prompt-test-'));
26
+ codeyamDir = path.join(tmpDir, '.codeyam');
27
+ fs.mkdirSync(codeyamDir, { recursive: true });
28
+ promptPath = path.join(codeyamDir, 'editor-user-prompt.txt');
29
+ statePath = path.join(codeyamDir, 'editor-step.json');
30
+ });
31
+
32
+ afterEach(() => {
33
+ fs.rmSync(tmpDir, { recursive: true, force: true });
34
+ });
35
+
36
+ function runHook(input: object): string {
37
+ try {
38
+ return execFileSync('python3', [hookPath], {
39
+ input: JSON.stringify(input),
40
+ env: {
41
+ ...process.env,
42
+ CODEYAM_EDITOR_ACTIVE: '1',
43
+ CLAUDE_PROJECT_DIR: tmpDir,
44
+ },
45
+ encoding: 'utf8',
46
+ timeout: 5000,
47
+ });
48
+ } catch (e: unknown) {
49
+ // Hook may exit with non-zero or produce stderr; capture stdout
50
+ return (e as { stdout?: string }).stdout || '';
51
+ }
52
+ }
53
+
54
+ function writeState(step: number, label: string): void {
55
+ fs.writeFileSync(
56
+ statePath,
57
+ JSON.stringify({ step, label, feature: 'Test Feature' }),
58
+ );
59
+ }
60
+
61
+ it('should capture the first user prompt when no prompt file exists', () => {
62
+ // No state file, no prompt file — brand new session
63
+ runHook({ prompt: 'CUJ 28 — Add author column to library table' });
64
+
65
+ expect(fs.existsSync(promptPath)).toBe(true);
66
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
67
+ 'CUJ 28 — Add author column to library table',
68
+ );
69
+ });
70
+
71
+ it('should NOT overwrite prompt during an active feature (step < 18)', () => {
72
+ // Feature in progress at step 5
73
+ writeState(5, 'Confirm');
74
+ fs.writeFileSync(promptPath, 'Original feature request');
75
+
76
+ runHook({ prompt: 'ok sounds good' });
77
+
78
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
79
+ 'Original feature request',
80
+ );
81
+ });
82
+
83
+ it('should overwrite stale prompt when previous feature is done (step >= 18)', () => {
84
+ // Previous feature completed (step 18), prompt file has stale content
85
+ writeState(18, 'Push');
86
+ fs.writeFileSync(promptPath, 'Previous feature request — STALE');
87
+
88
+ runHook({ prompt: 'CUJ 29 — User can write notes about articles' });
89
+
90
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
91
+ 'CUJ 29 — User can write notes about articles',
92
+ );
93
+ });
94
+
95
+ it('should overwrite stale prompt when no state file exists (between features)', () => {
96
+ // State file was cleared (between features), but prompt file persists
97
+ fs.writeFileSync(promptPath, 'Previous feature request — STALE');
98
+ // No state file — it was deleted
99
+
100
+ runHook({ prompt: 'CUJ 30 — New article highlights in collections' });
101
+
102
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
103
+ 'CUJ 30 — New article highlights in collections',
104
+ );
105
+ });
106
+
107
+ it('should NOT capture slash commands as user prompts', () => {
108
+ runHook({ prompt: '/codeyam-dev-mode' });
109
+
110
+ expect(fs.existsSync(promptPath)).toBe(false);
111
+ });
112
+
113
+ it('should NOT capture empty prompts', () => {
114
+ runHook({ prompt: ' ' });
115
+
116
+ expect(fs.existsSync(promptPath)).toBe(false);
117
+ });
118
+ });
@@ -26,6 +26,8 @@ A **scenario** is a named set of data that drives how the app renders. Scenarios
26
26
  - **App-level scenarios**: Full application state — what the database contains, what API responses return. Example: "Empty Dashboard", "Dashboard with 50 Tasks", "Dashboard with Overdue Tasks"
27
27
  - **Component-level scenarios**: Props for a single component in isolation. Example: "TaskCard - Default", "TaskCard - Overdue", "TaskCard - Completed"
28
28
 
29
+ **Name scenarios by data state** ("Rich Data", "Empty", "Mobile"), not by feature. When adding a feature, enhance an existing scenario's data — rename it if the scope has grown.
30
+
29
31
  **Only create scenarios for states the current code can render.** If you seed 10 articles but the app doesn't have an article list component yet, the screenshot will show an empty page — that's a broken scenario. After registering, always view the captured screenshot to verify the data is actually visible.
30
32
 
31
33
  **Always register scenarios with CodeYam** using the CLI: