@codeyam/codeyam-cli 0.1.0-staging.ad88eeb → 0.1.0-staging.b147f46

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 (437) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +4 -4
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  11. package/analyzer-template/packages/analyze/index.ts +4 -1
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  18. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  19. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  20. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
  22. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
  23. package/analyzer-template/packages/aws/package.json +2 -2
  24. package/analyzer-template/packages/database/package.json +2 -2
  25. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +82 -0
  26. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +19 -15
  27. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  28. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  29. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +0 -65
  30. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +5 -0
  31. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  32. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +84 -0
  33. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  34. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  35. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  37. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  39. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  40. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  42. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  43. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +0 -25
  46. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  47. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  48. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  49. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  50. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  51. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  52. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  53. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  54. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  55. package/codeyam-cli/src/cli.js +24 -0
  56. package/codeyam-cli/src/cli.js.map +1 -1
  57. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  58. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  59. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  60. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  61. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  62. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  63. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  64. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  65. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  66. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  67. package/codeyam-cli/src/commands/editor.js +3495 -553
  68. package/codeyam-cli/src/commands/editor.js.map +1 -1
  69. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  70. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  71. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  72. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  73. package/codeyam-cli/src/commands/init.js +69 -34
  74. package/codeyam-cli/src/commands/init.js.map +1 -1
  75. package/codeyam-cli/src/commands/telemetry.js +37 -0
  76. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  77. package/codeyam-cli/src/data/techStacks.js +2 -7
  78. package/codeyam-cli/src/data/techStacks.js.map +1 -1
  79. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  80. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  81. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  82. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  83. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +18 -8
  84. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
  85. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +3380 -1
  86. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  87. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  88. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  89. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  90. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  91. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  92. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  93. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +27 -2
  94. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -1
  95. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +76 -3
  96. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -1
  97. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  98. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  99. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  100. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  101. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +202 -1
  102. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -1
  103. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  104. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  105. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +96 -1
  106. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  107. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +47 -1
  108. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -1
  109. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +70 -0
  110. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
  111. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1548 -1
  112. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  113. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +117 -1
  114. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
  115. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  116. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  117. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  118. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  119. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  120. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  121. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +395 -11
  122. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  123. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  124. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  125. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +16 -1
  126. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -1
  127. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  128. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  129. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +30 -2
  130. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -1
  131. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  132. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  133. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  134. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  135. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  136. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  137. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +649 -223
  138. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
  139. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  140. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  141. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +1 -0
  142. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  143. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  144. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  145. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +217 -0
  146. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  147. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  148. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  149. package/codeyam-cli/src/utils/analyzer.js +19 -0
  150. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  151. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  152. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  153. package/codeyam-cli/src/utils/backgroundServer.js +93 -17
  154. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  155. package/codeyam-cli/src/utils/database.js +37 -2
  156. package/codeyam-cli/src/utils/database.js.map +1 -1
  157. package/codeyam-cli/src/utils/editorApi.js +11 -5
  158. package/codeyam-cli/src/utils/editorApi.js.map +1 -1
  159. package/codeyam-cli/src/utils/editorAudit.js +673 -5
  160. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  161. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  162. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  163. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  164. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  165. package/codeyam-cli/src/utils/editorDevServer.js +5 -1
  166. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -1
  167. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +13 -7
  168. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -1
  169. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  170. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  171. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  172. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  173. package/codeyam-cli/src/utils/editorLoaderHelpers.js +72 -1
  174. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -1
  175. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  176. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  177. package/codeyam-cli/src/utils/editorPreview.js +33 -0
  178. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  179. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  180. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  181. package/codeyam-cli/src/utils/editorScenarioSwitch.js +24 -2
  182. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
  183. package/codeyam-cli/src/utils/editorScenarios.js +580 -0
  184. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  185. package/codeyam-cli/src/utils/editorSeedAdapter.js +295 -6
  186. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
  187. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  188. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  189. package/codeyam-cli/src/utils/entityChangeStatus.js +53 -6
  190. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  191. package/codeyam-cli/src/utils/entityChangeStatus.server.js +57 -3
  192. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  193. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  194. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  195. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  196. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  197. package/codeyam-cli/src/utils/install-skills.js +14 -0
  198. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  199. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  200. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  201. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -1
  202. package/codeyam-cli/src/utils/progress.js +2 -2
  203. package/codeyam-cli/src/utils/progress.js.map +1 -1
  204. package/codeyam-cli/src/utils/queue/job.js +26 -5
  205. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  206. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  207. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  208. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  209. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  210. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  211. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  212. package/codeyam-cli/src/utils/scenariosManifest.js +269 -74
  213. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
  214. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  215. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  216. package/codeyam-cli/src/utils/serverState.js +30 -0
  217. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  218. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +1 -0
  219. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  220. package/codeyam-cli/src/utils/simulationGateMiddleware.js +17 -1
  221. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  222. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  223. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  224. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  225. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  226. package/codeyam-cli/src/utils/telemetry.js +106 -0
  227. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  228. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  229. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  230. package/codeyam-cli/src/utils/testRunner.js +199 -1
  231. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  232. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  233. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  234. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  235. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  236. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +469 -0
  237. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
  238. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +283 -0
  239. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  240. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  241. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  242. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  243. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  244. package/codeyam-cli/src/webserver/app/lib/git.js +3 -2
  245. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -1
  246. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  247. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  248. package/codeyam-cli/src/webserver/backgroundServer.js +60 -61
  249. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  250. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CLe80MMu.js +1 -0
  251. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BcgbViKV.js → EntityItem-Crt_KN_U.js} +3 -3
  252. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CQIG2qda.js → EntityTypeIcon-CD7lGABo.js} +1 -1
  254. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CgTNOhnu.js +1 -0
  255. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CKeQT5Ty.js +25 -0
  256. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-D3s1MFkb.js +3 -0
  257. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  258. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-CM5zg40N.js} +3 -3
  259. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  260. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzHcG7SE.js → ReportIssueModal-C2PLkej3.js} +2 -2
  261. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DanvyBPb.js +1 -0
  262. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-0DY_NKil.js → ScenarioViewer-DUMfcNVK.js} +3 -3
  263. package/codeyam-cli/src/webserver/build/client/assets/Spinner-D0LgAaSa.js +34 -0
  264. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  265. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BA_Ry-rs.js +1 -0
  266. package/codeyam-cli/src/webserver/build/client/assets/{_index-DLxKhri3.js → _index-BAWd-Xjf.js} +2 -2
  267. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BcY3q6nt.js → activity.(_tab)-BOARiB-g.js} +3 -3
  268. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-CHx25PAe.js} +1 -1
  269. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-Bni3iiUj.js → agent-transcripts-Bg3e7q4S.js} +3 -3
  270. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  271. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  273. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  274. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  275. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  276. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  278. package/codeyam-cli/src/webserver/build/client/assets/{book-open-BYOypzCa.js → book-open-CL-lMgHh.js} +1 -1
  279. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-C_Pmso5S.js → chevron-down-GmAjGS9-.js} +1 -1
  280. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +43 -0
  281. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BVMi9VA5.js → circle-check-DFcQkN5j.js} +1 -1
  282. package/codeyam-cli/src/webserver/build/client/assets/{copy-n2FB0_Sw.js → copy-C6iF61Xs.js} +1 -1
  283. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CC6AbExI.js → createLucideIcon-4ImjHTVC.js} +1 -1
  284. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  285. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  286. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C8y4mmyv.js +1 -0
  287. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  288. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DMv5ESGo.js +96 -0
  289. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  290. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BF4oLwaE.js → entity._sha._-ByHz6rAQ.js} +13 -12
  291. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CmLO432x.js +6 -0
  292. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Bz9sCUF_.js +6 -0
  293. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DQM8E7L4.js +6 -0
  294. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-CAoXLsQr.js} +2 -2
  295. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-SuW9syRS.js} +6 -6
  296. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  297. package/codeyam-cli/src/webserver/build/client/assets/files-D-xGrg29.js +1 -0
  298. package/codeyam-cli/src/webserver/build/client/assets/git-Bq_fbXP5.js +1 -0
  299. package/codeyam-cli/src/webserver/build/client/assets/globals-oyPmV37k.css +1 -0
  300. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-Bp1l4hSv.js} +1 -1
  301. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-CWV9XZiG.js} +1 -1
  302. package/codeyam-cli/src/webserver/build/client/assets/{index-yHOVb4rc.js → index-DE3jI_dv.js} +1 -1
  303. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  304. package/codeyam-cli/src/webserver/build/client/assets/labs-B_IX45ih.js +1 -0
  305. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DaAZ_H2w.js → loader-circle-De-7qQ2u.js} +1 -1
  306. package/codeyam-cli/src/webserver/build/client/assets/manifest-1a45e154.js +1 -0
  307. package/codeyam-cli/src/webserver/build/client/assets/memory-Cx2xEx7s.js +101 -0
  308. package/codeyam-cli/src/webserver/build/client/assets/{pause-f5-1lKBt.js → pause-CFxEKL1u.js} +1 -1
  309. package/codeyam-cli/src/webserver/build/client/assets/root-D2_tktnk.js +80 -0
  310. package/codeyam-cli/src/webserver/build/client/assets/{search-Di64LWVb.js → search-BdBb5aqc.js} +1 -1
  311. package/codeyam-cli/src/webserver/build/client/assets/settings-DdE-Untf.js +1 -0
  312. package/codeyam-cli/src/webserver/build/client/assets/simulations-DSCdE99u.js +1 -0
  313. package/codeyam-cli/src/webserver/build/client/assets/{terminal-Br7MOqts.js → terminal-CrplD4b1.js} +1 -1
  314. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BLdiCuG-.js → triangle-alert-DqJ0j69l.js} +1 -1
  315. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DhXHbEjP.js +1 -0
  316. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-C14nCb1q.js → useLastLogLine-BNd5hYuW.js} +1 -1
  317. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-Cy5Qg_UR.js +1 -0
  318. package/codeyam-cli/src/webserver/build/client/assets/useToast-5HR2j9ZE.js +1 -0
  319. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  320. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-By5slFjw.js +16 -0
  321. package/codeyam-cli/src/webserver/build/server/assets/index-DXaOwBnm.js +1 -0
  322. package/codeyam-cli/src/webserver/build/server/assets/init-CLG1LjQM.js +10 -0
  323. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  324. package/codeyam-cli/src/webserver/build/server/assets/server-build-NZmUqQv6.js +688 -0
  325. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  326. package/codeyam-cli/src/webserver/build-info.json +5 -5
  327. package/codeyam-cli/src/webserver/editorProxy.js +436 -13
  328. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  329. package/codeyam-cli/src/webserver/idleDetector.js +121 -0
  330. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  331. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  332. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  333. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  334. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +53 -0
  335. package/codeyam-cli/src/webserver/server.js +125 -4
  336. package/codeyam-cli/src/webserver/server.js.map +1 -1
  337. package/codeyam-cli/src/webserver/terminalServer.js +288 -43
  338. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  339. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  340. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  341. package/codeyam-cli/templates/chrome-extension-react/package.json +1 -0
  342. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +6 -0
  343. package/codeyam-cli/templates/codeyam-editor-claude.md +86 -5
  344. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  345. package/codeyam-cli/templates/editor-step-hook.py +193 -56
  346. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  347. package/codeyam-cli/templates/expo-react-native/package.json +1 -0
  348. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +14 -0
  349. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  350. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +2 -1
  351. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +83 -40
  352. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  353. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +2 -1
  354. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  355. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +1 -1
  356. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +94 -10
  357. package/package.json +2 -1
  358. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  359. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  360. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  361. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  362. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  363. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  364. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  365. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  366. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  367. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  368. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  369. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  370. package/packages/analyze/index.js +1 -1
  371. package/packages/analyze/index.js.map +1 -1
  372. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  373. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  374. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  375. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  376. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  377. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  378. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  379. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  380. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  381. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  382. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  383. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  384. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  385. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  386. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  387. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  388. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  389. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  390. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  391. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  392. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  393. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  394. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +84 -0
  395. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  396. package/packages/database/src/lib/loadAnalysis.js +1 -1
  397. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  398. package/packages/database/src/lib/loadEntities.js +0 -6
  399. package/packages/database/src/lib/loadEntities.js.map +1 -1
  400. package/packages/database/src/lib/loadEntity.js +5 -5
  401. package/packages/database/src/lib/loadEntity.js.map +1 -1
  402. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  403. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  404. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  405. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  406. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-BPXZwM4t.js +0 -1
  407. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  408. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  409. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  410. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  411. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  412. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  413. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  414. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +0 -1
  415. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +0 -51
  416. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  417. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Csi0_PMl.js +0 -1
  418. package/codeyam-cli/src/webserver/build/client/assets/editor-BuT_Huj0.js +0 -10
  419. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-B7ztwLut.js +0 -41
  420. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-D5rYBT5x.js +0 -6
  421. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CF164ouH.js +0 -6
  422. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  423. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  424. package/codeyam-cli/src/webserver/build/client/assets/files-BZrlFE1F.js +0 -1
  425. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +0 -1
  426. package/codeyam-cli/src/webserver/build/client/assets/globals-BkWJ_UNc.css +0 -1
  427. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  428. package/codeyam-cli/src/webserver/build/client/assets/manifest-b0f1372e.js +0 -1
  429. package/codeyam-cli/src/webserver/build/client/assets/memory-Bl2rpw8u.js +0 -96
  430. package/codeyam-cli/src/webserver/build/client/assets/root-B_X8HS1x.js +0 -67
  431. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +0 -1
  432. package/codeyam-cli/src/webserver/build/client/assets/simulations-DWT-CvLy.js +0 -1
  433. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CrAK28Bc.js +0 -1
  434. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  435. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  436. package/codeyam-cli/src/webserver/build/server/assets/index-CbF6h3dj.js +0 -1
  437. package/codeyam-cli/src/webserver/build/server/assets/server-build-DRFwTJqO.js +0 -367
