@codeyam/codeyam-cli 0.1.0-staging.1a2737b → 0.1.0-staging.27d5a59

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 (458) 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 +9 -9
  4. package/analyzer-template/packages/ai/package.json +2 -2
  5. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  6. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +27 -0
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  9. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  10. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  11. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  16. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  17. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  18. package/analyzer-template/packages/aws/package.json +1 -1
  19. package/analyzer-template/packages/database/index.ts +1 -0
  20. package/analyzer-template/packages/database/package.json +3 -3
  21. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  22. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  23. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  24. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  25. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  26. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  27. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  28. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  29. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  30. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  31. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  32. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  33. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  34. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  35. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  37. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  39. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  40. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  41. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  42. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  46. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  47. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  48. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  49. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  51. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  52. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  54. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  55. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  60. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  61. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  62. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  64. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  66. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  67. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  68. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/package.json +1 -1
  70. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  71. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  72. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  73. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  74. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  75. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  76. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  77. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  78. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  79. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  80. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  81. package/analyzer-template/project/constructMockCode.ts +136 -43
  82. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  83. package/analyzer-template/project/start.ts +3 -0
  84. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  85. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  86. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  87. package/analyzer-template/project/writeScenarioComponents.ts +36 -7
  88. package/analyzer-template/tsconfig.json +13 -1
  89. package/background/src/lib/virtualized/project/constructMockCode.js +115 -34
  90. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  91. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  92. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  93. package/background/src/lib/virtualized/project/start.js +2 -0
  94. package/background/src/lib/virtualized/project/start.js.map +1 -1
  95. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  96. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  97. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  98. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  99. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  100. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  101. package/background/src/lib/virtualized/project/writeScenarioComponents.js +29 -7
  102. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  103. package/codeyam-cli/scripts/apply-setup.js +208 -11
  104. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  105. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  106. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  107. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  108. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  109. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  110. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  111. package/codeyam-cli/src/cli.js +9 -12
  112. package/codeyam-cli/src/cli.js.map +1 -1
  113. package/codeyam-cli/src/commands/analyze.js +17 -7
  114. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  115. package/codeyam-cli/src/commands/default.js +7 -2
  116. package/codeyam-cli/src/commands/default.js.map +1 -1
  117. package/codeyam-cli/src/commands/editor.js +1982 -0
  118. package/codeyam-cli/src/commands/editor.js.map +1 -0
  119. package/codeyam-cli/src/commands/init.js +40 -11
  120. package/codeyam-cli/src/commands/init.js.map +1 -1
  121. package/codeyam-cli/src/commands/memory.js +29 -58
  122. package/codeyam-cli/src/commands/memory.js.map +1 -1
  123. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +246 -0
  124. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  125. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +126 -0
  126. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  127. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +295 -0
  128. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  129. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  130. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  131. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +100 -0
  132. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  133. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +147 -0
  134. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  135. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +76 -0
  136. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  137. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  138. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  139. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +6 -0
  140. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  141. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  142. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  143. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  144. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  145. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  146. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  147. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +26 -0
  148. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  149. package/codeyam-cli/src/utils/backgroundServer.js +21 -5
  150. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  151. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  152. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  153. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  154. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  155. package/codeyam-cli/src/utils/editorAudit.js +82 -0
  156. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  157. package/codeyam-cli/src/utils/editorDevServer.js +98 -0
  158. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  159. package/codeyam-cli/src/utils/editorJournal.js +137 -0
  160. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  161. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  162. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  163. package/codeyam-cli/src/utils/editorPreloadHelpers.js +64 -0
  164. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  165. package/codeyam-cli/src/utils/editorPreview.js +66 -0
  166. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  167. package/codeyam-cli/src/utils/editorScenarios.js +56 -0
  168. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  169. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  170. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  171. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  172. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  173. package/codeyam-cli/src/utils/git.js +103 -0
  174. package/codeyam-cli/src/utils/git.js.map +1 -1
  175. package/codeyam-cli/src/utils/install-skills.js +57 -15
  176. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  177. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  178. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  179. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  180. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  181. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  182. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  183. package/codeyam-cli/src/utils/project.js +15 -5
  184. package/codeyam-cli/src/utils/project.js.map +1 -1
  185. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  186. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  187. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  188. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  189. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  190. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  191. package/codeyam-cli/src/utils/queue/job.js +70 -1
  192. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  193. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  194. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  195. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  196. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  197. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  198. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  199. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +2 -5
  200. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  201. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  202. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  203. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  204. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  205. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  206. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  207. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  208. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  209. package/codeyam-cli/src/utils/rules/index.js +1 -0
  210. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  211. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  212. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  213. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  214. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  215. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  216. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  217. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  218. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  219. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  220. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  221. package/codeyam-cli/src/utils/serverState.js +27 -2
  222. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  223. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +45 -4
  224. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  225. package/codeyam-cli/src/utils/simulationGateMiddleware.js +63 -42
  226. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  227. package/codeyam-cli/src/utils/testRunner.js +158 -0
  228. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  229. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  230. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  231. package/codeyam-cli/src/utils/versionInfo.js +21 -0
  232. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  233. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  234. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  235. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  236. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  237. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  238. package/codeyam-cli/src/webserver/backgroundServer.js +118 -18
  239. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  240. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-jNYXRRNI.js → CopyButton-DmJveP3T.js} +1 -1
  241. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-C76mRRiF.js} +1 -1
  242. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CvzqMxcu.js → EntityTypeBadge-g3saevPb.js} +1 -1
  243. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-CobE682z.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-yjIHlOGa.js → InteractivePreview-DYFW3lDD.js} +3 -3
  246. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-Cq5o8jL4.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  247. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-BU_OAEMP.js} +1 -1
  248. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-ceAyBX-H.js} +1 -1
  249. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-djPLI-WV.js} +1 -1
  250. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CwZrv-Ok.js → SafeScreenshot-BED4B6sP.js} +1 -1
  251. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-B76aig_2.js} +1 -1
  252. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/Terminal-nZNBALox.js +41 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CDpEprKa.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  255. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-C96V0n15.js} +1 -1
  256. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-BpKzcsJz.js} +1 -1
  257. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  258. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  259. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  260. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  261. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  262. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  263. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  264. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  265. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  266. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  267. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  268. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  269. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  270. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  271. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  273. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  274. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  275. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  276. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  278. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  279. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  280. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  281. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  282. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-D_nMCFmP.js} +1 -1
  283. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-BH2h1Ea2.js} +1 -1
  284. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-C4pqxYJB.js} +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-DyIKORY6.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-NDbZjXao.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-D1zB-pYc.js → createLucideIcon-CMT1jU2q.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  289. package/codeyam-cli/src/webserver/build/client/assets/editor-B2KwhQph.js +8 -0
  290. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-CrjR3zZW.js} +10 -10
  291. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DjACbfdI.js +6 -0
  292. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  293. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  294. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  295. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-DTvKq3TY.js} +1 -1
  296. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-9sMMAiWJ.js → fileTableUtils-cPo8LiG3.js} +1 -1
  297. package/codeyam-cli/src/webserver/build/client/assets/{files-Co65J0s3.js → files-DO4CZ16O.js} +1 -1
  298. package/codeyam-cli/src/webserver/build/client/assets/{git-BdHOxVfg.js → git-CFCTYk9I.js} +1 -1
  299. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +1 -0
  300. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-10oVnAAH.js} +1 -1
  301. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-BcvgDzbZ.js} +1 -1
  302. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  303. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-BAXYRVEO.js} +1 -1
  304. package/codeyam-cli/src/webserver/build/client/assets/manifest-af20abcd.js +1 -0
  305. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +96 -0
  306. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-DTAcYxBt.js} +1 -1
  307. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +67 -0
  308. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-fKo7v0Zo.js} +1 -1
  309. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  310. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DVNJVQgD.js → simulations-B3aOzpCZ.js} +1 -1
  311. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-BG4heKCG.js} +1 -1
  312. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-DtSmdtM4.js} +1 -1
  313. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BqgrAzs3.js → useCustomSizes-ByhSyh0W.js} +1 -1
  314. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  315. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DZlYx2c4.js → useReportContext-O-jkvSPx.js} +1 -1
  316. package/codeyam-cli/src/webserver/build/client/assets/{useToast-ihdMtlf6.js → useToast-9FIWuYfK.js} +1 -1
  317. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  318. package/codeyam-cli/src/webserver/build/server/assets/index-D_kZbNJs.js +1 -0
  319. package/codeyam-cli/src/webserver/build/server/assets/server-build-CWy5OIH9.js +366 -0
  320. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  321. package/codeyam-cli/src/webserver/build-info.json +5 -5
  322. package/codeyam-cli/src/webserver/devServer.js +39 -5
  323. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  324. package/codeyam-cli/src/webserver/editorProxy.js +440 -0
  325. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  326. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +175 -0
  327. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +140 -0
  328. package/codeyam-cli/src/webserver/server.js +226 -1
  329. package/codeyam-cli/src/webserver/server.js.map +1 -1
  330. package/codeyam-cli/src/webserver/terminalServer.js +698 -0
  331. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  332. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  333. package/codeyam-cli/templates/editor-step-hook.py +147 -0
  334. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  335. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  336. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  337. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  338. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  339. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  340. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  341. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  342. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  343. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  344. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  345. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  346. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  347. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  348. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +43 -0
  349. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  350. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  351. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  352. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  353. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  354. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  355. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  356. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  357. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  358. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  359. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  360. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  361. package/codeyam-cli/templates/rule-reflection-hook.py +24 -4
  362. package/codeyam-cli/templates/rules-instructions.md +34 -88
  363. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  364. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +69 -0
  365. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  366. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  367. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  368. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  369. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  370. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  371. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  372. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  373. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  374. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  375. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  376. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  377. package/package.json +12 -10
  378. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  379. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  380. package/packages/ai/src/lib/completionCall.js +10 -7
  381. package/packages/ai/src/lib/completionCall.js.map +1 -1
  382. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +21 -0
  383. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  384. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  385. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  386. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  387. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  388. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  389. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  390. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  391. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  392. package/packages/analyze/src/lib/asts/index.js +4 -2
  393. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  394. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  395. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  396. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  397. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  398. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  399. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  400. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  401. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  402. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  403. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  404. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  405. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  406. package/packages/database/index.js +1 -0
  407. package/packages/database/index.js.map +1 -1
  408. package/packages/database/src/lib/kysely/db.js +5 -0
  409. package/packages/database/src/lib/kysely/db.js.map +1 -1
  410. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  411. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  412. package/packages/database/src/lib/loadCommits.js +23 -13
  413. package/packages/database/src/lib/loadCommits.js.map +1 -1
  414. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  415. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  416. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  417. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  418. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  419. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  420. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  421. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  422. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  423. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  424. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  425. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  426. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  427. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  428. package/scripts/npm-post-install.cjs +34 -0
  429. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  430. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  431. package/codeyam-cli/src/commands/list.js +0 -31
  432. package/codeyam-cli/src/commands/list.js.map +0 -1
  433. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  434. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  435. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  436. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  437. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  438. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  439. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  440. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  441. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  442. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +0 -1
  443. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +0 -1
  445. package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +0 -92
  446. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +0 -62
  447. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  448. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  449. package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +0 -1
  450. package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +0 -273
  451. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  452. package/scripts/finalize-analyzer.cjs +0 -13
  453. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  454. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  455. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  456. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  457. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  458. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -1,4 +1,4 @@
