@codeyam/codeyam-cli 0.1.0-staging.036391e → 0.1.0-staging.07d8f7b

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 (532) 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 +14 -14
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/package.json +1 -1
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +14 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  8. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  11. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +435 -13
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +70 -19
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  16. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  17. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +110 -7
  18. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +134 -2
  19. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  20. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  21. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  22. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  23. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +6 -0
  24. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +18 -0
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  28. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  29. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  30. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +50 -25
  31. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +176 -80
  33. package/analyzer-template/packages/aws/package.json +10 -10
  34. package/analyzer-template/packages/database/index.ts +1 -0
  35. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  36. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  37. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  38. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  39. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  40. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  41. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  42. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  43. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  44. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  45. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  46. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  47. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  48. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  49. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  50. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  51. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  52. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  53. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  54. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  55. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  56. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  58. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  66. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  70. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  72. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  74. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  77. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  78. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  79. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  80. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  81. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  84. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  87. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  96. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  97. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  99. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  102. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  103. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  104. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  105. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  107. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  108. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  109. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  110. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  111. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  112. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  113. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  114. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  115. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  118. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  122. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  123. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  124. package/analyzer-template/project/constructMockCode.ts +170 -50
  125. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  126. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  127. package/analyzer-template/project/start.ts +3 -0
  128. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  129. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  130. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  131. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  132. package/analyzer-template/tsconfig.json +13 -1
  133. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  134. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  135. package/background/src/lib/virtualized/project/constructMockCode.js +145 -41
  136. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  137. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  138. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  139. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  140. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  141. package/background/src/lib/virtualized/project/start.js +2 -0
  142. package/background/src/lib/virtualized/project/start.js.map +1 -1
  143. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  144. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  145. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  146. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  147. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  148. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  149. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  150. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  151. package/codeyam-cli/scripts/apply-setup.js +209 -12
  152. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  153. package/codeyam-cli/src/cli.js +33 -24
  154. package/codeyam-cli/src/cli.js.map +1 -1
  155. package/codeyam-cli/src/codeyam-cli.js +18 -2
  156. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  157. package/codeyam-cli/src/commands/analyze.js +21 -9
  158. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  159. package/codeyam-cli/src/commands/baseline.js +2 -0
  160. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  161. package/codeyam-cli/src/commands/debug.js +2 -0
  162. package/codeyam-cli/src/commands/debug.js.map +1 -1
  163. package/codeyam-cli/src/commands/default.js +87 -21
  164. package/codeyam-cli/src/commands/default.js.map +1 -1
  165. package/codeyam-cli/src/commands/editor.js +697 -0
  166. package/codeyam-cli/src/commands/editor.js.map +1 -0
  167. package/codeyam-cli/src/commands/init.js +75 -259
  168. package/codeyam-cli/src/commands/init.js.map +1 -1
  169. package/codeyam-cli/src/commands/memory.js +95 -81
  170. package/codeyam-cli/src/commands/memory.js.map +1 -1
  171. package/codeyam-cli/src/commands/recapture.js +2 -0
  172. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  173. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  174. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  175. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  176. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  177. package/codeyam-cli/src/commands/test-startup.js +2 -0
  178. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  179. package/codeyam-cli/src/commands/verify.js +14 -2
  180. package/codeyam-cli/src/commands/verify.js.map +1 -1
  181. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  182. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  183. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  184. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  185. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +154 -86
  186. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  187. package/codeyam-cli/src/utils/analyzer.js +7 -0
  188. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  189. package/codeyam-cli/src/utils/backgroundServer.js +109 -26
  190. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  191. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  192. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  193. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  194. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  195. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  196. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  197. package/codeyam-cli/src/utils/generateReport.js +2 -2
  198. package/codeyam-cli/src/utils/git.js +52 -0
  199. package/codeyam-cli/src/utils/git.js.map +1 -1
  200. package/codeyam-cli/src/utils/install-skills.js +74 -63
  201. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  202. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  203. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  204. package/codeyam-cli/src/utils/labsAutoCheck.js +0 -29
  205. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -1
  206. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  207. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  208. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  209. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  210. package/codeyam-cli/src/utils/progress.js +7 -0
  211. package/codeyam-cli/src/utils/progress.js.map +1 -1
  212. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  213. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  214. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  215. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  216. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  217. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  218. package/codeyam-cli/src/utils/queue/job.js +70 -1
  219. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  220. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  221. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  222. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  223. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  224. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +7 -8
  225. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  226. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  227. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  228. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  229. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  230. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +97 -6
  231. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  232. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  233. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  234. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +3 -3
  235. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  236. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  237. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  238. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  239. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  240. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  241. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  242. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +23 -23
  243. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -1
  244. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  245. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  246. package/codeyam-cli/src/utils/rules/index.js +1 -0
  247. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  248. package/codeyam-cli/src/utils/rules/parser.js +19 -4
  249. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  250. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  251. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  252. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  253. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  254. package/codeyam-cli/src/utils/rules/ruleState.js +10 -10
  255. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -1
  256. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  257. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  258. package/codeyam-cli/src/utils/rules/staleness.js +6 -6
  259. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  260. package/codeyam-cli/src/utils/serverState.js +64 -12
  261. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  262. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +61 -43
  263. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  264. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  265. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  266. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  267. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  268. package/codeyam-cli/src/utils/testRunner.js +158 -0
  269. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  270. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  271. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  272. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  273. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  274. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  275. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  276. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  277. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  278. package/codeyam-cli/src/webserver/app/lib/database.js +55 -30
  279. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  280. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  281. package/codeyam-cli/src/webserver/backgroundServer.js +144 -25
  282. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  283. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  284. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CA3JxPb7.js → CopyButton-DmJveP3T.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-C76mRRiF.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-B5ctlSYt.js → EntityTypeBadge-g3saevPb.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-CobE682z.js} +1 -1
  289. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  290. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-BDhPilK7.js → InteractivePreview-DYFW3lDD.js} +3 -3
  291. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-VeqEBv9v.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  292. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-BU_OAEMP.js} +1 -1
  293. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-ceAyBX-H.js} +1 -1
  294. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-djPLI-WV.js} +2 -2
  295. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-Gq3Ocjo6.js → SafeScreenshot-BED4B6sP.js} +1 -1
  296. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-B76aig_2.js} +2 -2
  297. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  298. package/codeyam-cli/src/webserver/build/client/assets/Terminal-BaIiqg_w.js +41 -0
  299. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CiwXDxLh.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  300. package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-C96V0n15.js} +1 -1
  301. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BtBFH820.js → activity.(_tab)-BpKzcsJz.js} +1 -1
  302. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  303. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  304. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  305. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  306. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  307. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  308. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  309. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  310. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  311. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  312. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  313. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  314. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  315. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  316. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  317. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  318. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  319. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  320. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  321. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  322. package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-D_nMCFmP.js} +1 -1
  323. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-BH2h1Ea2.js} +1 -1
  324. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-JE9ZIoBl.js → chunk-JZWAC4HX-C4pqxYJB.js} +9 -9
  325. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-DyIKORY6.js} +1 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-NDbZjXao.js} +1 -1
  327. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Ca9fAY46.js → createLucideIcon-CMT1jU2q.js} +1 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  329. package/codeyam-cli/src/webserver/build/client/assets/editor-Ba0jejiv.js +7 -0
  330. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-n38keI1k.js → entity._sha._-CrjR3zZW.js} +10 -10
  331. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DloHYjtt.js +6 -0
  332. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  333. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  334. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  335. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-DTvKq3TY.js} +1 -1
  336. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DCPhhSMo.js → fileTableUtils-cPo8LiG3.js} +1 -1
  337. package/codeyam-cli/src/webserver/build/client/assets/{files-0N0YJQv7.js → files-DO4CZ16O.js} +1 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/{git-DXnyr8uP.js → git-CFCTYk9I.js} +1 -1
  339. package/codeyam-cli/src/webserver/build/client/assets/globals-BH6uYxPM.css +1 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-10oVnAAH.js} +1 -1
  341. package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-BcvgDzbZ.js} +1 -1
  342. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  343. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-BAXYRVEO.js} +1 -1
  344. package/codeyam-cli/src/webserver/build/client/assets/manifest-dcea65f8.js +1 -0
  345. package/codeyam-cli/src/webserver/build/client/assets/memory-FweZHj5U.js +93 -0
  346. package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-DTAcYxBt.js} +1 -1
  347. package/codeyam-cli/src/webserver/build/client/assets/root-Dzn8nIkU.js +67 -0
  348. package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-fKo7v0Zo.js} +1 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/{simulations-CPoAg7Zo.js → simulations-B3aOzpCZ.js} +1 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-BG4heKCG.js} +1 -1
  352. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-DtSmdtM4.js} +1 -1
  353. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DNwUduNu.js → useCustomSizes-ByhSyh0W.js} +1 -1
  354. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CpZgwliL.js → useReportContext-O-jkvSPx.js} +1 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bv9JFvUO.js → useToast-9FIWuYfK.js} +1 -1
  357. package/codeyam-cli/src/webserver/build/client/assets/xterm-DMSzMhqy.js +9 -0
  358. package/codeyam-cli/src/webserver/build/server/assets/index-mE6GlU_8.js +1 -0
  359. package/codeyam-cli/src/webserver/build/server/assets/server-build-BApEk7IO.js +362 -0
  360. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  361. package/codeyam-cli/src/webserver/build-info.json +5 -5
  362. package/codeyam-cli/src/webserver/devServer.js +39 -5
  363. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  364. package/codeyam-cli/src/webserver/editorProxy.js +272 -0
  365. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  366. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +121 -0
  367. package/codeyam-cli/src/webserver/server.js +177 -1
  368. package/codeyam-cli/src/webserver/server.js.map +1 -1
  369. package/codeyam-cli/src/webserver/terminalServer.js +606 -0
  370. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  371. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  372. package/codeyam-cli/templates/codeyam-dev-mode.md +237 -0
  373. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  374. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  375. package/codeyam-cli/templates/codeyam-editor.md +67 -0
  376. package/codeyam-cli/templates/codeyam-memory-hook.sh +14 -14
  377. package/codeyam-cli/templates/{codeyam:memory.md → codeyam-memory.md} +16 -24
  378. package/codeyam-cli/templates/{codeyam:new-rule.md → codeyam-new-rule.md} +1 -3
  379. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  380. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  381. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  382. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  383. package/codeyam-cli/templates/editor-step-hook.py +143 -0
  384. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  385. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  386. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  387. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  388. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  389. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  390. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  391. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  392. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  393. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  394. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  395. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  396. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  397. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  398. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  399. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  400. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  401. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  402. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  403. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  404. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  405. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  406. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  407. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  408. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  409. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  410. package/codeyam-cli/templates/rule-reflection-hook.py +88 -31
  411. package/codeyam-cli/templates/rules-instructions.md +45 -90
  412. package/package.json +15 -13
  413. package/packages/ai/index.js +1 -1
  414. package/packages/ai/index.js.map +1 -1
  415. package/packages/ai/src/lib/analyzeScope.js +14 -0
  416. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  417. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  418. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  419. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  420. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  421. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  422. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  423. package/packages/ai/src/lib/completionCall.js +10 -7
  424. package/packages/ai/src/lib/completionCall.js.map +1 -1
  425. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +362 -10
  426. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  427. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  428. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  429. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +59 -17
  430. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  431. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  432. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  433. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  434. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  435. package/packages/ai/src/lib/generateEntityScenarioData.js +79 -5
  436. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  437. package/packages/ai/src/lib/generateExecutionFlows.js +97 -2
  438. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  439. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  440. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  441. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  442. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  443. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  444. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  445. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  446. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  447. package/packages/analyze/src/lib/ProjectAnalyzer.js +3 -0
  448. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  449. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  450. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  451. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +11 -1
  452. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  453. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  454. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  455. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  456. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  457. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  458. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  459. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  460. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  461. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +42 -13
  462. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  463. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  464. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  465. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +141 -71
  466. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  467. package/packages/database/index.js +1 -0
  468. package/packages/database/index.js.map +1 -1
  469. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  470. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  471. package/packages/database/src/lib/analysisToDb.js +1 -1
  472. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  473. package/packages/database/src/lib/branchToDb.js +1 -1
  474. package/packages/database/src/lib/branchToDb.js.map +1 -1
  475. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  476. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  477. package/packages/database/src/lib/commitToDb.js +1 -1
  478. package/packages/database/src/lib/commitToDb.js.map +1 -1
  479. package/packages/database/src/lib/fileToDb.js +1 -1
  480. package/packages/database/src/lib/fileToDb.js.map +1 -1
  481. package/packages/database/src/lib/kysely/db.js +5 -0
  482. package/packages/database/src/lib/kysely/db.js.map +1 -1
  483. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  484. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  485. package/packages/database/src/lib/loadCommits.js +23 -13
  486. package/packages/database/src/lib/loadCommits.js.map +1 -1
  487. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  488. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  489. package/packages/database/src/lib/projectToDb.js +1 -1
  490. package/packages/database/src/lib/projectToDb.js.map +1 -1
  491. package/packages/database/src/lib/saveFiles.js +1 -1
  492. package/packages/database/src/lib/saveFiles.js.map +1 -1
  493. package/packages/database/src/lib/scenarioToDb.js +1 -1
  494. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  495. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  496. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  497. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  498. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  499. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  500. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  501. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  502. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  503. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  504. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  505. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  506. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  507. package/scripts/finalize-analyzer.cjs +8 -76
  508. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  509. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  510. package/codeyam-cli/src/commands/list.js +0 -31
  511. package/codeyam-cli/src/commands/list.js.map +0 -1
  512. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  513. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  514. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  515. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  516. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ClaLpuOo.js +0 -34
  517. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +0 -11
  518. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C5lqplTC.js +0 -1
  519. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js +0 -6
  520. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DGgZjdFg.js +0 -6
  521. package/codeyam-cli/src/webserver/build/client/assets/globals-DoeDFXZN.css +0 -1
  522. package/codeyam-cli/src/webserver/build/client/assets/labs-CmBYA0PH.js +0 -1
  523. package/codeyam-cli/src/webserver/build/client/assets/manifest-76786b8e.js +0 -1
  524. package/codeyam-cli/src/webserver/build/client/assets/memory-CrNQfdMO.js +0 -76
  525. package/codeyam-cli/src/webserver/build/client/assets/root-QAY34PIo.js +0 -62
  526. package/codeyam-cli/src/webserver/build/client/assets/settings-eBI36Yv5.js +0 -1
  527. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-COky1GVF.js +0 -2
  528. package/codeyam-cli/src/webserver/build/server/assets/index-DV1ykEI6.js +0 -1
  529. package/codeyam-cli/src/webserver/build/server/assets/server-build-BrcVrUEv.js +0 -260
  530. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  531. package/codeyam-cli/templates/codeyam:diagnose.md +0 -805
  532. /package/codeyam-cli/src/webserver/build/client/assets/{api.labs-survey-l0sNRNKZ.js → api.dev-mode-events-l0sNRNKZ.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{c}from"./createLucideIcon-Ca9fAY46.js";/**
1
+ import{c}from"./createLucideIcon-CMT1jU2q.js";/**
2
2
  * @license lucide-react v0.556.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./createLucideIcon-Ca9fAY46.js";/**
1
+ import{c}from"./createLucideIcon-CMT1jU2q.js";/**
2
2
  * @license lucide-react v0.556.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{r as s}from"./chunk-JZWAC4HX-JE9ZIoBl.js";/**
1
+ import{r as s}from"./chunk-JZWAC4HX-C4pqxYJB.js";/**
2
2
  * @license lucide-react v0.556.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -0,0 +1 @@
1
+ import{w as t,d as r,j as e}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{S as i}from"./ScenarioViewer-B76aig_2.js";import{W as n}from"./InteractivePreview-DYFW3lDD.js";import"./useCustomSizes-ByhSyh0W.js";import"./LogViewer-ceAyBX-H.js";import"./SafeScreenshot-BED4B6sP.js";import"./useLastLogLine-C14nCb1q.js";import"./Spinner-Bb5uFQ5V.js";import"./preload-helper-ckwbz45p.js";import"./ReportIssueModal-djPLI-WV.js";import"./createLucideIcon-CMT1jU2q.js";import"./circle-check-DyIKORY6.js";import"./triangle-alert-DtSmdtM4.js";import"./copy-NDbZjXao.js";import"./scenarioStatus-B_8jpV3e.js";import"./InlineSpinner-Bu6c6aDe.js";const w=()=>[{title:"Empty State - CodeYam"},{name:"description",content:"Simulations empty state development view"}],k=t(function(){r();const s={sha:"mock-sha",name:"Dashboard",filePath:"codeyam-cli/src/webserver/app/routes/_index.tsx",entityType:"visual"};return e.jsx(n,{children:e.jsxs("div",{className:"h-screen bg-[#F8F7F6] flex flex-col overflow-hidden",children:[e.jsx("header",{className:"bg-white border-b border-gray-200 shrink-0 relative h-[54px]",children:e.jsxs("div",{className:"flex items-center h-full px-6 gap-6",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("svg",{width:"17",height:"17",viewBox:"0 0 17 17",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M13 8.5H4M4 8.5L8.5 4M4 8.5L8.5 13",stroke:"#005c75",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),e.jsx("h1",{className:"text-lg font-semibold text-black m-0 leading-[26px] shrink-0",children:"Dashboard"}),e.jsx("span",{className:"text-xs text-[#626262] font-mono whitespace-nowrap overflow-hidden text-ellipsis min-w-0",children:"codeyam-cli/src/webserver/app/routes/_index.tsx"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-2 px-[15px] py-0 h-[26px] bg-[#efefef] border border-[#e1e1e1] rounded",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-[#626262]"}),e.jsx("span",{className:"text-xs font-semibold text-[#626262]",children:"Not analyzed"})]}),e.jsx("button",{className:"px-[15px] py-0 h-[26px] bg-[#005c75] text-white rounded text-xs font-semibold border-none cursor-pointer hover:bg-[#004a5e] transition-colors",children:"Analyze"})]}),e.jsxs("div",{className:"flex items-center gap-1 text-[10px] text-[#626262] ml-auto",children:[e.jsx("span",{className:"leading-[22px]",children:"Next Entity"}),e.jsx("svg",{width:"17",height:"17",viewBox:"0 0 17 17",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M4 8.5H13M13 8.5L8.5 4M13 8.5L8.5 13",stroke:"#005c75",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})}),e.jsx("div",{className:"bg-[#efefef] border-b border-[#efefef] shrink-0",children:e.jsxs("div",{className:"flex items-center gap-3 h-11 px-[15px]",children:[e.jsxs("div",{className:"px-4 flex items-center justify-center gap-3 shrink-0 text-sm rounded bg-[#343434] text-[#efefef] font-semibold h-8",children:["Scenarios",e.jsx("span",{className:"px-2 py-0.5 rounded-[9px] text-xs font-semibold bg-[#cbf3fa] text-[#005c75] min-w-[25px] text-center",children:"0"})]}),e.jsxs("div",{className:"px-4 flex items-center justify-center gap-3 shrink-0 text-sm rounded-[9px] text-[#3e3e3e] font-normal",children:["Related Entities",e.jsx("span",{className:"px-2 py-0.5 rounded-[9px] text-xs font-semibold bg-[#e1e1e1] text-[#3e3e3e] min-w-[25px] text-center",children:"5"})]}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"Code"}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"Data Structure"}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"History"})]})}),e.jsxs("div",{className:"flex flex-1 gap-0 min-h-0",children:[e.jsx("div",{className:"w-[165px] bg-[#e1e1e1] border-r border-[#c7c7c7] flex items-center justify-center shrink-0",children:e.jsx("span",{className:"text-xs font-medium text-[#8e8e8e] leading-5",children:"No Scenarios"})}),e.jsx(i,{selectedScenario:null,analysis:void 0,entity:s,viewMode:"screenshot",cacheBuster:Date.now(),hasScenarios:!1,isAnalyzing:!1,projectSlug:null,hasAnApiKey:!0})]})]})})});export{k as default,w as meta};
@@ -0,0 +1,7 @@
1
+ import{r as s,j as e,w as Pe,u as Me,f as Ie,b as Te}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{u as $e,V as Ee,S as Le}from"./useCustomSizes-ByhSyh0W.js";import{T as Re,D as ze}from"./Terminal-BaIiqg_w.js";import{c as _e}from"./cy-logo-cli-DcX-ZS3p.js";import{S as ce,u as De}from"./Spinner-Bb5uFQ5V.js";import"./preload-helper-ckwbz45p.js";import"./useLastLogLine-C14nCb1q.js";function Ae(l){const[i,x]=s.useState(null),[u,f]=s.useState(!1),j=s.useCallback(()=>{l&&(f(!0),fetch(`/api/editor-test-results?testFile=${encodeURIComponent(l)}`).then(o=>o.json()).then(o=>{x(o),f(!1)}).catch(()=>{x({testFilePath:l,status:"error",testCases:[],errorMessage:"Failed to fetch test results"}),f(!1)}))},[l]);return s.useEffect(()=>{l&&j()},[l,j]),{results:i,isRunning:u,runTests:j}}function B({imgSrc:l,name:i,isActive:x,onSelect:u}){return e.jsxs("button",{onClick:u,className:"flex flex-col items-center gap-1 cursor-pointer group",title:i,children:[e.jsx("div",{className:`w-32 h-32 rounded overflow-hidden border-2 transition-all ${x?"border-[#005c75] ring-1 ring-[#005c75]":"border-transparent hover:border-[#4d4d4d]"}`,children:l?e.jsx("img",{src:l,alt:i,className:"w-full h-full object-cover object-top",loading:"lazy"}):e.jsx("div",{className:"w-full h-full bg-[#1a1a1a] flex items-center justify-center",children:e.jsx("span",{className:"text-[8px] text-gray-600",children:"No img"})})}),e.jsx("span",{className:`text-[10px] leading-tight text-center truncate w-32 ${x?"text-white":"text-gray-500 group-hover:text-gray-300"}`,children:i})]})}function oe({testFile:l,entityName:i}){const{results:x,isRunning:u,runTests:f}=Ae(l);if(u&&!x)return e.jsxs("div",{className:"px-2 pt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),e.jsx("span",{className:"text-[10px] text-gray-400",children:"Running tests..."})]});if(!x)return null;if(x.status==="error")return e.jsx("div",{className:"px-2 pt-1",children:e.jsx("span",{className:"text-[10px] text-red-400",children:x.errorMessage})});const j=i?x.testCases.filter(m=>{const r=`${i} > `;return m.fullName.startsWith(r)||m.fullName===i}):x.testCases;if(j.length===0)return null;const o=i?`${i} > `:"";return e.jsxs("div",{className:"px-2 pt-1 space-y-0.5",children:[j.map(m=>{var N;const r=o&&m.fullName.startsWith(o)?m.fullName.slice(o.length):m.fullName;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[m.status==="passed"?e.jsx("span",{className:"text-green-400 text-[10px]",children:"✓"}):m.status==="failed"?e.jsx("span",{className:"text-red-400 text-[10px]",children:"✗"}):e.jsx("span",{className:"text-gray-500 text-[10px]",children:"—"}),e.jsx("span",{className:`text-[10px] ${m.status==="passed"?"text-green-400":m.status==="failed"?"text-red-400":"text-gray-500"}`,children:r})]}),m.status==="failed"&&((N=m.failureMessages)==null?void 0:N.map((C,w)=>e.jsx("div",{className:"pl-4 text-[9px] text-red-300/70 truncate max-w-full",title:C,children:C.split(`
2
+ `)[0]},w)))]},m.fullName)}),e.jsx("button",{onClick:f,disabled:u,className:"mt-1 text-[10px] text-[#00a0c4] hover:text-[#00c4ee] transition-colors cursor-pointer disabled:opacity-50 bg-transparent border-none p-0",children:u?"Running...":"Re-run"})]})}function U({filePath:l,projectRoot:i}){if(!l)return null;const u=`vscode://file/${i?`${i}/${l}`:l}`;return e.jsxs("div",{className:"flex items-center gap-1 px-2 mt-0.5",children:[e.jsx("span",{className:"text-[9px] text-gray-500 truncate",children:l}),e.jsx("a",{href:u,title:"Open in editor",className:"shrink-0 text-gray-500 hover:text-gray-300 transition-colors",children:e.jsx("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:e.jsx("path",{d:"M4.5 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V9.5C1.5 10.05 1.95 10.5 2.5 10.5H9.5C10.05 10.5 10.5 10.05 10.5 9.5V7.5M7.5 1.5H10.5M10.5 1.5V4.5M10.5 1.5L5 7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function Be({scenarios:l,projectRoot:i,activeScenarioId:x,onScenarioSelect:u,zoomComponent:f,onZoomChange:j,analyzedEntities:o=[],glossaryFunctions:m=[],activeAnalyzedScenarioId:r,onAnalyzedScenarioSelect:N}){const{appScenarios:C,componentGroups:w}=s.useMemo(()=>{const t=[],c=new Map;for(const h of l)if(h.componentName){const y=c.get(h.componentName)||[];y.push(h),c.set(h.componentName,y)}else t.push(h);return{appScenarios:t,componentGroups:c}},[l]),E=s.useMemo(()=>{const t=new Set((o||[]).filter(h=>h.entityType==="visual").map(h=>h.name)),c=new Map;for(const[h,y]of w)t.has(h)||c.set(h,y);return c},[w,o]),{visualEntities:k,libraryEntities:d}=s.useMemo(()=>{const t=o.filter(h=>h.entityType==="visual").sort((h,y)=>h.name.localeCompare(y.name)),c=o.filter(h=>h.entityType==="library"||h.entityType==="functionCall").sort((h,y)=>h.name.localeCompare(y.name));return{visualEntities:t,libraryEntities:c}},[o]),p=s.useMemo(()=>{const t=new Set(d.map(c=>c.name));return m.filter(c=>!t.has(c.name))},[m,d]),g=o.some(t=>t.isAnalyzing),P=s.useRef(null),T=s.useRef(0),_=s.useCallback(()=>{P.current&&(T.current=P.current.scrollTop)},[]);if(s.useEffect(()=>{P.current&&T.current>0&&(P.current.scrollTop=T.current)}),l.length===0&&o.length===0&&p.length===0)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"text-center text-gray-500 px-8",children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"No scenarios yet"}),e.jsx("p",{className:"text-xs",children:"Scenarios will appear here as Claude creates them alongside your code. Each scenario represents a different state of your app's data."})]})});if(f){const t=w.get(f)||[];return e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-3 space-y-1",children:[e.jsxs("button",{onClick:()=>j(void 0),className:"w-full flex items-center gap-2 px-3 py-1.5 text-xs text-gray-400 hover:text-white transition-colors cursor-pointer",children:[e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M7.5 9L4.5 6L7.5 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"All scenarios"]}),e.jsx("div",{className:"px-3 py-1.5",children:e.jsx("span",{className:"text-xs font-semibold text-white uppercase tracking-wider",children:f})}),e.jsx("div",{className:"flex flex-wrap gap-2 px-2",children:t.length===0?e.jsx("div",{className:"px-3 py-2 text-xs text-gray-500",children:"No scenarios for this component"}):t.map(c=>e.jsx(B,{imgSrc:c.screenshotPath?`/api/editor-scenario-image/${c.id}.png`:null,name:c.name,isActive:c.id===x,onSelect:()=>u(c)},c.id))})]})})}return e.jsx("div",{ref:P,onScroll:_,className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-3 space-y-3",children:[C.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Page Scenarios"})}),e.jsx("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:C.map(t=>e.jsx(B,{imgSrc:t.screenshotPath?`/api/editor-scenario-image/${t.id}.png`:null,name:t.name,isActive:t.id===x&&!r,onSelect:()=>u(t)},t.id))})]}),[...E.entries()].map(([t,c])=>{var h;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between px-2 py-1",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:t}),e.jsx("button",{onClick:()=>j(t),className:"text-[10px] text-[#00a0c4] hover:text-[#00c4ee] transition-colors cursor-pointer",children:"Zoom in"})]}),((h=c[0])==null?void 0:h.componentPath)&&e.jsx(U,{filePath:c[0].componentPath,projectRoot:i}),e.jsx("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:c.map(y=>e.jsx(B,{imgSrc:y.screenshotPath?`/api/editor-scenario-image/${y.id}.png`:null,name:y.name,isActive:y.id===x&&!r,onSelect:()=>u(y)},y.id))})]},t)}),k.length>0&&e.jsxs("div",{className:"pt-2 mt-1 border-t border-[#3d3d3d]",children:[e.jsxs("div",{className:"px-2 py-1",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Components"}),g&&l.length===0&&o.every(t=>t.scenarioCount===0)&&e.jsx("span",{className:"ml-2 text-[10px] text-gray-500",children:"— Entities are being analyzed..."})]}),k.map(t=>e.jsxs("div",{className:"mt-2",children:[e.jsxs("div",{className:"flex items-center gap-2 px-2 py-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-300 truncate",children:t.name}),t.isAnalyzing&&t.scenarioCount===0&&e.jsxs("span",{className:"flex items-center gap-1.5 text-[10px] text-gray-400",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),"Analyzing..."]})]}),e.jsx(U,{filePath:t.filePath,projectRoot:i}),(t.scenarios.length>0||t.pendingScenarios.length>0)&&e.jsxs("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:[t.scenarios.map(c=>e.jsx(B,{imgSrc:c.screenshotPath?`/api/screenshot/${c.screenshotPath}`:null,name:c.name,isActive:c.id===r,onSelect:()=>N==null?void 0:N({analysisId:t.analysisId,scenarioId:c.id,scenarioName:c.name,entitySha:t.sha,entityName:t.name})},c.id)),t.pendingScenarios.map(c=>e.jsx("div",{className:"px-2.5 py-1 bg-[#2a2a2a] text-gray-400 text-[10px] rounded-full",title:c,children:c},c))]})]},t.sha))]}),(d.length>0||p.length>0)&&e.jsxs("div",{className:`pt-2 mt-1 ${k.length>0?"":"border-t border-[#3d3d3d]"}`,children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"})}),d.map(t=>e.jsxs("div",{className:"mt-2",children:[e.jsxs("div",{className:"px-2 py-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-300",children:t.name}),t.isAnalyzing&&t.scenarioCount===0&&e.jsxs("span",{className:"ml-2 inline-flex items-center gap-1.5 text-[10px] text-gray-400",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),"Analyzing..."]})]}),e.jsx(U,{filePath:t.filePath,projectRoot:i}),t.testFile?e.jsx(oe,{testFile:t.testFile,entityName:t.name}):e.jsx("div",{className:"px-2 pt-1",children:e.jsx("span",{className:"text-[10px] text-gray-500",children:"No test file"})})]},t.sha)),p.map(t=>e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-[11px] font-medium text-gray-300",children:t.name})}),e.jsx(U,{filePath:t.filePath,projectRoot:i}),e.jsx(oe,{testFile:t.testFile,entityName:t.name})]},t.name))]})]})})}const Ue={feature:{label:"Feature",color:"bg-[#005c75]"},fix:{label:"Fix",color:"bg-amber-700"},refactor:{label:"Refactor",color:"bg-purple-700"},scaffold:{label:"Scaffold",color:"bg-green-700"},data:{label:"Data",color:"bg-blue-700"},milestone:{label:"Milestone",color:"bg-yellow-600"}};function Oe(l){try{return new Date(l).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function We(l){try{return new Date(l+"T00:00:00").toLocaleDateString([],{weekday:"long",month:"long",day:"numeric"})}catch{return l}}function Fe(){const[l,i]=s.useState([]),[x,u]=s.useState(!0),f=s.useCallback(async()=>{try{const o=await fetch("/api/editor-journal");if(o.ok){const m=await o.json();i(m.entries||[])}}catch{}finally{u(!1)}},[]);if(s.useEffect(()=>{f()},[f]),s.useEffect(()=>{const o=new EventSource("/api/events");return o.addEventListener("message",m=>{try{const r=JSON.parse(m.data);r.type==="db-change"&&r.changeType==="journal"&&f()}catch{}}),()=>o.close()},[f]),x)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx("span",{className:"text-gray-500 text-sm",children:"Loading journal..."})});if(l.length===0)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"text-center text-gray-500 px-8",children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"No journal entries yet"}),e.jsx("p",{className:"text-xs",children:"Journal entries will appear as you build. Claude records features, screenshots, and commits as the project evolves."})]})});const j=new Map;for(const o of[...l].reverse()){const m=j.get(o.date)||[];m.push(o),j.set(o.date,m)}return e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsx("div",{className:"p-3 space-y-4",children:[...j.entries()].map(([o,m])=>e.jsxs("div",{children:[e.jsx("div",{className:"px-3 py-1.5 sticky top-0 bg-[#1e1e1e] z-10",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:We(o)})}),e.jsx("div",{className:"space-y-2",children:m.map((r,N)=>{const C=Ue[r.type]||{label:r.type,color:"bg-gray-600"};return e.jsxs("div",{className:"bg-[#2d2d2d] rounded-lg p-3 space-y-2",children:[e.jsx("div",{className:"flex items-start gap-2",children:e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-white truncate",children:r.title}),e.jsx("span",{className:`${C.color} text-white text-[9px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wider shrink-0`,children:C.label})]}),e.jsx("span",{className:"text-[10px] text-gray-500",children:Oe(r.time)})]})}),e.jsx("p",{className:"text-xs text-gray-400 leading-relaxed",children:r.description}),r.screenshot&&e.jsx("div",{className:"rounded overflow-hidden border border-[#3d3d3d]",children:e.jsx("img",{src:`/api/editor-journal-image/${r.screenshot.replace("screenshots/","")}`,alt:r.title,className:"w-full h-auto",loading:"lazy"})}),r.scenarioScreenshots&&r.scenarioScreenshots.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Scenarios"}),e.jsx("div",{className:"grid grid-cols-2 gap-1.5",children:r.scenarioScreenshots.map(w=>e.jsxs("div",{className:"rounded overflow-hidden border border-[#3d3d3d] bg-[#1e1e1e]",children:[e.jsx("img",{src:`/api/editor-journal-image/${w.path.replace("screenshots/","")}`,alt:w.name,className:"w-full h-auto",loading:"lazy"}),e.jsx("div",{className:"px-1.5 py-1 truncate",children:e.jsx("span",{className:"text-[9px] text-gray-400",children:w.name})})]},w.path))})]}),r.scenarios.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1",children:r.scenarios.map(w=>e.jsx("span",{className:"text-[10px] text-gray-400 bg-[#3d3d3d] px-1.5 py-0.5 rounded",children:w},w))}),r.commitSha&&e.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[e.jsx("span",{className:"font-mono text-[#00a0c4] bg-[#00a0c4]/10 px-1.5 py-0.5 rounded",children:r.commitSha.slice(0,7)}),e.jsx("span",{className:"text-gray-500 truncate",children:r.commitMessage})]})]},`${r.time}-${N}`)})})]},o))})})}function Z({imgSrc:l,name:i,isActive:x,onSelect:u}){return e.jsxs("button",{onClick:u,className:"flex flex-col items-center gap-1 cursor-pointer group",title:i,children:[e.jsx("div",{className:`w-24 h-24 rounded overflow-hidden border-2 transition-all ${x?"border-[#005c75] ring-1 ring-[#005c75]":"border-transparent hover:border-[#4d4d4d]"}`,children:l?e.jsx("img",{src:l,alt:i,className:"w-full h-full object-cover object-top",loading:"lazy"}):e.jsx("div",{className:"w-full h-full bg-[#1a1a1a] flex items-center justify-center",children:e.jsx("span",{className:"text-[8px] text-gray-600",children:"No img"})})}),e.jsx("span",{className:`text-[10px] leading-tight text-center truncate w-24 ${x?"text-white":"text-gray-500 group-hover:text-gray-300"}`,children:i})]})}function Je({hasProject:l,scenarios:i,analyzedEntities:x,activeScenarioId:u,onScenarioSelect:f,onAnalyzedScenarioSelect:j,onSwitchToBuild:o}){const{pageGroups:m,componentGroups:r}=s.useMemo(()=>{const d=new Map,p=new Map;for(const g of i)if(g.componentName){const P=p.get(g.componentName)||[];P.push(g),p.set(g.componentName,P)}else{const P="Home",T=d.get(P)||[];T.push(g),d.set(P,T)}return{pageGroups:d,componentGroups:p}},[i]),N=s.useRef(null),C=s.useRef(0),w=s.useCallback(()=>{N.current&&(C.current=N.current.scrollTop)},[]);if(s.useEffect(()=>{N.current&&C.current>0&&(N.current.scrollTop=C.current)}),!l)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:"Ready to build something?"}),e.jsx("button",{onClick:o,className:"px-6 py-3 bg-[#005c75] text-white text-sm font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Start Building"})]})});const E=s.useMemo(()=>x.filter(d=>d.entityType==="visual").sort((d,p)=>d.name.localeCompare(p.name)),[x]);return i.length>0||E.length>0?e.jsx("div",{ref:N,onScroll:w,className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-4 space-y-4",children:[e.jsx("h2",{className:"text-sm font-medium text-gray-300 m-0 font-['IBM_Plex_Sans']",children:"What do you want to work on next?"}),e.jsx("button",{onClick:o,className:"w-full py-3 border-2 border-dashed border-[#4d4d4d] rounded-lg text-sm text-gray-400 hover:border-[#005c75] hover:text-white transition-colors cursor-pointer bg-transparent",children:"+ New Page"}),[...m.entries()].map(([d,p])=>e.jsxs("div",{children:[e.jsx("div",{className:"py-1",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:d})}),e.jsx("div",{className:"flex flex-wrap gap-2 pt-1",children:p.map(g=>e.jsx(Z,{imgSrc:g.screenshotPath?`/api/editor-scenario-image/${g.id}.png`:null,name:g.name,isActive:g.id===u,onSelect:()=>f(g)},g.id))})]},d)),[...r.entries()].map(([d,p])=>e.jsxs("div",{children:[e.jsx("div",{className:"py-1",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:d})}),e.jsx("div",{className:"flex flex-wrap gap-2 pt-1",children:p.map(g=>e.jsx(Z,{imgSrc:g.screenshotPath?`/api/editor-scenario-image/${g.id}.png`:null,name:g.name,isActive:g.id===u,onSelect:()=>f(g)},g.id))})]},d)),E.map(d=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 py-1",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:d.name}),d.isAnalyzing&&d.scenarioCount===0&&e.jsxs("span",{className:"flex items-center gap-1.5 text-[10px] text-gray-400",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),"Analyzing..."]})]}),(d.scenarios.length>0||d.pendingScenarios.length>0)&&e.jsxs("div",{className:"flex flex-wrap gap-2 pt-1",children:[d.scenarios.map(p=>e.jsx(Z,{imgSrc:p.screenshotPath?`/api/screenshot/${p.screenshotPath}`:null,name:p.name,isActive:!1,onSelect:()=>j({analysisId:d.analysisId,scenarioId:p.id,scenarioName:p.name,entitySha:d.sha,entityName:d.name})},p.id)),d.pendingScenarios.map(p=>e.jsx("div",{className:"px-2.5 py-1 bg-[#2a2a2a] text-gray-400 text-[10px] rounded-full",title:p,children:p},p))]})]},d.sha))]})}):e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-4 px-8 text-center",children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:"Your project is ready"}),e.jsx("p",{className:"text-sm text-gray-400 m-0 font-['IBM_Plex_Sans'] leading-relaxed max-w-[280px]",children:"Describe what you want to build in the Chat and your pages and components will appear here."}),e.jsx("button",{onClick:o,className:"px-6 py-3 bg-[#005c75] text-white text-sm font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Start Building"})]})})}function Ge({items:l,onNavigate:i}){return l.length===0?null:e.jsx("nav",{className:"flex items-center gap-1 text-xs",children:l.map((x,u)=>{const f=u===l.length-1;return e.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"text-gray-500",children:e.jsx("path",{d:"M4.5 3L7.5 6L4.5 9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),f?e.jsx("span",{className:"text-white font-medium",children:x.name}):e.jsx("button",{onClick:()=>i(x.componentName),className:"text-gray-400 hover:text-white transition-colors cursor-pointer",children:x.name})]},x.componentName||"app")})})}const tt=()=>[{title:"Editor - CodeYam"},{name:"description",content:"CodeYam Code + Data Editor"}],K=[{name:"Mobile",width:375,height:667},{name:"Tablet",width:768,height:1024},{name:"Laptop",width:1024,height:768},{name:"Desktop",width:1440,height:900}];function He({analysisId:l,scenarioId:i,scenarioName:x,entityName:u,projectSlug:f,onStateChange:j}){const{interactiveServerUrl:o,isStarting:m,isLoading:r}=De({analysisId:l,scenarioId:i,scenarioName:x,entityName:u,projectSlug:f,enabled:!0});return s.useEffect(()=>{j(o,m||r)},[o,m,r,j]),null}const st=Pe(function(){const{projectSlug:i,projectRoot:x,hasProject:u,scenarios:f,analyzedEntities:j,glossaryFunctions:o}=Me(),m=Ie(),[r,N]=Te(),C=s.useRef(null),w=s.useRef(null),E=s.useRef(null),k=r.get("zoom")||void 0,d=r.get("scenario")||void 0,[p,g]=s.useState(null),[P,T]=s.useState(null),[_,t]=s.useState(!1),[c,h]=s.useState(null),[y,R]=s.useState(!1),[de,O]=s.useState(!0),[I,q]=s.useState(null),[W,F]=s.useState(null),[J,Q]=s.useState(!1),xe=s.useCallback((a,n)=>{F(v=>(a&&a!==v&&R(!1),a)),!n&&a&&R(!0),Q(n)},[]),X=s.useCallback(a=>{q(v=>(v&&v.analysisId===a.analysisId||(F(null),Y($=>$+1)),a)),Q(!0),R(!1);const n=new URLSearchParams(r);n.delete("scenario"),n.delete("zoom"),N(n)},[r,N]),[me,ee]=s.useState(1440),[b,G]=s.useState({name:"Desktop",width:1440,height:900}),[pe,H]=s.useState(!1),[V,he]=s.useState(null),[M,z]=s.useState("app"),ue=s.useCallback(()=>{z("build"),te(!0)},[]),[fe,te]=s.useState(!1);s.useEffect(()=>{if(M==="build"){const a=setTimeout(()=>{var n;return(n=C.current)==null?void 0:n.focus()},50);return()=>clearTimeout(a)}},[M]);const[D,ge]=s.useState(null);s.useEffect(()=>{const a=E.current;if(!a)return;const n=new ResizeObserver(v=>{const S=v[0];S&&ge({width:S.contentRect.width,height:S.contentRect.height})});return n.observe(a),()=>n.disconnect()},[]);const L=s.useMemo(()=>{if(!D)return 1;const a=b.width,n=b.height??900,v=D.width,S=D.height;return a<=v&&n<=S?1:Math.min(v/a,S/n)},[D,b]),[ve,Y]=s.useState(0),je=s.useCallback(()=>{Y(a=>a+1)},[]),{customSizes:se,addCustomSize:Ne}=$e(i),A=s.useMemo(()=>[...K,...se],[se]),ae=s.useRef(!1);s.useEffect(()=>{let a=!1,n=null;const v=async()=>{try{const S=await fetch("/api/editor-dev-server");if(a)return;const $=await S.json();if($.status==="error")g(null),T(null),t(!1),h($.errorMessage||"Dev server crashed");else if($.url)g($.url),T($.proxyUrl||null),t(!1),h(null),O(!0);else if($.status==="starting")t(!0),h(null),O(!0);else if($.status==="stopped")if(p)g(null),t(!1);else if(ae.current)t(!1);else{ae.current=!0;try{(await fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start"})})).ok?t(!0):O(!1)}catch{}}}catch{}};return v(),n=setInterval(()=>void v(),2e3),()=>{a=!0,n&&clearInterval(n)}},[p]),s.useEffect(()=>{const a=new EventSource("/api/events");return a.addEventListener("message",n=>{try{const v=JSON.parse(n.data);(v.type==="db-change"||v.type==="unknown")&&m.revalidate()}catch{}}),()=>a.close()},[m]);const be=s.useMemo(()=>{const a=[{name:"App"}];return k&&a.push({name:k,componentName:k}),a},[k]),ne=s.useCallback(a=>{const n=new URLSearchParams(r);a?n.set("zoom",a):n.delete("zoom"),n.delete("scenario"),N(n)},[r,N]),re=s.useCallback(a=>{q(null),F(null);const n=new URLSearchParams(r);n.set("scenario",a.id),N(n);const v=a.name.replace(/[^a-zA-Z0-9_]+/g,"_");fetch("/api/editor-switch-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioSlug:v,scenarioId:a.id})}).catch(()=>{}),Y(S=>S+1),R(!1)},[r,N]),ye=(a,n)=>{ee(a);const v=A.find(S=>S.width===a&&S.height===n);G({name:(v==null?void 0:v.name)||"Custom",width:a,height:n})},le=a=>{ee(a.width),G({name:a.name,width:a.width,height:a.height})},we=a=>{Ne(a,b.width,b.height??900),H(!1),G(n=>({...n,name:a}))},Se=()=>{I||R(!0)},Ce=s.useCallback(()=>{h(null),t(!0),fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"restart"})}).catch(()=>{})},[]),ke=s.useCallback(()=>{h(null),t(!0),fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start"})}).catch(()=>{})},[]),ie=s.useMemo(()=>{if(I&&W)return W;const a=P||p;if(!a)return null;if(k&&d){const n=f.find(S=>S.id===d),v=n?n.name.replace(/[^a-zA-Z0-9_]+/g,"_"):"Default";return`${a}/__codeyam__/${k}/${v}`}return a},[P,p,k,d,f,I,W]);return e.jsxs("div",{className:"fixed inset-0 bg-[#2d2d2d] flex flex-col",children:[I&&e.jsx(He,{analysisId:I.analysisId,scenarioId:I.scenarioId,scenarioName:I.scenarioName,entityName:I.entityName,projectSlug:i,onStateChange:xe},I.analysisId),e.jsx("div",{className:"bg-[#3d3d3d] h-12 flex items-center px-4 gap-4 shrink-0 z-20",children:e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("img",{src:_e,alt:"CodeYam",className:"h-6 brightness-0 invert"}),e.jsx("span",{className:"text-white font-medium text-sm whitespace-nowrap",children:"Editor"}),k&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-px h-4 bg-gray-600"}),e.jsx(Ge,{items:be,onNavigate:ne})]}),e.jsx("span",{className:"bg-[#005c75] text-white text-[10px] font-bold px-2 py-0.5 rounded uppercase tracking-wider ml-auto",children:"Code + Data"})]})}),e.jsxs("div",{className:"flex-1 flex min-h-0",children:[e.jsxs("div",{className:"flex-1 flex flex-col min-w-0",children:[e.jsxs("div",{className:"bg-[#e5e7eb] border-b border-[rgba(0,0,0,0.1)] shrink-0 z-10 h-6 flex items-center justify-center relative",children:[e.jsx("div",{className:"absolute inset-0 flex justify-center",children:e.jsx("div",{style:{maxWidth:`${K[K.length-1].width}px`,width:"100%"},children:e.jsx(Ee,{currentViewportWidth:me,currentPresetName:b.name,onDevicePresetClick:le,devicePresets:A,hideLabel:!0,onHoverChange:he,lightMode:!0})})}),e.jsxs("div",{className:"relative z-10 flex items-center gap-2",children:[e.jsxs("div",{className:"relative w-28 h-5",children:[e.jsxs("div",{className:"absolute inset-0 bg-white text-gray-900 text-xs px-2 rounded flex items-center justify-between pointer-events-none border border-gray-300",children:[e.jsx("span",{className:"leading-none",children:(V==null?void 0:V.name)||b.name}),e.jsx("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),e.jsxs("select",{value:b.name,onChange:a=>{const n=A.find(v=>v.name===a.target.value);n&&le(n)},className:"relative w-full h-full opacity-0 cursor-pointer",children:[A.map(a=>e.jsx("option",{value:a.name,children:a.name},a.name)),b.name==="Custom"&&e.jsx("option",{value:"Custom",children:"Custom"})]})]}),e.jsx("input",{type:"number",value:b.width,onChange:a=>{const n=parseInt(a.target.value,10);!isNaN(n)&&n>0&&ye(n,b.height??900)},className:"bg-white text-gray-900 text-xs px-1 rounded border border-gray-300 outline-none w-16 text-center h-5 leading-none",min:"200",max:"3840"}),e.jsx("span",{className:"text-gray-400 text-xs h-5 flex items-center leading-none",children:"x"}),e.jsx("span",{className:"bg-gray-100 text-gray-600 text-xs px-1 rounded w-14 text-center h-5 flex items-center justify-center leading-none",children:b.height??900}),b.name==="Custom"&&e.jsx("button",{onClick:()=>H(!0),className:"bg-white text-gray-900 text-xs px-2 rounded h-5 flex items-center leading-none border border-gray-300 hover:bg-gray-50 transition-colors",children:"Save"})]})]}),e.jsx("div",{ref:E,className:"flex-1 flex items-center justify-center overflow-hidden p-8",style:{backgroundImage:`
3
+ linear-gradient(45deg, #ebebeb 25%, transparent 25%),
4
+ linear-gradient(-45deg, #ebebeb 25%, transparent 25%),
5
+ linear-gradient(45deg, transparent 75%, #ebebeb 75%),
6
+ linear-gradient(-45deg, transparent 75%, #ebebeb 75%)
7
+ `,backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px",backgroundColor:"#fafafa"},children:ie?e.jsx("div",{style:{width:`${b.width*L}px`,height:`${(b.height??900)*L}px`},children:e.jsxs("div",{className:"relative bg-white origin-top-left",style:{width:`${b.width}px`,height:`${b.height??900}px`,transform:L<1?`scale(${L})`:void 0},children:[!y&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center z-10",children:e.jsxs("div",{className:"flex flex-col items-center justify-center gap-6 bg-white rounded-lg p-8 shadow-sm w-[500px] h-[300px]",children:[e.jsx("div",{className:"mb-4",children:e.jsx(ce,{})}),e.jsxs("div",{className:"flex flex-col gap-3 text-center",children:[e.jsx("h2",{className:"text-xl font-medium text-black leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Loading Preview"}),e.jsx("p",{className:"text-sm text-[#666] leading-5 m-0 font-['IBM_Plex_Sans']",children:"Waiting for the app to render"})]})]})}),e.jsx("iframe",{ref:w,src:ie,className:"w-full h-full border-none",title:"Editor preview",onLoad:Se,style:{opacity:y?1:0}},ve)]})}):e.jsx("div",{className:"bg-white rounded-lg shadow-sm flex flex-col items-center justify-center",style:{width:`${b.width*L}px`,height:`${(b.height??900)*L}px`},children:c?e.jsxs("div",{className:"flex flex-col gap-4 text-center px-8 max-w-[600px]",children:[e.jsx("h2",{className:"text-xl font-medium text-red-600 leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Dev Server Failed"}),e.jsx("pre",{className:"text-xs text-left bg-gray-100 text-gray-800 p-4 rounded overflow-auto max-h-[300px] w-full font-mono whitespace-pre-wrap",children:c}),e.jsx("button",{onClick:Ce,className:"mx-auto px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded hover:bg-[#004d63] transition-colors cursor-pointer",children:"Retry"})]}):_||J?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mb-4",children:e.jsx(ce,{})}),e.jsxs("div",{className:"flex flex-col gap-3 text-center",children:[e.jsx("h2",{className:"text-xl font-medium text-black leading-[28px] m-0 font-['IBM_Plex_Sans']",children:J?"Starting Interactive Mode":"Starting Dev Server"}),e.jsx("p",{className:"text-sm text-[#666] leading-5 m-0 font-['IBM_Plex_Sans']",children:J?"Loading component preview...":"Your dev server is starting up..."})]})]}):e.jsxs("div",{className:"flex flex-col gap-3 text-center px-8",children:[e.jsx("h2",{className:"text-xl font-medium text-black leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Code + Data Editor"}),e.jsx("p",{className:"text-sm text-[#888] leading-5 m-0 font-['IBM_Plex_Sans']",children:"Describe what you want to build in the chat"})]})})})]}),e.jsxs("aside",{className:"w-[50%] min-w-[400px] max-w-[800px] bg-[#1e1e1e] border-r border-[#3d3d3d] shrink-0 flex flex-col overflow-hidden order-first",children:[e.jsx("div",{className:"border-b border-[#3d3d3d] px-4 shrink-0 flex items-center justify-between",children:e.jsxs("div",{className:"flex items-center gap-0",children:[e.jsxs("button",{onClick:()=>z("app"),className:`px-3 py-2 text-xs font-medium transition-colors relative cursor-pointer ${M==="app"?"text-white":"text-gray-500 hover:text-gray-300"}`,children:["App",M==="app"&&e.jsx("span",{className:"absolute bottom-0 left-3 right-3 h-0.5 bg-[#005c75]"})]}),e.jsxs("button",{onClick:()=>{z("build"),te(!0)},className:`px-3 py-2 text-xs font-medium transition-colors relative cursor-pointer ${M==="build"?"text-white":"text-gray-500 hover:text-gray-300"}`,children:["Build",M==="build"&&e.jsx("span",{className:"absolute bottom-0 left-3 right-3 h-0.5 bg-[#005c75]"})]}),e.jsxs("button",{onClick:()=>z("data"),className:`px-3 py-2 text-xs font-medium transition-colors relative cursor-pointer ${M==="data"?"text-white":"text-gray-500 hover:text-gray-300"}`,children:["Data",M==="data"&&e.jsx("span",{className:"absolute bottom-0 left-3 right-3 h-0.5 bg-[#005c75]"})]}),e.jsxs("button",{onClick:()=>z("journal"),className:`px-3 py-2 text-xs font-medium transition-colors relative cursor-pointer ${M==="journal"?"text-white":"text-gray-500 hover:text-gray-300"}`,children:["Journal",M==="journal"&&e.jsx("span",{className:"absolute bottom-0 left-3 right-3 h-0.5 bg-[#005c75]"})]})]})}),fe&&e.jsx("div",{style:{display:M==="build"?"flex":"none"},className:"flex-1 overflow-hidden flex-col",children:e.jsx(Re,{ref:C,entityName:"Editor",projectSlug:i,entityFilePath:null,scenarioName:null,onRefreshPreview:je,editorMode:!0})}),M==="app"&&e.jsx(Je,{hasProject:u,scenarios:f,analyzedEntities:j,activeScenarioId:d,onScenarioSelect:re,onAnalyzedScenarioSelect:X,onSwitchToBuild:ue}),M==="data"&&e.jsx(Be,{scenarios:f,projectRoot:x,activeScenarioId:d,onScenarioSelect:re,zoomComponent:k,onZoomChange:ne,analyzedEntities:j,glossaryFunctions:o,activeAnalyzedScenarioId:I==null?void 0:I.scenarioId,onAnalyzedScenarioSelect:X}),M==="journal"&&e.jsx(Fe,{})]})]}),e.jsx(ze,{serverUrl:p,isStarting:_,projectSlug:i,devServerError:c,onStartServer:de?ke:void 0}),pe&&e.jsx(Le,{width:b.width,height:b.height??900,onSave:we,onCancel:()=>H(!1)})]})});export{st as default,tt as meta};