@@ -16,10 +16,24 @@ import { pruneOldTranscripts } from "../utils/transcriptPruning.js";
16
16
  // Catch-all error handlers — log before the process dies
17
17
  // Must be registered before any async code runs
18
18
  process.on('uncaughtException', (error) => {
19
- console.error('[FATAL] Uncaught exception:', error);
19
+ const mem = process.memoryUsage();
20
+ console.error(`[FATAL] Uncaught exception at ${new Date().toISOString()} ` +
21
+ `(PID ${process.pid}, heap ${Math.round(mem.heapUsed / 1024 / 1024)}MB):`, error);
20
22
  });
21
23
  process.on('unhandledRejection', (reason) => {
22
- console.error('[FATAL] Unhandled rejection:', reason);
24
+ const mem = process.memoryUsage();
25
+ console.error(`[FATAL] Unhandled rejection at ${new Date().toISOString()} ` +
26
+ `(PID ${process.pid}, heap ${Math.round(mem.heapUsed / 1024 / 1024)}MB):`, reason);
27
+ });
28
+ process.on('exit', (code) => {
29
+ console.error(`[EXIT] CodeYam server exiting at ${new Date().toISOString()} ` +
30
+ `with code ${code} (PID ${process.pid})`);
31
+ });
32
+ process.on('SIGTERM', () => {
33
+ console.error(`[SIGNAL] Received SIGTERM at ${new Date().toISOString()} (PID ${process.pid})`);
34
+ });
35
+ process.on('SIGINT', () => {
36
+ console.error(`[SIGNAL] Received SIGINT at ${new Date().toISOString()} (PID ${process.pid})`);
23
37
  });
24
38
  // Set process title for Activity Monitor visibility
25
39
  if (process.env.CODEYAM_PROCESS_NAME) {
@@ -101,63 +115,7 @@ async function main() {
101
115
  console.warn('⚠️ Failed to run labs migration check:', error);
102
116
  }
103
117
  }
104
- // In editor mode (empty folder), skip the file watcher there are no entities to track.
105
- // For regular projects, start the file watcher BEFORE the server so the DB is in sync
106
- // with the filesystem before accepting requests.
107
- if (!isEditorMode && project?.id && branch?.id) {
108
- try {
109
- // Load project config to get pathsToIgnore
110
- let customIgnorePatterns = [];
111
- try {
112
- const configPath = path.join(rootPath, '.codeyam', 'config.json');
113
- if (fs.existsSync(configPath)) {
114
- const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
115
- customIgnorePatterns = config.pathsToIgnore || [];
116
- if (customIgnorePatterns.length > 0) {
117
- console.log(`📋 Loaded ${customIgnorePatterns.length} custom ignore patterns`);
118
- }
119
- }
120
- }
121
- catch (error) {
122
- console.warn('⚠️ Failed to load pathsToIgnore from config:', error);
123
- }
124
- const hasGitRepo = fs.existsSync(path.join(rootPath, '.git'));
125
- logStartup(`🔄 Starting file watcher${hasGitRepo ? ' with git' : ' (no git repo)'}...`);
126
- // Race the file watcher against a 30s timeout to prevent hanging the startup
127
- const watcherPromise = createFileWatcher({
128
- projectId: project.id,
129
- branchId: branch.id,
130
- projectRootPath: rootPath,
131
- watchGit: hasGitRepo,
132
- customIgnorePatterns,
133
- });
134
- const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve(null), 30000));
135
- const result = await Promise.race([watcherPromise, timeoutPromise]);
136
- if (result) {
137
- fileWatcher = result;
138
- logStartup(`👀 File watcher ready — watching ${rootPath}`);
139
- }
140
- else {
141
- console.warn('⚠️ File watcher did not start within 30s, continuing without it');
142
- // Still wait for it in the background so it can finish later
143
- watcherPromise
144
- .then((w) => {
145
- fileWatcher = w;
146
- console.log('👀 File watcher started (late)');
147
- })
148
- .catch((err) => {
149
- console.error('File watcher failed:', err);
150
- });
151
- }
152
- }
153
- catch (error) {
154
- console.error('Failed to start file watcher:', error);
155
- }
156
- }
157
- else if (isEditorMode) {
158
- logStartup('📝 Editor mode — skipping file watcher');
159
- }
160
- // Start the Remix HTTP server
118
+ // Start the Remix HTTP server first so health endpoint responds quickly
161
119
  logStartup('🌐 Starting Remix server...');