1
- import { spawn, execSync } from 'child_process';
1
+ import { execSync, spawn } from 'child_process';
2
2
  import { existsSync, readdirSync, rmSync } from 'fs';
3
3
  import { join } from 'path';
4
4
  /**
@@ -97,7 +97,8 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
97
97
  const dest = destinationPath.endsWith('/')
98
98
  ? destinationPath
99
99
  : `${destinationPath}/`;
100
- const rsyncArgs = ['-a'];
100
+ // -a includes --specials which tries to copy sockets/FIFOs and can fail
101
+ const rsyncArgs = ['-a', '--no-specials'];
101
102
  if (!keepExisting) {
102
103
  rsyncArgs.push('--delete', '--force');
103
104
  }
@@ -118,6 +119,9 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
118
119
  resolve();
119
120
  }
120
121
  else {
122
+ console.error(`CodeYam Error: rsync failed with code: ${code}`, JSON.stringify({
123
+ rsyncArgs,
124
+ }, null, 2));
121
125
  reject(new Error(`rsync failed with exit code ${code}`));
122
126
  }
123
127
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../../../packages/utils/src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../../../packages/utils/src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EACpB,UAAU,EACV,eAAe,EACf,QAAQ,EACR,MAAM,GAMP;IACC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEhD,oDAAoD;IACpD,gEAAgE;IAChE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,iEAAiE;gBACjE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,2EAA2E;QAC3E,QAAQ,CAAC,aAAa,UAAU,MAAM,eAAe,GAAG,EAAE;YACxD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAO,EAAE,uBAAuB;SAC1C,CAAC,CAAC;QAEH,uCAAuC;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,qCAAqC;gBACrC,IAAI,CAAC;oBACH,QAAQ,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE;wBACrD,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CACT,oCAAoC,UAAU,OAAO,eAAe,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,6BAA6B;QAC7B,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAQ,GAAG,EAAE,EACb,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,EAAE,GAQf;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,+DAA+D;IAC/D,wEAAwE;IACxE,mCAAmC;IACnC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,UAAU;YACV,eAAe;YACf,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CACT,yBAAyB,UAAU,OAAO,eAAe,WAAW,QAAQ,IAAI,CACjF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QACxE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC;QAE1B,wEAAwE;QACxE,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,wCAAwC;QACxC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE/C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CACT,yBAAyB,UAAU,OAAO,eAAe,WAAW,QAAQ,IAAI,CACjF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,0CAA0C,IAAI,EAAE,EAChD,IAAI,CAAC,SAAS,CACZ;oBACE,SAAS;iBACV,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBAEF,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Post-install script — we used to finalize the CodeYam analyzer here,
5
+ * but that is now deferred to the `codeyam setup-simulations` step.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ // On macOS/Linux, ensure node-pty spawn-helper binaries are executable.
12
+ // This is a no-op on Windows where chmod isn't needed.
13
+ if (process.platform !== 'win32') {
14
+ const spawnHelpers = [
15
+ 'node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper',
16
+ 'node_modules/node-pty/prebuilds/darwin-x64/spawn-helper',
17
+ ];
18
+ for (const helper of spawnHelpers) {
19
+ const fullPath = path.join(__dirname, '..', helper);
20
+ if (fs.existsSync(fullPath)) {
21
+ try {
22
+ fs.chmodSync(fullPath, 0o755);
23
+ } catch {
24
+ // Best-effort — don't fail the install
25
+ }
26
+ }
27
+ }
28
+ }
29
+
30
+ console.error('');
31
+ console.error(' CodeYam CLI installed successfully!');
32
+ console.error('');
33
+ console.error(" Type 'codeyam' in your project directory to get started.");
34
+ console.error('');
@@ -1,120 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- import { error, header, info, ProgressReporter, success, withoutSpinner, } from "../utils/progress.js";
4
- import { testEnvironment } from "../utils/database.js";
5
- import { detectUniversalMocks } from "../utils/universal-mocks.js";
6
- import { loadProject, upsertProjects } from "../../../packages/database/index.js";
7
- import { writeMocksToFiles } from "../utils/syncUniversalMocks.js";
8
- import { getProjectRoot } from "../state.js";
9
- import { requireSimulations } from "../utils/requireSimulations.js";
10
- const UNIVERSAL_MOCKS_DIR = 'universal-mocks';
11
- const detectUniversalMocksCommand = {
12
- command: 'detect-universal-mocks',
13
- describe: 'Analyze codebase to detect universal mocks needed for unconfigured startup',
14
- handler: async () => {
15
- requireSimulations();
16
- header('CodeYam Universal Mocks Detection');
17
- const progress = new ProgressReporter();
18
- // Find project root directory
19
- const projectRoot = getProjectRoot();
20
- if (!projectRoot) {
21
- error('Not in a CodeYam project. Run: codeyam init');
22
- return;
23
- }
24
- const configPath = path.join(projectRoot, '.codeyam', 'config.json');
25
- try {
26
- // Load project configuration
27
- progress.start('Loading project configuration...');
28
- const config = JSON.parse(await fs.readFile(configPath, 'utf8'));
29
- const { projectSlug } = config;
30
- if (!projectSlug) {
31
- progress.fail('Invalid project configuration');
32
- error('Missing project slug. Try reinitializing with: codeyam init --force');
33
- return;
34
- }
35
- progress.succeed('Loaded project configuration');
36
- // Test database connection
37
- progress.start('Validating environment...');
38
- const connectionOk = await withoutSpinner(() => testEnvironment());
39
- if (!connectionOk) {
40
- progress.fail('Environment validation failed');
41
- return;
42
- }
43
- progress.succeed('Environment validated');
44
- // Load project from database
45
- progress.start('Loading project from database...');
46
- const project = await loadProject({ slug: projectSlug });
47
- if (!project) {
48
- progress.fail('Project not found in database');
49
- error(`Project "${projectSlug}" not found. Try reinitializing.`);
50
- return;
51
- }
52
- progress.succeed('Loaded project from database');
53
- // Run universal mocks detection
54
- progress.start('Analyzing codebase...');
55
- const existingMocks = project.metadata?.universalMocks || [];
56
- info(`Found ${existingMocks.length} existing universal mocks`);
57
- // Create progress callback to update the spinner with message count
58
- const progressCallback = (messageCount) => {
59
- progress.update(`Analyzing codebase... (${messageCount} Claude Code messages processed)`);
60
- };
61
- const result = await detectUniversalMocks(existingMocks, progressCallback);
62
- progress.succeed('Universal mocks detection completed');
63
- // Log the completion info now that the spinner is done
64
- info(`Claude Code finished in ${result.duration_ms}ms, cost $${result.total_cost_usd.toFixed(4)}`);
65
- info(`Detected ${result.universalMocks.length} universal mocks`);
66
- if (result.universalMocks.length === 0) {
67
- success('No universal mocks detected. Your codebase appears to be already compatible with unconfigured startup.');
68
- return;
69
- }
70
- // Write mocks to local files
71
- progress.start('Writing mocks to local files...');
72
- const mocksDir = path.join(projectRoot, '.codeyam', UNIVERSAL_MOCKS_DIR);
73
- await writeMocksToFiles(mocksDir, result.universalMocks);
74
- progress.succeed(`Wrote mocks to .codeyam/${UNIVERSAL_MOCKS_DIR}/`);
75
- // Update project metadata with new universal mocks
76
- progress.start('Updating project metadata...');
77
- // Re-read the project to minimize race conditions
78
- const freshProject = await loadProject({ slug: projectSlug });
79
- if (!freshProject) {
80
- progress.fail('Project no longer exists');
81
- error('Project was deleted while processing. Please try again.');
82
- return;
83
- }
84
- // Create updated project with new universal mocks
85
- const updatedProject = {
86
- ...freshProject,
87
- metadata: {
88
- ...freshProject.metadata,
89
- universalMocks: result.universalMocks,
90
- },
91
- };
92
- // Use upsertProjects to save the updated project
93
- await upsertProjects([updatedProject]);
94
- progress.succeed('Project metadata updated');
95
- // Display results
96
- console.log();
97
- success('Universal mocks detection completed successfully!');
98
- info(`Updated project with ${result.universalMocks.length} universal mocks`);
99
- // Show summary of detected mocks
100
- console.log();
101
- info('Detected universal mocks:');
102
- result.universalMocks.forEach((mock, index) => {
103
- info(` ${index + 1}. ${mock.entityName} in ${mock.filePath}`);
104
- });
105
- console.log();
106
- info(`Edit mock files in: .codeyam/${UNIVERSAL_MOCKS_DIR}/`);
107
- info('Changes will sync to the database automatically on next command.');
108
- }
109
- catch (err) {
110
- progress.fail('Universal mocks detection failed');
111
- error(`Error: ${err.message}`);
112
- if (err.stack) {
113
- console.error('Stack trace:', err.stack);
114
- }
115
- process.exit(1);
116
- }
117
- },
118
- };
119
- export default detectUniversalMocksCommand;
120
- //# sourceMappingURL=detect-universal-mocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect-universal-mocks.js","sourceRoot":"","sources":["../../../../src/commands/detect-universal-mocks.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { error, header, info } from "../utils/progress.js";
2
- const listCommand = {
3
- command: 'list [type]',
4
- describe: 'List entities or analyses',
5
- builder: {
6
- type: {
7
- type: 'string',
8
- choices: ['entities', 'analyses'],
9
- default: 'entities',
10
- describe: 'What to list',
11
- },
12
- },
13
- handler: (argv) => {
14
- header(`Listing ${argv.type}`);
15
- switch (argv.type) {
16
- case 'entities':
17
- error('Entity listing not yet implemented');
18
- info('This will show all discoverable entities in the current project');
19
- break;
20
- case 'analyses':
21
- error('Analysis listing not yet implemented');
22
- info('This will show completed analyses for the current project');
23
- break;
24
- }
25
- // TODO: Implement listing functionality
26
- // 1. For entities: scan project files and discover analyzable entities
27
- // 3. For analyses: query database for analyses belonging to current project
28
- },
29
- };
30
- export default listCommand;
31
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAMxD,MAAM,WAAW,GAAoC;IACnD,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAU;YAC1C,OAAO,EAAE,UAAmB;YAC5B,QAAQ,EAAE,cAAc;SACzB;KACF;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU;gBACb,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC5C,IAAI,CAAC,iEAAiE,CAAC,CAAC;gBACxE,MAAM;YAER,KAAK,UAAU;gBACb,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC9C,IAAI,CAAC,2DAA2D,CAAC,CAAC;gBAClE,MAAM;QACV,CAAC;QAED,wCAAwC;QACxC,uEAAuE;QACvE,4EAA4E;IAC9E,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,146 +0,0 @@
1
- import * as path from 'path';
2
- import * as fs from 'fs';
3
- import { error, header, info, success } from "../utils/progress.js";
4
- import { getProjectRoot } from "../state.js";
5
- import { initializeEnvironment, requireBranchAndProject, } from "../utils/database.js";
6
- import { getDatabase, loadAnalysis } from "../../../packages/database/index.js";
7
- import { getWebappInfo } from "../../../packages/utils/index.js";
8
- /**
9
- * Detect the type of identifier provided:
10
- * - UUID format: could be scenario ID, analysis ID, or entity SHA
11
- * - Path format: file path (contains / or ends with .ts/.tsx/.js/.jsx)
12
- */
13
- function isFilePath(identifier) {
14
- return (identifier.includes('/') ||
15
- identifier.endsWith('.ts') ||
16
- identifier.endsWith('.tsx') ||
17
- identifier.endsWith('.js') ||
18
- identifier.endsWith('.jsx'));
19
- }
20
- const webappInfoCommand = {
21
- command: 'webapp-info <identifier>',
22
- describe: 'Show webapp info and start command for a scenario, analysis, entity SHA, or file path',
23
- builder: {
24
- identifier: {
25
- type: 'string',
26
- describe: 'Scenario ID, analysis ID, entity SHA, or file path',
27
- demandOption: true,
28
- },
29
- },
30
- handler: async (argv) => {
31
- header('Webapp Information');
32
- const { identifier } = argv;
33
- const projectRoot = getProjectRoot();
34
- if (!projectRoot) {
35
- error('Not in a CodeYam project. Run: codeyam init');
36
- return;
37
- }
38
- try {
39
- await initializeEnvironment();
40
- // Get project configuration
41
- const configPath = path.join(projectRoot, '.codeyam', 'config.json');
42
- const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
43
- const { projectSlug } = config;
44
- if (!projectSlug) {
45
- error('Project slug not found in config');
46
- return;
47
- }
48
- const { project } = await requireBranchAndProject(projectSlug);
49
- const webapps = project.metadata?.webapps || [];
50
- if (webapps.length === 0) {
51
- error('No webapps configured in project metadata');
52
- return;
53
- }
54
- const packageManager = project.metadata?.packageManager || 'npm';
55
- const environmentVariables = config.environmentVariables || [];
56
- const port = 3112;
57
- let filePath;
58
- let entityName;
59
- if (isFilePath(identifier)) {
60
- // Identifier is a file path
61
- filePath = identifier;
62
- info(`Using file path: ${filePath}`);
63
- }
64
- else {
65
- // Identifier is an ID - try to resolve it
66
- const db = getDatabase();
67
- // First try as scenario ID
68
- const scenarioRow = await db
69
- .selectFrom('scenarios')
70
- .select(['id', 'analysis_id'])
71
- .where('id', '=', identifier)
72
- .executeTakeFirst();
73
- if (scenarioRow) {
74
- info(`Found scenario, loading analysis ${scenarioRow.analysis_id}`);
75
- const analysis = await loadAnalysis({ id: scenarioRow.analysis_id });
76
- if (!analysis) {
77
- error(`Analysis ${scenarioRow.analysis_id} not found`);
78
- return;
79
- }
80
- filePath = analysis.filePath;
81
- entityName = analysis.entityName;
82
- }
83
- else {
84
- // Try as analysis ID
85
- const analysisRow = await db
86
- .selectFrom('analyses')
87
- .select(['id', 'file_path', 'entity_name'])
88
- .where('id', '=', identifier)
89
- .executeTakeFirst();
90
- if (analysisRow) {
91
- info(`Found analysis ${identifier}`);
92
- filePath = analysisRow.file_path;
93
- entityName = analysisRow.entity_name;
94
- }
95
- else {
96
- // Try as entity SHA
97
- const entityRow = await db
98
- .selectFrom('entities')
99
- .select(['sha', 'file_path', 'name'])
100
- .where('sha', '=', identifier)
101
- .executeTakeFirst();
102
- if (entityRow) {
103
- info(`Found entity ${entityRow.name}`);
104
- filePath = entityRow.file_path;
105
- entityName = entityRow.name;
106
- }
107
- else {
108
- error(`Identifier "${identifier}" not found as scenario, analysis, entity, or file path`);
109
- return;
110
- }
111
- }
112
- }
113
- }
114
- // Get webapp info
115
- const webappInfo = getWebappInfo({
116
- filePath,
117
- webapps,
118
- environmentVariables,
119
- port,
120
- packageManager,
121
- });
122
- // Output results
123
- info('');
124
- if (entityName) {
125
- info(`Entity: ${entityName}`);
126
- }
127
- info(`File: ${filePath}`);
128
- info('');
129
- success('Webapp Details:');
130
- info(` Path: ${webappInfo.webappPath}`);
131
- info(` Framework: ${webappInfo.framework}`);
132
- info(` Package Manager: ${webappInfo.packageManager}`);
133
- info('');
134
- success('Start Command:');
135
- info(` ${webappInfo.startCommand}`);
136
- info('');
137
- success('URL:');
138
- info(` ${webappInfo.url}`);
139
- }
140
- catch (err) {
141
- error(`Failed to get webapp info: ${err.message}`);
142
- }
143
- },
144
- };
145
- export default webappInfoCommand;
146
- //# sourceMappingURL=webapp-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webapp-info.js","sourceRoot":"","sources":["../../../../src/commands/webapp-info.ts"],"names":[],"mappings":"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"}
@@ -1,152 +0,0 @@
1
- import { runClaudeCode } from "./claude-code.js";
2
- export async function detectUniversalMocks(existingMocks = [], progressCallback) {
3
- const claudeResult = await runClaudeCode({
4
- prompt: getPrompt(existingMocks),
5
- allowedTools: ['Bash(jq:*)'],
6
- progressCallback,
7
- });
8
- if (!claudeResult) {
9
- // Claude Code package failed to load, return empty mocks
10
- return {
11
- universalMocks: existingMocks,
12
- duration_ms: 0,
13
- total_cost_usd: 0,
14
- };
15
- }
16
- let resultString = claudeResult.result;
17
- // use regexp to extract ths ```json\n...\n``` block
18
- const jsonMatch = resultString.match(/```json\n([\s\S]*?)\n```/);
19
- if (jsonMatch && jsonMatch.length > 1) {
20
- resultString = jsonMatch[1].trim();
21
- }
22
- else {
23
- console.warn(`CodeYam Warning: Claude Code did not return markdown-wrapped JSON`);
24
- // fall back to the entire result if no JSON block is found
25
- }
26
- const result = JSON.parse(resultString);
27
- const universalMocks = result && result.universalMocks && Array.isArray(result.universalMocks)
28
- ? result.universalMocks
29
- .map((mock) => {
30
- if (mock.content &&
31
- typeof mock.content === 'string' &&
32
- mock.filePath &&
33
- typeof mock.filePath === 'string' &&
34
- mock.entityName &&
35
- typeof mock.entityName === 'string') {
36
- return {
37
- content: mock.content,
38
- filePath: mock.filePath,
39
- entityName: mock.entityName,
40
- };
41
- }
42
- console.warn(`CodeYam Warning: Invalid universal mock format`, mock);
43
- return null;
44
- })
45
- .filter((mock) => mock !== null)
46
- : [];
47
- return {
48
- universalMocks,
49
- duration_ms: claudeResult.duration_ms,
50
- total_cost_usd: claudeResult.total_cost_usd,
51
- };
52
- }
53
- function getPrompt(existingMocks) {
54
- const mocksString = JSON.stringify(existingMocks);
55
- return `
56
- Hi Claude! You should find in this directory a primarily TypeScript-based web application. If that doesn't seem to be the case, return an error object:
57
- \`\`\`
58
- {
59
- "error": "<reason for failure>"
60
- }
61
- \`\`\`
62
-
63
- Now, your job is to explore the codebase and read enough source modules to determine if any of them rely on environment variables or external services in a way which **prevents startup**. You will MODIFY NO FILES. You are only gathering data, and you will finish by outputting a JSON object of these 'universal mocks'.
64
-
65
- **CRITICAL: Mocks should be MINIMAL** - just enough to prevent startup crashes, not comprehensive implementations.
66
-
67
- We will illustrate with examples:
68
-
69
- **Example 1: Class that's initialized on load**
70
- File: \`lib/dbNotifier.ts\`
71
- \`\`\`
72
- export class DbNotifier extends EventEmitter {
73
- constructor() {
74
- super();
75
- this.db = connectToDatabase(process.env.DATABASE_URL!); // ❌ Crashes on load
76
- }
77
- async start() { /* ... */ }
78
- }
79
- \`\`\`
80
-
81
- **Minimal mock** (just enough to start):
82
- \`\`\`
83
- class DbNotifier extends EventEmitter { async start() {} }
84
- \`\`\`
85
-
86
- **Example 2: Client initialized on load**
87
- File: \`lib/supabase.ts\`
88
- \`\`\`
89
- import { createClient } from "@supabase/supabase-js"
90
- export const supabase = createClient(
91
- process.env.NEXT_PUBLIC_SUPABASE_URL!, // ❌ Crashes on load
92
- process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
93
- )
94
- \`\`\`
95
-
96
- **Minimal mock**:
97
- \`\`\`
98
- export const supabase = {
99
- auth: {
100
- getSession: async () => ({ data: { session: null } }),
101
- onAuthStateChange: () => ({ data: { subscription: { unsubscribe: () => {} } } })
102
- }
103
- };
104
- \`\`\`
105
-
106
- **Example 3: NO MOCK NEEDED**
107
- File: \`lib/client.ts\`
108
- \`\`\`
109
- export function getClient() {
110
- return createClient(process.env.API_URL!); // ✅ OK - not called on load
111
- }
112
- \`\`\`
113
- No mock needed - lazy initialization won't crash on startup.
114
-
115
- **Key principles:**
116
- 1. Only mock things that are **executed during module load**
117
- 2. Mocks should be **minimal** - empty methods/properties are fine
118
- 3. We need the app to **compile and start**, not work correctly
119
- 4. Return types should match what TypeScript expects (but values can be empty/null) When you've determined that a file requires a universal mock, you will include it in your output, which might look something like this:
120
- \`\`\`json
121
- {
122
- "universalMocks": [
123
- {
124
- "entityName": "DbNotifier",
125
- "filePath": "lib/dbNotifier.ts",
126
- "content": "class DbNotifier extends EventEmitter { async start() {} }"
127
- },
128
- {
129
- "entityName": "supabase",
130
- "filePath": "lib/supabase.ts",
131
- "content": "export const supabase = { auth: { getSession: async () => ({ data: { session: null } }) } };"
132
- }
133
- ]
134
- }
135
- \`\`\`
136
-
137
- Note: You MUST wrap the result JSON in \`\`\`json\n...\n\`\`\` so that it can later be extracted programmatically.
138
-
139
- So a "universal mock" object contains of a file path (\`/example/lib/supabase.ts\` in our case), an entity name (\`supabase\`), and the full text of the TypeScript with which to replace that entity in the mocked-up module.
140
- - There can be multiple mocks in the same file, for different entities. An entity is e.g. a function, a type, a variable, a React component, etc.
141
- - Each universal mock should contain ONLY the replacement content for a single entity. If a file exports multiple entities that need mocking, create separate mock objects for each entity.
142
- - Remember that the JSON string must be escaped.
143
-
144
- The current \`universalMocks\` array, which you should merge into / append to, is as follows:
145
- \`\`\`
146
- ${mocksString}
147
- \`\`\`
148
-
149
- Now put on your best sleuthing cap and figure out how to scan this repository for likely signs of external dependencies that may need mocking, compile a list of universal mocks, and return it as JSON on the format shown above.
150
- `;
151
- }
152
- //# sourceMappingURL=universal-mocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"universal-mocks.js","sourceRoot":"","sources":["../../../../src/utils/universal-mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,gBAAmD,EAAE,EACrD,gBAAiD;IAMjD,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC;QACvC,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC;QAChC,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,gBAAgB;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,yDAAyD;QACzD,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;IAEvC,oDAAoD;IACpD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjE,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,mEAAmE,CACpE,CAAC;QACF,2DAA2D;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,cAAc,GAClB,MAAM,IAAI,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACrE,CAAC,CAAC,MAAM,CAAC,cAAc;aAClB,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;YACjB,IACE,IAAI,CAAC,OAAO;gBACZ,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAChC,IAAI,CAAC,QAAQ;gBACb,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBACjC,IAAI,CAAC,UAAU;gBACf,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EACnC,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CACV,gDAAgD,EAChD,IAAI,CACL,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;QACjD,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,cAAc;QACd,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,cAAc,EAAE,YAAY,CAAC,cAAc;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,aAAqB;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAElD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FP,WAAW;;;;GAIV,CAAC;AACJ,CAAC"}
@@ -1,34 +0,0 @@
1
- import{c as _,r as e,j as h}from"./chunk-JZWAC4HX-DB3aFuEO.js";import{u as K}from"./useLastLogLine-DAFqfEDH.js";function U(s){const r=s.replace(/[^a-zA-Z0-9_]+/g,"_");return r.slice(0,1).toUpperCase()+r.slice(1)}function V({analysisId:s,scenarioId:r,scenarioName:a,projectSlug:i,enabled:g=!0,refreshTrigger:f=0}){const k=_(),[S,w]=e.useState(null),[A,E]=e.useState(!1),[B,c]=e.useState(!1),[q,l]=e.useState(!1),d=e.useRef(!1),x=e.useRef(null),I=e.useRef(null),[M,m]=e.useState(0),[z,R]=e.useState(0),n=e.useRef(null),u=e.useRef(!1),{interactiveUrl:b,resetLogs:L}=K(i,g),y=e.useRef(r),F=e.useRef(f);e.useEffect(()=>{F.current!==f&&(F.current=f,S&&(console.log("[useInteractiveMode] Manual refresh triggered"),c(!0),l(!1),m(0),R(t=>t+1),u.current=!1,n.current&&(clearTimeout(n.current),n.current=null)))},[f,S]),e.useEffect(()=>{if(y.current!==r&&(y.current=r,x.current&&I.current&&a)){const t=U(I.current),o=U(a),p=x.current.replace(t,o);w(p),c(!0),l(!1),m(0),R(v=>v+1),u.current=!1,n.current&&(clearTimeout(n.current),n.current=null);return}},[r,a]),e.useEffect(()=>{if(b){const t=b+"?width=600px";x.current=t,a&&(I.current=a),w(t),E(!1),c(!0)}},[b]),e.useEffect(()=>{const t=o=>{o.data.type==="codeyam-resize"&&(u.current||(u.current=!0,n.current&&(clearTimeout(n.current),n.current=null),m(0),l(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{c(!1)})})))};return window.addEventListener("message",t),()=>window.removeEventListener("message",t)},[]);const j=()=>{u.current=!1,n.current&&clearTimeout(n.current);const t=500*Math.pow(2,M);n.current=setTimeout(()=>{u.current||(M<2?(m(o=>o+1),R(o=>o+1),c(!0)):(console.error("[useInteractiveMode] Interactive mode failed to load after 3 attempts - showing iframe anyway"),l(!0),c(!1)))},t)};return e.useEffect(()=>{g&&!d.current&&r&&s&&(d.current=!0,E(!0),l(!1),w(null),(async()=>{if(i)try{await fetch(`/api/logs/${i}`,{method:"DELETE"})}catch(o){console.error("[useInteractiveMode] Failed to clear log file:",o)}L(),k.submit({action:"start",analysisId:s,scenarioId:r},{method:"post",action:"/api/interactive-mode"})})())},[g,r,s,L,i]),e.useEffect(()=>{const t=s,o=()=>{if(d.current&&t){const v=new URLSearchParams({action:"stop",analysisId:t});console.log("[useInteractiveMode] Sending stop request via sendBeacon");const T=navigator.sendBeacon("/api/interactive-mode",v);console.log("[useInteractiveMode] sendBeacon result:",T),T||(console.log("[useInteractiveMode] sendBeacon failed, using fetch fallback"),fetch("/api/interactive-mode",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:v,keepalive:!0}).catch(D=>console.error("Failed to stop interactive mode:",D)))}},p=()=>{o()};return window.addEventListener("beforeunload",p),()=>{window.removeEventListener("beforeunload",p),console.log("[useInteractiveMode] Cleanup running:",{hasStarted:d.current,analysisId:t}),o()}},[s]),{interactiveServerUrl:S,isStarting:A,isLoading:B,showIframe:q,iframeKey:z,onIframeLoad:j}}function Z(){return h.jsxs("div",{className:"spinner-container",children:[h.jsx("span",{className:"loader"}),h.jsx("style",{children:`
2
- .loader {
3
- width: 48px;
4
- height: 48px;
5
- border: 3px solid rgba(0, 92, 117, 0.2);
6
- border-radius: 50%;
7
- display: inline-block;
8
- position: relative;
9
- box-sizing: border-box;
10
- animation: rotation 1s linear infinite;
11
- }
12
- .loader::after {
13
- content: '';
14
- box-sizing: border-box;
15
- position: absolute;
16
- left: 50%;
17
- top: 50%;
18
- transform: translate(-50%, -50%);
19
- width: 56px;
20
- height: 56px;
21
- border-radius: 50%;
22
- border: 3px solid;
23
- border-color: #005c75 transparent;
24
- }
25
-
26
- @keyframes rotation {
27
- 0% {
28
- transform: rotate(0deg);
29
- }
30
- 100% {
31
- transform: rotate(360deg);
32
- }
33
- }
34
- `})]})}const C=["⣾","⣽","⣻","⢿","⡿","⣟","⣯","⣷"],N=80;function $(){const[s,r]=e.useState(0);return e.useEffect(()=>{const a=setInterval(()=>{r(i=>(i+1)%C.length)},N);return()=>clearInterval(a)},[]),h.jsx("span",{className:"inline-block mr-2",children:C[s]})}export{$ as I,Z as S,V as u};