162
120
  const { url, server } = await startRemixServer({
163
121
  port,
@@ -183,6 +141,47 @@ async function main() {
183
141
  catch (err) {
184
142
  console.error('[STARTUP] Health check self-test FAILED — port may not be accessible:', err);
185
143
  }
144
+ // In editor mode (empty folder), skip the file watcher — there are no entities to track.
145
+ // File watcher runs in the background after the server is already accepting requests.
146
+ // No API routes reference the watcher directly — they query the DB, and dbNotifier
147
+ // pushes SSE updates to clients once the watcher writes changes.
148
+ if (!isEditorMode && project?.id && branch?.id) {
149
+ // Load project config to get pathsToIgnore
150
+ let customIgnorePatterns = [];
151
+ try {
152
+ const configPath = path.join(rootPath, '.codeyam', 'config.json');
153
+ if (fs.existsSync(configPath)) {
154
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
155
+ customIgnorePatterns = config.pathsToIgnore || [];
156
+ if (customIgnorePatterns.length > 0) {
157
+ console.log(`📋 Loaded ${customIgnorePatterns.length} custom ignore patterns`);
158
+ }
159
+ }
160
+ }
161
+ catch (error) {
162
+ console.warn('⚠️ Failed to load pathsToIgnore from config:', error);
163
+ }
164
+ const hasGitRepo = fs.existsSync(path.join(rootPath, '.git'));
165
+ logStartup(`🔄 Starting file watcher in background${hasGitRepo ? ' with git' : ' (no git repo)'}...`);
166
+ // Fire-and-forget: watcher syncs in the background while server is already responding
167
+ createFileWatcher({
168
+ projectId: project.id,
169
+ branchId: branch.id,
170
+ projectRootPath: rootPath,
171
+ watchGit: hasGitRepo,
172
+ customIgnorePatterns,
173
+ })
174
+ .then((w) => {
175
+ fileWatcher = w;
176
+ logStartup(`👀 File watcher ready — watching ${rootPath}`);
177
+ })
178
+ .catch((error) => {
179
+ console.error('Failed to start file watcher:', error);
180
+ });
181
+ }
182
+ else if (isEditorMode) {
183
+ logStartup('📝 Editor mode — skipping file watcher');
184
+ }
186
185
  // Clean up agent transcript logs older than 14 days
187
186
  pruneOldTranscripts()
188
187
  .then((count) => {
@@ -248,7 +247,7 @@ function killEditorDevServer() {
248
247
  }
249
248
  // Handle graceful shutdown
250
249
  process.on('SIGTERM', () => {
251
- console.log('📴 CodeYam server shutting down...');
250
+ console.log(`📴 CodeYam server shutting down (SIGTERM, PID ${process.pid})...`);
252
251
  killEditorDevServer();
253
252
  terminalCleanup?.();
254
253
  if (fileWatcher) {
@@ -266,7 +265,7 @@ process.on('SIGTERM', () => {
266
265
  process.exit(0);
267
266
  });
268
267
  process.on('SIGINT', () => {
269
- console.log('📴 CodeYam server shutting down...');
268
+ console.log(`📴 CodeYam server shutting down (SIGINT, PID ${process.pid})...`);
270
269
  killEditorDevServer();
271
270
  terminalCleanup?.();
272
271
  if (fileWatcher) {
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundServer.js","sourceRoot":"","sources":["../../../../src/webserver/backgroundServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundServer.js","sourceRoot":"","sources":["../../../../src/webserver/backgroundServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{j as o}from"./jsx-runtime-D_zvdyIk.js";import{r as i}from"./chunk-JZWAC4HX-BAdwhyCx.js";import{C as u,a as x}from"./copy-C6iF61Xs.js";function h({content:t,label:p="Copy",copiedLabel:l="✓ Copied!",className:c="",duration:a=2e3,ariaLabel:C,icon:n=!1,iconSize:s=14}){const[e,r]=i.useState(!1),d=i.useCallback(()=>{navigator.clipboard.writeText(t).then(()=>{r(!0),setTimeout(()=>r(!1),a)}).catch(m=>{console.error("Failed to copy:",m)})},[t,a]);return o.jsx("button",{onClick:d,className:`cursor-pointer ${c}`,disabled:e,"aria-label":C||(e?"Copied to clipboard":"Copy to clipboard"),"aria-live":"polite",children:n?e?o.jsx(u,{size:s,className:"text-green-500"}):o.jsx(x,{size:s}):e?l:p})}export{h as C};
@@ -1,11 +1,11 @@
1
- import{c as k}from"./createLucideIcon-CC6AbExI.js";import{d as E,r as u,j as e,L as N}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{u as T}from"./useToast-9FIWuYfK.js";import{f as D,g as F}from"./fileTableUtils-cPo8LiG3.js";import{T as P}from"./TruncatedFilePath-C8OKAR5x.js";import{S as C}from"./SafeScreenshot-BED4B6sP.js";import{L as B}from"./LibraryFunctionPreview-DLeucoVX.js";import{T as I}from"./triangle-alert-BLdiCuG-.js";import{E as v}from"./EntityTypeIcon-CQIG2qda.js";import{E as L}from"./EntityTypeBadge-g3saevPb.js";/**
1
+ import{c as k}from"./createLucideIcon-4ImjHTVC.js";import{d as E,r as u,L as N}from"./chunk-JZWAC4HX-BAdwhyCx.js";import{u as T}from"./useToast-5HR2j9ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{f as D,g as F}from"./fileTableUtils-Daa96Fr1.js";import{T as P}from"./TruncatedFilePath-CK7-NaPZ.js";import{S as C}from"./SafeScreenshot-DanvyBPb.js";import{L as B}from"./LibraryFunctionPreview-D3s1MFkb.js";import{T as I}from"./triangle-alert-DqJ0j69l.js";import{E as v}from"./EntityTypeIcon-CD7lGABo.js";import{E as L}from"./EntityTypeBadge-CQgyEGV-.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const M=[["path",{d:"m7 20 5-5 5 5",key:"13a0gw"}],["path",{d:"m7 4 5 5 5-5",key:"1kwcof"}]],J=k("chevrons-down-up",M);/**
6
+ */const M=[["path",{d:"m7 20 5-5 5 5",key:"13a0gw"}],["path",{d:"m7 4 5 5 5-5",key:"1kwcof"}]],Q=k("chevrons-down-up",M);/**
7
7
  * @license lucide-react v0.577.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */const $=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],Q=k("chevrons-up-down",$);function w(s){return`${s.filePath||""}::${s.name}`}function V(s,i){const n=E(),{showToast:d}=T(),[o,l]=u.useState(new Map);u.useEffect(()=>{if(n.state==="idle"&&n.data){const t=n.data;t!=null&&t.error&&d(`Error: ${t.error}`,"error",6e3)}},[n.state,n.data,d]),u.useEffect(()=>{var r;if(o.size===0)return;const t=new Set;(r=i==null?void 0:i.jobs)==null||r.forEach(c=>{var x;(x=c.entityShas)==null||x.forEach(m=>{o.forEach((b,j)=>{b===m&&t.add(j)})})}),s==null||s.forEach(c=>{o.forEach((x,m)=>{x===c&&t.add(m)})}),t.size>0&&l(c=>{const x=new Map(c);return t.forEach(m=>x.delete(m)),x})},[i,s,o]);const h=u.useCallback(t=>{console.log("Generate analysis clicked for entity:",t.sha,t.name);const r=w(t);l(x=>new Map(x).set(r,t.sha));const c=new FormData;c.append("entitySha",t.sha),c.append("filePath",t.filePath||""),n.submit(c,{method:"post",action:"/api/analyze"})},[n]),g=u.useCallback(t=>{const r=t.filter(m=>m.entityType==="visual"||m.entityType==="library");console.log("Generate analysis for all entities:",r.length),l(m=>{const b=new Map(m);return r.forEach(j=>b.set(w(j),j.sha)),b});const c=r.map(m=>m.sha).join(","),x=new FormData;x.append("entityShas",c),n.submit(x,{method:"post",action:"/api/analyze"})},[n]),a=u.useCallback(t=>(s==null?void 0:s.includes(t))??!1,[s]),y=u.useCallback(t=>{const r=w(t);return o.has(r)},[o]),p=u.useCallback(t=>{var r;return((r=i==null?void 0:i.jobs)==null?void 0:r.some(c=>{var x;return(x=c.entityShas)==null?void 0:x.includes(t)}))??!1},[i]),f=u.useMemo(()=>Array.from(o.keys()),[o]);return{isAnalyzing:n.state!=="idle",handleGenerateSimulation:h,handleGenerateAllSimulations:g,isEntityBeingAnalyzed:a,isEntityPending:y,isEntityInQueue:p,pendingEntityKeys:f}}function Z({showActions:s=!1,sortOrder:i="desc",onSortChange:n,onAnalyzeAll:d,analyzeAllDisabled:o=!1,analyzeAllText:l="Analyze All"}){return e.jsx("div",{className:"bg-[#efefef] rounded-lg mb-2 text-[11px] font-normal leading-[16px] text-[#3e3e3e] uppercase",children:e.jsxs("div",{className:"flex justify-between items-center px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4"}),e.jsx("span",{children:"FILE"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"100px"},children:e.jsx("span",{children:"STATE"})}),e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"70px"},children:e.jsx("span",{children:"SIMULATIONS"})}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("span",{className:"text-center",style:{width:"70px"},children:"ENTITIES"}),e.jsxs("div",{className:"flex items-center justify-center gap-1 cursor-pointer hover:text-[#232323] transition-colors",style:{width:"116px"},onClick:n,role:"button",tabIndex:0,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),n==null||n())},children:[e.jsx("span",{children:"MODIFIED"}),e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:i==="asc"?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s ease"},children:e.jsx("path",{d:"M3 5L6 8L9 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),s&&e.jsx("div",{className:"text-center",style:{width:"127px"},children:d&&e.jsx("button",{onClick:d,disabled:o,className:"bg-[#005c75] text-white rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#004a5e] transition-colors cursor-pointer disabled:bg-gray-400 disabled:cursor-not-allowed whitespace-nowrap px-3 py-1.5 normal-case",title:o?l:"Analyze all entities",children:l})})]})]})]})})}function A({status:s,variant:i="compact"}){const n={modified:{label:"M",bgColor:"bg-[#f59e0c]"},added:{label:"A",bgColor:"bg-emerald-500"},deleted:{label:"D",bgColor:"bg-red-500",showWarning:!0},renamed:{label:"R",bgColor:"bg-indigo-500"},untracked:{label:"U",bgColor:"bg-purple-500"}},d={modified:{label:"MODIFIED",textColor:"#BB6BD9"},added:{label:"ADDED",textColor:"#F2994A"},deleted:{label:"DELETED",textColor:"#EF4444"},renamed:{label:"RENAMED",textColor:"#3B82F6"},untracked:{label:"UNTRACKED",textColor:"#6B7280"}};if(i==="full"){const l=d[s]||{label:"UNKNOWN",textColor:"#6B7280"};return e.jsx("div",{className:"bg-[#f9f9f9] inline-flex items-center justify-center px-[5px] py-0 rounded",style:{height:"22px"},children:e.jsx("span",{className:"text-[10px] font-['IBM_Plex_Sans'] font-medium leading-[22px]",style:{color:l.textColor},children:l.label})})}const o=n[s]||{label:"?",bgColor:"bg-gray-500"};return e.jsxs("div",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:`inline-flex items-center justify-center w-5 h-5 text-[11px] font-bold text-white rounded ${o.bgColor}`,title:s,children:o.label}),o.showWarning&&e.jsx("span",{className:"inline-flex items-center justify-center w-3 h-3 text-[10px] text-amber-600",title:"Warning: File will be deleted",children:"⚠"})]})}function X({filePath:s,isExpanded:i,onToggle:n,fileStatus:d,simulationPreviews:o,entityCount:l,state:h,lastModified:g,actionButton:a,uncommittedCount:y,children:p,isNotAnalyzable:f=!1,isUncommitted:t=!1}){return e.jsxs("div",{className:"bg-white overflow-hidden",style:i?{border:"1px solid #e1e1e1",borderLeft:"4px solid #005C75",borderRadius:"8px"}:{borderBottom:"1px solid #e1e1e1"},children:[e.jsxs("div",{className:`flex justify-between items-center p-3 cursor-pointer select-none transition-colors ${f?"opacity-50":"hover:bg-gray-200"}`,style:{outlineColor:"#005C75"},onClick:n,role:"button",tabIndex:0,onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),n())},children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4 inline-flex items-center justify-center shrink-0",style:{transform:i?"rotate(90deg)":"none"},children:e.jsx("svg",{width:"10",height:"12",viewBox:"0 0 10 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M1.5 1.268L8.5 6L1.5 10.732V1.268Z",fill:i?"#3e3e3e":"#c7c7c7"})})}),e.jsx("img",{src:"/icons/file-icon.svg",alt:"file",className:"w-4 h-5 shrink-0"}),e.jsx(P,{filePath:s}),d&&e.jsx(A,{status:typeof d=="string"?d:d.status,variant:"full"}),t&&h==="out-of-date"&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fdf9c9",color:"#c69538",height:"22px"},children:"Out of date"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"100px"},children:(t||h==="out-of-date")&&e.jsxs("div",{className:"flex gap-1.5 items-center",children:[t&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fff3cd",color:"#856404",height:"22px"},children:"Uncommitted"}),h==="out-of-date"&&!t&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fdf9c9",color:"#c69538",height:"22px"},children:"Out of date"})]})}),e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"70px"},children:o}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{className:"flex items-center justify-center",style:{width:"70px"},children:e.jsx("div",{className:"bg-[#f9f9f9] flex items-center justify-center px-2 rounded whitespace-nowrap",style:{height:"26px"},children:e.jsxs("span",{className:"text-[13px] text-[#3e3e3e]",children:[l," ",l===1?"entity":"entities"]})})}),e.jsx("div",{className:"text-[12px] text-gray-600 text-center",style:{width:"116px"},children:D(g)}),e.jsx("div",{style:{width:"127px"},className:"flex justify-center",children:a})]})]})]}),i&&p&&e.jsx("div",{className:"bg-gray-50 py-2 rounded-bl-[4px] rounded-br-[4px] flex flex-col gap-1",children:p})]})}function Y({entities:s,maxPreviews:i=3}){var d,o,l,h,g;const n=[];for(const a of s){if(n.length>=i)break;const y=((o=(d=a.analyses)==null?void 0:d[0])==null?void 0:o.scenarios)||[];if(a.entityType==="library"){const p=y.find(f=>{var t,r;return((t=f.metadata)==null?void 0:t.executionResult)||((r=f.metadata)==null?void 0:r.error)});p&&n.push({type:"library",scenario:p,entitySha:a.sha})}else if(a.entityType==="visual"){const p=y.find(f=>{var t,r;return(r=(t=f.metadata)==null?void 0:t.screenshotPaths)==null?void 0:r[0]});if(p){const f=(h=(l=p.metadata)==null?void 0:l.screenshotPaths)==null?void 0:h[0],t=!!((g=p.metadata)!=null&&g.error);f&&n.push({type:"screenshot",screenshot:f,hasError:t,scenario:p,entitySha:a.sha})}}}return n.length===0?e.jsx("span",{className:"text-gray-400 font-light text-[14px]",children:"—"}):e.jsx(e.Fragment,{children:n.map((a,y)=>{if(a.type==="screenshot"&&a.screenshot){const p=a.hasError?"border-red-400":"border-gray-200";return e.jsxs(N,{to:a.scenario?`/entity/${a.entitySha}/scenarios/${a.scenario.id}`:`/entity/${a.entitySha}`,className:`relative w-[50px] h-[38px] border ${p} rounded overflow-hidden bg-gray-50 shrink-0 flex items-center justify-center cursor-pointer transition-all hover:scale-105 hover:shadow-md`,onClick:f=>f.stopPropagation(),children:[e.jsx(C,{screenshotPath:a.screenshot,alt:`Preview ${y+1}`,className:"max-w-full max-h-full object-contain object-center"}),a.hasError&&e.jsx("div",{className:"absolute top-0 right-0 w-4 h-4 bg-red-500 text-white flex items-center justify-center text-[10px] rounded-bl",title:"Error during capture",children:e.jsx(I,{size:12,color:"white"})})]},`screenshot-${y}`)}return a.type==="library"&&a.scenario&&a.entitySha?e.jsx(B,{scenario:a.scenario,entitySha:a.entitySha,size:"small",showBorder:!0},`library-${y}`):null})})}function q({entity:s,isActivelyAnalyzing:i,isQueued:n,onGenerateSimulation:d}){var p,f;const o=i||n?[{entityShas:[s.sha]}]:[],l=F(s,o,i),h=s.entityType==="visual"||s.entityType==="library",g=h&&(l==="not-analyzed"||l==="out-of-date")&&!i&&!n,y=(((f=(p=s.analyses)==null?void 0:p[0])==null?void 0:f.scenarios)||[]).filter(t=>{var r,c;return(c=(r=t.metadata)==null?void 0:r.screenshotPaths)==null?void 0:c[0]});return e.jsxs("div",{className:"bg-white rounded-lg",children:[e.jsxs(N,{to:`/entity/${s.sha}`,className:"flex items-center justify-between p-3 transition-colors hover:bg-gray-100 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4 shrink-0"}),s.entityType==="type"?e.jsx("div",{className:"bg-[#ffe1e1] inline-flex items-center justify-center px-[4px] rounded-[4px]",style:{height:"18px",width:"18px"},children:e.jsx("div",{className:"w-[10px] h-[10px] flex items-center justify-center",children:e.jsx(v,{type:"type"})})}):e.jsx(v,{type:s.entityType||"other"}),e.jsx("span",{className:`font-['IBM_Plex_Sans'] text-[14px] leading-[18px] text-black ${h?"font-medium":"font-normal"}`,children:s.name}),e.jsx(L,{type:s.entityType||"other"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{style:{width:"160px"}}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{style:{width:"70px"}}),e.jsx("div",{style:{width:"116px"}}),e.jsx("div",{style:{width:"127px"},className:"flex justify-center items-center",children:h?l==="queued"?e.jsxs("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#cbf3fa",color:"#3098b4",height:"26px"},children:[e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#3098b4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("polyline",{points:"12,6 12,12 16,14"})]}),"Queued"]}):l==="analyzing"?e.jsxs("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#ffdbf6",color:"#ff2ab5",height:"26px"},children:[e.jsxs("svg",{width:"8",height:"8",viewBox:"0 0 9 9",fill:"none",className:"animate-spin",children:[e.jsx("circle",{cx:"4.5",cy:"4.5",r:"3.5",stroke:"#FFF4FC",strokeWidth:"1",fill:"none"}),e.jsx("path",{d:"M4.5 1C2.57 1 1 2.57 1 4.5C1 5.6 1.5 6.58 2.28 7.23",stroke:"#FF2AB5",strokeWidth:"1",strokeLinecap:"round",fill:"none"})]}),"Analyzing..."]}):l==="up-to-date"?e.jsx("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#e8ffe6",color:"#00925d",height:"26px"},children:"Up to date"}):l==="out-of-date"?e.jsx("button",{onClick:t=>{t.preventDefault(),t.stopPropagation(),d(s)},className:"bg-[#e0e9ec] text-[#005c75] rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#d0dfe5] transition-colors cursor-pointer px-[15px] py-0 h-[28px]",children:"Re-Analyze"}):g&&e.jsx("button",{onClick:t=>{t.preventDefault(),t.stopPropagation(),d(s)},className:"bg-[#e0e9ec] text-[#005c75] rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#d0dfe5] transition-colors cursor-pointer px-[15px] py-0 h-[28px]",children:"Analyze"}):e.jsx("span",{className:"text-[12px] text-gray-400",children:"Not Analyzable"})})]})]})]}),y.length>0&&e.jsx("div",{className:"px-3 pb-3 pt-0 flex items-center gap-2 pl-[52px]",children:y.map((t,r)=>{var x,m;const c=(m=(x=t.metadata)==null?void 0:x.screenshotPaths)==null?void 0:m[0];return c?e.jsx(N,{to:`/entity/${s.sha}?scenario=${t.id}`,className:"relative w-[120px] h-[90px] border border-gray-200 rounded overflow-hidden bg-gray-50 shrink-0 flex items-center justify-center hover:border-gray-400 transition-colors",onClick:b=>b.stopPropagation(),children:e.jsx(C,{screenshotPath:c,alt:t.name,className:"max-w-full max-h-full object-contain object-center"})},t.id):null})})]})}export{Q as C,q as E,Z as F,Y as S,J as a,X as b,V as u};
11
+ */const $=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],V=k("chevrons-up-down",$);function w(s){return`${s.filePath||""}::${s.name}`}function Z(s,o){const n=E(),{showToast:d}=T(),[i,l]=u.useState(new Map);u.useEffect(()=>{if(n.state==="idle"&&n.data){const t=n.data;t!=null&&t.error&&d(`Error: ${t.error}`,"error",6e3)}},[n.state,n.data,d]),u.useEffect(()=>{var r;if(i.size===0)return;const t=new Set;(r=o==null?void 0:o.jobs)==null||r.forEach(c=>{var x;(x=c.entityShas)==null||x.forEach(m=>{i.forEach((b,j)=>{b===m&&t.add(j)})})}),s==null||s.forEach(c=>{i.forEach((x,m)=>{x===c&&t.add(m)})}),t.size>0&&l(c=>{const x=new Map(c);return t.forEach(m=>x.delete(m)),x})},[o,s,i]);const h=u.useCallback(t=>{console.log("Generate analysis clicked for entity:",t.sha,t.name);const r=w(t);l(x=>new Map(x).set(r,t.sha));const c=new FormData;c.append("entitySha",t.sha),c.append("filePath",t.filePath||""),n.submit(c,{method:"post",action:"/api/analyze"})},[n]),g=u.useCallback(t=>{const r=t.filter(m=>m.entityType==="visual"||m.entityType==="library");console.log("Generate analysis for all entities:",r.length),l(m=>{const b=new Map(m);return r.forEach(j=>b.set(w(j),j.sha)),b});const c=r.map(m=>m.sha).join(","),x=new FormData;x.append("entityShas",c),n.submit(x,{method:"post",action:"/api/analyze"})},[n]),a=u.useCallback(t=>(s==null?void 0:s.includes(t))??!1,[s]),y=u.useCallback(t=>{const r=w(t);return i.has(r)},[i]),p=u.useCallback(t=>{var r;return((r=o==null?void 0:o.jobs)==null?void 0:r.some(c=>{var x;return(x=c.entityShas)==null?void 0:x.includes(t)}))??!1},[o]),f=u.useMemo(()=>Array.from(i.keys()),[i]);return{isAnalyzing:n.state!=="idle",handleGenerateSimulation:h,handleGenerateAllSimulations:g,isEntityBeingAnalyzed:a,isEntityPending:y,isEntityInQueue:p,pendingEntityKeys:f}}function X({showActions:s=!1,sortOrder:o="desc",onSortChange:n,onAnalyzeAll:d,analyzeAllDisabled:i=!1,analyzeAllText:l="Analyze All"}){return e.jsx("div",{className:"bg-[#efefef] rounded-lg mb-2 text-[11px] font-normal leading-[16px] text-[#3e3e3e] uppercase",children:e.jsxs("div",{className:"flex justify-between items-center px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4"}),e.jsx("span",{children:"FILE"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"100px"},children:e.jsx("span",{children:"STATE"})}),e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"70px"},children:e.jsx("span",{children:"SIMULATIONS"})}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("span",{className:"text-center",style:{width:"70px"},children:"ENTITIES"}),e.jsxs("div",{className:"flex items-center justify-center gap-1 cursor-pointer hover:text-[#232323] transition-colors",style:{width:"116px"},onClick:n,role:"button",tabIndex:0,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),n==null||n())},children:[e.jsx("span",{children:"MODIFIED"}),e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:o==="asc"?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s ease"},children:e.jsx("path",{d:"M3 5L6 8L9 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),s&&e.jsx("div",{className:"text-center",style:{width:"127px"},children:d&&e.jsx("button",{onClick:d,disabled:i,className:"bg-[#005c75] text-white rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#004a5e] transition-colors cursor-pointer disabled:bg-gray-400 disabled:cursor-not-allowed whitespace-nowrap px-3 py-1.5 normal-case",title:i?l:"Analyze all entities",children:l})})]})]})]})})}function A({status:s,variant:o="compact"}){const n={modified:{label:"M",bgColor:"bg-[#f59e0c]"},added:{label:"A",bgColor:"bg-emerald-500"},deleted:{label:"D",bgColor:"bg-red-500",showWarning:!0},renamed:{label:"R",bgColor:"bg-indigo-500"},untracked:{label:"U",bgColor:"bg-purple-500"}},d={modified:{label:"MODIFIED",textColor:"#BB6BD9"},added:{label:"ADDED",textColor:"#F2994A"},deleted:{label:"DELETED",textColor:"#EF4444"},renamed:{label:"RENAMED",textColor:"#3B82F6"},untracked:{label:"UNTRACKED",textColor:"#6B7280"}};if(o==="full"){const l=d[s]||{label:"UNKNOWN",textColor:"#6B7280"};return e.jsx("div",{className:"bg-[#f9f9f9] inline-flex items-center justify-center px-[5px] py-0 rounded",style:{height:"22px"},children:e.jsx("span",{className:"text-[10px] font-['IBM_Plex_Sans'] font-medium leading-[22px]",style:{color:l.textColor},children:l.label})})}const i=n[s]||{label:"?",bgColor:"bg-gray-500"};return e.jsxs("div",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:`inline-flex items-center justify-center w-5 h-5 text-[11px] font-bold text-white rounded ${i.bgColor}`,title:s,children:i.label}),i.showWarning&&e.jsx("span",{className:"inline-flex items-center justify-center w-3 h-3 text-[10px] text-amber-600",title:"Warning: File will be deleted",children:"⚠"})]})}function Y({filePath:s,isExpanded:o,onToggle:n,fileStatus:d,simulationPreviews:i,entityCount:l,state:h,lastModified:g,actionButton:a,uncommittedCount:y,children:p,isNotAnalyzable:f=!1,isUncommitted:t=!1}){return e.jsxs("div",{className:"bg-white overflow-hidden",style:o?{border:"1px solid #e1e1e1",borderLeft:"4px solid #005C75",borderRadius:"8px"}:{borderBottom:"1px solid #e1e1e1"},children:[e.jsxs("div",{className:`flex justify-between items-center p-3 cursor-pointer select-none transition-colors ${f?"opacity-50":"hover:bg-gray-200"}`,style:{outlineColor:"#005C75"},onClick:n,role:"button",tabIndex:0,onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),n())},children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4 inline-flex items-center justify-center shrink-0",style:{transform:o?"rotate(90deg)":"none"},children:e.jsx("svg",{width:"10",height:"12",viewBox:"0 0 10 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M1.5 1.268L8.5 6L1.5 10.732V1.268Z",fill:o?"#3e3e3e":"#c7c7c7"})})}),e.jsx("img",{src:"/icons/file-icon.svg",alt:"file",className:"w-4 h-5 shrink-0"}),e.jsx(P,{filePath:s}),d&&e.jsx(A,{status:typeof d=="string"?d:d.status,variant:"full"}),t&&h==="out-of-date"&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fdf9c9",color:"#c69538",height:"22px"},children:"Out of date"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"100px"},children:(t||h==="out-of-date")&&e.jsxs("div",{className:"flex gap-1.5 items-center",children:[t&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fff3cd",color:"#856404",height:"22px"},children:"Uncommitted"}),h==="out-of-date"&&!t&&e.jsx("span",{className:"text-[11px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#fdf9c9",color:"#c69538",height:"22px"},children:"Out of date"})]})}),e.jsx("div",{className:"flex items-center justify-center h-[38px]",style:{width:"70px"},children:i}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{className:"flex items-center justify-center",style:{width:"70px"},children:e.jsx("div",{className:"bg-[#f9f9f9] flex items-center justify-center px-2 rounded whitespace-nowrap",style:{height:"26px"},children:e.jsxs("span",{className:"text-[13px] text-[#3e3e3e]",children:[l," ",l===1?"entity":"entities"]})})}),e.jsx("div",{className:"text-[12px] text-gray-600 text-center",style:{width:"116px"},children:D(g)}),e.jsx("div",{style:{width:"127px"},className:"flex justify-center",children:a})]})]})]}),o&&p&&e.jsx("div",{className:"bg-gray-50 py-2 rounded-bl-[4px] rounded-br-[4px] flex flex-col gap-1",children:p})]})}function q({entities:s,maxPreviews:o=3}){var d,i,l,h,g;const n=[];for(const a of s){if(n.length>=o)break;const y=((i=(d=a.analyses)==null?void 0:d[0])==null?void 0:i.scenarios)||[];if(a.entityType==="library"){const p=y.find(f=>{var t,r;return((t=f.metadata)==null?void 0:t.executionResult)||((r=f.metadata)==null?void 0:r.error)});p&&n.push({type:"library",scenario:p,entitySha:a.sha})}else if(a.entityType==="visual"){const p=y.find(f=>{var t,r;return(r=(t=f.metadata)==null?void 0:t.screenshotPaths)==null?void 0:r[0]});if(p){const f=(h=(l=p.metadata)==null?void 0:l.screenshotPaths)==null?void 0:h[0],t=!!((g=p.metadata)!=null&&g.error);f&&n.push({type:"screenshot",screenshot:f,hasError:t,scenario:p,entitySha:a.sha})}}}return n.length===0?e.jsx("span",{className:"text-gray-400 font-light text-[14px]",children:"—"}):e.jsx(e.Fragment,{children:n.map((a,y)=>{if(a.type==="screenshot"&&a.screenshot){const p=a.hasError?"border-red-400":"border-gray-200";return e.jsxs(N,{to:a.scenario?`/entity/${a.entitySha}/scenarios/${a.scenario.id}`:`/entity/${a.entitySha}`,className:`relative w-[50px] h-[38px] border ${p} rounded overflow-hidden bg-gray-50 shrink-0 flex items-center justify-center cursor-pointer transition-all hover:scale-105 hover:shadow-md`,onClick:f=>f.stopPropagation(),children:[e.jsx(C,{screenshotPath:a.screenshot,alt:`Preview ${y+1}`,className:"max-w-full max-h-full object-contain object-center"}),a.hasError&&e.jsx("div",{className:"absolute top-0 right-0 w-4 h-4 bg-red-500 text-white flex items-center justify-center text-[10px] rounded-bl",title:"Error during capture",children:e.jsx(I,{size:12,color:"white"})})]},`screenshot-${y}`)}return a.type==="library"&&a.scenario&&a.entitySha?e.jsx(B,{scenario:a.scenario,entitySha:a.entitySha,size:"small",showBorder:!0},`library-${y}`):null})})}function ee({entity:s,isActivelyAnalyzing:o,isQueued:n,onGenerateSimulation:d}){var p,f;const i=o||n?[{entityShas:[s.sha]}]:[],l=F(s,i,o),h=s.entityType==="visual"||s.entityType==="library",g=h&&(l==="not-analyzed"||l==="out-of-date")&&!o&&!n,y=(((f=(p=s.analyses)==null?void 0:p[0])==null?void 0:f.scenarios)||[]).filter(t=>{var r,c;return(c=(r=t.metadata)==null?void 0:r.screenshotPaths)==null?void 0:c[0]});return e.jsxs("div",{className:"bg-white rounded-lg",children:[e.jsxs(N,{to:`/entity/${s.sha}`,className:"flex items-center justify-between p-3 transition-colors hover:bg-gray-100 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("span",{className:"w-4 shrink-0"}),s.entityType==="type"?e.jsx("div",{className:"bg-[#ffe1e1] inline-flex items-center justify-center px-[4px] rounded-[4px]",style:{height:"18px",width:"18px"},children:e.jsx("div",{className:"w-[10px] h-[10px] flex items-center justify-center",children:e.jsx(v,{type:"type"})})}):e.jsx(v,{type:s.entityType||"other"}),e.jsx("span",{className:`font-['IBM_Plex_Sans'] text-[14px] leading-[18px] text-black ${h?"font-medium":"font-normal"}`,children:s.name}),e.jsx(L,{type:s.entityType||"other"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsx("div",{style:{width:"160px"}}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{style:{width:"70px"}}),e.jsx("div",{style:{width:"116px"}}),e.jsx("div",{style:{width:"127px"},className:"flex justify-center items-center",children:h?l==="queued"?e.jsxs("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#cbf3fa",color:"#3098b4",height:"26px"},children:[e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#3098b4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("polyline",{points:"12,6 12,12 16,14"})]}),"Queued"]}):l==="analyzing"?e.jsxs("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#ffdbf6",color:"#ff2ab5",height:"26px"},children:[e.jsxs("svg",{width:"8",height:"8",viewBox:"0 0 9 9",fill:"none",className:"animate-spin",children:[e.jsx("circle",{cx:"4.5",cy:"4.5",r:"3.5",stroke:"#FFF4FC",strokeWidth:"1",fill:"none"}),e.jsx("path",{d:"M4.5 1C2.57 1 1 2.57 1 4.5C1 5.6 1.5 6.58 2.28 7.23",stroke:"#FF2AB5",strokeWidth:"1",strokeLinecap:"round",fill:"none"})]}),"Analyzing..."]}):l==="up-to-date"?e.jsx("span",{className:"text-[13px] px-2 rounded inline-flex items-center gap-1.5 whitespace-nowrap",style:{backgroundColor:"#e8ffe6",color:"#00925d",height:"26px"},children:"Up to date"}):l==="out-of-date"?e.jsx("button",{onClick:t=>{t.preventDefault(),t.stopPropagation(),d(s)},className:"bg-[#e0e9ec] text-[#005c75] rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#d0dfe5] transition-colors cursor-pointer px-[15px] py-0 h-[28px]",children:"Re-Analyze"}):g&&e.jsx("button",{onClick:t=>{t.preventDefault(),t.stopPropagation(),d(s)},className:"bg-[#e0e9ec] text-[#005c75] rounded text-[12px] font-['IBM_Plex_Sans'] font-normal hover:bg-[#d0dfe5] transition-colors cursor-pointer px-[15px] py-0 h-[28px]",children:"Analyze"}):e.jsx("span",{className:"text-[12px] text-gray-400",children:"Not Analyzable"})})]})]})]}),y.length>0&&e.jsx("div",{className:"px-3 pb-3 pt-0 flex items-center gap-2 pl-[52px]",children:y.map((t,r)=>{var x,m;const c=(m=(x=t.metadata)==null?void 0:x.screenshotPaths)==null?void 0:m[0];return c?e.jsx(N,{to:`/entity/${s.sha}?scenario=${t.id}`,className:"relative w-[120px] h-[90px] border border-gray-200 rounded overflow-hidden bg-gray-50 shrink-0 flex items-center justify-center hover:border-gray-400 transition-colors",onClick:b=>b.stopPropagation(),children:e.jsx(C,{screenshotPath:c,alt:t.name,className:"max-w-full max-h-full object-contain object-center"})},t.id):null})})]})}export{V as C,ee as E,X as F,q as S,Q as a,Y as b,Z as u};
@@ -0,0 +1 @@
1
+ import{j as o}from"./jsx-runtime-D_zvdyIk.js";const l={visual:{label:"VISUAL",bgColor:"#f9f9f9",textColor:"#9040f5"},library:{label:"LIBRARY",bgColor:"#f9f9f9",textColor:"#06b6d5"},type:{label:"TYPE",bgColor:"#ffe1e1",textColor:"#db2627"},other:{label:"OTHER",bgColor:"#f9f9f9",textColor:"#646464"}};function n({type:t,className:r=""}){const e=l[t]||l.other;return o.jsx("div",{className:`inline-flex items-center justify-center px-[4px] rounded-[4px] ${r}`,style:{backgroundColor:e.bgColor,color:e.textColor,height:"15px"},children:o.jsx("span",{className:"text-[10px] font-['IBM_Plex_Sans'] font-semibold leading-[15px] uppercase",children:e.label})})}export{n as E};
@@ -1,4 +1,4 @@
1
- import{j as e}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{c}from"./createLucideIcon-CC6AbExI.js";/**
1
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{c}from"./createLucideIcon-4ImjHTVC.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -0,0 +1 @@
1
+ import{j as o}from"./jsx-runtime-D_zvdyIk.js";import{r as e}from"./chunk-JZWAC4HX-BAdwhyCx.js";const n=["⣾","⣽","⣻","⢿","⡿","⣟","⣯","⣷"],c=80;function m(){const[t,r]=e.useState(0);return e.useEffect(()=>{const s=setInterval(()=>{r(a=>(a+1)%n.length)},c);return()=>clearInterval(s)},[]),o.jsx("span",{className:"inline-block mr-2",children:n[t]})}export{m as I};
@@ -0,0 +1,25 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Bp1l4hSv.js","assets/chunk-JZWAC4HX-BAdwhyCx.js","assets/index-CWV9XZiG.js","assets/styles-CMKNK2uU.css"])))=>i.map(i=>d[i]);
2
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{r as t}from"./chunk-JZWAC4HX-BAdwhyCx.js";import{_ as L}from"./preload-helper-ckwbz45p.js";import{u as Q}from"./useLastLogLine-BNd5hYuW.js";import{S as P}from"./Spinner-D0LgAaSa.js";import{I as B}from"./InlineSpinner-CgTNOhnu.js";const $=t.createContext({dimensions:{height:720,width:1200},updateDimensions:()=>{},iframeRef:{current:null},scale:1,updateScale:()=>{},maxWidth:1200,updateMaxWidth:()=>{}}),U=()=>{const o=t.useContext($);if(!o)throw new Error("useWebContainer must be used within a WebContainerProvider");return o},ce=({children:o})=>{const[i,r]=t.useState({height:720,width:1200}),[d,f]=t.useState(1),[u,g]=t.useState(1200),x=t.useRef(null),h=t.useCallback(({height:l,width:j})=>{r(S=>({height:l??S.height,width:j??S.width}))},[]),v=t.useCallback(l=>{f(l)},[]),w=t.useCallback(l=>{g(l)},[]);return e.jsx($.Provider,{value:{dimensions:i,updateDimensions:h,iframeRef:x,scale:d,updateScale:v,maxWidth:u,updateMaxWidth:w},children:o})},X=typeof window<"u";function Z(){const[o,i]=t.useState(null);return t.useEffect(()=>{L(()=>import("./index-Bp1l4hSv.js").then(r=>r.i),__vite__mapDeps([0,1,2])).then(r=>{i(()=>r.ResizableBox)}),L(()=>Promise.resolve({}),__vite__mapDeps([3]))},[]),o}const ee=1200,te=720,H=30,se=({id:o,scenarioName:i,iframeUrl:r,defaultWidth:d=1440,defaultHeight:f=900,onDataOverride:u,onIframeLoad:g,onScaleChange:x,onDimensionChange:h})=>{const v=Z(),[w,l]=t.useState(!1),[j,S]=t.useState(!1),[c,A]=t.useState(ee),[_,D]=t.useState(te),[E,T]=t.useState(null),[M,I]=t.useState(null),{dimensions:a,updateDimensions:y,iframeRef:m,updateScale:N,updateMaxWidth:R}=U(),k=t.useMemo(()=>Math.min(1,c/a.width),[c,a.width]),p=M!==null?M:k;t.useEffect(()=>{w||(N(p),x==null||x(p))},[p,N,x,w]),t.useEffect(()=>{R(c)},[c,R]);const G=t.useCallback(()=>{l(!0),I(k)},[k]),O=t.useCallback(()=>{l(!1),I(null)},[]),V=t.useCallback((n,s)=>{const b=M!==null?M:1,z=Math.round(s.size.width/b);y({width:z}),h==null||h(z,a.height)},[y,M,h,a.height]),F=t.useCallback(()=>{setTimeout(()=>{S(!0)},100),g&&g()},[g]);t.useEffect(()=>{const n=s=>{if(s.data.type==="codeyam-resize"){if(i&&s.data.name!==i||a.height===s.data.height||s.data.height===0)return;y({height:s.data.height})}};return window.addEventListener("message",n),()=>{window.removeEventListener("message",n)}},[m,i,d,a,y]),t.useEffect(()=>{j&&u&&u(m.current)},[j,u,m]),t.useEffect(()=>{if(!i)return;const n=setInterval(()=>{var s,b;(b=(s=m==null?void 0:m.current)==null?void 0:s.contentWindow)==null||b.postMessage({type:"codeyam-respond",name:i},"*")},1e3);return()=>clearInterval(n)},[i,m]),t.useEffect(()=>{const n=()=>{const s=document.getElementById("scenario-container");if(!s)return;const b=s.getBoundingClientRect(),z=s.clientWidth-H*2,q=window.innerHeight-b.top-H*2,J=Math.max(q,400),K=window.innerHeight-b.top;A(z),D(J),T(K)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),t.useEffect(()=>{y({width:d,height:f})},[d,f,y]);const C=t.useMemo(()=>a.width*p,[a.width,p]),W=t.useMemo(()=>{const n=a.height,s=n*p;return n&&n!==720&&n!==900&&s<_?s:_},[a.height,_,p]),Y=t.useCallback(()=>{window.history.back()},[]);return!X||!v?e.jsx("div",{className:"relative bg-gray-100 w-full h-full flex items-center justify-center",children:e.jsx("p",{className:"text-gray-500",children:"Loading interactive view..."})}):e.jsxs("div",{id:"scenario-container",className:"relative bg-gray-100 w-full flex items-center justify-center",style:E?{height:`${E}px`}:{},children:[w&&e.jsx("div",{className:"fixed inset-0 z-50 bg-transparent"}),e.jsx("style",{children:`
3
+ .react-resizable-handle-e {
4
+ display: flex !important;
5
+ align-items: center !important;
6
+ justify-content: center !important;
7
+ width: 6px !important;
8
+ height: 48px !important;
9
+ right: -8px !important;
10
+ top: 50% !important;
11
+ transform: translateY(-50%) !important;
12
+ cursor: ew-resize !important;
13
+ background: #d1d5db !important;
14
+ border-radius: 3px !important;
15
+ opacity: 0 !important;
16
+ transition: all 0.2s ease !important;
17
+ }
18
+ .react-resizable-handle-e:hover {
19
+ opacity: 0.8 !important;
20
+ background: #9ca3af !important;
21
+ }
22
+ .react-resizable:hover .react-resizable-handle-e {
23
+ opacity: 0.4 !important;
24
+ }
25
+ `}),e.jsx(v,{width:C,height:W,minConstraints:[300,200],maxConstraints:[c,_],className:"relative bg-white rounded-lg shadow-md",resizeHandles:["e"],onResizeStart:G,onResizeStop:O,onResize:V,children:e.jsx("div",{className:"overflow-auto",style:{width:`${C}px`,height:`${W}px`},children:e.jsx("div",{style:{width:`${a.width}px`,height:`${a.height}px`,transform:`scale(${p})`,transformOrigin:"top left"},children:r?e.jsx("iframe",{ref:m,className:"w-full h-full rounded-lg",src:r,onLoad:F,sandbox:"allow-scripts allow-same-origin"}):e.jsxs("p",{className:"w-full h-full flex flex-col gap-3 items-center justify-center",children:[e.jsx("span",{className:"text-xl font-light",children:"Oops! Looks like this scenario is not available yet. Please check back later."}),e.jsx("span",{className:"text-blue-600 cursor-pointer",onClick:Y,children:"Go back"})]})})})},`resizable-box-${o}`)]})};function de({scenarioId:o,scenarioName:i,iframeUrl:r,isStarting:d,isLoading:f,showIframe:u,iframeKey:g,onIframeLoad:x,onScaleChange:h,onDimensionChange:v,projectSlug:w,defaultWidth:l=1440,defaultHeight:j=900,retryCount:S=0}){const{lastLine:c}=Q(w??null,d||f);return r?e.jsxs("div",{className:"flex-1 min-h-0 relative",style:{background:"transparent"},children:[e.jsx("div",{style:{opacity:u?1:0,background:"transparent"},children:e.jsx(se,{id:o,scenarioName:i,iframeUrl:r,defaultWidth:l,defaultHeight:j,onIframeLoad:x,onScaleChange:h,onDimensionChange:v},g)}),!u&&(d||f)&&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(P,{})}),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:"Starting Interactive Mode"}),e.jsx("p",{className:"text-sm text-[#666] leading-5 m-0 font-['IBM_Plex_Sans']",children:"Setting up a sandboxed environment for your component"}),c&&e.jsxs("p",{className:"text-xs font-mono text-[#005c75] text-center leading-5 m-0 mt-3 font-['IBM_Plex_Mono'] uppercase",children:[e.jsx(B,{}),c]})]})]})})]}):e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-12 text-center",children:e.jsxs("div",{className:"flex flex-col items-center justify-center gap-6 w-[500px] h-[300px] bg-white rounded-lg p-8 shadow-sm",children:[e.jsx("div",{className:"mb-4",children:e.jsx(P,{})}),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:"Starting Interactive Mode"}),e.jsx("p",{className:"text-sm text-[#666] leading-5 m-0 font-['IBM_Plex_Sans']",children:"Setting up a sandboxed environment for your component"}),c&&e.jsxs("p",{className:"text-xs font-mono text-[#005c75] text-center leading-5 m-0 mt-3 font-['IBM_Plex_Mono'] uppercase",children:[e.jsx(B,{}),c]})]})]})})}export{de as I,ce as W,U as u};
@@ -0,0 +1,3 @@
1
+ import{j as r}from"./jsx-runtime-D_zvdyIk.js";import{L as C}from"./chunk-JZWAC4HX-BAdwhyCx.js";import{g as L}from"./scenarioStatus-B_8jpV3e.js";function V({scenario:s,entitySha:m,size:g="medium",showBorder:j=!0,isOutdated:E=!1}){var x,h,u,p,f,$;const t=L(s,void 0,void 0,m,void 0),e=(x=s.metadata)==null?void 0:x.executionResult,o=!!e,b=(((u=(h=s.metadata)==null?void 0:h.data)==null?void 0:u.argumentsData)||[]).length,c=(e==null?void 0:e.returnValue)!==void 0&&(e==null?void 0:e.returnValue)!==null,i=((f=(p=e==null?void 0:e.sideEffects)==null?void 0:p.consoleOutput)==null?void 0:f.length)||0,d=(($=e==null?void 0:e.timing)==null?void 0:$.duration)||0;let a=0;b>0&&a++,b>2&&a++,c&&a++,i>0&&a++,a=Math.min(3,a);const l=g==="small"?{width:"w-[50px]",height:"h-[38px]",iconSize:"text-base",textSize:"text-[8px]"}:{width:"w-20",height:"h-15",iconSize:"text-xl",textSize:"text-[10px]"},n=t.hasError?{border:"border-red-400",bg:"bg-red-50",icon:"text-red-600",badge:"bg-red-100 text-red-700"}:o?E?{border:"border-amber-500",bg:"bg-amber-50",icon:"text-amber-700",badge:"bg-amber-100 text-amber-700"}:{border:"border-blue-400",bg:"bg-blue-50",icon:"text-blue-600",badge:"bg-blue-100 text-blue-700"}:{border:"border-gray-300 border-dashed",bg:"bg-gray-50",icon:"text-gray-400",badge:"bg-gray-100 text-gray-600"},w=j?`border-2 ${n.border}`:"",S=Array.from({length:3},(v,y)=>r.jsx("div",{className:`w-1 h-1 rounded-full ${y<a?n.icon.replace("text-","bg-"):"bg-gray-300"}`},y)),N=t.hasError?`Error: ${t.errorMessage||"Unknown error"}`:o?`${s.name}
2
+ ${b} args → ${c?"value":"void"}${i>0?` (${i} logs)`:""}
3
+ ${d}ms`:`Not executed: ${s.name}`;return r.jsxs(C,{to:`/entity/${m}/scenarios/${s.id}`,className:`relative ${l.width} ${l.height} ${w} rounded ${n.bg} flex flex-col items-center justify-center gap-0.5 cursor-pointer transition-all hover:scale-105 hover:shadow-md`,title:N,onClick:v=>v.stopPropagation(),children:[r.jsx("div",{className:`${n.icon} ${l.iconSize} font-mono font-bold`,children:t.hasError?"⚠":o?"ƒ":"○"}),o&&!t.hasError&&r.jsxs("div",{className:`flex items-center gap-0.5 ${l.textSize} ${n.badge} px-1 rounded`,children:[r.jsx("span",{children:b}),r.jsx("span",{children:"→"}),r.jsx("span",{children:c?"✓":"∅"})]}),o&&!t.hasError&&g==="medium"&&r.jsx("div",{className:"flex gap-0.5 mt-0.5",children:S}),o&&!t.hasError&&d>100&&g==="medium"&&r.jsx("div",{className:`absolute top-0.5 right-0.5 ${l.textSize} ${n.badge} px-1 rounded`,children:d>1e3?`${Math.round(d/1e3)}s`:`${d}ms`}),o&&!t.hasError&&i>0&&g==="medium"&&r.jsxs("div",{className:"absolute bottom-0.5 left-0.5 text-[8px] text-gray-500",children:["📝",i]})]})}export{V as L};
@@ -1,4 +1,4 @@
1
- import{j as i}from"./chunk-JZWAC4HX-C4pqxYJB.js";let s=!1;function r(){if(s)return;const e=document.createElement("style");e.textContent=`
1
+ import{j as i}from"./jsx-runtime-D_zvdyIk.js";let s=!1;function r(){if(s)return;const e=document.createElement("style");e.textContent=`
2
2
  @keyframes strongPulse {
3
3
  0%, 100% { opacity: 0.2; }
4
4
  50% { opacity: 1; }
@@ -1,3 +1,3 @@
1
- import{r,j as e}from"./chunk-JZWAC4HX-C4pqxYJB.js";function w({projectSlug:x,onClose:l}){const[m,o]=r.useState("Loading logs..."),[u,g]=r.useState(!0),[d,f]=r.useState(!0),[n,b]=r.useState("all"),a=r.useRef(null);return r.useEffect(()=>{const t=async()=>{try{const s=await fetch(`/api/logs/${x}`);if(s.ok){const h=await s.text();if(n==="all")o(h);else{const c=h.trim().split(`
2
- `).filter(i=>{if(i.length===0)return!1;const p=i.match(/^.*CodeYam Log Level (\d+):/);return!!p&&Number(p[1])<=n});o(c.map(i=>i.replace(/^.*CodeYam Log Level \d+:\s*/,"")).join(`
3
- `))}d&&a.current&&setTimeout(()=>{var c;(c=a.current)==null||c.scrollTo({top:a.current.scrollHeight,behavior:"smooth"})},100)}else o(`Error: ${s.status} - ${await s.text()}`)}catch(s){o(`Error fetching logs: ${s.message}`)}};if(t().catch(()=>{}),u){const s=setInterval(()=>{t().catch(()=>{})},2e3);return()=>clearInterval(s)}},[x,u,d,n]),r.useEffect(()=>{const t=s=>{s.key==="Escape"&&l()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[l]),e.jsx("div",{className:"fixed inset-0 bg-black/70 flex items-center justify-center z-9999 p-5",onClick:l,children:e.jsxs("div",{className:"bg-[#1e1e1e] rounded-lg shadow-2xl flex flex-col max-w-[1200px] w-full max-h-[90vh] overflow-hidden",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"flex justify-between items-center px-5 py-4 border-b border-[#333] bg-[#252525]",children:[e.jsxs("h3",{className:"m-0 text-lg font-semibold text-white",children:["Analysis Logs - ",x]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm text-[#ccc] select-none",children:[e.jsx("span",{children:"Log Level:"}),e.jsxs("select",{value:n,onChange:t=>b(t.target.value==="all"?"all":Number(t.target.value)),className:"bg-[#333] text-white border border-[#555] rounded px-2 py-1 text-sm cursor-pointer outline-none transition-all hover:border-[#777] hover:bg-[#3a3a3a] focus:border-blue-600",children:[e.jsx("option",{value:"1",children:"1"}),e.jsx("option",{value:"2",children:"2"}),e.jsx("option",{value:"3",children:"3"}),e.jsx("option",{value:"4",children:"4"}),e.jsx("option",{value:"all",children:"All"})]})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:u,onChange:t=>g(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-refresh"})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:d,onChange:t=>f(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-scroll"})]}),e.jsx("button",{onClick:l,className:"bg-transparent border-none text-[#999] text-2xl cursor-pointer p-0 w-8 h-8 flex items-center justify-center rounded transition-all hover:bg-[#333] hover:text-white",title:"Close (Esc)",children:"✕"})]})]}),e.jsx("pre",{className:"flex-1 m-0 px-5 py-4 overflow-auto font-mono text-[13px] leading-relaxed text-[#d4d4d4] bg-[#1e1e1e] whitespace-pre-wrap wrap-break-word scrollbar-thin scrollbar-thumb-[#424242] scrollbar-track-[#1e1e1e] hover:scrollbar-thumb-[#4f4f4f]",ref:a,children:m})]})})}export{w as L};
1
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{r}from"./chunk-JZWAC4HX-BAdwhyCx.js";function j({projectSlug:x,onClose:o}){const[m,l]=r.useState("Loading logs..."),[u,f]=r.useState(!0),[d,g]=r.useState(!0),[n,b]=r.useState("all"),a=r.useRef(null);return r.useEffect(()=>{const t=async()=>{try{const s=await fetch(`/api/logs/${x}`);if(s.ok){const h=await s.text();if(n==="all")l(h);else{const c=h.trim().split(`
2
+ `).filter(i=>{if(i.length===0)return!1;const p=i.match(/^.*CodeYam Log Level (\d+):/);return!!p&&Number(p[1])<=n});l(c.map(i=>i.replace(/^.*CodeYam Log Level \d+:\s*/,"")).join(`
3
+ `))}d&&a.current&&setTimeout(()=>{var c;(c=a.current)==null||c.scrollTo({top:a.current.scrollHeight,behavior:"smooth"})},100)}else l(`Error: ${s.status} - ${await s.text()}`)}catch(s){l(`Error fetching logs: ${s.message}`)}};if(t().catch(()=>{}),u){const s=setInterval(()=>{t().catch(()=>{})},2e3);return()=>clearInterval(s)}},[x,u,d,n]),r.useEffect(()=>{const t=s=>{s.key==="Escape"&&o()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[o]),e.jsx("div",{className:"fixed inset-0 bg-black/70 flex items-center justify-center z-9999 p-5",onClick:o,children:e.jsxs("div",{className:"bg-[#1e1e1e] rounded-lg shadow-2xl flex flex-col max-w-[1200px] w-full max-h-[90vh] overflow-hidden",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"flex justify-between items-center px-5 py-4 border-b border-[#333] bg-[#252525]",children:[e.jsxs("h3",{className:"m-0 text-lg font-semibold text-white",children:["Analysis Logs - ",x]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm text-[#ccc] select-none",children:[e.jsx("span",{children:"Log Level:"}),e.jsxs("select",{value:n,onChange:t=>b(t.target.value==="all"?"all":Number(t.target.value)),className:"bg-[#333] text-white border border-[#555] rounded px-2 py-1 text-sm cursor-pointer outline-none transition-all hover:border-[#777] hover:bg-[#3a3a3a] focus:border-blue-600",children:[e.jsx("option",{value:"1",children:"1"}),e.jsx("option",{value:"2",children:"2"}),e.jsx("option",{value:"3",children:"3"}),e.jsx("option",{value:"4",children:"4"}),e.jsx("option",{value:"all",children:"All"})]})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:u,onChange:t=>f(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-refresh"})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:d,onChange:t=>g(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-scroll"})]}),e.jsx("button",{onClick:o,className:"bg-transparent border-none text-[#999] text-2xl cursor-pointer p-0 w-8 h-8 flex items-center justify-center rounded transition-all hover:bg-[#333] hover:text-white",title:"Close (Esc)",children:"✕"})]})]}),e.jsx("pre",{className:"flex-1 m-0 px-5 py-4 overflow-auto font-mono text-[13px] leading-relaxed text-[#d4d4d4] bg-[#1e1e1e] whitespace-pre-wrap wrap-break-word scrollbar-thin scrollbar-thumb-[#424242] scrollbar-track-[#1e1e1e] hover:scrollbar-thumb-[#4f4f4f]",ref:a,children:m})]})})}export{j as L};
@@ -0,0 +1,36 @@
1
+ import{_ as k}from"./preload-helper-ckwbz45p.js";import{j as s}from"./jsx-runtime-D_zvdyIk.js";import{r as o}from"./chunk-JZWAC4HX-BAdwhyCx.js";function C({prompt:R,height:f=300,onClose:h,hideHeader:y}){const w=o.useRef(null),l=o.useRef(null),b=o.useRef(null),g=o.useRef(!1),N=o.useRef(R);o.useEffect(()=>{const m=w.current;if(!m)return;let u=!1,n=null;async function _(){const[a,c]=await Promise.all([k(()=>import("./xterm-BqvuqXEL.js"),[]),k(()=>import("./addon-fit-YJmn1quW.js"),[])]);if(u)return;{let e=document.getElementById("xterm-css");e||(e=document.createElement("style"),e.id="xterm-css",document.head.appendChild(e)),e.textContent=`
2
+ .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
3
+ .xterm.focus, .xterm:focus { outline: none; }
4
+ .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
5
+ .xterm .xterm-helper-textarea { padding: 0; border: 0; margin: 0; position: absolute; opacity: 0; left: -9999em; top: 0; width: 0; height: 0; z-index: -5; white-space: nowrap; overflow: hidden; resize: none; caret-color: transparent !important; clip-path: inset(100%) !important; }
6
+ .xterm .composition-view { background: #000; color: #FFF; display: none; position: absolute; white-space: nowrap; z-index: 1; }
7
+ .xterm .composition-view.active { display: block; }
8
+ .xterm .xterm-viewport { background-color: #000; overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
9
+ .xterm .xterm-screen { position: relative; }
10
+ .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
11
+ .xterm .xterm-scroll-area { visibility: hidden; }
12
+ .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
13
+ .xterm.enable-mouse-events { cursor: default; }
14
+ .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
15
+ .xterm.column-select.focus { cursor: crosshair; }
16
+ .xterm .xterm-accessibility:not(.debug), .xterm .xterm-message { position: absolute; left: 0; top: 0; bottom: 0; right: 0; z-index: 10; color: transparent; pointer-events: none; }
17
+ .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
18
+ .xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
19
+ .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
20
+ .xterm-dim { opacity: 1 !important; }
21
+ .xterm-underline-1 { text-decoration: underline; }
22
+ .xterm-underline-2 { text-decoration: double underline; }
23
+ .xterm-underline-3 { text-decoration: wavy underline; }
24
+ .xterm-underline-4 { text-decoration: dotted underline; }
25
+ .xterm-underline-5 { text-decoration: dashed underline; }
26
+ .xterm-overline { text-decoration: overline; }
27
+ .xterm-strikethrough { text-decoration: line-through; }
28
+ .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
29
+ .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
30
+ .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
31
+ .xterm-decoration-top { z-index: 2; position: relative; }
32
+ `}const t=new a.Terminal({theme:{background:"#1a1a1a",foreground:"#d4d4d4",cursor:"#d4d4d4",selectionBackground:"#264f78"},fontSize:12,fontFamily:"'IBM Plex Mono', 'Menlo', 'Monaco', monospace",cursorBlink:!0,scrollback:5e3,allowProposedApi:!0}),p=new c.FitAddon;t.loadAddon(p),t.open(m),requestAnimationFrame(()=>{try{p.fit()}catch{}}),b.current=t;let x=null;try{const e=await fetch("/api/editor-scenario-prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:N.current})});e.ok&&(x=(await e.json()).promptFile)}catch{}if(u)return;const z=window.location.protocol==="https:"?"wss:":"ws:",E=window.location.host,v=new URLSearchParams;v.set("entityName","inline-claude");const O=`${z}//${E}/ws/terminal?${v.toString()}`,r=new WebSocket(O);l.current=r,r.onopen=()=>{r.send(JSON.stringify({type:"resize",cols:t.cols,rows:t.rows}))};let S=!1;r.onmessage=e=>{try{const i=JSON.parse(e.data);if(i.type==="session-id"&&!S){S=!0,setTimeout(()=>{const P=x?`claude "Read the file at '${x.replace(/'/g,"'\\''")}' for your instructions."`:"claude";r.send(JSON.stringify({type:"input",data:P+"\r"}))},300);return}if(i.type==="output"&&i.data){t.write(i.data);return}}catch{t.write(e.data)}},r.onclose=()=>{g.current||t.write(`\r
33
+ \x1B[90m--- Session ended ---\x1B[0m\r
34
+ `)},r.onerror=()=>{t.write(`\r
35
+ \x1B[31mConnection error\x1B[0m\r
36
+ `)},t.onData(e=>{r.readyState===WebSocket.OPEN&&r.send(JSON.stringify({type:"input",data:e}))}),n=new ResizeObserver(()=>{try{p.fit(),r.readyState===WebSocket.OPEN&&r.send(JSON.stringify({type:"resize",cols:t.cols,rows:t.rows}))}catch{}}),n.observe(m)}return _(),()=>{var a,c;u=!0,g.current=!0,n==null||n.disconnect(),((a=l.current)==null?void 0:a.readyState)===WebSocket.OPEN&&l.current.close(),(c=b.current)==null||c.dispose()}},[]);const d=f==="100%";return s.jsxs("div",{className:y?"":"border-t border-[#2d2d2d]",style:d?{height:"100%",display:"flex",flexDirection:"column"}:void 0,children:[!y&&s.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-[#1e1e1e]",children:[s.jsx("span",{className:"text-[10px] font-medium text-[#00a0c4]",children:"Claude"}),h&&s.jsx("button",{onClick:h,className:"text-gray-500 hover:text-gray-300 text-[10px] bg-transparent border-none cursor-pointer",children:"Close"})]}),s.jsx("div",{ref:w,style:{height:d?void 0:f,flex:d?1:void 0,background:"#1a1a1a",padding:"4px 0",position:"relative",overflow:"hidden"}})]})}export{C as M};
@@ -1,4 +1,4 @@
1
- import{r as t,d as T,j as e}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{c as S}from"./createLucideIcon-CC6AbExI.js";import{C as F}from"./circle-check-BVMi9VA5.js";import{T as k}from"./triangle-alert-BLdiCuG-.js";import{C as E,a as A}from"./copy-n2FB0_Sw.js";/**
1
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{r as t,d as T}from"./chunk-JZWAC4HX-BAdwhyCx.js";import{c as S}from"./createLucideIcon-4ImjHTVC.js";import{C as F}from"./circle-check-DFcQkN5j.js";import{T as k}from"./triangle-alert-DqJ0j69l.js";import{C as E,a as A}from"./copy-C6iF61Xs.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -8,4 +8,4 @@ import{r as t,d as T,j as e}from"./chunk-JZWAC4HX-C4pqxYJB.js";import{c as S}fro
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */const L=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],w=S("settings",L);function Y(r){return r.scenarioName&&r.entityName?`${r.entityName} → "${r.scenarioName}"`:r.entityName?r.entityName:r.scenarioId?`Scenario: ${r.scenarioId.slice(0,8)}...`:r.entitySha?`Entity: ${r.entitySha.slice(0,8)}...`:"General feedback"}function _({content:r,className:x=""}){const[s,o]=t.useState(!1),i=t.useCallback(()=>{navigator.clipboard.writeText(r).then(()=>{o(!0),setTimeout(()=>o(!1),2e3)}).catch(n=>{console.error("Failed to copy:",n)})},[r]);return e.jsx("button",{onClick:i,className:`cursor-pointer flex items-center gap-1 ${x}`,disabled:s,"aria-label":s?"Copied to clipboard":"Copy to clipboard",children:s?e.jsxs(e.Fragment,{children:[e.jsx(E,{size:14}),"Copied"]}):e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14}),"Copy"]})})}function G({isOpen:r,onClose:x,context:s,defaultEmail:o="",screenshotDataUrl:i}){const[n,y]=t.useState(""),[b,I]=t.useState(o),[u,j]=t.useState(!1),[c,f]=t.useState(!1),[M,N]=t.useState(null),[m,h]=t.useState(null),l=T(),d=l.state!=="idle",g=!!(s.scenarioId||s.analysisId),$=s.analysisId||s.scenarioId||"",v=()=>{const a=`/codeyam-diagnose ${$}`;return n.trim()?`${a} ${n.trim()}`:a};if(l.data&&!c&&!m){const a=l.data;a.success&&a.reportId?(f(!0),N(a.reportId)):a.error&&h(a.error)}const D=async()=>{h(null);const a=new FormData;if(a.append("issueType","other"),a.append("description",n),a.append("email",b),a.append("source",s.source),a.append("entitySha",s.entitySha||""),a.append("scenarioId",s.scenarioId||""),a.append("analysisId",s.analysisId||""),a.append("currentUrl",s.currentUrl),a.append("entityName",s.entityName||""),a.append("entityType",s.entityType||""),a.append("scenarioName",s.scenarioName||""),a.append("errorMessage",s.errorMessage||""),i)try{const R=await(await fetch(i)).blob();a.append("screenshot",R,"screenshot.jpg")}catch(C){console.error("Failed to convert screenshot:",C)}l.submit(a,{method:"post",action:"/api/generate-report",encType:"multipart/form-data"})},p=()=>{y(""),j(!1),f(!1),N(null),h(null),x()},z=a=>{a.key==="Escape"&&p()};return r?e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50",onKeyDown:z,children:e.jsxs("div",{className:"bg-white rounded-lg max-w-lg w-full p-6 shadow-xl max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[d?e.jsx("div",{className:"animate-spin",children:e.jsx(w,{size:24,style:{strokeWidth:1.5}})}):c?e.jsx(F,{size:24,style:{color:"#10B981",strokeWidth:1.5}}):e.jsx(B,{size:24,style:{color:"#005C75",strokeWidth:1.5}}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:c?"Report Submitted":"Report Issue"})]}),e.jsx("button",{onClick:p,className:"text-gray-400 hover:text-gray-600 transition-colors cursor-pointer","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),c?e.jsxs("div",{children:[e.jsxs("div",{className:"mb-6 p-4 bg-green-50 rounded-lg border border-green-200",children:[e.jsx("p",{className:"text-sm text-green-800 font-medium mb-1",children:"Thank you for your feedback!"}),e.jsxs("p",{className:"text-xs text-green-700",children:["Report ID:"," ",e.jsx("code",{className:"bg-green-100 px-1 rounded",children:M})]})]}),e.jsx("p",{className:"text-sm text-gray-600 mb-6",children:"The CodeYam team will investigate and may reach out if you provided an email address."}),e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{onClick:p,className:"px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] transition-colors cursor-pointer",children:"Done"})})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"mb-4 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm font-medium text-gray-900",title:`${s.source}${s.entitySha?` • Entity: ${s.entitySha}`:""}${s.scenarioId?` • Scenario: ${s.scenarioId}`:""}${s.analysisId?` • Analysis: ${s.analysisId}`:""}`,children:Y(s)}),e.jsx("button",{type:"button",onClick:()=>j(!u),className:"text-xs text-gray-500 hover:text-gray-700 underline cursor-pointer",children:u?"Hide":"Details"})]}),u&&e.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 text-xs text-gray-600 space-y-1 break-all",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Source:"})," ",s.source]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"URL:"})," ",s.currentUrl]}),s.entitySha&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Entity:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.entitySha})]}),s.scenarioId&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Scenario:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.scenarioId})]}),s.analysisId&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Analysis:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.analysisId})]})]})]}),i&&e.jsxs("div",{className:"mb-4 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[e.jsx("div",{className:"text-xs text-gray-500 mb-2",children:"Screenshot (will be included in report)"}),e.jsx("img",{src:i,alt:"Page screenshot",className:"w-full max-h-[150px] object-contain rounded border border-gray-300"})]}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{htmlFor:"description",className:"block text-sm font-medium text-gray-700 mb-2",children:"What happened?"}),e.jsx("textarea",{id:"description",value:n,onChange:a=>y(a.target.value),placeholder:"Optional: Describe what you expected vs what happened...",rows:3,className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75] resize-none"})]}),g&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-4 p-4 bg-purple-50 rounded-lg border border-purple-200",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-lg",children:"🔧"}),e.jsx("h3",{className:"text-sm font-semibold text-purple-900",children:"Diagnose & Fix (Recommended)"})]}),e.jsx("p",{className:"text-xs text-purple-700 mb-3",children:"Run this command in Claude Code to investigate the issue locally and potentially fix it. A detailed report will also be uploaded."}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"bg-gray-800 text-gray-50 px-3 py-2.5 pr-20 rounded-md text-xs font-mono overflow-x-auto whitespace-nowrap",children:v()}),e.jsx(_,{content:v(),className:"absolute top-1.5 right-2 px-2 py-1 bg-purple-600 text-white border-none rounded text-[11px] font-medium hover:bg-purple-700 transition-colors"})]})]}),e.jsxs("div",{className:"relative my-5",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("div",{className:"w-full border-t border-gray-300"})}),e.jsx("div",{className:"relative flex justify-center",children:e.jsx("span",{className:"bg-white px-3 text-xs text-gray-500 uppercase",children:"or"})})]})]}),e.jsxs("div",{className:g?"opacity-75":"",children:[g&&e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"text-lg",children:"📤"}),e.jsx("h3",{className:"text-sm font-semibold text-gray-700",children:"Quick Report"}),e.jsx("span",{className:"text-xs text-gray-500",children:"(won't investigate locally)"})]}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-700 mb-2",children:"Your email"}),e.jsx("input",{id:"email",type:"email",value:b,onChange:a=>I(a.target.value),placeholder:"you@example.com",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75]"})]}),e.jsxs("div",{className:"mb-4 p-3 bg-amber-50 rounded-lg border border-amber-200 flex gap-2",children:[e.jsx(k,{size:16,className:"flex-shrink-0 mt-0.5",style:{color:"#D97706"}}),e.jsxs("div",{className:"text-xs text-amber-800",children:[e.jsx("p",{className:"font-medium mb-1",children:"Source code will be uploaded"}),e.jsx("p",{children:"This report includes your project source code, git history, and CodeYam logs. Only submit if you're comfortable sharing this with the CodeYam team."})]})]}),d&&e.jsx("div",{className:"mb-4 text-center",children:e.jsx("p",{className:"text-sm text-gray-600",children:l.formData?"Uploading report...":"Creating archive..."})}),m&&e.jsxs("div",{className:"mb-4 p-3 bg-red-50 rounded-lg border border-red-200 flex gap-2",children:[e.jsx(k,{size:16,className:"flex-shrink-0 mt-0.5",style:{color:"#DC2626"}}),e.jsxs("div",{className:"text-xs text-red-800",children:[e.jsx("p",{className:"font-medium mb-1",children:"Upload failed"}),e.jsx("p",{children:m})]})]}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx("button",{onClick:p,disabled:d,className:"px-4 py-2 bg-gray-100 text-gray-700 text-sm font-medium rounded-md hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-gray-300 transition-colors disabled:opacity-50 cursor-pointer",children:"Cancel"}),e.jsx("button",{onClick:()=>void D(),disabled:d,className:"px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:ring-offset-1 transition-colors disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-2 cursor-pointer",children:d?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"animate-spin",children:e.jsx(w,{size:16,style:{strokeWidth:1.5}})}),"Submitting..."]}):m?"Try Again":"Submit Report"})]})]})]})]})}):null}export{B,G as R,w as S};
11
+ */const L=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],w=S("settings",L);function Y(r){return r.scenarioName&&r.entityName?`${r.entityName} → "${r.scenarioName}"`:r.entityName?r.entityName:r.scenarioId?`Scenario: ${r.scenarioId.slice(0,8)}...`:r.entitySha?`Entity: ${r.entitySha.slice(0,8)}...`:"General feedback"}function _({content:r,className:x=""}){const[s,d]=t.useState(!1),i=t.useCallback(()=>{navigator.clipboard.writeText(r).then(()=>{d(!0),setTimeout(()=>d(!1),2e3)}).catch(n=>{console.error("Failed to copy:",n)})},[r]);return e.jsx("button",{onClick:i,className:`cursor-pointer flex items-center gap-1 ${x}`,disabled:s,"aria-label":s?"Copied to clipboard":"Copy to clipboard",children:s?e.jsxs(e.Fragment,{children:[e.jsx(E,{size:14}),"Copied"]}):e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14}),"Copy"]})})}function P({isOpen:r,onClose:x,context:s,defaultEmail:d="",screenshotDataUrl:i}){const[n,y]=t.useState(""),[b,I]=t.useState(d),[u,f]=t.useState(!1),[c,j]=t.useState(!1),[M,N]=t.useState(null),[m,h]=t.useState(null),l=T(),o=l.state!=="idle",g=!!(s.scenarioId||s.analysisId),$=s.analysisId||s.scenarioId||"",v=()=>{const a=`/codeyam-diagnose ${$}`;return n.trim()?`${a} ${n.trim()}`:a};if(l.data&&!c&&!m){const a=l.data;a.success&&a.reportId?(j(!0),N(a.reportId)):a.error&&h(a.error)}const D=async()=>{h(null);const a=new FormData;if(a.append("issueType","other"),a.append("description",n),a.append("email",b),a.append("source",s.source),a.append("entitySha",s.entitySha||""),a.append("scenarioId",s.scenarioId||""),a.append("analysisId",s.analysisId||""),a.append("currentUrl",s.currentUrl),a.append("entityName",s.entityName||""),a.append("entityType",s.entityType||""),a.append("scenarioName",s.scenarioName||""),a.append("errorMessage",s.errorMessage||""),i)try{const R=await(await fetch(i)).blob();a.append("screenshot",R,"screenshot.jpg")}catch(C){console.error("Failed to convert screenshot:",C)}l.submit(a,{method:"post",action:"/api/generate-report",encType:"multipart/form-data"})},p=()=>{y(""),f(!1),j(!1),N(null),h(null),x()},z=a=>{a.key==="Escape"&&p()};return r?e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50",onKeyDown:z,children:e.jsxs("div",{className:"bg-white rounded-lg max-w-lg w-full p-6 shadow-xl max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[o?e.jsx("div",{className:"animate-spin",children:e.jsx(w,{size:24,style:{strokeWidth:1.5}})}):c?e.jsx(F,{size:24,style:{color:"#10B981",strokeWidth:1.5}}):e.jsx(B,{size:24,style:{color:"#005C75",strokeWidth:1.5}}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:c?"Report Submitted":"Report Issue"})]}),e.jsx("button",{onClick:p,className:"text-gray-400 hover:text-gray-600 transition-colors cursor-pointer","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),c?e.jsxs("div",{children:[e.jsxs("div",{className:"mb-6 p-4 bg-green-50 rounded-lg border border-green-200",children:[e.jsx("p",{className:"text-sm text-green-800 font-medium mb-1",children:"Thank you for your feedback!"}),e.jsxs("p",{className:"text-xs text-green-700",children:["Report ID:"," ",e.jsx("code",{className:"bg-green-100 px-1 rounded",children:M})]})]}),e.jsx("p",{className:"text-sm text-gray-600 mb-6",children:"The CodeYam team will investigate and may reach out if you provided an email address."}),e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{onClick:p,className:"px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] transition-colors cursor-pointer",children:"Done"})})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"mb-4 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm font-medium text-gray-900",title:`${s.source}${s.entitySha?` • Entity: ${s.entitySha}`:""}${s.scenarioId?` • Scenario: ${s.scenarioId}`:""}${s.analysisId?` • Analysis: ${s.analysisId}`:""}`,children:Y(s)}),e.jsx("button",{type:"button",onClick:()=>f(!u),className:"text-xs text-gray-500 hover:text-gray-700 underline cursor-pointer",children:u?"Hide":"Details"})]}),u&&e.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 text-xs text-gray-600 space-y-1 break-all",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Source:"})," ",s.source]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"URL:"})," ",s.currentUrl]}),s.entitySha&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Entity:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.entitySha})]}),s.scenarioId&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Scenario:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.scenarioId})]}),s.analysisId&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Analysis:"})," ",e.jsx("code",{className:"bg-gray-100 px-1 rounded",children:s.analysisId})]})]})]}),i&&e.jsxs("div",{className:"mb-4 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[e.jsx("div",{className:"text-xs text-gray-500 mb-2",children:"Screenshot (will be included in report)"}),e.jsx("img",{src:i,alt:"Page screenshot",className:"w-full max-h-[150px] object-contain rounded border border-gray-300"})]}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{htmlFor:"description",className:"block text-sm font-medium text-gray-700 mb-2",children:"What happened?"}),e.jsx("textarea",{id:"description",value:n,onChange:a=>y(a.target.value),placeholder:"Optional: Describe what you expected vs what happened...",rows:3,className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75] resize-none"})]}),g&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-4 p-4 bg-purple-50 rounded-lg border border-purple-200",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-lg",children:"🔧"}),e.jsx("h3",{className:"text-sm font-semibold text-purple-900",children:"Diagnose & Fix (Recommended)"})]}),e.jsx("p",{className:"text-xs text-purple-700 mb-3",children:"Run this command in Claude Code to investigate the issue locally and potentially fix it. A detailed report will also be uploaded."}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"bg-gray-800 text-gray-50 px-3 py-2.5 pr-20 rounded-md text-xs font-mono overflow-x-auto whitespace-nowrap",children:v()}),e.jsx(_,{content:v(),className:"absolute top-1.5 right-2 px-2 py-1 bg-purple-600 text-white border-none rounded text-[11px] font-medium hover:bg-purple-700 transition-colors"})]})]}),e.jsxs("div",{className:"relative my-5",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("div",{className:"w-full border-t border-gray-300"})}),e.jsx("div",{className:"relative flex justify-center",children:e.jsx("span",{className:"bg-white px-3 text-xs text-gray-500 uppercase",children:"or"})})]})]}),e.jsxs("div",{className:g?"opacity-75":"",children:[g&&e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"text-lg",children:"📤"}),e.jsx("h3",{className:"text-sm font-semibold text-gray-700",children:"Quick Report"}),e.jsx("span",{className:"text-xs text-gray-500",children:"(won't investigate locally)"})]}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-700 mb-2",children:"Your email"}),e.jsx("input",{id:"email",type:"email",value:b,onChange:a=>I(a.target.value),placeholder:"you@example.com",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75]"})]}),e.jsxs("div",{className:"mb-4 p-3 bg-amber-50 rounded-lg border border-amber-200 flex gap-2",children:[e.jsx(k,{size:16,className:"flex-shrink-0 mt-0.5",style:{color:"#D97706"}}),e.jsxs("div",{className:"text-xs text-amber-800",children:[e.jsx("p",{className:"font-medium mb-1",children:"Source code will be uploaded"}),e.jsx("p",{children:"This report includes your project source code, git history, and CodeYam logs. Only submit if you're comfortable sharing this with the CodeYam team."})]})]}),o&&e.jsx("div",{className:"mb-4 text-center",children:e.jsx("p",{className:"text-sm text-gray-600",children:l.formData?"Uploading report...":"Creating archive..."})}),m&&e.jsxs("div",{className:"mb-4 p-3 bg-red-50 rounded-lg border border-red-200 flex gap-2",children:[e.jsx(k,{size:16,className:"flex-shrink-0 mt-0.5",style:{color:"#DC2626"}}),e.jsxs("div",{className:"text-xs text-red-800",children:[e.jsx("p",{className:"font-medium mb-1",children:"Upload failed"}),e.jsx("p",{children:m})]})]}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx("button",{onClick:p,disabled:o,className:"px-4 py-2 bg-gray-100 text-gray-700 text-sm font-medium rounded-md hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-gray-300 transition-colors disabled:opacity-50 cursor-pointer",children:"Cancel"}),e.jsx("button",{onClick:()=>void D(),disabled:o,className:"px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:ring-offset-1 transition-colors disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-2 cursor-pointer",children:o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"animate-spin",children:e.jsx(w,{size:16,style:{strokeWidth:1.5}})}),"Submitting..."]}):m?"Try Again":"Submit Report"})]})]})]})]})}):null}export{B,P as R,w as S};
@@ -0,0 +1 @@
1
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{r as a}from"./chunk-JZWAC4HX-BAdwhyCx.js";function j({screenshotPath:l,cacheBuster:o,alt:x,className:f="",title:n}){const[i,s]=a.useState("loading"),[c,r]=a.useState(!1),d=a.useRef(null),u=o?`/api/screenshot/${l}?cb=${o}`:`/api/screenshot/${l}`,m=()=>{s("success"),r(!0)},h=()=>{s("error"),r(!1)};return a.useEffect(()=>{s("loading"),r(!1);const t=d.current;t!=null&&t.complete&&(t.naturalHeight!==0?(s("success"),r(!0)):(s("error"),r(!1)))},[u]),l?e.jsxs("div",{className:"relative w-full h-full flex items-center justify-center",title:n,children:[e.jsx("img",{ref:d,src:u,alt:x,onLoad:m,onError:h,className:f||"max-w-full max-h-full object-contain",style:{visibility:c?"visible":"hidden",position:c?"relative":"absolute"}}),i==="loading"&&e.jsx("div",{className:"absolute inset-0 bg-gray-100 animate-pulse rounded flex items-center justify-center",children:e.jsx("svg",{className:"w-8 h-8 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})}),i==="error"&&e.jsxs("div",{className:"absolute inset-0 border-2 border-dashed border-gray-300 bg-gray-50 rounded flex flex-col items-center justify-center text-xs gap-1",children:[e.jsx("span",{className:"text-2xl text-gray-400",children:"📷"}),e.jsx("span",{className:"text-gray-400 whitespace-nowrap",children:"No Screenshot"})]})]}):e.jsx("div",{className:"w-full h-full border-2 border-dashed border-gray-300 bg-gray-50 rounded flex flex-col items-center justify-center text-xs gap-1",title:n,children:e.jsx("span",{className:"text-2xl text-gray-400",children:"📷"})})}export{j as S};