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

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 (1404) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +32 -29
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +4 -4
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  9. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +217 -13
  11. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  16. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  17. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1229 -30
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +247 -66
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +2136 -349
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +7 -2
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +296 -35
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +120 -76
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +140 -20
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  36. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  37. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  38. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  39. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  40. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  41. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  42. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  43. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
  44. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
  45. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  46. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1497 -88
  47. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +677 -0
  49. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  50. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  51. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  52. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  53. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  54. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  55. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  64. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  65. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  66. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  67. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  68. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  69. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  70. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  71. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  72. package/analyzer-template/packages/analyze/index.ts +2 -0
  73. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  74. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +132 -33
  75. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  76. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  77. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  80. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  81. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  82. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  83. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  84. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  85. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  86. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +466 -270
  87. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +42 -1
  88. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +15 -0
  89. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  90. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  91. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  92. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  93. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  94. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  95. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  96. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +201 -46
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +593 -84
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +460 -84
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +166 -0
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +35 -129
  105. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  106. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +990 -141
  107. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  108. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  109. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  110. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  111. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  112. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  113. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  114. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  115. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  116. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  117. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  118. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  121. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  122. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  124. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  125. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  126. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  127. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  128. package/analyzer-template/packages/aws/package.json +10 -10
  129. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  130. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  131. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  132. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  133. package/analyzer-template/packages/database/index.ts +1 -0
  134. package/analyzer-template/packages/database/package.json +4 -4
  135. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  136. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  137. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  138. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  139. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  140. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  141. package/analyzer-template/packages/database/src/lib/kysely/db.ts +22 -1
  142. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  143. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  144. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  145. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  146. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  147. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  148. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  149. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  150. package/analyzer-template/packages/database/src/lib/loadCommits.ts +58 -19
  151. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -9
  152. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  153. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +5 -6
  154. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  155. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  156. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  157. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +96 -152
  158. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  159. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  160. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  161. package/analyzer-template/packages/generate/index.ts +3 -0
  162. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  163. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +221 -0
  164. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  165. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  166. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  167. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  168. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  169. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  170. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  171. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  176. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  177. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  179. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  184. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +16 -1
  186. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  188. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  189. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  190. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  192. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  194. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  196. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  197. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  198. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  199. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  200. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  201. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  202. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  203. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  204. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  205. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  206. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +7 -6
  207. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  209. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  210. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  211. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  212. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  213. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  214. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  215. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  216. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  217. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  218. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  219. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  220. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  221. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +45 -14
  223. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  224. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  225. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  226. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -10
  227. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  228. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  229. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  230. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  231. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  232. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +5 -5
  233. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  234. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  235. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  236. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  237. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  238. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  239. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  240. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  241. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  242. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -89
  243. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  244. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  245. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  246. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  247. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  248. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  249. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  250. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  251. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  252. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  253. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  254. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  255. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  256. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  257. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  258. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  259. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +217 -0
  260. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  261. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  262. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  263. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  264. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  265. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  266. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  267. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  268. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  269. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  270. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  271. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  272. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  273. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  274. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  275. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  276. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  277. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  278. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  279. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  280. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  281. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  282. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  283. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  284. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  285. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  286. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  287. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  288. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  289. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  290. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  291. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  292. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  293. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  294. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +19 -54
  295. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  296. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  297. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  298. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  299. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  300. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  301. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  302. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  303. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  304. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  305. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  306. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  307. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  308. package/analyzer-template/packages/github/package.json +2 -2
  309. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  310. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  311. package/analyzer-template/packages/process/index.ts +2 -0
  312. package/analyzer-template/packages/process/package.json +12 -0
  313. package/analyzer-template/packages/process/tsconfig.json +8 -0
  314. package/analyzer-template/packages/types/index.ts +3 -6
  315. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  316. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  317. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  318. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  319. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  320. package/analyzer-template/packages/types/src/types/Scenario.ts +19 -77
  321. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  322. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  323. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  324. package/analyzer-template/packages/ui-components/package.json +1 -1
  325. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  326. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  327. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  328. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  329. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  330. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  331. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  332. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  333. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  334. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  335. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  336. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  337. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  338. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  339. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  340. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  341. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +19 -54
  342. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  343. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  344. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  345. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  346. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  347. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  348. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  349. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  350. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  351. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  352. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  353. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  354. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  355. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  356. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  357. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  358. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  359. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  360. package/analyzer-template/playwright/capture.ts +57 -26
  361. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  362. package/analyzer-template/playwright/captureStatic.ts +1 -1
  363. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  364. package/analyzer-template/playwright/waitForServer.ts +21 -6
  365. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  366. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  367. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  368. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  369. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  370. package/analyzer-template/project/constructMockCode.ts +1341 -198
  371. package/analyzer-template/project/controller/startController.ts +16 -1
  372. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  373. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  374. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  375. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  376. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  377. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  378. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  379. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  380. package/analyzer-template/project/orchestrateCapture.ts +85 -10
  381. package/analyzer-template/project/reconcileMockDataKeys.ts +231 -84
  382. package/analyzer-template/project/runAnalysis.ts +11 -0
  383. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  384. package/analyzer-template/project/start.ts +54 -15
  385. package/analyzer-template/project/startScenarioCapture.ts +15 -0
  386. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  387. package/analyzer-template/project/writeMockDataTsx.ts +362 -32
  388. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  389. package/analyzer-template/project/writeScenarioComponents.ts +466 -133
  390. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  391. package/analyzer-template/project/writeSimpleRoot.ts +28 -42
  392. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  393. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  394. package/analyzer-template/tsconfig.json +14 -1
  395. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  396. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  397. package/background/src/lib/local/execAsync.js +1 -1
  398. package/background/src/lib/local/execAsync.js.map +1 -1
  399. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  400. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  401. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  402. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  403. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  404. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  405. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  406. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  407. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  408. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  409. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  410. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  411. package/background/src/lib/virtualized/project/constructMockCode.js +1179 -147
  412. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  413. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  414. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  415. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  416. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  417. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  418. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  419. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  420. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  421. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  422. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  423. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  424. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  425. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  426. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  427. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  428. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  429. package/background/src/lib/virtualized/project/orchestrateCapture.js +69 -11
  430. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  431. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +198 -51
  432. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  433. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  434. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  435. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  436. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  437. package/background/src/lib/virtualized/project/start.js +49 -15
  438. package/background/src/lib/virtualized/project/start.js.map +1 -1
  439. package/background/src/lib/virtualized/project/startScenarioCapture.js +12 -0
  440. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  441. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  442. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  443. package/background/src/lib/virtualized/project/writeMockDataTsx.js +313 -27
  444. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  445. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  446. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  447. package/background/src/lib/virtualized/project/writeScenarioComponents.js +359 -110
  448. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  449. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  450. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  451. package/background/src/lib/virtualized/project/writeSimpleRoot.js +28 -41
  452. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  453. package/codeyam-cli/scripts/apply-setup.js +386 -9
  454. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  455. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  456. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  457. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  458. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  459. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  460. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  461. package/codeyam-cli/src/cli.js +47 -23
  462. package/codeyam-cli/src/cli.js.map +1 -1
  463. package/codeyam-cli/src/codeyam-cli.js +18 -2
  464. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  465. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  466. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  467. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  468. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  469. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  470. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  471. package/codeyam-cli/src/commands/analyze.js +22 -10
  472. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  473. package/codeyam-cli/src/commands/baseline.js +176 -0
  474. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  475. package/codeyam-cli/src/commands/debug.js +37 -23
  476. package/codeyam-cli/src/commands/debug.js.map +1 -1
  477. package/codeyam-cli/src/commands/default.js +43 -35
  478. package/codeyam-cli/src/commands/default.js.map +1 -1
  479. package/codeyam-cli/src/commands/editor.js +4534 -0
  480. package/codeyam-cli/src/commands/editor.js.map +1 -0
  481. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  482. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  483. package/codeyam-cli/src/commands/init.js +147 -292
  484. package/codeyam-cli/src/commands/init.js.map +1 -1
  485. package/codeyam-cli/src/commands/memory.js +278 -0
  486. package/codeyam-cli/src/commands/memory.js.map +1 -0
  487. package/codeyam-cli/src/commands/recapture.js +31 -18
  488. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  489. package/codeyam-cli/src/commands/report.js +46 -1
  490. package/codeyam-cli/src/commands/report.js.map +1 -1
  491. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  492. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  493. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  494. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  495. package/codeyam-cli/src/commands/start.js +8 -12
  496. package/codeyam-cli/src/commands/start.js.map +1 -1
  497. package/codeyam-cli/src/commands/status.js +23 -1
  498. package/codeyam-cli/src/commands/status.js.map +1 -1
  499. package/codeyam-cli/src/commands/telemetry.js +37 -0
  500. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  501. package/codeyam-cli/src/commands/test-startup.js +3 -1
  502. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  503. package/codeyam-cli/src/commands/verify.js +14 -2
  504. package/codeyam-cli/src/commands/verify.js.map +1 -1
  505. package/codeyam-cli/src/commands/wipe.js +108 -0
  506. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  507. package/codeyam-cli/src/data/techStacks.js +77 -0
  508. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  509. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  510. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  511. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  512. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  513. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  514. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  515. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  516. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  517. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +1980 -0
  518. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  519. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  520. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  521. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  522. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  523. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  524. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  525. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  526. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  527. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  528. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  529. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +315 -0
  530. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  531. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  532. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  533. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  534. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  535. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  536. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  537. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  538. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  539. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  540. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  541. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  542. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  543. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  544. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  545. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  546. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  547. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  548. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  549. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  550. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  551. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1520 -0
  552. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  553. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +280 -0
  554. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  555. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  556. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  557. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  558. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  559. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  560. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  561. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1857 -0
  562. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  563. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  564. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  565. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  566. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  567. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  568. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  569. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  570. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  571. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  572. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  573. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  574. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  575. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  576. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  577. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  578. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  579. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  580. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  581. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +493 -0
  582. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  583. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  584. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  585. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +175 -82
  586. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  587. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  588. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  589. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  590. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  591. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  592. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  593. package/codeyam-cli/src/utils/analysisRunner.js +32 -16
  594. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  595. package/codeyam-cli/src/utils/analyzer.js +16 -0
  596. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  597. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  598. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  599. package/codeyam-cli/src/utils/backgroundServer.js +202 -29
  600. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  601. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  602. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  603. package/codeyam-cli/src/utils/database.js +128 -7
  604. package/codeyam-cli/src/utils/database.js.map +1 -1
  605. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  606. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  607. package/codeyam-cli/src/utils/devServerState.js +71 -0
  608. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  609. package/codeyam-cli/src/utils/editorApi.js +79 -0
  610. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  611. package/codeyam-cli/src/utils/editorAudit.js +388 -0
  612. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  613. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  614. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  615. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  616. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  617. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  618. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  619. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  620. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  621. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  622. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  623. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  624. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  625. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  626. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  627. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  628. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  629. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  630. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  631. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  632. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  633. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  634. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  635. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  636. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  637. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  638. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  639. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  640. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  641. package/codeyam-cli/src/utils/editorScenarios.js +553 -0
  642. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  643. package/codeyam-cli/src/utils/editorSeedAdapter.js +422 -0
  644. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  645. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  646. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  647. package/codeyam-cli/src/utils/entityChangeStatus.js +366 -0
  648. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  649. package/codeyam-cli/src/utils/entityChangeStatus.server.js +196 -0
  650. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  651. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  652. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  653. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  654. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  655. package/codeyam-cli/src/utils/generateReport.js +4 -3
  656. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  657. package/codeyam-cli/src/utils/git.js +182 -0
  658. package/codeyam-cli/src/utils/git.js.map +1 -0
  659. package/codeyam-cli/src/utils/install-skills.js +129 -39
  660. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  661. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  662. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  663. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  664. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  665. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  666. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  667. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  668. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  669. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  670. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  671. package/codeyam-cli/src/utils/progress.js +8 -1
  672. package/codeyam-cli/src/utils/progress.js.map +1 -1
  673. package/codeyam-cli/src/utils/project.js +15 -5
  674. package/codeyam-cli/src/utils/project.js.map +1 -1
  675. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  676. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  677. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  678. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  679. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  680. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  681. package/codeyam-cli/src/utils/queue/job.js +179 -1
  682. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  683. package/codeyam-cli/src/utils/queue/manager.js +7 -0
  684. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  685. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  686. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  687. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  688. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  689. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  690. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  691. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  692. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  693. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  694. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  695. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  696. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  697. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  698. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  699. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  700. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  701. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  702. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  703. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  704. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  705. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  706. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  707. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  708. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  709. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  710. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  711. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  712. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  713. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  714. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  715. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  716. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  717. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  718. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  719. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  720. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  721. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  722. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  723. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  724. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  725. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  726. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  727. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  728. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  729. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  730. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  731. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  732. package/codeyam-cli/src/utils/rules/index.js +7 -0
  733. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  734. package/codeyam-cli/src/utils/rules/parser.js +93 -0
  735. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  736. package/codeyam-cli/src/utils/rules/pathMatcher.js +49 -0
  737. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  738. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  739. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  740. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  741. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  742. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  743. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  744. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  745. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  746. package/codeyam-cli/src/utils/scenarioCoverage.js +74 -0
  747. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  748. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  749. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  750. package/codeyam-cli/src/utils/scenariosManifest.js +249 -0
  751. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  752. package/codeyam-cli/src/utils/serverState.js +94 -12
  753. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  754. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +96 -45
  755. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  756. package/codeyam-cli/src/utils/simulationGateMiddleware.js +166 -0
  757. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  758. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  759. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  760. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  761. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  762. package/codeyam-cli/src/utils/telemetry.js +106 -0
  763. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  764. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  765. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  766. package/codeyam-cli/src/utils/testRunner.js +158 -0
  767. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  768. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  769. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  770. package/codeyam-cli/src/utils/versionInfo.js +67 -15
  771. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  772. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  773. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  774. package/codeyam-cli/src/utils/wipe.js +128 -0
  775. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  776. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  777. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  778. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  779. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  780. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  781. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  782. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +628 -0
  783. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  784. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  785. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  786. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  787. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  788. package/codeyam-cli/src/webserver/app/lib/database.js +129 -50
  789. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  790. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  791. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  792. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  793. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  794. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  795. package/codeyam-cli/src/webserver/backgroundServer.js +182 -18
  796. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  797. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  798. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  799. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CzTDWkF2.js +1 -0
  800. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BFbq6iFk.js +11 -0
  801. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  802. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-B6OMi58N.js +41 -0
  803. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-DuYodzo1.js +1 -0
  804. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CXo9EeCl.js +25 -0
  805. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DYCNb2It.js +3 -0
  806. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-By5zI316.js} +1 -1
  807. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-CZgY3sxX.js} +3 -3
  808. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-CnYYwRDw.js +11 -0
  809. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CDoF7ZpU.js +1 -0
  810. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DrnfvaLL.js +10 -0
  811. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +34 -0
  812. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  813. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-DRKR9T0U.js +1 -0
  814. package/codeyam-cli/src/webserver/build/client/assets/_index-ClR-g3tY.js +11 -0
  815. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DTH6ydEA.js +27 -0
  816. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  817. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  818. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-74hnHF59.js +1 -0
  819. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  820. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8CYhCO9.js +22 -0
  821. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  822. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  823. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  824. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  825. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  826. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  827. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  828. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  829. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  830. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  831. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  832. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  833. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  834. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  835. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  836. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  837. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  838. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  839. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  840. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  841. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  842. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  843. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  844. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  845. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  846. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  847. package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
  848. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  849. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  850. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  851. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  852. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  853. package/codeyam-cli/src/webserver/build/client/assets/book-open-CLaoh4ac.js +6 -0
  854. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-BZ2DZxbW.js} +2 -2
  855. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BBXArFPl.js +43 -0
  856. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-CT4unAk-.js} +2 -2
  857. package/codeyam-cli/src/webserver/build/client/assets/copy-zK0B6Nu-.js +11 -0
  858. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DJB0YQJL.js +41 -0
  859. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  860. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  861. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CkXFP_i-.js +1 -0
  862. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +1 -0
  863. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DYqG1D_d.js +58 -0
  864. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DggyRwOr.js +41 -0
  865. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-BqAN7hyG.js} +13 -13
  866. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-D1eikpe1.js +6 -0
  867. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js +6 -0
  868. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CJX6kkkV.js +6 -0
  869. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-BhVjZhKg.js} +2 -2
  870. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-_gzKltPN.js} +6 -6
  871. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  872. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  873. package/codeyam-cli/src/webserver/build/client/assets/files-CV_17tZS.js +1 -0
  874. package/codeyam-cli/src/webserver/build/client/assets/git-D-YXmMbR.js +1 -0
  875. package/codeyam-cli/src/webserver/build/client/assets/globals-DRvOjyO3.css +1 -0
  876. package/codeyam-cli/src/webserver/build/client/assets/index-Blo6EK8G.js +15 -0
  877. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-BsX0F-9C.js} +1 -1
  878. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-CCrgCshv.js} +1 -1
  879. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  880. package/codeyam-cli/src/webserver/build/client/assets/labs-Byazq8Pv.js +1 -0
  881. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-DVQ0oHR7.js} +2 -2
  882. package/codeyam-cli/src/webserver/build/client/assets/manifest-f4212c17.js +1 -0
  883. package/codeyam-cli/src/webserver/build/client/assets/memory-b-VmA2Vj.js +101 -0
  884. package/codeyam-cli/src/webserver/build/client/assets/pause-DGcndCAa.js +11 -0
  885. package/codeyam-cli/src/webserver/build/client/assets/root-F-k2uYj5.js +67 -0
  886. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-C0Uw0bcK.js} +2 -2
  887. package/codeyam-cli/src/webserver/build/client/assets/settings-OoNgHIfW.js +1 -0
  888. package/codeyam-cli/src/webserver/build/client/assets/simulations-Bcemfu8a.js +1 -0
  889. package/codeyam-cli/src/webserver/build/client/assets/terminal-BgMmG7R9.js +11 -0
  890. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-Cs87hJYK.js} +2 -2
  891. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BR3Rs7JY.js +1 -0
  892. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +2 -0
  893. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BermyNU5.js +1 -0
  894. package/codeyam-cli/src/webserver/build/client/assets/useToast-a_QN_W9_.js +1 -0
  895. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  896. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  897. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-if8kM_1Q.js +13 -0
  898. package/codeyam-cli/src/webserver/build/server/assets/index-CHymws6l.js +1 -0
  899. package/codeyam-cli/src/webserver/build/server/assets/init-D3HkMDbI.js +10 -0
  900. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  901. package/codeyam-cli/src/webserver/build/server/assets/server-build-DTCzJQiH.js +551 -0
  902. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  903. package/codeyam-cli/src/webserver/build-info.json +5 -5
  904. package/codeyam-cli/src/webserver/devServer.js +39 -5
  905. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  906. package/codeyam-cli/src/webserver/editorProxy.js +976 -0
  907. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  908. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  909. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  910. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  911. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  912. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  913. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  914. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  915. package/codeyam-cli/src/webserver/server.js +376 -26
  916. package/codeyam-cli/src/webserver/server.js.map +1 -1
  917. package/codeyam-cli/src/webserver/terminalServer.js +831 -0
  918. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  919. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  920. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  921. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  922. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  923. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  924. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  925. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  926. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  927. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  928. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  929. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  930. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  931. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  932. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  933. package/codeyam-cli/templates/codeyam-editor-claude.md +147 -0
  934. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  935. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  936. package/codeyam-cli/templates/editor-step-hook.py +321 -0
  937. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  938. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  939. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  940. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  941. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  942. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  943. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  944. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  945. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  946. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  947. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  948. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  949. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  950. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  951. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  952. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  953. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  954. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  955. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  956. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  957. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  958. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  959. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  960. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  961. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  962. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  963. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  964. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  965. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  966. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  967. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  968. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  969. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  970. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  971. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  972. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  973. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  974. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  975. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  976. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  977. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  978. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  979. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  980. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +127 -0
  981. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  982. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  983. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  984. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  985. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  986. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  987. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  988. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  989. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  990. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  991. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  992. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  993. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  994. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  995. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  996. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  997. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  998. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  999. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  1000. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  1001. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  1002. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  1003. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  1004. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  1005. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  1006. package/codeyam-cli/templates/rule-reflection-hook.py +647 -0
  1007. package/codeyam-cli/templates/rules-instructions.md +78 -0
  1008. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  1009. package/codeyam-cli/templates/{codeyam-debug-skill.md → skills/codeyam-debug/SKILL.md} +48 -4
  1010. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  1011. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +211 -0
  1012. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  1013. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  1014. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  1015. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  1016. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  1017. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  1018. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  1019. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  1020. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  1021. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  1022. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  1023. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  1024. package/codeyam-cli/templates/{codeyam-setup-skill.md → skills/codeyam-setup/SKILL.md} +151 -4
  1025. package/codeyam-cli/templates/{codeyam-sim-skill.md → skills/codeyam-sim/SKILL.md} +1 -1
  1026. package/codeyam-cli/templates/{codeyam-test-skill.md → skills/codeyam-test/SKILL.md} +1 -1
  1027. package/codeyam-cli/templates/{codeyam-verify-skill.md → skills/codeyam-verify/SKILL.md} +1 -1
  1028. package/package.json +35 -24
  1029. package/packages/ai/index.js +8 -6
  1030. package/packages/ai/index.js.map +1 -1
  1031. package/packages/ai/src/lib/analyzeScope.js +179 -13
  1032. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  1033. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  1034. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  1035. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +160 -13
  1036. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  1037. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  1038. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  1039. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  1040. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  1041. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  1042. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  1043. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  1044. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  1045. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  1046. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  1047. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  1048. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  1049. package/packages/ai/src/lib/astScopes/processExpression.js +944 -30
  1050. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  1051. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  1052. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  1053. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  1054. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  1055. package/packages/ai/src/lib/completionCall.js +188 -38
  1056. package/packages/ai/src/lib/completionCall.js.map +1 -1
  1057. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1693 -206
  1058. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  1059. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +7 -2
  1060. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  1061. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +230 -23
  1062. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  1063. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +77 -55
  1064. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  1065. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  1066. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  1067. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  1068. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  1069. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  1070. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  1071. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +122 -14
  1072. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  1073. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  1074. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  1075. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  1076. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  1077. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  1078. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  1079. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  1080. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  1081. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  1082. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  1083. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  1084. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  1085. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  1086. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  1087. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  1088. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  1089. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  1090. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  1091. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  1092. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  1093. package/packages/ai/src/lib/deepEqual.js +32 -0
  1094. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  1095. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  1096. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  1097. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  1098. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  1099. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
  1100. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  1101. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  1102. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  1103. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  1104. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  1105. package/packages/ai/src/lib/generateEntityScenarioData.js +1185 -83
  1106. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  1107. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  1108. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  1109. package/packages/ai/src/lib/generateExecutionFlows.js +484 -0
  1110. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  1111. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  1112. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  1113. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  1114. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  1115. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  1116. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  1117. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  1118. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  1119. package/packages/ai/src/lib/isolateScopes.js +270 -7
  1120. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  1121. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  1122. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  1123. package/packages/ai/src/lib/mergeStatements.js +88 -46
  1124. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  1125. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  1126. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  1127. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  1128. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  1129. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  1130. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  1131. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
  1132. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  1133. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  1134. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  1135. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  1136. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  1137. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  1138. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  1139. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  1140. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  1141. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  1142. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  1143. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  1144. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  1145. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  1146. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  1147. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  1148. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  1149. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  1150. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  1151. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  1152. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  1153. package/packages/analyze/index.js +1 -0
  1154. package/packages/analyze/index.js.map +1 -1
  1155. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  1156. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  1157. package/packages/analyze/src/lib/ProjectAnalyzer.js +109 -30
  1158. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  1159. package/packages/analyze/src/lib/analysisContext.js +30 -5
  1160. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  1161. package/packages/analyze/src/lib/asts/index.js +4 -2
  1162. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  1163. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  1164. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  1165. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  1166. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  1167. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  1168. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  1169. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  1170. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  1171. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  1172. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  1173. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  1174. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  1175. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  1176. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  1177. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  1178. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  1179. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  1180. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  1181. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +211 -54
  1182. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  1183. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +31 -1
  1184. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  1185. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +11 -0
  1186. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  1187. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  1188. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  1189. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  1190. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  1191. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  1192. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  1193. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  1194. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  1195. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  1196. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  1197. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  1198. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  1199. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  1200. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  1201. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  1202. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  1203. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  1204. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  1205. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +170 -40
  1206. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  1207. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  1208. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  1209. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +480 -71
  1210. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  1211. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  1212. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  1213. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +333 -66
  1214. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  1215. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +104 -0
  1216. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  1217. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +27 -98
  1218. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  1219. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  1220. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  1221. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +817 -120
  1222. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  1223. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  1224. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  1225. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  1226. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  1227. package/packages/analyze/src/lib/index.js +1 -0
  1228. package/packages/analyze/src/lib/index.js.map +1 -1
  1229. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  1230. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  1231. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  1232. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  1233. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  1234. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  1235. package/packages/database/index.js +1 -0
  1236. package/packages/database/index.js.map +1 -1
  1237. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  1238. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  1239. package/packages/database/src/lib/analysisToDb.js +1 -1
  1240. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  1241. package/packages/database/src/lib/branchToDb.js +1 -1
  1242. package/packages/database/src/lib/branchToDb.js.map +1 -1
  1243. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  1244. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  1245. package/packages/database/src/lib/commitToDb.js +1 -1
  1246. package/packages/database/src/lib/commitToDb.js.map +1 -1
  1247. package/packages/database/src/lib/fileToDb.js +1 -1
  1248. package/packages/database/src/lib/fileToDb.js.map +1 -1
  1249. package/packages/database/src/lib/kysely/db.js +16 -1
  1250. package/packages/database/src/lib/kysely/db.js.map +1 -1
  1251. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  1252. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  1253. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  1254. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  1255. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  1256. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  1257. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  1258. package/packages/database/src/lib/loadAnalyses.js +45 -2
  1259. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  1260. package/packages/database/src/lib/loadAnalysis.js +8 -0
  1261. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  1262. package/packages/database/src/lib/loadBranch.js +11 -1
  1263. package/packages/database/src/lib/loadBranch.js.map +1 -1
  1264. package/packages/database/src/lib/loadCommit.js +7 -0
  1265. package/packages/database/src/lib/loadCommit.js.map +1 -1
  1266. package/packages/database/src/lib/loadCommits.js +45 -14
  1267. package/packages/database/src/lib/loadCommits.js.map +1 -1
  1268. package/packages/database/src/lib/loadEntities.js +23 -10
  1269. package/packages/database/src/lib/loadEntities.js.map +1 -1
  1270. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  1271. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  1272. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +5 -5
  1273. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  1274. package/packages/database/src/lib/projectToDb.js +1 -1
  1275. package/packages/database/src/lib/projectToDb.js.map +1 -1
  1276. package/packages/database/src/lib/saveFiles.js +1 -1
  1277. package/packages/database/src/lib/saveFiles.js.map +1 -1
  1278. package/packages/database/src/lib/scenarioToDb.js +1 -1
  1279. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  1280. package/packages/database/src/lib/updateCommitMetadata.js +76 -89
  1281. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  1282. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  1283. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  1284. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  1285. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  1286. package/packages/generate/index.js +3 -0
  1287. package/packages/generate/index.js.map +1 -1
  1288. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  1289. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  1290. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +217 -0
  1291. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  1292. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  1293. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  1294. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  1295. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  1296. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  1297. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  1298. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  1299. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  1300. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  1301. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  1302. package/packages/process/index.js +3 -0
  1303. package/packages/process/index.js.map +1 -0
  1304. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  1305. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  1306. package/packages/process/src/ProcessManager.js.map +1 -0
  1307. package/packages/process/src/index.js.map +1 -0
  1308. package/packages/process/src/managedExecAsync.js.map +1 -0
  1309. package/packages/types/index.js +0 -1
  1310. package/packages/types/index.js.map +1 -1
  1311. package/packages/types/src/enums/ProjectFramework.js +2 -0
  1312. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  1313. package/packages/types/src/types/Scenario.js +1 -21
  1314. package/packages/types/src/types/Scenario.js.map +1 -1
  1315. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  1316. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  1317. package/packages/utils/src/lib/safeFileName.js +29 -3
  1318. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  1319. package/scripts/npm-post-install.cjs +34 -0
  1320. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  1321. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
  1322. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
  1323. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  1324. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  1325. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  1326. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  1327. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  1328. package/analyzer-template/process/README.md +0 -507
  1329. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  1330. package/background/src/lib/process/ProcessManager.js.map +0 -1
  1331. package/background/src/lib/process/index.js.map +0 -1
  1332. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  1333. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  1334. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  1335. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
  1336. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
  1337. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  1338. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  1339. package/codeyam-cli/src/commands/list.js +0 -31
  1340. package/codeyam-cli/src/commands/list.js.map +0 -1
  1341. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  1342. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  1343. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  1344. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  1345. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
  1346. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CzGX-miz.js +0 -1
  1347. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
  1348. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
  1349. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +0 -3
  1350. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
  1351. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +0 -1
  1352. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  1353. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-6J7zDUD5.js +0 -1
  1354. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  1355. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
  1356. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  1357. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +0 -21
  1358. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  1359. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
  1360. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  1361. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
  1362. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +0 -1
  1363. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
  1364. package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +0 -15
  1365. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
  1366. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  1367. package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +0 -1
  1368. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
  1369. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
  1370. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  1371. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
  1372. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
  1373. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BqPPNjAl.js +0 -2
  1374. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
  1375. package/codeyam-cli/src/webserver/build/client/assets/useToast-DWHcCcl1.js +0 -1
  1376. package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +0 -1
  1377. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
  1378. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  1379. package/codeyam-cli/templates/debug-codeyam.md +0 -620
  1380. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  1381. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  1382. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
  1383. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  1384. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
  1385. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  1386. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  1387. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  1388. package/packages/ai/src/lib/isFrontend.js +0 -5
  1389. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  1390. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  1391. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  1392. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  1393. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  1394. package/scripts/finalize-analyzer.cjs +0 -81
  1395. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  1396. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  1397. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  1398. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  1399. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  1400. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.dev-mode-events-l0sNRNKZ.js} +0 -0
  1401. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.editor-audit-l0sNRNKZ.js} +0 -0
  1402. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  1403. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  1404. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -0,0 +1,58 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Blo6EK8G.js","assets/jsx-runtime-D_zvdyIk.js","assets/chunk-JZWAC4HX-BBXArFPl.js"])))=>i.map(i=>d[i]);
2
+ var vs=Object.defineProperty;var Ns=(t,s,n)=>s in t?vs(t,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[s]=n;var kt=(t,s,n)=>Ns(t,typeof s!="symbol"?s+"":s,n);import{r,w as ws,u as Ss,b as ks,a as Cs,c as Ps,O as Es}from"./chunk-JZWAC4HX-BBXArFPl.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{u as Ms,C as Is}from"./useCustomSizes-BR3Rs7JY.js";import{g as Ts,s as $s,r as Ke,b as Qe,c as As,l as Rs,d as Ls,e as _s,f as Ds,a as Fs,T as Bs,D as Os}from"./editorPreview-DggyRwOr.js";import{C as ge}from"./CopyButton-CzTDWkF2.js";import{_ as et}from"./preload-helper-ckwbz45p.js";import{c as zs}from"./cy-logo-cli-DcX-ZS3p.js";import{u as Ws,S as Ct}from"./Spinner-Df3UCi8k.js";import"./copy-zK0B6Nu-.js";import"./createLucideIcon-DJB0YQJL.js";import"./useLastLogLine-BxxP_XF9.js";function Me(t){var l;if(!t.startsWith("app/")&&!t.startsWith("("))return"/";const n=t.replace(/^app\//,"").split("/"),a=n.pop(),c=((l=a.match(/\.(tsx?|jsx?|js)$/))==null?void 0:l[0])||"",o=a.slice(0,-c.length);let i;return o==="page"||o==="index"?i=n:i=[...n,o],i=i.filter(m=>!m.startsWith("(")),i.length===0?"/":"/"+i.join("/")}function Ie(t){return t==="/"?"Home":t.replace(/^\//,"").split("/").map(n=>n.startsWith("[")?n:n.charAt(0).toUpperCase()+n.slice(1)).join(" / ")}function De(t){if(!t||t==="/")return"Home";const s=t.split("?")[0].replace(/^\//,"");if(!s)return"Home";const n=s.split("/")[0].replace(/\.[^.]+$/,"");return n.charAt(0).toUpperCase()+n.slice(1)}function Ot(t){return t?t.includes("/isolated-components"):!1}function Us(t,s){return!s||Object.keys(s).length===0?t:t.filter(n=>s[n.name])}const _e=[{name:"Desktop",width:1440,height:900},{name:"Laptop",width:1024,height:768},{name:"Tablet",width:768,height:1024},{name:"Mobile",width:375,height:667}];function Hs(t){if(!t)return _e;const s=Object.entries(t).map(([a,c])=>({name:a,width:c.width,height:c.height})),n=new Set(s.map(a=>a.name));return[...s,..._e.filter(a=>!n.has(a.name))]}function Js({featureName:t,editorStep:s,editorStepLabel:n,onContinue:a}){const c=r.useCallback(o=>{o.key==="Enter"&&(o.preventDefault(),a())},[a]);return r.useEffect(()=>(window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)),[c]),e.jsx("div",{className:"flex items-center justify-center h-full bg-[#1e1e1e] text-[#d4d4d4]",children:e.jsxs("div",{className:"max-w-md w-full mx-4 p-6 bg-[#252526] border border-[#3d3d3d] rounded-lg",children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-white",children:"Resume Previous Session?"}),e.jsx("p",{className:"text-sm text-[#999] mb-4",children:"An editor session is still in progress:"}),e.jsxs("div",{className:"bg-[#1e1e1e] rounded p-3 mb-5 text-sm",children:[t&&e.jsxs("div",{className:"mb-1",children:[e.jsx("span",{className:"text-[#999]",children:"Feature:"})," ",e.jsx("span",{className:"text-white",children:t})]}),s!=null&&n&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[#999]",children:"Step:"})," ",e.jsxs("span",{className:"text-white",children:[s," (",n,")"]})]})]}),e.jsx("button",{onClick:a,className:"w-full px-4 py-2 text-sm rounded transition-colors cursor-pointer bg-[#005c75] text-white font-medium hover:bg-[#004d63] ring-2 ring-white/50",children:"Continue Session"})]})})}function st(t){const[s,n]=r.useState(null),[a,c]=r.useState(!1),o=r.useCallback(()=>{t&&(c(!0),fetch(`/api/editor-test-results?testFile=${encodeURIComponent(t)}`).then(i=>i.json()).then(i=>{n(i),c(!1)}).catch(()=>{n({testFilePath:t,status:"error",testCases:[],errorMessage:"Failed to fetch test results"}),c(!1)}))},[t]);return r.useEffect(()=>{t&&o()},[t,o]),{results:s,isRunning:a,runTests:o}}function Fe({scenarioId:t,updatedAt:s,alt:n,className:a="",imgClassName:c=""}){const[o,i]=r.useState(!1),l=`/api/editor-scenario-image/${t}.png${s?`?v=${encodeURIComponent(s)}`:""}`;return r.useEffect(()=>{i(!1)},[t]),o?e.jsx("div",{className:`flex items-center justify-center ${a}`,children:e.jsx("span",{className:"text-[8px] text-gray-500",children:"No img"})}):e.jsx("div",{className:a,children:e.jsx("img",{src:l,alt:n,className:c,loading:"lazy",onError:()=>i(!0)})})}function Pe({scenarioId:t,updatedAt:s,hasScreenshot:n,imgSrc:a,name:c,isActive:o,onSelect:i}){const l=t&&n,m=!t&&a;return e.jsxs("button",{onClick:i,className:"flex flex-col items-center gap-1 cursor-pointer group",title:c,children:[e.jsx("div",{className:`w-32 h-32 rounded overflow-hidden border-2 transition-all bg-[#1a1a1a] ${o?"border-[#005c75] ring-1 ring-[#005c75]":"border-transparent hover:border-[#4d4d4d]"}`,children:l?e.jsx(Fe,{scenarioId:t,updatedAt:s,alt:c,className:"w-full h-full",imgClassName:"w-full h-full object-contain"}):m?e.jsx("img",{src:a,alt:c,className:"w-full h-full object-contain",loading:"lazy"}):e.jsx("div",{className:"w-full h-full bg-[#1a1a1a] flex items-center justify-center",children:e.jsx("span",{className:"text-[8px] text-gray-600",children:"No img"})})}),e.jsx("span",{className:`text-[10px] leading-tight text-center truncate w-32 ${o?"text-white":"text-gray-500 group-hover:text-gray-300"}`,children:c})]})}function Ze({testFile:t,entityName:s}){const{results:n,isRunning:a,runTests:c}=st(t);if(a&&!n)return e.jsxs("div",{className:"px-2 pt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),e.jsx("span",{className:"text-[10px] text-gray-400",children:"Running tests..."})]});if(!n)return null;if(n.status==="error")return e.jsx("div",{className:"px-2 pt-1",children:e.jsx("span",{className:"text-[10px] text-red-400",children:n.errorMessage})});const o=s?n.testCases.filter(m=>m.fullName.startsWith(s)):n.testCases,i=o.length>0?o:n.testCases;if(i.length===0)return null;const l=s?`${s} > `:"";return e.jsxs("div",{className:"px-2 pt-1 space-y-0.5",children:[i.map(m=>{var j;const N=l&&m.fullName.startsWith(l)?m.fullName.slice(l.length):m.fullName;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[m.status==="passed"?e.jsx("span",{className:"text-green-400 text-[10px]",children:"✓"}):m.status==="failed"?e.jsx("span",{className:"text-red-400 text-[10px]",children:"✗"}):e.jsx("span",{className:"text-gray-500 text-[10px]",children:"—"}),e.jsx("span",{className:`text-[10px] ${m.status==="passed"?"text-green-400":m.status==="failed"?"text-red-400":"text-gray-500"}`,children:N})]}),m.status==="failed"&&((j=m.failureMessages)==null?void 0:j.map((k,b)=>e.jsx("div",{className:"pl-4 text-[9px] text-red-300/70 truncate max-w-full",title:k,children:k.split(`
3
+ `)[0]},b)))]},m.fullName)}),e.jsx("button",{onClick:c,disabled:a,className:"mt-1 text-[10px] text-[#00a0c4] hover:text-[#00c4ee] transition-colors cursor-pointer disabled:opacity-50 bg-transparent border-none p-0",children:a?"Running...":"Re-run"})]})}function le({filePath:t}){return t?e.jsxs("div",{className:"flex items-center gap-1 px-2 mt-0.5",children:[e.jsxs("a",{href:`/api/editor-file?path=${encodeURIComponent(t)}`,target:"_blank",rel:"noopener noreferrer",title:"Open file",className:"flex items-center gap-1 text-gray-500 hover:text-gray-300 transition-colors min-w-0",children:[e.jsx("span",{className:"text-[9px] truncate",children:t}),e.jsx("svg",{className:"shrink-0",width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:e.jsx("path",{d:"M4.5 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V9.5C1.5 10.05 1.95 10.5 2.5 10.5H9.5C10.05 10.5 10.5 10.05 10.5 9.5V7.5M7.5 1.5H10.5M10.5 1.5V4.5M10.5 1.5L5 7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),e.jsx(ge,{content:t,icon:!0,iconSize:10,className:"shrink-0 text-gray-500 hover:text-gray-300 transition-colors"})]}):null}function Gs({scenarios:t,projectRoot:s,activeScenarioId:n,onScenarioSelect:a,zoomComponent:c,focusedEntity:o,onZoomChange:i,analyzedEntities:l=[],glossaryFunctions:m=[],activeAnalyzedScenarioId:N,onAnalyzedScenarioSelect:j,entityImports:k,pageFilePaths:b={}}){const{pageGroups:I,componentGroups:u}=r.useMemo(()=>{var h;const p=new Map,x=new Map;for(const w of t)if(w.componentName){const P=x.get(w.componentName)||[];P.push(w),x.set(w.componentName,P)}else if(Ot(w.url)){const P=(h=w.url)==null?void 0:h.match(/[?&]c=([^&]+)/),R=P?decodeURIComponent(P[1]):"Isolated",D=x.get(R)||[];D.push(w),x.set(R,D)}else{const P=w.pageFilePath?Ie(Me(w.pageFilePath)):De(w.url),R=p.get(P)||[];R.push(w),p.set(P,R)}const y=new Map([...x.entries()].sort(([w],[P])=>w.localeCompare(P)));return{pageGroups:p,componentGroups:y}},[t]),L=r.useMemo(()=>{const p=new Set((l||[]).filter(y=>y.entityType==="visual").map(y=>y.name)),x=new Map;for(const[y,h]of u)p.has(y)||x.set(y,h);return x},[u,l]),{visualEntities:_,libraryEntities:$}=r.useMemo(()=>{const p=l.filter(y=>y.entityType==="visual").sort((y,h)=>y.name.localeCompare(h.name)),x=l.filter(y=>y.entityType==="library"||y.entityType==="functionCall").sort((y,h)=>y.name.localeCompare(h.name));return{visualEntities:p,libraryEntities:x}},[l]),B=r.useMemo(()=>{const p=new Set($.map(x=>x.name));return m.filter(x=>!p.has(x.name)).sort((x,y)=>x.name.localeCompare(y.name))},[m,$]),F=l.some(p=>p.isAnalyzing),v=r.useRef(null),E=r.useRef(0),z=r.useCallback(()=>{v.current&&(E.current=v.current.scrollTop)},[]);if(r.useEffect(()=>{v.current&&E.current>0&&(v.current.scrollTop=E.current)}),t.length===0&&l.length===0&&B.length===0)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"text-center text-gray-500 px-8",children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"No scenarios yet"}),e.jsx("p",{className:"text-xs",children:"Scenarios will appear here as Claude creates them alongside your code. Each scenario represents a different state of your app's data."})]})});if(c&&o){const p=o.name,x=o.filePath,y=o.sha,h=t.filter(M=>M.componentName===p||M.componentPath===x||!M.componentName&&(M.pageFilePath===x||y&&M.entitySha===y)),w=new Set((k==null?void 0:k[p])||[]),P=w.size>0,R=P?_.filter(M=>w.has(M.name)):[],D=P?$.filter(M=>w.has(M.name)):[];return e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-3 space-y-1",children:[e.jsxs("button",{onClick:()=>i(void 0),className:"w-full flex items-center gap-2 px-3 py-1.5 text-xs text-gray-400 hover:text-white transition-colors cursor-pointer",children:[e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M7.5 9L4.5 6L7.5 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"All scenarios"]}),e.jsx("div",{className:"px-3 py-1.5",children:e.jsx("span",{className:"text-xs font-semibold text-white uppercase tracking-wider",children:o.displayName})}),e.jsx("div",{className:"flex flex-wrap gap-2 px-2",children:h.length===0?e.jsx("div",{className:"px-3 py-2 text-xs text-gray-500",children:"No scenarios for this component"}):h.map(M=>e.jsx(Pe,{scenarioId:M.id,updatedAt:M.updatedAt,hasScreenshot:!!M.screenshotPath,name:M.name,isActive:M.id===n,onSelect:()=>a(M)},M.id))}),R.length>0&&e.jsxs("div",{className:"pt-2 mt-1 border-t border-[#3d3d3d]",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Components"})}),R.map(M=>e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"flex items-center gap-2 px-2 py-1",children:e.jsx("button",{onClick:()=>i(M.name),className:"text-[11px] font-medium text-gray-400 truncate cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:M.name})}),e.jsx(le,{filePath:M.filePath,projectRoot:s}),(M.scenarios.length>0||M.pendingScenarios.length>0)&&e.jsx("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:M.scenarios.map(J=>e.jsx(Pe,{imgSrc:J.screenshotPath?`/api/screenshot/${J.screenshotPath}`:null,name:J.name,isActive:J.id===N,onSelect:()=>j==null?void 0:j({analysisId:M.analysisId,scenarioId:J.id,scenarioName:J.name,entitySha:M.sha,entityName:M.name})},J.id))})]},M.sha))]}),D.length>0&&e.jsxs("div",{className:"pt-2 mt-1",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"})}),D.map(M=>e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-[11px] font-medium text-gray-300",children:M.name})}),e.jsx(le,{filePath:M.filePath,projectRoot:s}),M.testFile&&e.jsx(Ze,{testFile:M.testFile,entityName:M.name})]},M.sha))]})]})})}return e.jsx("div",{ref:v,onScroll:z,className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-3 space-y-3",children:[I.size>0&&e.jsxs("div",{children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Application"})}),[...I.entries()].sort(([p],[x])=>p==="Home"?-1:x==="Home"?1:p.localeCompare(x)).map(([p,x])=>{var y,h;return e.jsxs("div",{className:"px-2 pt-1",children:[e.jsx("div",{className:"py-0.5",children:e.jsx("span",{className:"text-[11px] font-medium text-gray-400",children:p})}),(((y=x[0])==null?void 0:y.pageFilePath)||b[p])&&e.jsx(le,{filePath:((h=x[0])==null?void 0:h.pageFilePath)||b[p],projectRoot:s}),e.jsx("div",{className:"flex flex-wrap gap-2 pt-1",children:x.map(w=>e.jsx(Pe,{scenarioId:w.id,updatedAt:w.updatedAt,hasScreenshot:!!w.screenshotPath,name:w.name,isActive:w.id===n&&!N,onSelect:()=>a(w)},w.id))})]},p)})]}),L.size>0&&e.jsxs("div",{className:"pt-2 mt-1 border-t border-[#3d3d3d]",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Components"})}),[...L.entries()].map(([p,x])=>{var y;return e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"flex items-center justify-between px-2 py-1",children:e.jsx("button",{onClick:()=>i(p),className:"text-[11px] font-medium text-gray-400 truncate cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:p})}),((y=x[0])==null?void 0:y.componentPath)&&e.jsx(le,{filePath:x[0].componentPath,projectRoot:s}),e.jsx("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:x.map(h=>e.jsx(Pe,{scenarioId:h.id,updatedAt:h.updatedAt,hasScreenshot:!!h.screenshotPath,name:h.name,isActive:h.id===n&&!N,onSelect:()=>a(h)},h.id))})]},p)})]}),_.length>0&&e.jsxs("div",{className:"pt-2 mt-1 border-t border-[#3d3d3d]",children:[e.jsxs("div",{className:"px-2 py-1",children:[e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Components"}),F&&t.length===0&&l.every(p=>p.scenarioCount===0)&&e.jsx("span",{className:"ml-2 text-[10px] text-gray-500",children:"— Entities are being analyzed..."})]}),_.map(p=>e.jsxs("div",{className:"mt-2",children:[e.jsxs("div",{className:"flex items-center gap-2 px-2 py-1",children:[e.jsx("button",{onClick:()=>i(p.name),className:"text-[11px] font-medium text-gray-400 truncate cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:p.name}),p.isAnalyzing&&p.scenarioCount===0&&e.jsxs("span",{className:"flex items-center gap-1.5 text-[10px] text-gray-400",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),"Analyzing..."]})]}),e.jsx(le,{filePath:p.filePath,projectRoot:s}),(p.scenarios.length>0||p.pendingScenarios.length>0)&&e.jsxs("div",{className:"flex flex-wrap gap-2 px-2 pt-1",children:[p.scenarios.map(x=>e.jsx(Pe,{imgSrc:x.screenshotPath?`/api/screenshot/${x.screenshotPath}`:null,name:x.name,isActive:x.id===N,onSelect:()=>j==null?void 0:j({analysisId:p.analysisId,scenarioId:x.id,scenarioName:x.name,entitySha:p.sha,entityName:p.name})},x.id)),p.pendingScenarios.map(x=>e.jsx("div",{className:"px-2.5 py-1 bg-[#2a2a2a] text-gray-400 text-[10px] rounded-full",title:x,children:x},x))]})]},p.sha))]}),($.length>0||B.length>0)&&e.jsxs("div",{className:`pt-2 mt-1 ${_.length>0?"":"border-t border-[#3d3d3d]"}`,children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"})}),$.map(p=>e.jsxs("div",{className:"mt-2",children:[e.jsxs("div",{className:"px-2 py-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-300",children:p.name}),p.isAnalyzing&&p.scenarioCount===0&&e.jsxs("span",{className:"ml-2 inline-flex items-center gap-1.5 text-[10px] text-gray-400",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#005c75] animate-pulse"}),"Analyzing..."]})]}),e.jsx(le,{filePath:p.filePath,projectRoot:s}),p.testFile?e.jsx(Ze,{testFile:p.testFile,entityName:p.name}):e.jsx("div",{className:"px-2 pt-1",children:e.jsx("span",{className:"text-[10px] text-gray-500",children:"No test file"})})]},p.sha)),B.map(p=>e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"px-2 py-1",children:e.jsx("span",{className:"text-[11px] font-medium text-gray-300",children:p.name})}),e.jsx(le,{filePath:p.filePath,projectRoot:s}),e.jsx(Ze,{testFile:p.testFile,entityName:p.name})]},p.name))]})]})})}function Vs(t,s,n=new Date){const a={"1d":1,"3d":3,"7d":7,"30d":30}[s],c=new Date(n);c.setDate(c.getDate()-a);const o=c.toISOString().split("T")[0],i=t.filter(k=>k.date>=o),l=new Set(i.map(k=>k.commitSha).filter(Boolean)),m=new Map;for(const k of i)if(k.scenarioScreenshots)for(const b of k.scenarioScreenshots){m.has(b.name)||m.set(b.name,[]);const I=m.get(b.name);I.some(u=>u.path===b.path)||I.push({path:b.path,time:k.time})}for(const k of m.values())k.sort((b,I)=>b.time.localeCompare(I.time));const N=[],j=new Map;for(const[k,b]of m){const I=k.indexOf(" - ");if(I!==-1){const u=k.slice(0,I);j.has(u)||j.set(u,[]),j.get(u).push({name:k,screenshots:b})}else N.push({name:k,screenshots:b})}return{commitCount:l.size,entryCount:i.length,appScenarios:N,componentGroups:j,totalScenarios:m.size}}function qs(t){const s=new Map;for(const n of[...t].reverse()){const a=s.get(n.date)||[];a.push(n),s.set(n.date,a)}return s}function Ys(t){const s=new Map;for(const n of t){let a;if("componentName"in n&&n.componentName)a=n.componentName;else if("componentName"in n&&n.componentName===null)a="App";else{const o=n.name.indexOf(" - ");a=o!==-1?n.name.slice(0,o):"App"}const c=s.get(a)||[];c.push(n),s.set(a,c)}return[...s.entries()].sort(([n],[a])=>n==="App"?-1:a==="App"?1:n.localeCompare(a))}const Pt=120;function zt({text:t,theme:s}){const[n,a]=r.useState(!1),c=t.length>Pt,o=c&&!n?t.slice(0,Pt)+"…":t,i=s==="light";return e.jsxs("div",{className:`px-4 py-2 ${i?"border-b border-gray-200 bg-gray-50":"border-b border-[#3d3d3d] bg-[#252525]"}`,children:[e.jsx("span",{className:"text-[9px] font-semibold uppercase tracking-wider text-gray-500",children:"User Prompt"}),e.jsxs("p",{className:`text-[11px] mt-0.5 mb-0 leading-relaxed ${i?"text-gray-600":"text-gray-400"}`,children:[o,c&&e.jsx("button",{onClick:()=>a(!n),className:`ml-1 text-[11px] font-medium bg-transparent border-none p-0 cursor-pointer ${i?"text-blue-500 hover:text-blue-700":"text-[#00a0c4] hover:text-[#00c0e8]"}`,children:n?"Show less":"Read more…"})]})]})}function Et({status:t}){const s={new:{label:"New",bg:"bg-green-900/40",text:"text-green-400",border:"border-green-700/50"},edited:{label:"Edited",bg:"bg-blue-900/40",text:"text-blue-400",border:"border-blue-700/50"},impacted:{label:"Impacted",bg:"bg-amber-900/40",text:"text-amber-400",border:"border-amber-700/50"}}[t.status];return e.jsx("span",{className:`${s.bg} ${s.text} ${s.border} border text-[8px] font-bold px-1 py-0 rounded-full uppercase tracking-wider`,children:s.label})}function Xs({testFile:t,entityName:s}){const{results:n,isRunning:a,runTests:c}=st(t);if(a&&!n)return e.jsxs("div",{className:"pt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#00a0c4] animate-pulse"}),e.jsx("span",{className:"text-[10px] text-gray-500",children:"Running tests..."})]});if(!n)return null;if(n.status==="error")return e.jsx("div",{className:"pt-1",children:e.jsx("span",{className:"text-[10px] text-red-400",children:n.errorMessage})});const o=s?n.testCases.filter(m=>m.fullName.startsWith(s)):n.testCases,i=o.length>0?o:n.testCases;if(i.length===0)return null;const l=s?`${s} > `:"";return e.jsxs("div",{className:"pt-1 space-y-0.5",children:[i.map(m=>{var j;const N=l&&m.fullName.startsWith(l)?m.fullName.slice(l.length):m.fullName;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[m.status==="passed"?e.jsx("span",{className:"text-green-400 text-[10px]",children:"✓"}):m.status==="failed"?e.jsx("span",{className:"text-red-400 text-[10px]",children:"✗"}):e.jsx("span",{className:"text-gray-500 text-[10px]",children:"—"}),e.jsx("span",{className:`text-[10px] ${m.status==="passed"?"text-green-400":m.status==="failed"?"text-red-400":"text-gray-500"}`,children:N})]}),m.status==="failed"&&((j=m.failureMessages)==null?void 0:j.map((k,b)=>e.jsx("div",{className:"pl-4 text-[9px] text-red-400/70 truncate max-w-full",title:k,children:k.split(`
4
+ `)[0]},b)))]},m.fullName)}),e.jsx("button",{onClick:c,disabled:a,className:"mt-1 text-[10px] text-[#00a0c4] hover:text-[#38bdf8] transition-colors cursor-pointer disabled:opacity-50 bg-transparent border-none p-0",children:a?"Running...":"Re-run"})]})}const Ks={added:"text-green-400",untracked:"text-green-400",modified:"text-blue-400",renamed:"text-purple-400"};function Qs({files:t}){return e.jsxs("div",{className:"border-t border-[#3d3d3d] pt-2 mt-1",children:[e.jsxs("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:["Modified Files (",t.length,")"]}),e.jsx("div",{className:"mt-1 space-y-0.5 max-h-[150px] overflow-auto",children:t.map(s=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`text-[9px] font-bold uppercase w-[14px] text-center ${Ks[s.status]||"text-gray-500"}`,children:s.status==="added"||s.status==="untracked"?"A":s.status==="modified"?"M":s.status==="renamed"?"R":"?"}),e.jsx("span",{className:"text-[10px] text-gray-400 truncate font-mono",children:s.path})]},s.path))})]})}const Zs={feature:{label:"Feature",color:"bg-[#005c75]"},fix:{label:"Fix",color:"bg-amber-700"},refactor:{label:"Refactor",color:"bg-purple-700"},scaffold:{label:"Scaffold",color:"bg-green-700"},data:{label:"Data",color:"bg-blue-700"},milestone:{label:"Milestone",color:"bg-yellow-600"}};function en(t){try{return new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function tn(t){try{return new Date(t+"T00:00:00").toLocaleDateString([],{weekday:"long",month:"long",day:"numeric"})}catch{return t}}const sn=[{value:"1d",label:"1 Day"},{value:"3d",label:"3 Days"},{value:"7d",label:"1 Week"},{value:"30d",label:"1 Month"}];function nn({entries:t,onScreenshotClick:s}){const[n,a]=r.useState(!1),[c,o]=r.useState("7d"),i=r.useMemo(()=>Vs(t,c),[t,c]);return e.jsxs("div",{className:"bg-[#2d2d2d] rounded-lg overflow-hidden",children:[e.jsxs("button",{onClick:()=>a(!n),className:"w-full flex items-center justify-between px-3 py-2.5 cursor-pointer bg-transparent border-none text-left hover:bg-[#333] transition-colors",children:[e.jsx("span",{className:"text-xs font-semibold text-gray-400 uppercase tracking-wider",children:"Timeframe Summary"}),e.jsx("span",{className:`text-gray-500 text-[10px] transition-transform ${n?"rotate-180":""}`,children:"▼"})]}),n&&e.jsxs("div",{className:"px-3 pb-3 space-y-3 border-t border-[#3d3d3d]",children:[e.jsx("div",{className:"flex gap-1 pt-2.5",children:sn.map(l=>e.jsx("button",{onClick:()=>o(l.value),className:`px-2.5 py-1 text-[10px] font-medium rounded transition-colors cursor-pointer border ${c===l.value?"bg-[#005c75] text-white border-[#005c75]":"bg-transparent text-gray-400 border-[#4d4d4d] hover:text-white hover:border-[#005c75]"}`,children:l.label},l.value))}),e.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-gray-400",children:[e.jsxs("span",{children:[e.jsx("span",{className:"text-white font-medium",children:i.commitCount})," ",i.commitCount===1?"commit":"commits"]}),e.jsx("span",{className:"text-[#3d3d3d]",children:"|"}),e.jsxs("span",{children:[e.jsx("span",{className:"text-white font-medium",children:i.totalScenarios})," ",i.totalScenarios===1?"scenario changed":"scenarios changed"]}),e.jsx("span",{className:"text-[#3d3d3d]",children:"|"}),e.jsxs("span",{children:[e.jsx("span",{className:"text-white font-medium",children:i.entryCount})," ",i.entryCount===1?"entry":"entries"]})]}),i.totalScenarios===0?e.jsx("p",{className:"text-[11px] text-gray-500 italic m-0",children:"No scenario changes in this period."}):e.jsxs("div",{className:"space-y-3",children:[i.appScenarios.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Application"}),i.appScenarios.map(l=>e.jsx(Mt,{scenario:l,onScreenshotClick:s},l.name))]}),i.componentGroups.size>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Components"}),[...i.componentGroups.entries()].sort(([l],[m])=>l.localeCompare(m)).map(([l,m])=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("span",{className:"text-[10px] font-medium text-gray-400",children:l}),m.map(N=>e.jsx(Mt,{scenario:N,onScreenshotClick:s},N.name))]},l))]})]})]})]})}function Mt({scenario:t,onScreenshotClick:s}){const n=t.name.indexOf(" - "),a=n!==-1?t.name.slice(n+3):t.name;return e.jsxs("div",{className:"pl-2",children:[e.jsx("span",{className:"text-[10px] text-gray-500 block mb-1",children:a}),e.jsx("div",{className:"flex items-center gap-1 overflow-x-auto",children:t.screenshots.map((c,o)=>e.jsxs("div",{className:"flex items-center shrink-0",children:[o>0&&e.jsx("span",{className:"text-[8px] text-gray-600 mx-0.5",children:"→"}),e.jsx("button",{type:"button",className:"w-16 h-16 rounded overflow-hidden border border-[#3d3d3d] hover:border-[#00a0c4] bg-[#1e1e1e] shrink-0 flex items-center justify-center cursor-pointer transition-colors",title:`${t.name} (${new Date(c.time).toLocaleDateString()})`,onClick:()=>s==null?void 0:s({screenshotUrl:`/api/editor-journal-image/${c.path.replace("screenshots/","")}`,commitSha:null,commitMessage:null,scenarioName:t.name}),children:e.jsx("img",{src:`/api/editor-journal-image/${c.path.replace("screenshots/","")}`,alt:t.name,className:"max-w-full max-h-full object-contain",loading:"lazy"})})]},c.path))})]})}function an({isActive:t,onScreenshotClick:s,glossaryFunctions:n=[]}){const[a,c]=r.useState([]),[o,i]=r.useState(!0),[l,m]=r.useState(new Set),N=r.useCallback(b=>{m(I=>{const u=new Set(I);return u.has(b)?u.delete(b):u.add(b),u})},[]),j=r.useCallback(async()=>{try{const b=await fetch("/api/editor-journal");if(b.ok){const I=await b.json();c(I.entries||[])}}catch{}finally{i(!1)}},[]);if(r.useEffect(()=>{j()},[j]),r.useEffect(()=>{t&&j()},[t,j]),r.useEffect(()=>{if(!t)return;const b=setInterval(()=>void j(),5e3);return()=>clearInterval(b)},[t,j]),o)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx("span",{className:"text-gray-500 text-sm",children:"Loading journal..."})});if(a.length===0)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"text-center text-gray-500 px-8",children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"No journal entries yet"}),e.jsx("p",{className:"text-xs",children:"Journal entries will appear as you build. Claude records features, screenshots, and commits as the project evolves."})]})});const k=qs(a);return e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-3 space-y-4",children:[e.jsx(nn,{entries:a,onScreenshotClick:s}),[...k.entries()].map(([b,I])=>e.jsxs("div",{children:[e.jsx("div",{className:"px-3 py-1.5 sticky top-0 bg-[#1e1e1e] z-10",children:e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:tn(b)})}),e.jsx("div",{className:"space-y-2",children:I.map((u,L)=>{const _=Zs[u.type]||{label:u.type,color:"bg-gray-600"},$=`${u.time}-${L}`,B=l.has($);return e.jsxs("div",{className:"bg-[#2d2d2d] rounded-lg overflow-hidden",children:[e.jsxs("div",{className:`p-3 space-y-2 ${B?"":"max-h-[300px] overflow-y-auto"}`,children:[e.jsx("div",{className:"flex items-start gap-2 cursor-pointer",onClick:()=>N($),children:e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-white truncate",children:u.title}),e.jsx("span",{className:`${_.color} text-white text-[9px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wider shrink-0`,children:_.label})]}),e.jsx("span",{className:"text-[10px] text-gray-500",children:en(u.time)}),u.featureName&&e.jsx("span",{className:"text-[10px] text-gray-500 italic truncate",title:u.featureName,children:u.featureName})]})}),u.userPrompt&&e.jsx(zt,{text:u.userPrompt,theme:"dark"}),e.jsx("p",{className:"text-xs text-gray-400 leading-relaxed",children:u.description}),u.screenshot&&e.jsx("button",{type:"button",className:"rounded overflow-hidden border border-[#3d3d3d] hover:border-[#00a0c4] bg-[#1e1e1e] flex items-center justify-center p-1 cursor-pointer transition-colors w-full",onClick:()=>s==null?void 0:s({screenshotUrl:`/api/editor-journal-image/${u.screenshot.replace("screenshots/","")}`,commitSha:u.commitSha,commitMessage:u.commitMessage,scenarioName:u.title}),children:e.jsx("img",{src:`/api/editor-journal-image/${u.screenshot.replace("screenshots/","")}`,alt:u.title,className:"max-w-full max-h-full object-contain",loading:"lazy"})}),u.scenarioScreenshots&&u.scenarioScreenshots.length>0&&(()=>{const F=Ys(u.scenarioScreenshots),v=u.entityChangeStatus,E=F.filter(([h])=>h==="App").flatMap(([,h])=>h),z=F.filter(([h])=>h!=="App"),p=new Map;for(const h of E){const w=h,P=w.pageFilePath?Ie(Me(w.pageFilePath)):De(w.url??null),R=p.get(P)||[];R.push(h),p.set(P,R)}const x=[...p.entries()],y=h=>e.jsx("button",{type:"button",className:"w-[4.5rem] h-[4.5rem] rounded overflow-hidden border border-[#3d3d3d] hover:border-[#00a0c4] bg-[#1e1e1e] shrink-0 flex items-center justify-center cursor-pointer transition-colors",onClick:()=>s==null?void 0:s({screenshotUrl:`/api/editor-journal-image/${h.path.replace("screenshots/","")}`,commitSha:u.commitSha,commitMessage:u.commitMessage,scenarioName:h.name}),children:e.jsx("img",{src:`/api/editor-journal-image/${h.path.replace("screenshots/","")}`,alt:h.name,title:h.name,className:"max-w-full max-h-full object-contain",loading:"lazy"})},h.path);return e.jsxs("div",{className:"space-y-2",children:[x.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Application"}),x.map(([h,w])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[10px] font-medium text-gray-400",children:h}),(v==null?void 0:v[h])&&e.jsx(Et,{status:v[h]})]}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-0.5",children:w.map(y)})]},h))]}),z.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Components"}),z.map(([h,w])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[10px] font-medium text-gray-400",children:h}),(v==null?void 0:v[h])&&e.jsx(Et,{status:v[h]})]}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-0.5",children:w.map(y)})]},h))]})]})})(),n.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("span",{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"}),e.jsx("div",{className:"space-y-2",children:n.map(F=>e.jsxs("div",{children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-200",children:F.name}),e.jsx("span",{className:"text-[9px] text-gray-500 truncate block",children:F.filePath}),F.testFile?e.jsx(Xs,{testFile:F.testFile,entityName:F.name}):e.jsx("div",{className:"pt-1",children:e.jsx("span",{className:"text-[10px] text-gray-500",children:"No test file"})})]},F.name))})]}),u.commitSha&&e.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[e.jsx("span",{className:"font-mono text-[#00a0c4] bg-[#00a0c4]/10 px-1.5 py-0.5 rounded",children:u.commitSha.slice(0,7)}),e.jsx("span",{className:"text-gray-500 truncate",children:u.commitMessage})]}),B&&u.modifiedFiles&&u.modifiedFiles.length>0&&e.jsx(Qs,{files:u.modifiedFiles})]}),e.jsxs("button",{onClick:()=>N($),className:"w-full py-1.5 text-[10px] text-gray-500 hover:text-gray-300 border-t border-[#3d3d3d] transition-colors cursor-pointer",children:["——— ",B?"Collapse":"Expand"," ———"]})]},$)})})]},b))]})})}function rn({prompt:t,height:s=300,onClose:n}){const a=r.useRef(null),c=r.useRef(null),o=r.useRef(null),i=r.useRef(!1),l=r.useRef(t);return r.useEffect(()=>{const m=a.current;if(!m)return;let N=!1,j=null;async function k(){const[b,I]=await Promise.all([et(()=>import("./xterm-BqvuqXEL.js"),[]),et(()=>import("./addon-fit-YJmn1quW.js"),[])]);if(N)return;{let p=document.getElementById("xterm-css");p||(p=document.createElement("style"),p.id="xterm-css",document.head.appendChild(p)),p.textContent=`
5
+ .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
6
+ .xterm.focus, .xterm:focus { outline: none; }
7
+ .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
8
+ .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; }
9
+ .xterm .composition-view { background: #000; color: #FFF; display: none; position: absolute; white-space: nowrap; z-index: 1; }
10
+ .xterm .composition-view.active { display: block; }
11
+ .xterm .xterm-viewport { background-color: #000; overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
12
+ .xterm .xterm-screen { position: relative; }
13
+ .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
14
+ .xterm .xterm-scroll-area { visibility: hidden; }
15
+ .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
16
+ .xterm.enable-mouse-events { cursor: default; }
17
+ .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
18
+ .xterm.column-select.focus { cursor: crosshair; }
19
+ .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; }
20
+ .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
21
+ .xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
22
+ .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
23
+ .xterm-dim { opacity: 1 !important; }
24
+ .xterm-underline-1 { text-decoration: underline; }
25
+ .xterm-underline-2 { text-decoration: double underline; }
26
+ .xterm-underline-3 { text-decoration: wavy underline; }
27
+ .xterm-underline-4 { text-decoration: dotted underline; }
28
+ .xterm-underline-5 { text-decoration: dashed underline; }
29
+ .xterm-overline { text-decoration: overline; }
30
+ .xterm-strikethrough { text-decoration: line-through; }
31
+ .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
32
+ .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
33
+ .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
34
+ .xterm-decoration-top { z-index: 2; position: relative; }
35
+ `}const u=new b.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}),L=new I.FitAddon;u.loadAddon(L),u.open(m),requestAnimationFrame(()=>{try{L.fit()}catch{}}),o.current=u;let _=null;try{const p=await fetch("/api/editor-scenario-prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:l.current})});p.ok&&(_=(await p.json()).promptFile)}catch{}if(N)return;const $=window.location.protocol==="https:"?"wss:":"ws:",B=window.location.host,F=new URLSearchParams;F.set("entityName","inline-claude");const v=`${$}//${B}/ws/terminal?${F.toString()}`,E=new WebSocket(v);c.current=E,E.onopen=()=>{E.send(JSON.stringify({type:"resize",cols:u.cols,rows:u.rows}))};let z=!1;E.onmessage=p=>{try{const x=JSON.parse(p.data);if(x.type==="session-id"&&!z){z=!0,setTimeout(()=>{const y=_?`claude "Read the file at '${_.replace(/'/g,"'\\''")}' for your instructions."`:"claude";E.send(JSON.stringify({type:"input",data:y+"\r"}))},300);return}if(x.type==="output"&&x.data){u.write(x.data);return}}catch{u.write(p.data)}},E.onclose=()=>{i.current||u.write(`\r
36
+ \x1B[90m--- Session ended ---\x1B[0m\r
37
+ `)},E.onerror=()=>{u.write(`\r
38
+ \x1B[31mConnection error\x1B[0m\r
39
+ `)},u.onData(p=>{E.readyState===WebSocket.OPEN&&E.send(JSON.stringify({type:"input",data:p}))}),j=new ResizeObserver(()=>{try{L.fit(),E.readyState===WebSocket.OPEN&&E.send(JSON.stringify({type:"resize",cols:u.cols,rows:u.rows}))}catch{}}),j.observe(m)}return k(),()=>{var b,I;N=!0,i.current=!0,j==null||j.disconnect(),((b=c.current)==null?void 0:b.readyState)===WebSocket.OPEN&&c.current.close(),(I=o.current)==null||I.dispose()}},[]),e.jsxs("div",{className:"border-t border-[#2d2d2d]",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-[#1e1e1e]",children:[e.jsx("span",{className:"text-[10px] font-medium text-[#00a0c4]",children:"Claude"}),n&&e.jsx("button",{onClick:n,className:"text-gray-500 hover:text-gray-300 text-[10px] bg-transparent border-none cursor-pointer",children:"Close"})]}),e.jsx("div",{ref:a,style:{height:s,background:"#1a1a1a",padding:"4px 0",position:"relative",overflow:"hidden"}})]})}const It=()=>e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"text-gray-500 shrink-0",children:e.jsx("path",{d:"M4.5 3L7.5 6L4.5 9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function on(t,s){if(t.length<=s)return t;const n=s-2;return[t[0],"ellipsis",...t.slice(t.length-n)]}function Tt({items:t,onNavigate:s}){if(t.length===0)return null;const n=on(t,4);return e.jsx("nav",{className:"flex items-center gap-1 text-xs min-w-0",children:n.map((a,c)=>{if(a==="ellipsis")return e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(It,{}),e.jsx("span",{className:"text-gray-500",children:"..."})]},"ellipsis");const o=c===n.length-1;return e.jsxs("span",{className:"flex items-center gap-1 min-w-0",children:[c>0&&e.jsx(It,{}),o?e.jsx("span",{className:"text-white font-medium truncate",children:a.name}):e.jsx("button",{onClick:()=>s(a.componentName,a.entitySha),className:"text-gray-400 hover:text-white transition-colors cursor-pointer bg-transparent border-none p-0 truncate",children:a.name})]},a.componentName||"app")})})}function Wt(t){var c,o;const s=new Map,n=new Map;for(const i of t)if(i.componentName){const l=n.get(i.componentName)||[];l.push(i),n.set(i.componentName,l)}else if(Ot(i.url)){const l=(c=i.url)==null?void 0:c.match(/[?&]c=([^&]+)/),m=l?decodeURIComponent(l[1]):"Isolated",N=n.get(m)||[];N.push(i),n.set(m,N)}else{const l=i.displayName||((o=i.pageFilePath)!=null&&o.startsWith("app/")?Ie(Me(i.pageFilePath)):De(i.url)),m=s.get(l)||[];m.push(i),s.set(l,m)}const a=new Map([...n.entries()].sort(([i],[l])=>i.localeCompare(l)));return{pageGroups:s,componentGroups:a}}function ln(t,s){var a,c;const n=new Map;for(const[o,i]of t){const l=(a=i.find(m=>m.entitySha))==null?void 0:a.entitySha;l&&n.set(o,l)}for(const[o,i]of s){const l=(c=i.find(m=>m.entitySha))==null?void 0:c.entitySha;l&&n.set(o,l)}return n}function cn(t){const s=new Set;for(const[n,a]of Object.entries(t)){s.add(n);for(const c of a)s.add(c)}return s}function dn(t,s,n,a){if(s.has(t))return!0;const c=n.find(o=>o.sha===t);return c?a.has(c.name):!1}function mn(t,s,n,a){const c=[];for(const[o,i]of t){const l=n.get(o);l?a(l)||c.push({name:o,scenarios:i,reason:"incomplete"}):c.push({name:o,scenarios:i,reason:"missing"})}for(const[o,i]of s){const l=n.get(o);l?a(l)||c.push({name:o,scenarios:i,reason:"incomplete"}):c.push({name:o,scenarios:i,reason:"missing"})}return c}function xn(t,s,n){if(!t)return null;const a=s.find(c=>c.sha===t);return a?{sha:t,name:a.name,filePath:a.filePath,entityType:a.entityType,displayName:a.name}:null}const $t={new:0,edited:1,impacted:2};function At({status:t,onClick:s}){const n={new:{label:"New",bg:"bg-green-100",text:"text-green-700",border:"border-green-200"},edited:{label:"Edited",bg:"bg-blue-100",text:"text-blue-700",border:"border-blue-200"},impacted:{label:"Impacted",bg:"bg-amber-100",text:"text-amber-700",border:"border-amber-200"}}[t.status],a=s&&(t.status==="edited"||t.status==="impacted");return e.jsx("button",{onClick:a?s:void 0,className:`${n.bg} ${n.text} ${n.border} border text-[9px] font-bold px-1.5 py-0.5 rounded-full uppercase tracking-wider shrink-0 ${a?"cursor-pointer hover:opacity-80 transition-opacity":"cursor-default"}`,children:n.label})}function Rt({filePath:t}){const[s,n]=r.useState(null),[a,c]=r.useState(!0),[o,i]=r.useState(null);return r.useEffect(()=>{et(()=>import("./index-Blo6EK8G.js"),__vite__mapDeps([0,1,2])).then(l=>{i(()=>l.default)})},[]),r.useEffect(()=>{c(!0),fetch(`/api/editor-file-diff?path=${encodeURIComponent(t)}`).then(l=>l.json()).then(l=>{n({oldContent:l.oldContent,newContent:l.newContent})}).catch(()=>{n(null)}).finally(()=>c(!1))},[t]),a?e.jsx("div",{className:"p-2 text-[10px] text-gray-400",children:"Loading diff..."}):!s||!o?e.jsx("div",{className:"p-2 text-[10px] text-gray-400",children:"Could not load diff"}):e.jsx("div",{className:"mt-2 border border-gray-200 rounded-lg overflow-hidden max-h-[300px] overflow-auto text-xs",children:e.jsx(o,{oldValue:s.oldContent,newValue:s.newContent,splitView:!1,useDarkTheme:!1,showDiffOnly:!0,styles:{contentText:{fontSize:"11px",lineHeight:"1.4"},line:{padding:"1px 8px",fontSize:"11px"}}})})}function Lt({impactedBy:t,changedEntities:s}){return e.jsx("div",{className:"mt-2 bg-amber-50 border border-amber-200 rounded-lg p-2.5",children:t&&t.length>0?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-[10px] font-semibold text-amber-700 uppercase tracking-wider",children:"Re-captured because these dependencies changed"}),e.jsx("ul",{className:"mt-1.5 space-y-1",children:t.map(n=>e.jsxs("li",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`text-[9px] font-bold px-1 py-0 rounded-full uppercase tracking-wider border ${n.changeType==="new"?"bg-green-100 text-green-700 border-green-200":"bg-blue-100 text-blue-700 border-blue-200"}`,children:n.changeType==="new"?"New":"Edited"}),e.jsx("span",{className:"text-[11px] font-medium text-amber-800",children:n.name}),e.jsx("span",{className:"text-[9px] text-amber-500 truncate",children:n.filePath})]},n.filePath))})]}):s&&s.length>0?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-[10px] font-semibold text-amber-700 uppercase tracking-wider",children:"Unchanged — these entities were modified in this session"}),e.jsx("ul",{className:"mt-1.5 space-y-1",children:s.map(n=>e.jsxs("li",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`text-[9px] font-bold px-1 py-0 rounded-full uppercase tracking-wider border ${n.status==="new"?"bg-green-100 text-green-700 border-green-200":"bg-blue-100 text-blue-700 border-blue-200"}`,children:n.status==="new"?"New":"Edited"}),e.jsx("span",{className:"text-[11px] font-medium text-amber-800",children:n.name})]},n.name))})]}):e.jsx("span",{className:"text-[10px] text-amber-600",children:"This component was re-captured because a dependency changed"})})}function _t({scenarioId:t,name:s,isActive:n,onSelect:a,updatedAt:c}){const o=r.useRef(null);return r.useEffect(()=>{n&&o.current&&o.current.scrollIntoView({block:"nearest",behavior:"smooth"})},[n]),e.jsxs("button",{ref:o,onClick:a,className:"flex flex-col items-center gap-1.5 cursor-pointer group",title:s,children:[e.jsx("div",{className:`w-32 h-32 rounded-lg overflow-hidden border-2 transition-all ${n?"border-[#0ea5e9] ring-2 ring-[#0ea5e9]/40 shadow-lg shadow-[#0ea5e9]/20":"border-gray-200 hover:border-gray-400 shadow-sm"}`,children:e.jsx(Fe,{scenarioId:t,updatedAt:c,alt:s,className:"w-full h-full bg-white",imgClassName:"w-full h-full object-contain bg-white"})}),e.jsx("span",{className:`text-[11px] leading-tight text-center truncate w-32 font-medium ${n?"text-gray-900":"text-gray-600 group-hover:text-gray-900"}`,children:s})]})}function pn({filePath:t}){return t?e.jsxs("div",{className:"flex items-center gap-1 mt-0.5",children:[e.jsxs("a",{href:`/api/editor-file?path=${encodeURIComponent(t)}`,target:"_blank",rel:"noopener noreferrer",title:"Open file",className:"flex items-center gap-1 text-gray-400 hover:text-gray-600 transition-colors min-w-0",children:[e.jsx("span",{className:"text-[9px] truncate",children:t}),e.jsx("svg",{className:"shrink-0",width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:e.jsx("path",{d:"M4.5 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V9.5C1.5 10.05 1.95 10.5 2.5 10.5H9.5C10.05 10.5 10.5 10.05 10.5 9.5V7.5M7.5 1.5H10.5M10.5 1.5V4.5M10.5 1.5L5 7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),e.jsx(ge,{content:t,icon:!0,iconSize:10,className:"shrink-0 text-gray-400 hover:text-gray-600 transition-colors"})]}):null}function tt({testFile:t,entityName:s}){const{results:n,isRunning:a,runTests:c}=st(t);if(a&&!n)return e.jsxs("div",{className:"pt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#0ea5e9] animate-pulse"}),e.jsx("span",{className:"text-[10px] text-gray-400",children:"Running tests..."})]});if(!n)return null;if(n.status==="error")return e.jsx("div",{className:"pt-1",children:e.jsx("span",{className:"text-[10px] text-red-500",children:n.errorMessage})});const o=s?n.testCases.filter(m=>m.fullName.startsWith(s)):n.testCases,i=o.length>0?o:n.testCases;if(i.length===0)return null;const l=s?`${s} > `:"";return e.jsxs("div",{className:"pt-1 space-y-0.5",children:[i.map(m=>{var j;const N=l&&m.fullName.startsWith(l)?m.fullName.slice(l.length):m.fullName;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[m.status==="passed"?e.jsx("span",{className:"text-green-600 text-[10px]",children:"✓"}):m.status==="failed"?e.jsx("span",{className:"text-red-500 text-[10px]",children:"✗"}):e.jsx("span",{className:"text-gray-400 text-[10px]",children:"—"}),e.jsx("span",{className:`text-[10px] ${m.status==="passed"?"text-green-600":m.status==="failed"?"text-red-500":"text-gray-400"}`,children:N})]}),m.status==="failed"&&((j=m.failureMessages)==null?void 0:j.map((k,b)=>e.jsx("div",{className:"pl-4 text-[9px] text-red-400 truncate max-w-full",title:k,children:k.split(`
40
+ `)[0]},b)))]},m.fullName)}),e.jsx("button",{onClick:c,disabled:a,className:"mt-1 text-[10px] text-[#0ea5e9] hover:text-[#38bdf8] transition-colors cursor-pointer disabled:opacity-50 bg-transparent border-none p-0",children:a?"Running...":"Re-run"})]})}function Dt(t){const s=t.indexOf(" - ");return s!==-1?t.slice(s+3):t}function Ft(t,s){return!s||Object.keys(s).length===0?t:[...t].sort(([n],[a])=>{var l,m;const c=((l=s[n])==null?void 0:l.status)||"impacted",o=((m=s[a])==null?void 0:m.status)||"impacted",i=($t[c]??2)-($t[o]??2);return i!==0?i:n.localeCompare(a)})}function un({scenarios:t,allScenarios:s=[],glossaryFunctions:n=[],projectRoot:a,activeScenarioId:c,onScenarioSelect:o,onClose:i,entityChangeStatus:l={},modifiedFiles:m=[],featureName:N,userPrompt:j}){const k=r.useMemo(()=>{if(s.length===0||Object.keys(l).length===0)return t;const x=new Set(t.map(h=>h.id)),y=s.filter(h=>{var P,R;if(x.has(h.id))return!1;const w=h.componentName||h.displayName||((P=h.pageFilePath)!=null&&P.startsWith("app/")?Ie(Me(h.pageFilePath)):De(h.url));return((R=l[w])==null?void 0:R.status)==="impacted"});return y.length===0?t:[...t,...y]},[t,s,l]),b=r.useMemo(()=>Object.entries(l).filter(([,x])=>x.status==="new"||x.status==="edited").map(([x,y])=>({name:x,status:y.status})),[l]),[I,u]=r.useState(null),L=r.useCallback(x=>{u(y=>y===x?null:x)},[]),{pageGroups:_,componentGroups:$}=r.useMemo(()=>Wt(k),[k]),B=r.useMemo(()=>Ft([..._.entries()],l),[_,l]),F=r.useMemo(()=>Ft([...$.entries()],l),[$,l]),v=B,E=F,z=r.useMemo(()=>Us(n,l),[n,l]),p=r.useMemo(()=>{const x=[];for(const[,y]of v)x.push(...y);for(const[,y]of E)x.push(...y);return x},[v,E]);return r.useEffect(()=>{if(p.length===0)return;const x=y=>{if(y.key!=="ArrowLeft"&&y.key!=="ArrowRight")return;const h=y.target,w=h==null?void 0:h.tagName;if(w==="INPUT"||w==="SELECT"||w==="TEXTAREA"&&!h.classList.contains("xterm-helper-textarea"))return;y.preventDefault();const P=p.findIndex(D=>D.id===c);let R;y.key==="ArrowLeft"?R=P<=0?p.length-1:P-1:R=P>=p.length-1?0:P+1,o(p[R])};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[p,c,o]),k.length===0&&n.length===0?e.jsxs("div",{className:"h-full bg-white flex items-center justify-center relative",children:[e.jsx("button",{onClick:i,className:"absolute top-2 right-3 text-gray-400 hover:text-gray-700 text-lg leading-none cursor-pointer bg-transparent border-none",title:"Close results",children:"×"}),e.jsx("span",{className:"text-sm text-gray-400",children:"No scenarios registered yet"})]}):e.jsxs("div",{className:"h-full bg-white flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-gray-200 shrink-0",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Working Session Results"}),N&&e.jsx("div",{className:"text-[11px] text-gray-400 truncate",title:N,children:N})]}),e.jsx("button",{onClick:i,className:"text-gray-400 hover:text-gray-700 text-lg leading-none cursor-pointer bg-transparent border-none shrink-0",title:"Close results",children:"×"})]}),j&&e.jsx(zt,{text:j,theme:"light"}),e.jsx("div",{className:"flex-1 overflow-auto p-4",children:e.jsxs("div",{className:"space-y-5",children:[v.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"mb-2",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Application"})}),e.jsx("div",{className:"space-y-3 pl-1",children:v.map(([x,y])=>{var R;const h=l[x],w=I===x,P=(R=y[0])==null?void 0:R.componentPath;return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1.5 flex items-center gap-2",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-600",children:x}),h&&e.jsx(At,{status:h,onClick:()=>L(x)})]}),w&&(h==null?void 0:h.status)==="edited"&&P&&e.jsx(Rt,{filePath:P}),w&&(h==null?void 0:h.status)==="impacted"&&e.jsx(Lt,{impactedBy:h.impactedBy,changedEntities:b}),e.jsx("div",{className:"flex flex-wrap gap-3",children:y.map(D=>e.jsx(_t,{scenarioId:D.id,name:Dt(D.name),isActive:D.id===c,onSelect:()=>o(D),updatedAt:D.updatedAt},D.id))})]},x)})})]}),E.length>0&&e.jsxs("div",{className:v.length>0?"pt-3 border-t border-gray-200":"",children:[e.jsx("div",{className:"mb-2",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Components"})}),e.jsx("div",{className:"space-y-3 pl-1",children:E.map(([x,y])=>{var R;const h=l[x],w=I===x,P=(R=y[0])==null?void 0:R.componentPath;return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1.5 flex items-center gap-2",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-600",children:x}),h&&e.jsx(At,{status:h,onClick:()=>L(x)})]}),w&&(h==null?void 0:h.status)==="edited"&&P&&e.jsx(Rt,{filePath:P}),w&&(h==null?void 0:h.status)==="impacted"&&e.jsx(Lt,{impactedBy:h.impactedBy,changedEntities:b}),e.jsx("div",{className:"flex flex-wrap gap-3",children:y.map(D=>e.jsx(_t,{scenarioId:D.id,name:Dt(D.name),isActive:D.id===c,onSelect:()=>o(D),updatedAt:D.updatedAt},D.id))})]},x)})})]}),z.length>0&&e.jsxs("div",{className:v.length>0||E.length>0?"pt-3 border-t border-gray-200":"",children:[e.jsx("div",{className:"mb-2",children:e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"})}),e.jsx("div",{className:"space-y-2 pl-1",children:z.map(x=>e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-[11px] font-medium text-gray-700",children:x.name})}),e.jsx(pn,{filePath:x.filePath,projectRoot:a}),x.testFile?e.jsx(tt,{testFile:x.testFile,entityName:x.name}):e.jsx("div",{className:"pt-1",children:e.jsx("span",{className:"text-[10px] text-gray-400",children:"No test file"})})]},x.name))})]}),m.length>0&&e.jsxs("div",{className:v.length>0||E.length>0||z.length>0?"pt-3 border-t border-gray-200":"",children:[e.jsx("div",{className:"mb-2",children:e.jsxs("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:["Modified Files (",m.length,")"]})}),e.jsx("div",{className:"space-y-0.5 pl-1 max-h-[200px] overflow-auto",children:m.map(x=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`text-[9px] font-bold uppercase w-[14px] text-center ${x.status==="added"||x.status==="untracked"?"text-green-600":x.status==="modified"?"text-blue-600":x.status==="renamed"?"text-purple-600":"text-gray-400"}`,children:x.status==="added"||x.status==="untracked"?"A":x.status==="modified"?"M":x.status==="renamed"?"R":"?"}),e.jsx("span",{className:"text-[10px] text-gray-500 truncate font-mono",children:x.path})]},x.path))})]})]})})]})}function hn(t,s,n,a){var m;const c=a.length>0?a.map(N=>`- "${N.name}" (ID: ${N.id})${N.url?` — URL: ${N.url}`:""}`).join(`
41
+ `):"(no scenarios yet)",o=s.endsWith("/page.tsx")||s.endsWith("/page.js"),i=((m=a.find(N=>N.url))==null?void 0:m.url)||"/",l=[`You are helping edit scenarios for the "${t}" entity in a CodeYam project.`,"","## Entity",`- **Name:** ${t}`,`- **File:** ${s}`,`- **Type:** ${o?"Page (application scenario with seed data)":"Component (component scenario with mock props)"}`,"","## Existing Scenarios",c,""];return o?l.push("## How Seed Data Works","","Application scenarios use `seed` data to populate the database before the page is captured.","The seed is a JSON object where each key is a Prisma model name in camelCase singular (matching the Prisma client accessor name) and the value is an array of records.","","### Seed Key Naming Convention","The key must be the camelCase singular form of the Prisma model name:",'- `model User` → key `"user"`','- `model BlogPost` → key `"blogPost"`','- `model Feedback` → key `"feedback"`',"",'**WARNING:** Do NOT use plural forms like "users", "blogPosts", or "feedbacks" — the seed adapter will silently fail to match them.',"","To understand the data models, read the Prisma schema at `prisma/schema.prisma`.","To see examples of existing seed data, look at `.codeyam/editor-scenarios/*.seed.json` files.","",`Also read the source file at \`${s}\` to understand what data the page queries and renders.`,"","## Registering a Scenario","","For small seed data, pass it inline:","```",`codeyam editor register '{"name":"Scenario Name","type":"application","url":"${i}","dimensions":["Laptop"],"seed":{"user":[...],"feedback":[...]}}'`,"```","","For large seed data, write it to a temp file and use @file syntax:","```","# Write JSON to a temp file","cat > .codeyam/tmp/scenario.json << 'SCENARIO_EOF'",`{"name":"Scenario Name","type":"application","url":"${i}","dimensions":["Laptop"],"seed":{"user":[...],"feedback":[...]}}`,"SCENARIO_EOF","codeyam editor register @.codeyam/tmp/scenario.json","```"):l.push("## Registering a Scenario","",`Read the source file at \`${s}\` to understand what props the component expects.`,"","```",`codeyam editor register '{"name":"Scenario Name","type":"component","componentName":"${t}","componentPath":"${s}","dimensions":["Laptop"],"mockData":{"propName":"value"}}'`,"```"),l.push("","## Deleting a Scenario","","To delete a scenario, use its ID from the list above:","```","codeyam editor delete <scenarioId>","```","","## Validating Seed Data","","Before registering, you can validate seed data structure and check that keys match Prisma models:","```",`codeyam editor validate-seed '{"user":[...]}'`,"```"),l.push("","## Important","- DO NOT take any action until the user tells you what they want","- Start by briefly listing the existing scenarios",'- Then ask: "Would you like to modify an existing scenario or add a new one?"',"- Wait for the user's answer before proceeding",'- Keep scenario names descriptive: "Empty State", "With Comments", "Admin View", etc.',`- Each scenario should capture a distinct, meaningful state of the ${o?"page":"component"}`),l.join(`
42
+ `)}function Ut(t,s){var c;const n=s.some(o=>!o.componentName),a=s.map(o=>`'${o.id}'`).join(", ");if(n){const o=((c=s.find(l=>l.url))==null?void 0:c.url)||null,i=s.map(l=>`.codeyam/editor-scenarios/${l.id}.json`).join(", ");return[`### Page: "${t}" (${s.length} scenario(s))`,...o?["",`Scenario URL: \`${o}\``]:[],"",...o?["Step A: Find the source file that renders this page. In Next.js App Router, URLs map to page.tsx files:"," - `/` → `app/page.tsx`"," - `/about` → `app/about/page.tsx`"," - `/c/my-slug` → `app/c/[slug]/page.tsx` (dynamic segment)","",`Based on the URL \`${o}\`, find the corresponding page.tsx file. Confirm it exists with \`cat <filepath> | head -5\`.`]:["Step A: Find the source file that renders this page by running:",' find src app -name "App.tsx" -o -name "App.jsx" -o -name "page.tsx" -o -name "page.jsx" -o -name "index.tsx" 2>/dev/null',"","Pick the file that is the main app entry point or the page component for this route. Confirm it exists with `cat <filepath> | head -5`."],"","Step B: Set page_file_path on all scenarios for this page (replace PAGE_FILE_PATH with the path from Step A):",` sqlite3 .codeyam/db.sqlite3 "UPDATE editor_scenarios SET page_file_path = 'PAGE_FILE_PATH' WHERE id IN (${a});"`,"","Step C: Get the entity SHA (after running analyze-imports in the shared step above):",` sqlite3 .codeyam/db.sqlite3 "SELECT sha FROM entities WHERE file_path = 'PAGE_FILE_PATH' ORDER BY created_at DESC LIMIT 1;"`,"","If no rows appear, the path was wrong — go back to Step A.","","Step D: Set entity_sha and display_name on all scenarios (replace ENTITY_SHA with the SHA from Step C):",` sqlite3 .codeyam/db.sqlite3 "UPDATE editor_scenarios SET entity_sha = 'ENTITY_SHA', display_name = '${t}' WHERE id IN (${a});"`,"","Step E: Add pageFilePath to the scenario JSON files so this fix persists across clones.",`For each file (${i}), read it and add \`"pageFilePath": "PAGE_FILE_PATH"\` to the \`_metadata\` object (after the \`"type"\` field). Then commit the updated JSON files.`].join(`
43
+ `)}else return[`### Component: "${t}" (${s.length} scenario(s))`,"","Step A: Get the entity SHA (after running analyze-imports in the shared step above):",` sqlite3 .codeyam/db.sqlite3 "SELECT sha FROM entities WHERE name = '${t}' ORDER BY created_at DESC LIMIT 1;"`,"","If no rows appear, check that .codeyam/glossary.json contains an entry for this component.","","Step B: Set entity_sha and display_name on all scenarios (replace ENTITY_SHA with the SHA from Step A):",` sqlite3 .codeyam/db.sqlite3 "UPDATE editor_scenarios SET entity_sha = 'ENTITY_SHA', display_name = '${t}' WHERE id IN (${a});"`].join(`
44
+ `)}function Bt({name:t,scenarios:s,reason:n="missing"}){var o,i;const a=((o=s[0])==null?void 0:o.componentPath)||((i=s[0])==null?void 0:i.pageFilePath)||null,c=n==="incomplete"?[`The "${t}" entity exists but has not been fully analyzed — its components and functions cannot be displayed.`,"","Follow these steps:","",`Step 1: Check if "${t}" is in the glossary:`,` cat .codeyam/glossary.json | grep "${t}"`,"","If not found, add an entry to .codeyam/glossary.json:",` { "name": "${t}", "filePath": "${a||"FILL_IN_PATH"}", "description": "...", "returnType": "JSX.Element" }`,"","Step 2: Run: codeyam editor analyze-imports","","Step 3: Reload the editor page and verify components/functions appear."].join(`
45
+ `):[`The "${t}" ${s.some(l=>!l.componentName)?"page":"component"} is missing entity data in the CodeYam database. Its scenarios are hidden until this is fixed.`,"","IMPORTANT: Do NOT re-register scenarios — that would overwrite their screenshots. Instead, update the database and scenario JSON files directly.","","Follow these steps EXACTLY:","","Step 1: Run: codeyam editor analyze-imports","","Step 2: Fix this entity:","",Ut(t,s),"","Step 3: Reload the editor page in the browser and verify the scenarios appear."].join(`
46
+ `);return e.jsx(ge,{content:c,label:"Copy Fix Prompt",copiedLabel:"Copied!",className:"text-[9px] text-amber-400 hover:text-amber-300 bg-transparent border border-amber-400/30 rounded px-1.5 py-0.5 cursor-pointer transition-colors ml-2"})}function fn({brokenEntities:t}){if(t.length===0)return null;const s=t.reduce((o,i)=>o+i.scenarios.length,0),n=t.filter(o=>o.reason==="incomplete"),a=t.filter(o=>o.reason==="missing"),c=[`${t.length} entities are missing data in the CodeYam database. ${s} total scenario(s) are hidden until this is fixed.`,"","IMPORTANT: Do NOT re-register scenarios — that would overwrite their screenshots. Instead, update the database and scenario JSON files directly.","","Follow these steps EXACTLY:","",...n.length>0?["## Step 1: Add missing entries to the glossary","","Read `.codeyam/glossary.json` and check if these entities have entries. For each one that is missing, add an entry:","",...n.map(o=>{var l,m;const i=((l=o.scenarios[0])==null?void 0:l.componentPath)||((m=o.scenarios[0])==null?void 0:m.pageFilePath)||"FILL_IN_PATH";return`- "${o.name}" (filePath: "${i}")`}),"",'Each glossary entry needs: name, filePath, description, returnType (use "JSX.Element" for components/pages).',""]:["## Step 1: No glossary changes needed",""],"## Step 2: Run import analysis"," codeyam editor analyze-imports","",...a.length>0?["## Step 3: Fix missing entity associations","",...a.map(o=>Ut(o.name,o.scenarios)),""]:[],`## Step ${a.length>0?"4":"3"}: Reload the editor page in the browser and verify all scenarios appear. Then commit the updated scenario JSON files so the fix persists across clones.`].join(`
47
+ `);return e.jsxs("div",{className:"mb-3 p-2 rounded border border-amber-400/30 bg-amber-400/5",children:[e.jsxs("p",{className:"text-[10px] text-amber-400/80 m-0 leading-relaxed",children:[t.length," ",t.length===1?"entity is":"entities are"," missing data (",s," hidden scenario",s!==1?"s":"","). Copy this prompt into Claude to fix them all at once."]}),e.jsx("div",{className:"mt-1.5",children:e.jsx(ge,{content:c,label:"Copy Fix All Prompt",copiedLabel:"Copied!",className:"text-[9px] text-amber-400 hover:text-amber-300 bg-transparent border border-amber-400/30 rounded px-1.5 py-0.5 cursor-pointer transition-colors"})})]})}function gn({scenarios:t,entityName:s,entityFilePath:n,entityType:a,onSwitchToBuild:c,onScenarioSelect:o}){const[i,l]=r.useState(!1),[m,N]=r.useState(null),[j,k]=r.useState(""),[b,I]=r.useState(!1),[u,L]=r.useState(null),[_,$]=r.useState(!1),B=r.useCallback(async v=>{if(!(!j.trim()||b)){I(!0);try{(await fetch("/api/editor-rename-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioId:v,name:j.trim()})})).ok&&N(null)}catch{}finally{I(!1)}}},[j,b]),F=r.useCallback(async v=>{if(confirm(`Delete scenario "${v.name}"?`)){L(v.id);try{const E=v.screenshotPaths?Object.values(v.screenshotPaths):v.screenshotPath?[v.screenshotPath]:[];await fetch("/api/delete-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioId:v.id,screenshotPaths:E})})}catch{}finally{L(null)}}},[]);return i?e.jsxs("div",{className:"border border-[#3d3d3d] rounded-lg overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 bg-[#1e1e1e]",children:[e.jsx("span",{className:"text-xs font-medium text-gray-400",children:"Edit Scenarios"}),e.jsx("button",{onClick:()=>{l(!1),N(null)},className:"text-gray-500 hover:text-gray-300 text-xs bg-transparent border-none cursor-pointer",children:"Close"})]}),e.jsx("div",{className:"divide-y divide-[#2d2d2d]",children:t.map(v=>e.jsxs("div",{className:"px-3 py-2 flex items-center gap-2 hover:bg-[#252525] cursor-pointer transition-colors",style:{opacity:u===v.id?.4:1},onClick:()=>{m!==v.id&&o(v)},children:[v.screenshotPath?e.jsx(Fe,{scenarioId:v.id,updatedAt:v.updatedAt,alt:"",className:"rounded w-[40px] h-[40px] shrink-0 overflow-hidden",imgClassName:"w-full h-full object-cover"}):e.jsx("div",{className:"rounded bg-[#1e1e1e]",style:{width:40,height:40,flexShrink:0}}),m===v.id?e.jsxs("form",{className:"flex-1 flex items-center gap-1.5 min-w-0",onSubmit:E=>{E.preventDefault(),B(v.id)},children:[e.jsx("input",{type:"text",value:j,onChange:E=>k(E.target.value),className:"flex-1 px-2 py-1 text-xs bg-[#1e1e1e] text-white border border-[#3d3d3d] rounded outline-none focus:border-[#005c75] min-w-0",autoFocus:!0,disabled:b}),e.jsx("button",{type:"submit",disabled:b||!j.trim(),className:"px-2 py-1 text-[10px] bg-[#005c75] text-white rounded hover:bg-[#004d63] disabled:opacity-40 cursor-pointer border-none",children:b?"...":"Save"}),e.jsx("button",{type:"button",onClick:()=>N(null),className:"px-2 py-1 text-[10px] text-gray-400 hover:text-white cursor-pointer bg-transparent border-none",children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"flex-1 text-xs text-gray-300 truncate min-w-0",children:v.name}),e.jsx("button",{onClick:E=>{E.stopPropagation(),N(v.id),k(v.name)},className:"text-[10px] text-gray-500 hover:text-gray-300 cursor-pointer bg-transparent border-none px-1",title:"Rename",children:"Rename"}),e.jsx("button",{onClick:E=>{E.stopPropagation(),F(v)},disabled:u===v.id,className:"text-[10px] text-red-400/60 hover:text-red-400 cursor-pointer bg-transparent border-none px-1",title:"Delete",children:"Delete"})]})]},v.id))}),_?e.jsx(rn,{prompt:hn(s,n,a,t),height:500,onClose:()=>$(!1)}):e.jsx("div",{className:"px-3 py-2.5 bg-[#1e1e1e] border-t border-[#2d2d2d] flex justify-center",children:e.jsx("button",{onClick:()=>$(!0),className:"px-5 py-2 text-xs font-medium text-white cursor-pointer bg-[#005c75] hover:bg-[#004d63] border-none rounded-md transition-colors",children:"Modify with Claude"})})]}):e.jsx("div",{className:"flex justify-center",children:e.jsx("button",{onClick:()=>l(!0),className:"px-5 py-2 text-xs font-medium text-gray-300 hover:text-white transition-colors cursor-pointer bg-[#2a2a2a] hover:bg-[#333] border border-[#4a4a4a] hover:border-[#666] rounded-md",children:"Edit Scenarios"})})}function fe({scenarioId:t,updatedAt:s,hasScreenshot:n,imgSrc:a,name:c,isActive:o,onSelect:i}){const l=t&&n,m=!t&&a;return e.jsxs("button",{onClick:i,className:"flex flex-col items-center gap-1 cursor-pointer group w-full",title:c,children:[e.jsx("div",{className:`w-full aspect-square rounded overflow-hidden border-2 transition-all bg-[#1a1a1a] ${o?"border-[#005c75] ring-1 ring-[#005c75]":"border-transparent hover:border-[#4d4d4d]"}`,children:l?e.jsx(Fe,{scenarioId:t,updatedAt:s,alt:c,className:"w-full h-full",imgClassName:"w-full h-full object-contain"}):m?e.jsx("img",{src:a,alt:c,className:"w-full h-full object-contain",loading:"lazy"}):e.jsx("div",{className:"w-full h-full bg-[#1a1a1a] flex items-center justify-center",children:e.jsx("span",{className:"text-[8px] text-gray-600",children:"No img"})})}),e.jsx("span",{className:`text-[10px] leading-tight text-center truncate w-full ${o?"text-white":"text-gray-500 group-hover:text-gray-300"}`,children:c})]})}function Ee({filePath:t}){return t?e.jsxs("div",{className:"flex items-center gap-1 mt-0.5",children:[e.jsxs("a",{href:`/api/editor-file?path=${encodeURIComponent(t)}`,target:"_blank",rel:"noopener noreferrer",title:"Open file",className:"flex items-center gap-1 text-gray-500 hover:text-gray-300 transition-colors min-w-0",children:[e.jsx("span",{className:"text-[9px] truncate",children:t}),e.jsx("svg",{className:"shrink-0",width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:e.jsx("path",{d:"M4.5 1.5H2.5C1.95 1.5 1.5 1.95 1.5 2.5V9.5C1.5 10.05 1.95 10.5 2.5 10.5H9.5C10.05 10.5 10.5 10.05 10.5 9.5V7.5M7.5 1.5H10.5M10.5 1.5V4.5M10.5 1.5L5 7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),e.jsx(ge,{content:t,icon:!0,iconSize:10,className:"shrink-0 text-gray-500 hover:text-gray-300 transition-colors"})]}):null}function bn({hasProject:t,scenarios:s,analyzedEntities:n,allEntities:a=[],glossaryFunctions:c=[],glossaryEntries:o=[],projectRoot:i,activeScenarioId:l,onScenarioSelect:m,onAnalyzedScenarioSelect:N,onSwitchToBuild:j,zoomComponent:k,focusedEntity:b,onZoomChange:I,entityImports:u,pageFilePaths:L={},projectTitle:_,projectDescription:$,migrationMode:B="none",migrationState:F,onStartMigration:v,breadcrumbItems:E=[]}){var te;const{pageGroups:z,componentGroups:p}=r.useMemo(()=>Wt(s),[s]),x=r.useMemo(()=>ln(z,p),[z,p]),y=r.useMemo(()=>new Set(n.map(S=>S.sha)),[n]),h=r.useMemo(()=>cn(u||{}),[u]),w=r.useCallback(S=>dn(S,y,a,h),[y,a,h]),P=r.useMemo(()=>{const S=new Map;for(const T of a)S.set(T.sha,T.name);return S},[a]),R=r.useMemo(()=>mn(z,p,x,w),[z,p,x,w]),D=r.useMemo(()=>n.filter(S=>S.entityType==="visual").sort((S,T)=>S.name.localeCompare(T.name)),[n]),M=r.useMemo(()=>{const S=new Map;for(const T of c)S.set(T.name,T);return S},[c]),J=r.useRef(null),ce=r.useRef(0),be=r.useCallback(()=>{J.current&&(ce.current=J.current.scrollTop)},[]);r.useEffect(()=>{J.current&&ce.current>0&&(J.current.scrollTop=ce.current)});const je=(b==null?void 0:b.sha)??"overview";if(!t)return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:"Ready to build something?"}),e.jsx("button",{onClick:j,className:"px-6 py-3 bg-[#005c75] text-white text-sm font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Start Building"})]})});if(B==="candidate")return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-5 px-8 text-center max-w-[420px]",children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:"Migrate Your Project"}),e.jsx("p",{className:"text-sm text-gray-400 m-0 font-['IBM_Plex_Sans'] leading-relaxed",children:"It looks like you have an existing project. Claude can survey your codebase and systematically migrate it — deconstructing pages into clean components, extracting functions with tests, and creating scenarios. One page per session."}),e.jsx("button",{onClick:v,className:"px-6 py-3 bg-[#005c75] text-white text-sm font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Get Started"}),e.jsx("button",{onClick:j,className:"text-xs text-gray-500 hover:text-gray-300 bg-transparent border-none p-0 cursor-pointer underline",children:"Skip — build a new feature instead"})]})});if(B==="active"&&F){const S=F.pages||[],T=S.filter(A=>A.status==="complete").length,G=S.length,V=G>0?Math.round(T/G*100):0;return e.jsxs("div",{className:"flex-1 flex flex-col overflow-auto p-4",children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0 mb-3",children:"Project Migration"}),e.jsxs("div",{className:"mb-4",children:[e.jsx("div",{className:"flex items-center gap-2 mb-1",children:e.jsxs("span",{className:"text-xs text-gray-400 font-['IBM_Plex_Sans']",children:[T,"/",G," pages (",V,"%)"]})}),e.jsx("div",{className:"w-full h-1.5 bg-[#2d2d2d] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-[#005c75] rounded-full transition-all",style:{width:`${V}%`}})})]}),e.jsx("div",{className:"space-y-1.5",children:S.map((A,K)=>{const re=A.status==="complete"?"✓":A.status==="in-progress"?"→":"○",q=A.status==="complete"?"text-green-400":A.status==="in-progress"?"text-cyan-400":"text-gray-600";return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`text-xs ${q} w-3 text-center`,children:re}),e.jsx("span",{className:`text-xs font-['IBM_Plex_Sans'] ${A.status==="in-progress"?"text-white font-medium":A.status==="complete"?"text-gray-400":"text-gray-600"}`,children:A.name}),e.jsx("span",{className:"text-[10px] text-gray-600",children:A.route}),A.status==="complete"&&e.jsxs("span",{className:"text-[10px] text-gray-600",children:[(A.extractedComponents||[]).length,"c"," ",(A.extractedFunctions||[]).length,"f"," ",A.scenarioCount||0,"s"]})]},K)})}),(F.sharedComponents||[]).length>0&&e.jsxs("div",{className:"mt-4",children:[e.jsx("h3",{className:"text-xs font-medium text-gray-400 font-['IBM_Plex_Sans'] mb-1.5",children:"Shared Components"}),(F.sharedComponents||[]).map((A,K)=>e.jsxs("div",{className:"text-[10px] text-gray-500 mb-0.5",children:[A.name," ",e.jsxs("span",{className:"text-gray-600",children:["— used in: ",(A.usedInPages||[]).join(", ")]})]},K))]}),e.jsx("div",{className:"mt-4",children:e.jsx("button",{onClick:j,className:"px-4 py-2 bg-[#005c75] text-white text-xs font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Continue in Chat"})})]})}if(!(s.length>0||D.length>0))return e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-4 px-8 text-center",children:[_?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:_}),$&&e.jsx("p",{className:"text-sm text-gray-400 m-0 font-['IBM_Plex_Sans'] leading-relaxed",children:$})]}):e.jsx("h2",{className:"text-lg font-medium text-white font-['IBM_Plex_Sans'] m-0",children:"Your project is ready"}),e.jsx("p",{className:"text-sm text-gray-400 m-0 font-['IBM_Plex_Sans'] leading-relaxed",children:"Describe what you want to build in the Chat and your pages and components will appear here."}),e.jsx("button",{onClick:j,className:"px-6 py-3 bg-[#005c75] text-white text-sm font-medium rounded-lg hover:bg-[#004d63] transition-colors cursor-pointer",children:"Start Building"})]})});if(b){const S=b.filePath,T=b.name,G=n.some(f=>f.sha===b.sha||f.filePath===S),V=!!((te=u==null?void 0:u[T])!=null&&te.length);if(!G&&!V){s.some(O=>O.componentName===T&&O.entitySha===b.sha);const f=s.filter(O=>O.entitySha===b.sha),U=[`The "${b.displayName}" entity (${S}) exists in the database but has not been fully analyzed. Its components and functions cannot be shown until it has import metadata.`,"","Follow these steps:","",`Step 1: Add "${T}" to the glossary if it's not already there:`,` Check: cat .codeyam/glossary.json | grep "${T}"`,"",` If not found, add an entry with name "${T}" and filePath "${S}" to .codeyam/glossary.json`,"","Step 2: Run import analysis:"," codeyam editor analyze-imports","","Step 3: Reload the editor page and verify components/functions appear."].join(`
48
+ `);return e.jsx("div",{ref:J,onScroll:be,className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsx(Tt,{items:E,onNavigate:I}),e.jsx("h2",{className:"text-sm font-semibold text-white m-0 font-['IBM_Plex_Sans'] uppercase tracking-wider",children:b.displayName}),S&&e.jsx(Ee,{filePath:S,projectRoot:i}),e.jsxs("div",{className:"py-2",children:[e.jsx("p",{className:"text-[11px] text-amber-400/80 m-0 leading-relaxed",children:"This entity has not been fully analyzed. Its components and functions cannot be displayed. Please copy and paste this prompt into Claude to fix the data."}),e.jsx("div",{className:"mt-2",children:e.jsx(ge,{content:U,label:"Copy Fix Prompt",copiedLabel:"Copied!",className:"text-[10px] text-amber-400 hover:text-amber-300 bg-transparent border border-amber-400/30 rounded px-2 py-1 cursor-pointer transition-colors"})})]}),f.length>0&&e.jsx("div",{className:"grid grid-cols-3 gap-2",children:f.map(O=>e.jsx(fe,{scenarioId:O.id,updatedAt:O.updatedAt,hasScreenshot:!!O.screenshotPath,name:O.name,isActive:O.id===l,onSelect:()=>m(O)},O.id))})]})},je)}const A=b.sha,K=s.filter(f=>!f.componentName&&(f.pageFilePath===S||A&&f.entitySha===A)),re=s.filter(f=>f.componentName===T||f.componentPath===S),q=D.find(f=>f.filePath===S||f.name===T),ne=M.get(T)||c.find(f=>f.filePath===S),ae=[...K,...re],ie=new Set((u==null?void 0:u[T])||[]),ve=V?[...p.entries()].filter(([f])=>ie.has(f)):[],Te=V?D.filter(f=>ie.has(f.name)&&!ve.some(([U])=>U===f.name)):[],$e=V?o.filter(f=>ie.has(f.name)&&f.returnType!=="JSX.Element"&&f.returnType!=="React.ReactNode").map(f=>({name:f.name,filePath:f.filePath,description:f.description||"",testFile:f.testFile,feature:f.feature})):[],Ne=ve.length>0||Te.length>0,ee=$e.length>0,Y=Ne||ee;return e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsx(Tt,{items:E,onNavigate:I}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold text-white m-0 font-['IBM_Plex_Sans'] uppercase tracking-wider",children:b.displayName}),b.filePath&&e.jsx(Ee,{filePath:b.filePath,projectRoot:i})]}),ae.length>0&&e.jsx("div",{className:"grid grid-cols-3 gap-2",children:ae.map(f=>e.jsx(fe,{scenarioId:f.id,updatedAt:f.updatedAt,hasScreenshot:!!f.screenshotPath,name:f.name,isActive:f.id===l,onSelect:()=>m(f)},f.id))}),q&&(q.scenarios.length>0||q.pendingScenarios.length>0)&&e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[q.scenarios.map(f=>e.jsx(fe,{imgSrc:f.screenshotPath?`/api/screenshot/${f.screenshotPath}`:null,name:f.name,isActive:!1,onSelect:()=>N({analysisId:q.analysisId,scenarioId:f.id,scenarioName:f.name,entitySha:q.sha,entityName:q.name})},f.id)),q.pendingScenarios.map(f=>e.jsx("div",{className:"px-2.5 py-1 bg-[#2a2a2a] text-gray-400 text-[10px] rounded-full",title:f,children:f},f))]}),ne&&ne.testFile&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[10px] text-gray-500",children:"Tests:"}),e.jsx(Ee,{filePath:ne.testFile,projectRoot:i})]}),e.jsx(tt,{testFile:ne.testFile,entityName:T})]}),ae.length===0&&!q&&!ne&&e.jsx("div",{className:"text-xs text-gray-500",children:"No scenarios for this entity"}),ae.length>0&&e.jsx(gn,{scenarios:ae,entityName:b.displayName,entityFilePath:b.filePath,entityType:b.entityType,onSwitchToBuild:j,onScenarioSelect:m}),Y&&e.jsxs("div",{className:"pt-3 mt-2 border-t border-[#3d3d3d] space-y-3",children:[Ne&&e.jsxs("div",{children:[e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Components"}),ve.map(([f,U])=>e.jsx("div",{className:"mt-3",children:x.has(f)?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-1",children:e.jsx("button",{onClick:()=>I(f,x.get(f)),className:"text-[11px] font-medium text-gray-400 cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:f})}),U.length>0&&e.jsx("div",{className:"grid grid-cols-3 gap-2 pt-1",children:U.map(O=>e.jsx(fe,{scenarioId:O.id,updatedAt:O.updatedAt,hasScreenshot:!!O.screenshotPath,name:O.name,isActive:O.id===l,onSelect:()=>m(O)},O.id))})]}):e.jsxs("div",{className:"py-2",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-500",children:f}),e.jsx("p",{className:"text-[10px] text-amber-400/80 m-0 mt-1.5 leading-relaxed",children:"There is data missing that is required to show the scenarios for this component. Please copy and paste this prompt into Claude to ask Claude to fix the data."}),e.jsx("div",{className:"mt-1.5",children:e.jsx(Bt,{name:f,scenarios:U})})]})},f)),Te.map(f=>e.jsxs("div",{className:"mt-3",children:[e.jsx("div",{className:"py-1",children:e.jsx("button",{onClick:()=>I(f.name,f.sha),className:"text-[11px] font-medium text-gray-400 cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:f.name})}),(f.scenarios.length>0||f.pendingScenarios.length>0)&&e.jsxs("div",{className:"grid grid-cols-3 gap-2 pt-1",children:[f.scenarios.map(U=>e.jsx(fe,{imgSrc:U.screenshotPath?`/api/screenshot/${U.screenshotPath}`:null,name:U.name,isActive:!1,onSelect:()=>N({analysisId:f.analysisId,scenarioId:U.id,scenarioName:U.name,entitySha:f.sha,entityName:f.name})},U.id)),f.pendingScenarios.map(U=>e.jsx("div",{className:"px-2.5 py-1 bg-[#2a2a2a] text-gray-400 text-[10px] rounded-full",title:U,children:U},U))]})]},f.sha))]}),ee&&e.jsxs("div",{children:[e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Functions"}),$e.map(f=>e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"py-1",children:e.jsx("button",{onClick:()=>I(f.name,x.get(f.name)),className:"text-[11px] font-medium text-gray-400 cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:f.name})}),e.jsx(Ee,{filePath:f.filePath,projectRoot:i}),f.testFile&&e.jsxs("div",{className:"mt-0.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[9px] text-gray-600",children:"test:"}),e.jsx("span",{className:"text-[9px] text-gray-500 truncate",children:f.testFile})]}),e.jsx(tt,{testFile:f.testFile,entityName:f.name})]})]},f.name))]})]})]})})}return e.jsx("div",{ref:J,onScroll:be,className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-4 space-y-4",children:[_&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold text-white m-0 font-['IBM_Plex_Sans']",children:_}),$&&e.jsx("p",{className:"text-xs text-gray-400 m-0 mt-1 font-['IBM_Plex_Sans'] leading-relaxed",children:$})]}),R.length>1&&e.jsx(fn,{brokenEntities:R}),z.size>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wider",children:"Application"}),e.jsx("button",{onClick:j,className:"px-2.5 py-1 text-[10px] font-medium text-gray-400 bg-[#2a2a2a] border border-[#4d4d4d] rounded hover:bg-[#333] hover:text-white hover:border-[#005c75] transition-colors cursor-pointer",children:"+ New Page"})]}),e.jsxs("p",{className:"text-[11px] text-gray-500 m-0 mt-1.5 font-['IBM_Plex_Sans'] leading-relaxed",children:["Select a page scenario below and switch to"," ",e.jsx("button",{onClick:j,className:"text-[#00a0c4] hover:text-[#00c4eb] bg-transparent border-none p-0 cursor-pointer underline font-inherit text-inherit",children:"Build"})," ","to change or enhance an existing page or"," ",e.jsx("button",{onClick:j,className:"text-[#00a0c4] hover:text-[#00c4eb] bg-transparent border-none p-0 cursor-pointer underline font-inherit text-inherit",children:"create a new page"})]}),[...z.entries()].sort(([S],[T])=>S==="Home"?-1:T==="Home"?1:S.localeCompare(T)).map(([S,T])=>{var G,V;return e.jsx("div",{className:"mt-2",children:x.has(S)&&w(x.get(S))?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"py-1",children:[e.jsx("button",{onClick:()=>I(S,x.get(S)),className:"text-[11px] font-medium text-gray-400 cursor-pointer hover:text-white transition-colors bg-transparent border-none p-0",children:S}),(()=>{const A=x.get(S),K=A?P.get(A):void 0;return K&&K!==S?e.jsx("span",{className:"text-[10px] text-gray-600 ml-1.5",children:K}):null})()]}),(((G=T[0])==null?void 0:G.pageFilePath)||L[S])&&e.jsx(Ee,{filePath:((V=T[0])==null?void 0:V.pageFilePath)||L[S],projectRoot:i}),e.jsx("div",{className:"grid grid-cols-3 gap-2 pt-1",children:T.map(A=>e.jsx(fe,{scenarioId:A.id,updatedAt:A.updatedAt,hasScreenshot:!!A.screenshotPath,name:A.name,isActive:A.id===l,onSelect:()=>m(A)},A.id))})]}):e.jsxs("div",{className:"py-2",children:[e.jsx("span",{className:"text-[11px] font-medium text-gray-500",children:S}),e.jsx("p",{className:"text-[10px] text-amber-400/80 m-0 mt-1.5 leading-relaxed",children:"There is data missing that is required to show the scenarios for this page. Please copy and paste this prompt into Claude to ask Claude to fix the data."}),e.jsx("div",{className:"mt-1.5",children:e.jsx(Bt,{name:S,scenarios:T,reason:x.has(S)?"incomplete":"missing"})})]})},S)})]})]})},je)}const jn=[{key:"app",label:"App"},{key:"build",label:"Build"},{key:"data",label:"Structure"},{key:"journal",label:"Journal"}];function yn({activeTab:t,onTabChange:s,buildIdle:n}){return e.jsxs("div",{className:"bg-[#3d3d3d] h-10 flex items-center px-3 gap-3 shrink-0 z-20 border-b border-[#2d2d2d]",children:[e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsx("img",{src:zs,alt:"CodeYam",className:"h-5 brightness-0 invert"}),e.jsx("span",{className:"text-white font-medium text-xs whitespace-nowrap",children:"Codeyam Editor"})]}),e.jsx("div",{className:"flex-1"}),e.jsx("div",{className:"flex items-center gap-2 shrink-0",children:e.jsx("div",{className:"flex items-center gap-0.5 bg-[#4a3232] rounded-lg p-0.5",children:jn.map(a=>e.jsxs("button",{onClick:()=>s(a.key),className:`px-2.5 py-1 text-xs font-medium rounded-md transition-colors cursor-pointer ${t===a.key?"bg-[#7a4444] text-white":"text-gray-300 hover:text-white"}`,children:[a.label,a.key==="build"&&n&&t!=="build"&&e.jsx("span",{className:"ml-1 inline-block w-1.5 h-1.5 rounded-full bg-amber-400 animate-pulse"})]},a.key))})})]})}function vn({onMouseDown:t,onDoubleClick:s,isDragging:n}){return e.jsxs("div",{className:"shrink-0 relative flex items-center justify-center cursor-col-resize group",style:{width:12},onMouseDown:t,onDoubleClick:s,children:[e.jsx("div",{className:"absolute inset-y-0 left-1/2 -translate-x-1/2",style:{width:n?3:1,backgroundColor:n?"#3b82f6":"#3d3d3d",transition:"width 100ms, background-color 100ms"}}),!n&&e.jsx("div",{className:"absolute inset-0 bg-blue-500/0 group-hover:bg-blue-500/20 transition-colors pointer-events-none"}),e.jsxs("div",{className:"relative z-10 flex flex-col gap-[3px] opacity-0 group-hover:opacity-100 transition-opacity",style:n?{opacity:1}:void 0,children:[e.jsx("div",{className:"w-2 h-px bg-gray-400"}),e.jsx("div",{className:"w-2 h-px bg-gray-400"}),e.jsx("div",{className:"w-2 h-px bg-gray-400"})]})]})}const Nn=300,Le=150;function wn(t){const[s,n]=r.useState(null),[a,c]=r.useState(!1),o=r.useRef(0);r.useEffect(()=>{t.current&&n(Math.round(t.current.offsetWidth*.5))},[t]);const i=r.useCallback(()=>{var u;return((u=t.current)==null?void 0:u.offsetWidth)??(typeof window<"u"?window.innerWidth:1024)},[t]),l=r.useCallback(u=>{u.preventDefault(),c(!0)},[]),m=r.useCallback(()=>{n(Math.round(i()*.5))},[i]),N=r.useCallback(()=>{n(Math.round(i()*.5))},[i]),j=r.useCallback(()=>{n(Math.round(i()*.5))},[i]);r.useEffect(()=>{if(!a)return;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const u=_=>{cancelAnimationFrame(o.current),o.current=requestAnimationFrame(()=>{var p;const $=(p=t.current)==null?void 0:p.getBoundingClientRect(),B=($==null?void 0:$.left)??0,v=(($==null?void 0:$.width)??window.innerWidth)-Le,E=_.clientX-B,z=Math.min(Math.max(E,Nn),v);n(z)})},L=_=>{var E;cancelAnimationFrame(o.current),c(!1);const $=(E=t.current)==null?void 0:E.getBoundingClientRect(),B=($==null?void 0:$.left)??0,F=($==null?void 0:$.width)??window.innerWidth,v=_.clientX-B;v<Le?n(0):F-v<Le&&n(F)};return document.addEventListener("mousemove",u),document.addEventListener("mouseup",L),()=>{cancelAnimationFrame(o.current),document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",L),document.body.style.cursor="",document.body.style.userSelect=""}},[a,t]),r.useEffect(()=>{const u=()=>{n(L=>{if(L===null||L===0)return L;const _=i();return L>=_?_:Math.min(L,_-Le)})};if(!(typeof window>"u"))return window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)},[i]);const k=i(),b=s===0,I=s!==null&&s>=k;return{editorWidth:s,isDragging:a,isEditorCollapsed:b,isPreviewCollapsed:I,handleMouseDown:l,handleDoubleClick:m,expandEditor:N,expandPreview:j}}function Sn({preview:t,onDismiss:s,onLoadCommit:n}){return e.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-[700px] w-full",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"text-lg font-semibold text-[#333] m-0 font-['IBM_Plex_Sans']",children:"Journal Screenshot"}),e.jsx("p",{className:"text-sm text-[#888] mt-1 m-0 font-['IBM_Plex_Sans']",children:"This is a snapshot from a previous version — not a live preview"})]}),e.jsx("div",{className:"rounded-lg overflow-hidden border-2 border-[#ccc] shadow-md max-w-full w-fit",children:e.jsx("img",{src:t.screenshotUrl,alt:t.scenarioName,className:"max-w-full h-auto block"})}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[#666]",children:[t.commitSha&&e.jsx("span",{className:"font-mono text-xs text-[#00a0c4] bg-[#00a0c4]/15 px-2 py-0.5 rounded",children:t.commitSha.slice(0,7)}),e.jsxs("span",{className:"truncate",children:[t.scenarioName,t.commitMessage&&` — ${t.commitMessage}`]})]}),e.jsx("div",{className:"flex items-center gap-3",children:t.commitSha&&n&&e.jsx(kn,{commitSha:t.commitSha,onLoadCommit:n})})]})}function kn({commitSha:t,onLoadCommit:s}){const[n,a]=r.useState(!1),[c,o]=r.useState(null);return e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>{a(!0),o(null),s(t).then(i=>{i.success||o(i.error||"Failed to load commit")}).catch(i=>{o(i instanceof Error?i.message:"Network error")}).finally(()=>a(!1))},disabled:n,className:"bg-[#005c75] hover:bg-[#004d63] disabled:opacity-50 text-white text-sm font-medium px-4 py-1.5 rounded transition-colors cursor-pointer",children:n?"Reverting...":"Revert to this code and load this version"}),c&&e.jsx("div",{className:"bg-red-50 border border-red-200 rounded px-4 py-2 text-sm text-red-600 w-full text-center",children:c})]})}function Cn({analysisId:t,scenarioId:s,scenarioName:n,entityName:a,projectSlug:c,onStateChange:o}){const{interactiveServerUrl:i,isStarting:l,isLoading:m}=Ws({analysisId:t,scenarioId:s,scenarioName:n,entityName:a,projectSlug:c,enabled:!0});return r.useEffect(()=>{o(i,l||m)},[i,l,m,o]),null}function Pn({onSaveToCurrent:t,onSaveAsNew:s,onDismiss:n,isSaving:a}){return e.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-emerald-900/60 border-b border-emerald-700/50 text-emerald-200 text-xs",children:[e.jsx("span",{className:"font-medium",children:"Data modified."}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:t,disabled:a,className:"px-2.5 py-0.5 bg-emerald-600 hover:bg-emerald-500 disabled:opacity-50 text-white text-xs font-medium rounded transition-colors cursor-pointer disabled:cursor-not-allowed",children:a?"Saving...":"Save to Scenario"}),e.jsx("button",{onClick:s,disabled:a,className:"px-2.5 py-0.5 bg-emerald-800 hover:bg-emerald-700 disabled:opacity-50 text-emerald-200 text-xs font-medium rounded transition-colors cursor-pointer disabled:cursor-not-allowed",children:"Save as New"}),e.jsx("button",{onClick:n,disabled:a,className:"text-emerald-400 hover:text-emerald-200 disabled:opacity-50 transition-colors cursor-pointer disabled:cursor-not-allowed",title:"Dismiss",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})]})}function En(t,s){return s.status==="error"?{url:null,proxyUrl:null,isStarting:!1,error:s.errorMessage||"Dev server crashed",canStartServer:t.canStartServer,autoStartAttempted:t.autoStartAttempted,shouldAutoStart:!1}:s.url?{url:s.url,proxyUrl:s.proxyUrl||null,isStarting:!1,error:null,canStartServer:!0,autoStartAttempted:t.autoStartAttempted,shouldAutoStart:!1}:s.status==="starting"?{...t,isStarting:!0,error:null,canStartServer:!0,shouldAutoStart:!1}:s.status==="stopped"?t.url?{...t,url:null,isStarting:!1,shouldAutoStart:!1}:t.autoStartAttempted?{...t,isStarting:!1,shouldAutoStart:!1}:{...t,autoStartAttempted:!0,shouldAutoStart:!0}:{...t,shouldAutoStart:!1}}function Mn(t){const[s,n]=r.useState({url:null,proxyUrl:null,isStarting:!1,error:null,canStartServer:!0,autoStartAttempted:!1}),a=r.useRef(s);a.current=s,r.useEffect(()=>{let i=!1,l=null;const m=async()=>{try{const N=await fetch("/api/editor-dev-server");if(i)return;const j=await N.json(),k=En(a.current,j),{shouldAutoStart:b,...I}=k;if(n(I),b&&!(t!=null&&t.skipAutoStart))try{const u=await fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start"})});if(i)return;u.ok?n(L=>({...L,isStarting:!0})):n(L=>({...L,canStartServer:!1}))}catch{}}catch{}};return m(),l=setInterval(()=>void m(),2e3),()=>{i=!0,l&&clearInterval(l)}},[s.url]);const c=r.useCallback(()=>{n(i=>({...i,error:null,isStarting:!0})),fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"restart"})}).catch(()=>{})},[]),o=r.useCallback(()=>{n(i=>({...i,error:null,isStarting:!0})),fetch("/api/editor-dev-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start"})}).catch(()=>{})},[]);return{devServerUrl:s.url,proxyUrl:s.proxyUrl,isStarting:s.isStarting,error:s.error,canStartServer:s.canStartServer,retryServer:c,startServer:o}}function In(t){const s=r.useRef(null),n=r.useRef(null);r.useEffect(()=>{if(typeof document>"u")return;n.current||(n.current=document.createElement("canvas"),n.current.width=64,n.current.height=64);const a=document.querySelector('link[rel="icon"]');if(!a)return;if(s.current||(s.current=a.href),!t){a.href=s.current;return}const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const o=n.current,i=o.getContext("2d");i.clearRect(0,0,64,64);const l=56,m=(64-l)/2;i.drawImage(c,m,m,l,l);const N=12,j=64-N-1,k=N+1;i.beginPath(),i.arc(j,k,N+3,0,2*Math.PI),i.fillStyle="#ffffff",i.fill(),i.beginPath(),i.arc(j,k,N,0,2*Math.PI),i.fillStyle="#ef4444",i.fill(),a.href=o.toDataURL("image/png")},c.src=s.current},[t]),r.useEffect(()=>()=>{if(typeof document>"u")return;const a=document.querySelector('link[rel="icon"]');a&&s.current&&(a.href=s.current)},[])}function Hn({currentUrl:t,nextUrl:s,formMethod:n,defaultShouldRevalidate:a}){return n||t.pathname===s.pathname?a:t.pathname.startsWith("/editor")&&s.pathname.startsWith("/editor")?!1:a}const Jn=()=>[{title:"Editor - CodeYam"},{name:"description",content:"CodeYam Code + Data Editor"}];class Tn extends r.Component{constructor(){super(...arguments);kt(this,"state",{error:null,errorInfo:null})}static getDerivedStateFromError(n){return{error:n,errorInfo:null}}componentDidCatch(n,a){console.error("[EditorErrorBoundary] Error:",n.message),console.error("[EditorErrorBoundary] Component stack:",a.componentStack),console.error("[EditorErrorBoundary] Loader snapshot:",JSON.stringify(this.props.loaderSnapshot,null,2)),this.setState({errorInfo:a})}render(){var n;return this.state.error?e.jsx("div",{className:"fixed inset-0 bg-[#1e1e1e] flex items-center justify-center p-8",children:e.jsxs("div",{className:"max-w-[600px] w-full space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold text-red-400 font-['IBM_Plex_Sans'] m-0",children:"Something went wrong"}),e.jsx("pre",{className:"text-xs text-gray-300 bg-[#2d2d2d] p-3 rounded overflow-auto max-h-[120px]",children:this.state.error.message}),((n=this.state.errorInfo)==null?void 0:n.componentStack)&&e.jsxs("details",{className:"text-xs text-gray-500",children:[e.jsx("summary",{className:"cursor-pointer hover:text-gray-300 transition-colors",children:"Component stack"}),e.jsx("pre",{className:"mt-2 bg-[#2d2d2d] p-3 rounded overflow-auto max-h-[200px] text-yellow-300",children:this.state.errorInfo.componentStack})]}),e.jsx("p",{className:"text-xs text-gray-500 m-0",children:"Full diagnostics are in the browser console."}),e.jsx("button",{onClick:()=>window.location.reload(),className:"px-4 py-2 bg-[#005c75] text-white text-sm rounded hover:bg-[#004d63] transition-colors cursor-pointer",children:"Reload"})]})}):this.props.children}}const Gn=ws(function(){const{projectSlug:s,projectRoot:n,hasProject:a,scenarios:c,allScenarios:o,analyzedEntities:i,allEntities:l,glossaryFunctions:m,glossaryEntries:N,entityImports:j,pageFilePaths:k,entityChangeStatus:b,modifiedFiles:I,featureName:u,userPrompt:L,projectTitle:_,projectDescription:$,defaultScreenSize:B,screenSizes:F,editorStep:v,editorStepLabel:E,claudeSessionId:z,focusedEntitySha:p,newerEntitySha:x,focusedEntity:y,migrationMode:h,migrationState:w}=Ss(),[P,R]=ks(),D=Cs(),M=r.useRef(null),J=r.useRef(null),ce=r.useRef(null),be=r.useRef(null),[je,ye]=r.useState(p);r.useEffect(()=>{ye(p)},[p]);const te=r.useMemo(()=>xn(je,l),[je,l,o]),S=(te==null?void 0:te.displayName)??void 0,T=P.get("scenario")||void 0,[G,V]=r.useState(()=>S?[S]:[]),A=r.useRef(null),K=r.useRef([]),re=r.useRef(null);r.useEffect(()=>{var H;const d=T||((H=Ts(o))==null?void 0:H.id);if(!$s(d,A.current))return;const g=o.find(Z=>Z.id===d);if(!g)return;A.current=d;const C=Ke(g,K.current,re.current);C&&de(C);const W=Qe(g.name);fetch("/api/editor-switch-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioSlug:W,scenarioId:g.id,scenarioName:g.name,scenarioType:g.type})}).catch(()=>{})},[T,o]),r.useEffect(()=>{const d=new BroadcastChannel("codeyam-editor");return d.onmessage=g=>{var C;if(((C=g.data)==null?void 0:C.type)==="switch-scenario"&&g.data.scenarioId){const W=g.data.scenarioId,H=o.find(he=>he.id===W);if(!H)return;A.current=W;const Z=new URLSearchParams(P);Z.set("scenario",W),Z.delete("zoom"),R(Z),f(null),O(null),oe(null),we(!0);const Ce=Qe(H.name);fetch("/api/editor-switch-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioSlug:Ce,scenarioId:W,scenarioType:H.type})}).then(()=>{ee(!1),Re(he=>he+1)}).catch(()=>{we(!1)})}},()=>d.close()},[P,R,o]),r.useEffect(()=>{if(P.get("ref")!=="link"||!T)return;const d=new BroadcastChannel("codeyam-editor");d.postMessage({type:"switch-scenario",scenarioId:T}),d.close(),window.close()},[]);const{devServerUrl:q,proxyUrl:ne,isStarting:ae,error:ie,canStartServer:ve,retryServer:Te,startServer:$e}=Mn({skipAutoStart:h==="candidate"||h==="active"}),[Ne,ee]=r.useState(!1),[Y,f]=r.useState(null),[U,O]=r.useState(null),[Be,nt]=r.useState(!1),[Oe,oe]=r.useState(null),Ht=r.useCallback(async d=>{const C=await(await fetch("/api/editor-load-commit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({commitSha:d})})).json();return C.success&&(oe(null),ee(!1)),C},[]),Jt=r.useCallback((d,g)=>{O(C=>(d&&d!==C&&ee(!1),d)),!g&&d&&ee(!0),nt(g)},[]),at=r.useCallback(d=>{oe(null),f(C=>(C&&C.analysisId===d.analysisId||(O(null),Re(H=>H+1)),d)),nt(!0),ee(!1);const g=new URLSearchParams(P);g.delete("scenario"),g.delete("zoom"),R(g)},[P,R]),[X,de]=r.useState(B?{name:B.name,width:B.width,height:B.height}:{name:"Desktop",width:1440,height:900}),[rt,it]=r.useState(!1),ot=B?{name:B.name,width:B.width,height:B.height}:null;re.current=ot;const lt=Ps(),Q=r.useMemo(()=>{const d=lt.pathname.split("/").filter(Boolean),g=d[d.length-1];return g==="build"||g==="journal"?g:g==="structure"?"data":"app"},[lt.pathname]),se=r.useCallback(d=>{ye(null),V([]);const g=d==="app"?"":`/${d==="data"?"structure":d}`,C=P.get("scenario"),W=C?`?scenario=${C}`:"";D(`/editor${g}${W}`)},[D,P]),Gt=r.useCallback(()=>{se("build"),me(!0)},[se]),Vt=r.useCallback(()=>{se("build"),me(!0),setTimeout(()=>{var d;(d=M.current)==null||d.sendInput("codeyam editor migrate")},300)},[se]),[qt,me]=r.useState(Q==="build"),Yt=!!(u&&v),[Ae,Xt]=r.useState(Yt?"pending":"no-session");r.useEffect(()=>{Ae==="pending"&&(se("build"),me(!0))},[Ae,se]);const Kt=r.useCallback(()=>{Xt("continue")},[]),[ze,We]=r.useState(!1),[Qt,ct]=r.useState(!1),Zt=r.useCallback(d=>{We(d),d&&ct(!1)},[]);In(ze);const{editorWidth:dt,isDragging:mt,isEditorCollapsed:Ue,isPreviewCollapsed:He,handleMouseDown:es,handleDoubleClick:ts,expandEditor:ss,expandPreview:ns}=wn(be),[xe,xt]=r.useState(!1),as=r.useCallback(()=>{xt(!0),se("build"),me(!0)},[se]);r.useEffect(()=>{if(!xe||c.length===0)return;const g=c.filter(C=>!C.componentName)[0]||c[0];g&&g.id!==T&&ue(g)},[xe]);const pt=r.useCallback(()=>{xt(!1)},[]),rs=r.useCallback(d=>{de(d),fetch("/api/editor-project-info",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({defaultScreenSize:d,skipBroadcast:!0})})},[]),[ut,ht]=r.useState(As);r.useEffect(()=>{const d=Rs();ht(d),d.systemNotification&&typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()},[]);const is=r.useCallback(d=>{ht(d),Ls(d)},[]);r.useEffect(()=>{if(Q==="build"){We(!1);const d=setTimeout(()=>{var g,C;(g=M.current)==null||g.scrollToBottom(),(C=M.current)==null||C.focus()},50);return()=>clearTimeout(d)}},[Q]),r.useEffect(()=>{function d(){!document.hidden&&Q==="build"&&We(!1)}return document.addEventListener("visibilitychange",d),()=>document.removeEventListener("visibilitychange",d)},[Q]);const[Je,os]=r.useState(null);r.useEffect(()=>{const d=ce.current;if(!d)return;const g=new ResizeObserver(C=>{const W=C[0];W&&os({width:W.contentRect.width,height:W.contentRect.height})});return g.observe(d),()=>g.disconnect()},[]);const pe=r.useMemo(()=>Je?_s(Je,X):1,[Je,X]),[Ge,Re]=r.useState(0),[ft,Ve]=r.useState(null),[gt,we]=r.useState(!1),[ls,Se]=r.useState(!1),[cs,bt]=r.useState(!1),ds=r.useCallback(()=>{Se(!0)},[]);r.useEffect(()=>{const d=g=>{var C;((C=g.data)==null?void 0:C.type)==="codeyam-localstorage-changed"&&Se(!0)};return window.addEventListener("message",d),()=>window.removeEventListener("message",d)},[]);const jt=r.useCallback(async d=>{bt(!0);try{let g;const C=J.current;C!=null&&C.contentWindow&&(g=await new Promise(Z=>{const Ce=setTimeout(()=>Z(void 0),2e3),he=wt=>{var St;((St=wt.data)==null?void 0:St.type)==="codeyam-localstorage-state"&&(clearTimeout(Ce),window.removeEventListener("message",he),Z(wt.data.data))};window.addEventListener("message",he),C.contentWindow.postMessage({type:"codeyam-get-localstorage"},"*")}));const H=await(await fetch("/api/editor-save-seed-state",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:d,localStorage:g})})).json();H.success?Se(!1):console.error("[editor] Save seed state failed:",H.error)}catch(g){console.error("[editor] Save seed state error:",g)}finally{bt(!1)}},[]),ms=r.useCallback((d,g)=>{if(Ve(d||null),g){const C=new URLSearchParams(P);C.set("scenario",g),A.current=g,R(C);const W=o.find(H=>H.id===g);if(W){const H=Ke(W,K.current,re.current);H&&de(H)}}oe(null),ee(!1),Re(C=>C+1)},[P,R,o]),{customSizes:qe,addCustomSize:xs,removeCustomSize:ps}=Ms(s),Ye=r.useMemo(()=>Hs(F),[F]),Xe=r.useMemo(()=>[...Ye,...qe],[Ye,qe]);K.current=Xe;const yt=r.useMemo(()=>{const d=new Map;for(const g of l){d.set(g.name,g.sha);const C=Ie(Me(g.filePath));C!==g.name&&d.set(C,g.sha)}return d},[l]),us=r.useMemo(()=>{const d=[{name:"App"}];for(const g of G)d.push({name:g,componentName:g,entitySha:yt.get(g)});return d},[G,yt]),vt=r.useCallback((d,g)=>{if(!d){V([]),ye(null);const Z=P.get("scenario"),Ce=Z?`?scenario=${Z}`:"";D(`/editor${Ce}`);return}if(!g){console.error(`[editor] No entity SHA for "${d}" — entity missing from database`);return}const C=G.indexOf(d);C>=0?V(G.slice(0,C+1)):V([...G,d]);const W=o.find(Z=>Z.entitySha===g);ye(g);const H=W?`?scenario=${W.id}`:"";D(`/editor/entity/${g}${H}`)},[D,o,G,P]),ue=r.useCallback(d=>{f(null),O(null),oe(null),Ve(null);const g=Ke(d,Xe,ot);g&&de(g),A.current=d.id;const C=new URLSearchParams(P);C.set("scenario",d.id),R(C),we(!0),Se(!1);const W=Qe(d.name);fetch("/api/editor-switch-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioSlug:W,scenarioId:d.id,scenarioType:d.type,skipBroadcast:!0})}).then(()=>{ee(!1),Re(H=>H+1)}).catch(()=>{we(!1)})},[P,R,Xe]),hs=r.useCallback(d=>{if(!d.commitSha){const g=o.find(C=>C.name===d.scenarioName);if(g){ue(g);return}}oe(d)},[o,ue]),fs=d=>{const g={name:d.name,width:d.width,height:d.height};de(g),fetch("/api/editor-project-info",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({defaultScreenSize:g,skipBroadcast:!0})})},gs=(d,g,C)=>{xs(d,g,C)},bs=d=>{de(d),fetch("/api/editor-project-info",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({defaultScreenSize:d,skipBroadcast:!0})})},js=()=>{Y||ee(!0),we(!1)},ke=r.useMemo(()=>Ds({activeAnalyzedScenario:!!Y,analyzedPreviewUrl:U,activeScenarioId:T||null,scenarios:o,proxyUrl:ne,devServerUrl:q,zoomComponent:S||null}),[ne,q,S,T,o,Y,U]),Nt=r.useMemo(()=>{const d=Fs(ke,ft);if(!d)return null;const g=d.includes("?")?"&":"?";return`${d}${g}__cb=${Ge}`},[ke,ft,Ge]),ys=r.useMemo(()=>({projectSlug:s,hasProject:a,scenarioCount:c==null?void 0:c.length,allScenarioCount:o==null?void 0:o.length,analyzedEntityCount:i==null?void 0:i.length,glossaryFunctionCount:m==null?void 0:m.length,entityChangeStatusKeys:b?Object.keys(b):[],featureName:u}),[s,a,c,o,i,m,b,u]);return e.jsxs(e.Fragment,{children:[e.jsx(Tn,{loaderSnapshot:ys,children:e.jsxs("div",{className:"fixed inset-0 bg-[#2d2d2d] flex flex-col",children:[Y&&e.jsx(Cn,{analysisId:Y.analysisId,scenarioId:Y.scenarioId,scenarioName:Y.scenarioName,entityName:Y.entityName,projectSlug:s,onStateChange:Jt},Y.analysisId),e.jsxs("div",{ref:be,className:"flex-1 flex min-h-0",children:[Ue&&e.jsx("div",{className:"shrink-0 flex items-center justify-center cursor-pointer hover:bg-[#3d3d3d] transition-colors",style:{width:8,backgroundColor:"#2d2d2d"},onClick:ss,title:"Expand editor",children:e.jsx("svg",{width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",stroke:"#888",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M1 1l4 4-4 4"})})}),e.jsxs("aside",{className:"bg-[#1e1e1e] shrink-0 flex flex-col overflow-hidden",style:{...Ue?{display:"none"}:dt!==null?{width:`${dt}px`}:{width:"50%"}},children:[x&&te&&e.jsxs("div",{className:"px-3 py-2 text-xs flex items-center justify-between",style:{background:"#2a1f00",borderBottom:"1px solid #3d2e00",color:"#f0c040"},children:[e.jsxs("span",{children:["Viewing an older version of"," ",e.jsx("strong",{children:te.name}),". A newer version exists."]}),e.jsx("a",{href:`/editor/entity/${x}`,className:"px-2 py-0.5 rounded text-xs",style:{background:"#3d2e00",color:"#f0c040",textDecoration:"none"},children:"View latest"})]}),e.jsx(yn,{activeTab:Q,onTabChange:d=>{se(d),d==="build"&&me(!0),fetch("/api/telemetry-page-view",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({route:`/editor/${d}`})}).catch(()=>{})},buildIdle:ze}),e.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[ze&&Q!=="build"&&!Qt&&e.jsxs("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-50 animate-[slideDown_0.3s_ease-out]",children:[e.jsx("style",{children:`
49
+ @keyframes slideDown {
50
+ from { transform: translate(-50%, -100%); opacity: 0; }
51
+ to { transform: translate(-50%, 0); opacity: 1; }
52
+ }
53
+ `}),e.jsxs("div",{className:"flex items-center gap-1 bg-amber-50 border-2 border-amber-300 rounded-lg shadow-lg",children:[e.jsxs("button",{onClick:()=>{se("build"),me(!0)},className:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-amber-100 transition-colors rounded-l-md",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-amber-400 animate-pulse"}),e.jsx("span",{className:"text-sm font-medium text-amber-900",children:"Claude is waiting for you"}),e.jsx("span",{className:"text-xs text-amber-600 ml-1",children:"Go to Build"})]}),e.jsx("button",{onClick:d=>{d.stopPropagation(),ct(!0)},className:"px-2 py-2 cursor-pointer hover:bg-amber-100 transition-colors rounded-r-md text-amber-400 hover:text-amber-600","aria-label":"Dismiss",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:e.jsx("path",{d:"M3 3l8 8M11 3l-8 8"})})})]})]}),qt&&e.jsxs("div",{className:"absolute inset-0 flex flex-col overflow-hidden",style:{visibility:Q==="build"?"visible":"hidden"},children:[e.jsx("div",{className:xe?"flex-1 min-h-0":"flex-1",style:xe?{flex:"1 1 50%"}:void 0,children:Ae==="pending"?e.jsx(Js,{featureName:u,editorStep:v,editorStepLabel:E,onContinue:Kt}):e.jsx(Bs,{ref:M,entityName:"Editor",projectSlug:s,entityFilePath:null,scenarioName:null,onRefreshPreview:ms,onShowResults:as,onHideResults:pt,onSetViewport:rs,onDataMutationForwarded:ds,editorMode:!0,onIdleChange:Zt,notificationSettings:ut,buildTabActive:Q==="build",claudeStartMode:Ae==="continue"?"resume":"fresh",claudeSessionId:z,resultsOpen:xe})}),xe&&e.jsx("div",{style:{flex:"1 1 50%"},className:"min-h-0 border-t-2 border-gray-300",children:e.jsx(un,{scenarios:c,allScenarios:o,glossaryFunctions:m,projectRoot:n,activeScenarioId:T,onScenarioSelect:ue,onClose:pt,entityChangeStatus:b,modifiedFiles:I,featureName:u,userPrompt:L})})]}),e.jsx("div",{className:"absolute inset-0 flex flex-col overflow-hidden",style:{visibility:Q==="app"?"visible":"hidden"},children:e.jsx(bn,{hasProject:a,scenarios:o,analyzedEntities:i,allEntities:l,glossaryFunctions:m,glossaryEntries:N,projectRoot:n,activeScenarioId:T,onScenarioSelect:ue,onAnalyzedScenarioSelect:at,onSwitchToBuild:Gt,zoomComponent:S,focusedEntity:te,onZoomChange:vt,entityImports:j,pageFilePaths:k,projectTitle:_,projectDescription:$,breadcrumbItems:us,migrationMode:h,migrationState:w,onStartMigration:Vt})}),e.jsx("div",{className:"absolute inset-0 flex flex-col overflow-hidden",style:{visibility:Q==="data"?"visible":"hidden"},children:e.jsx(Gs,{scenarios:o,projectRoot:n,activeScenarioId:T,onScenarioSelect:ue,zoomComponent:S,focusedEntity:te,onZoomChange:vt,analyzedEntities:[],glossaryFunctions:m,activeAnalyzedScenarioId:Y==null?void 0:Y.scenarioId,onAnalyzedScenarioSelect:at,entityImports:j,pageFilePaths:k})}),e.jsx("div",{className:"absolute inset-0 flex flex-col overflow-hidden",style:{visibility:Q==="journal"?"visible":"hidden"},children:e.jsx(an,{isActive:Q==="journal",onScreenshotClick:hs,glossaryFunctions:m})})]}),e.jsx(Os,{serverUrl:q,isStarting:ae,projectSlug:s,devServerError:ie,onStartServer:ve?$e:void 0,notificationSettings:ut,onChangeNotificationSettings:is})]}),!Ue&&!He&&e.jsx(vn,{onMouseDown:es,onDoubleClick:ts,isDragging:mt}),He&&e.jsx("div",{className:"shrink-0 flex items-center justify-center cursor-pointer hover:bg-[#3d3d3d] transition-colors",style:{width:8,backgroundColor:"#2d2d2d"},onClick:ns,title:"Expand preview",children:e.jsx("svg",{width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",stroke:"#888",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M5 1l-4 4 4 4"})})}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0",style:{...He?{display:"none"}:void 0,...mt?{pointerEvents:"none"}:void 0},children:[e.jsxs("div",{className:"bg-[#2d2d2d] border-b border-[#3d3d3d] shrink-0 z-10 h-10 flex items-center px-4 relative",children:[e.jsx("div",{className:"flex items-center gap-1 shrink-0 z-10"}),e.jsx("div",{className:"absolute inset-0 flex items-center justify-center gap-1 pointer-events-none",children:e.jsxs("div",{className:"flex items-center gap-1 pointer-events-auto",children:[_e.map(d=>e.jsxs("button",{onClick:()=>fs(d),className:`p-1.5 rounded transition-colors cursor-pointer ${X.name===d.name?"text-white bg-[#555]":"text-gray-500 hover:text-gray-300"}`,title:`${d.name} (${d.width}×${d.height})`,children:[d.name==="Desktop"&&e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),e.jsx("path",{d:"M8 21h8M12 17v4"})]}),d.name==="Laptop"&&e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8H4V6z"}),e.jsx("path",{d:"M2 18h20"})]}),d.name==="Tablet"&&e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2"}),e.jsx("path",{d:"M12 18h.01"})]}),d.name==="Mobile"&&e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"7",y:"2",width:"10",height:"20",rx:"2"}),e.jsx("path",{d:"M12 18h.01"})]})]},d.name)),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>it(d=>!d),className:`flex items-center gap-1.5 px-2 py-1 rounded transition-colors cursor-pointer ${rt||!_e.some(d=>d.name===X.name)?"text-white bg-[#555]":"text-gray-400 hover:text-gray-200 hover:bg-[#444]"}`,title:"Custom dimensions",children:[e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})}),e.jsxs("span",{className:"text-xs font-mono",children:[X.width," ×"," ",X.height??900]})]}),rt&&e.jsx(Is,{currentWidth:X.width,currentHeight:X.height??900,devicePresets:Ye,customSizes:qe,onApply:bs,onSave:gs,onRemove:ps,onClose:()=>it(!1)})]}),e.jsx("button",{onClick:()=>{const d=Nt||ke;d&&window.open(d,"_blank")},className:"p-1.5 rounded text-gray-500 hover:text-gray-300 transition-colors cursor-pointer",title:"Open preview in new window",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})})]})})]}),ls&&e.jsx(Pn,{onSaveToCurrent:()=>void jt("overwrite"),onSaveAsNew:()=>void jt("new"),onDismiss:()=>Se(!1),isSaving:cs}),e.jsx("div",{ref:ce,className:"flex-1 flex items-center justify-center overflow-hidden p-8",style:Oe?{backgroundColor:"#f5f0e8",backgroundImage:"repeating-linear-gradient(0deg, transparent, transparent 19px, #e8e0d0 19px, #e8e0d0 20px), repeating-linear-gradient(90deg, transparent, transparent 19px, #e8e0d0 19px, #e8e0d0 20px)"}:{backgroundImage:`
54
+ linear-gradient(45deg, #333 25%, transparent 25%),
55
+ linear-gradient(-45deg, #333 25%, transparent 25%),
56
+ linear-gradient(45deg, transparent 75%, #333 75%),
57
+ linear-gradient(-45deg, transparent 75%, #333 75%)
58
+ `,backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px",backgroundColor:"#2d2d2d"},children:Oe?e.jsx(Sn,{preview:Oe,onDismiss:()=>oe(null),onLoadCommit:Ht}):ke?e.jsx("div",{style:{width:`${X.width*pe}px`,height:`${(X.height??900)*pe}px`},children:e.jsxs("div",{className:"relative bg-white origin-top-left",style:{width:`${X.width}px`,height:`${X.height??900}px`,transform:pe<1?`scale(${pe})`:void 0},children:[!Ne&&!gt&&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-[#2a2a2a] rounded-lg p-8 w-[500px] h-[300px]",children:[e.jsx("div",{className:"mb-4",children:e.jsx(Ct,{})}),e.jsxs("div",{className:"flex flex-col gap-3 text-center",children:[e.jsx("h2",{className:"text-xl font-medium text-gray-200 leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Loading Preview"}),e.jsx("p",{className:"text-sm text-gray-400 leading-5 m-0 font-['IBM_Plex_Sans']",children:"Waiting for the app to render"})]})]})}),gt&&e.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center",style:{backgroundColor:"rgba(0, 0, 0, 0.25)",backdropFilter:"blur(1px)",transition:"opacity 200ms ease-out"},children:e.jsxs("div",{className:"flex flex-col items-center gap-3 animate-pulse",children:[e.jsx("svg",{className:"w-6 h-6 text-white/80 animate-spin",viewBox:"0 0 24 24",fill:"none",children:e.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeDasharray:"50 100"})}),e.jsx("span",{className:"text-white/70 text-xs font-['IBM_Plex_Sans']",children:"Switching scenario"})]})}),e.jsx("iframe",{ref:J,src:Nt||ke,className:"w-full h-full border-none",title:"Editor preview",onLoad:js,style:{opacity:Ne?1:0}},Ge)]})}):e.jsx("div",{className:"bg-[#2a2a2a] rounded-lg flex flex-col items-center justify-center",style:{width:`${X.width*pe}px`,height:`${(X.height??900)*pe}px`},children:ie?e.jsxs("div",{className:"flex flex-col gap-4 text-center px-8 max-w-[600px]",children:[e.jsx("h2",{className:"text-xl font-medium text-red-400 leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Dev Server Failed"}),e.jsx("pre",{className:"text-xs text-left bg-[#1e1e1e] text-gray-300 p-4 rounded overflow-auto max-h-[300px] w-full font-mono whitespace-pre-wrap",children:ie}),e.jsx("button",{onClick:Te,className:"mx-auto px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded hover:bg-[#004d63] transition-colors cursor-pointer",children:"Retry"})]}):ae||Be?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mb-4",children:e.jsx(Ct,{})}),e.jsxs("div",{className:"flex flex-col gap-3 text-center",children:[e.jsx("h2",{className:"text-xl font-medium text-gray-200 leading-[28px] m-0 font-['IBM_Plex_Sans']",children:Be?"Starting Interactive Mode":"Starting Dev Server"}),e.jsx("p",{className:"text-sm text-gray-400 leading-5 m-0 font-['IBM_Plex_Sans']",children:Be?"Loading component preview...":"Your dev server is starting up..."})]})]}):e.jsxs("div",{className:"flex flex-col gap-3 text-center px-8",children:[e.jsx("h2",{className:"text-xl font-medium text-gray-200 leading-[28px] m-0 font-['IBM_Plex_Sans']",children:"Live Preview"}),e.jsx("p",{className:"text-sm text-gray-500 leading-5 m-0 font-['IBM_Plex_Sans']",children:"Describe what you want to build in the Build tab"})]})})})]})]})]})}),e.jsx(Es,{})]})});export{Gn as default,Jn as meta,Hn as shouldRevalidate};
@@ -0,0 +1,41 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/addon-web-links-74hnHF59.js","assets/chunk-JZWAC4HX-BBXArFPl.js"])))=>i.map(i=>d[i]);
2
+ var ye=Object.defineProperty;var ge=(r,e,o)=>e in r?ye(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o;var U=(r,e,o)=>ge(r,typeof e!="symbol"?e+"":e,o);import{j as u}from"./jsx-runtime-D_zvdyIk.js";import{r as d}from"./chunk-JZWAC4HX-BBXArFPl.js";import{_ as P}from"./preload-helper-ckwbz45p.js";const z={sound:"soft-double-tap",systemNotification:!0},we=[{id:"soft-double-tap",label:"Soft double tap"},{id:"gentle-chime",label:"Gentle chime"},{id:"warm-ding",label:"Warm ding"},{id:"mellow-two-tone",label:"Mellow two-tone"},{id:"triangle-bell",label:"Triangle bell"},{id:"off",label:"No sound"}],ce="codeyam-editor-notifications";function Re(){try{const r=localStorage.getItem(ce);if(!r)return z;const e=JSON.parse(r);return typeof e=="string"?e==="true"?z:{...z,sound:"off",systemNotification:!1}:{...z,...e}}catch{return z}}function je(r){localStorage.setItem(ce,JSON.stringify(r))}function ae(r){var e;if(r!=="off")try{const o=new AudioContext,a={"soft-double-tap":t=>{[0,.12].forEach(n=>{const i=t.createOscillator(),g=t.createGain();i.connect(g),g.connect(t.destination),i.type="sine",i.frequency.value=392,g.gain.setValueAtTime(.25,t.currentTime+n),g.gain.exponentialRampToValueAtTime(.01,t.currentTime+n+.1),i.start(t.currentTime+n),i.stop(t.currentTime+n+.1)})},"gentle-chime":t=>{const n=t.createOscillator(),i=t.createGain();n.connect(i),i.connect(t.destination),n.type="sine",n.frequency.setValueAtTime(523,t.currentTime),n.frequency.setValueAtTime(659,t.currentTime+.15),i.gain.setValueAtTime(.3,t.currentTime),i.gain.exponentialRampToValueAtTime(.01,t.currentTime+.4),n.start(),n.stop(t.currentTime+.4)},"warm-ding":t=>{const n=t.createOscillator(),i=t.createGain();n.connect(i),i.connect(t.destination),n.type="sine",n.frequency.value=330,i.gain.setValueAtTime(.35,t.currentTime),i.gain.exponentialRampToValueAtTime(.01,t.currentTime+.6),n.start(),n.stop(t.currentTime+.6)},"mellow-two-tone":t=>{const n=t.createOscillator(),i=t.createGain();n.connect(i),i.connect(t.destination),n.type="sine",n.frequency.setValueAtTime(294,t.currentTime),n.frequency.setValueAtTime(440,t.currentTime+.18),i.gain.setValueAtTime(.3,t.currentTime),i.gain.exponentialRampToValueAtTime(.01,t.currentTime+.5),n.start(),n.stop(t.currentTime+.5)},"triangle-bell":t=>{const n=t.createOscillator(),i=t.createGain();n.connect(i),i.connect(t.destination),n.type="triangle",n.frequency.value=523,i.gain.setValueAtTime(.4,t.currentTime),i.gain.exponentialRampToValueAtTime(.01,t.currentTime+.8),n.start(),n.stop(t.currentTime+.8)}};(e=a[r])==null||e.call(a,o)}catch{}}function Be({serverUrl:r,isStarting:e,projectSlug:o,devServerError:a,onStartServer:t,notificationSettings:n,onChangeNotificationSettings:i}){const[g,S]=d.useState(null),[p,w]=d.useState(!1),E=d.useRef(null),A=d.useRef(null);d.useEffect(()=>{if(!o)return;const h=new EventSource("/api/dev-mode-events");return h.onmessage=_=>{try{const B=JSON.parse(_.data);B.type==="file-synced"&&(S(B.fileName),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>{S(null)},5e3))}catch{}},()=>{h.close(),A.current&&clearTimeout(A.current)}},[o]),d.useEffect(()=>{if(!p)return;function h(_){E.current&&!E.current.contains(_.target)&&w(!1)}return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[p]);let N;a?N="error":e?N="starting":r?N="running":N="stopped";const V={starting:"bg-yellow-400",running:"bg-green-400",stopped:"bg-gray-400",error:"bg-red-400"},I={starting:"Starting...",running:r||"Running",stopped:"Stopped",error:"Error"},R=n&&(n.sound!=="off"||n.systemNotification);return u.jsxs("div",{className:"bg-[#1e1e1e] border-t border-[#3d3d3d] h-7 flex items-center px-4 gap-4 shrink-0 text-xs font-mono",children:[u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx("div",{className:`w-2 h-2 rounded-full ${V[N]}`}),u.jsxs("span",{className:"text-gray-400",children:["Server:"," ",u.jsx("span",{className:"text-gray-300",children:I[N]})]}),(N==="stopped"||N==="error")&&t&&u.jsx("button",{onClick:t,className:"ml-1 px-2.5 py-0.5 bg-[#005c75] hover:bg-[#007a9a] text-white text-[11px] font-medium rounded transition-colors cursor-pointer border-none leading-tight",children:"Start Server"})]}),u.jsx("div",{className:"w-px h-3 bg-[#3d3d3d]"}),g&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"flex items-center gap-1.5",children:[u.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"#4ade80",strokeWidth:"2",children:u.jsx("path",{d:"M20 6L9 17l-5-5"})}),u.jsxs("span",{className:"text-green-400",children:["Synced: ",g]})]}),u.jsx("div",{className:"w-px h-3 bg-[#3d3d3d]"})]}),u.jsx("div",{className:"flex-1"}),i&&n&&u.jsxs("div",{className:"relative",ref:E,children:[u.jsx("button",{onClick:()=>w(!p),className:`text-[11px] rounded transition-colors cursor-pointer ${R?"text-green-400 hover:text-green-300":"text-gray-500 hover:text-gray-300"}`,children:R?"Notifications On":"Notifications Off"}),p&&u.jsxs("div",{className:"absolute bottom-full right-0 mb-2 w-56 bg-[#2d2d2d] border border-[#4d4d4d] rounded-lg shadow-xl p-3 flex flex-col gap-3 z-50",children:[u.jsxs("div",{children:[u.jsx("div",{className:"text-[11px] text-gray-400 mb-1.5",children:"Notification sound"}),u.jsx("div",{className:"flex flex-col gap-0.5",children:we.map(h=>u.jsx("button",{onClick:()=>{i({...n,sound:h.id}),h.id!=="off"&&ae(h.id)},className:`text-left text-[11px] px-2 py-1 rounded cursor-pointer transition-colors ${n.sound===h.id?"bg-[#444] text-white":"text-gray-300 hover:bg-[#3a3a3a]"}`,children:h.label},h.id))})]}),u.jsxs("div",{className:"border-t border-[#4d4d4d] pt-2",children:[u.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[u.jsx("input",{type:"checkbox",checked:n.systemNotification,onChange:h=>{const _=h.target.checked;i({...n,systemNotification:_}),_&&typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()},className:"accent-green-500"}),u.jsx("span",{className:"text-[11px] text-gray-300",children:"System notification"})]}),u.jsx("div",{className:"text-[10px] text-gray-500 mt-1 ml-5",children:"Shows when tab is not visible"})]})]})]})]})}async function ve(r,e){try{const{WebglAddon:a}=await P(async()=>{const{WebglAddon:n}=await import("./addon-webgl-DI8QOUvO.js").then(i=>i.a);return{WebglAddon:n}},[]),t=new a;return t.onContextLoss(()=>{e==null||e("webgl","canvas",new Error("WebGL context lost")),t.dispose(),se(r).then(n=>{n||e==null||e("canvas","dom",new Error("Canvas fallback failed after context loss"))})}),r.loadAddon(t),{type:"webgl",dispose:()=>t.dispose()}}catch(a){e==null||e("webgl","canvas",a)}const o=await se(r);return o||(e==null||e("canvas","dom",new Error("Canvas addon failed")),{type:"dom",dispose:()=>{}})}async function se(r){try{const{CanvasAddon:e}=await P(async()=>{const{CanvasAddon:a}=await import("./addon-canvas-DpzMmAy5.js").then(t=>t.a);return{CanvasAddon:a}},[]),o=new e;return r.loadAddon(o),{type:"canvas",dispose:()=>o.dispose()}}catch{return null}}class be{constructor(e,o){U(this,"deferred",!1);U(this,"actions");U(this,"env");this.actions=e,this.env=o}onIdle(e,o){return o&&this.env.hasBrowserFocus()?(this.deferred=!0,"deferred"):(this.deferred=!1,this.notify(e))}onBuildTabChange(e,o){return!e&&this.deferred?(this.deferred=!1,this.notify(o),!0):!1}onActive(){this.deferred=!1}onUserEngagement(){const e=this.deferred;return this.deferred=!1,e}get isDeferred(){return this.deferred}notify(e){const o=!!(e!=null&&e.sound)&&e.sound!=="off";return o&&this.actions.playSound(e.sound),!this.env.hasBrowserFocus()&&(e!=null&&e.systemNotification)&&this.env.hasNotificationPermission()&&this.actions.showSystemNotification(),o?"played":"played-no-sound"}}const Te=`
3
+ .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
4
+ .xterm.focus, .xterm:focus { outline: none; }
5
+ .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
6
+ .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; }
7
+ .xterm .composition-view { background: #000; color: #FFF; display: none; position: absolute; white-space: nowrap; z-index: 1; }
8
+ .xterm .composition-view.active { display: block; }
9
+ .xterm .xterm-viewport { background-color: #000; overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
10
+ .xterm .xterm-screen { position: relative; }
11
+ .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
12
+ .xterm .xterm-scroll-area { visibility: hidden; }
13
+ .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
14
+ .xterm.enable-mouse-events { cursor: default; }
15
+ .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
16
+ .xterm.column-select.focus { cursor: crosshair; }
17
+ .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; }
18
+ .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
19
+ .xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
20
+ .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
21
+ .xterm-dim { opacity: 1 !important; }
22
+ .xterm-underline-1 { text-decoration: underline; }
23
+ .xterm-underline-2 { text-decoration: double underline; }
24
+ .xterm-underline-3 { text-decoration: wavy underline; }
25
+ .xterm-underline-4 { text-decoration: dotted underline; }
26
+ .xterm-underline-5 { text-decoration: dashed underline; }
27
+ .xterm-overline { text-decoration: overline; }
28
+ .xterm-strikethrough { text-decoration: line-through; }
29
+ .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
30
+ .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
31
+ .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
32
+ .xterm-decoration-top { z-index: 2; position: relative; }
33
+ `;function Ne(){let r=document.getElementById("xterm-css");r||(r=document.createElement("style"),r.id="xterm-css",document.head.appendChild(r)),r.textContent=Te}const Le=d.forwardRef(function({entityName:e,entityType:o,entitySha:a,entityFilePath:t,scenarioName:n,scenarioDescription:i,analysisId:g,projectSlug:S,onRefreshPreview:p,onShowResults:w,onHideResults:E,onSetViewport:A,editorMode:N,onIdleChange:V,notificationSettings:I,buildTabActive:R,claudeStartMode:h,claudeSessionId:_,onDataMutationForwarded:B,resultsOpen:Q},le){const G=d.useRef(null),k=d.useRef(null),$=d.useRef(null),j=d.useRef(null),q=d.useRef(null),H=d.useRef(!1),M=d.useRef(0),K=d.useRef(!1),v=d.useRef(V);v.current=V;const X=d.useRef(I);X.current=I;const F=d.useRef(R);F.current=R;const ee=d.useRef(Q);ee.current=Q;const O=d.useRef(null),L=d.useRef(null);L.current||(L.current=new be({playSound:c=>ae(c),showSystemNotification:()=>{O.current&&O.current.close();const c=new Notification("Claude is ready for you",{body:"Claude has finished and is waiting for your input.",tag:"claude-idle"});c.onclick=()=>{window.focus(),c.close()},O.current=c}},{hasBrowserFocus:()=>document.hasFocus(),hasNotificationPermission:()=>typeof Notification<"u"&&Notification.permission==="granted"}));function ue(){O.current&&(O.current.close(),O.current=null)}function Y(){var c,x;ue(),(c=v.current)==null||c.call(v,!1),(x=L.current)==null||x.onUserEngagement()}d.useEffect(()=>{function c(){Y()}function x(){document.hidden||Y()}return window.addEventListener("focus",c),document.addEventListener("visibilitychange",x),()=>{window.removeEventListener("focus",c),document.removeEventListener("visibilitychange",x)}},[]),d.useEffect(()=>{var c;(c=L.current)==null||c.onBuildTabChange(!!R,X.current)},[R]);const de=d.useCallback(()=>{var c;(c=$.current)==null||c.focus()},[]);return d.useImperativeHandle(le,()=>({sendInput(c){const x=j.current;x&&x.readyState===WebSocket.OPEN&&(x.send(JSON.stringify({type:"input",data:c})),setTimeout(()=>{x.readyState===WebSocket.OPEN&&x.send(JSON.stringify({type:"input",data:"\r"}))},100))},focus(){var c;(c=$.current)==null||c.focus()},scrollToBottom(){var x;const c=(x=G.current)==null?void 0:x.querySelector(".xterm-viewport");c&&(c.scrollTop=c.scrollHeight)}})),d.useEffect(()=>{const c=G.current;if(!c)return;let x=!1;return Ne(),Promise.all([P(()=>import("./xterm-BqvuqXEL.js"),[]),P(()=>import("./addon-fit-YJmn1quW.js"),[]),P(()=>import("./addon-web-links-74hnHF59.js").then(W=>W.a),__vite__mapDeps([0,1]))]).then(([W,fe,me])=>{if(x)return;const f=new W.Terminal({cursorBlink:!1,cursorInactiveStyle:"none",scrollback:5e3,fontSize:13,fontFamily:"'IBM Plex Mono', 'Menlo', 'Monaco', monospace",theme:{background:"#1e1e1e",foreground:"#d4d4d4",cursor:"#1e1e1e",selectionBackground:"#264f78"},linkHandler:{activate(l,s){try{const m=new URL(s),b=m.searchParams.get("scenario");if(b&&m.pathname.startsWith("/editor")){const T=new BroadcastChannel("codeyam-editor");T.postMessage({type:"switch-scenario",scenarioId:b}),T.close();return}}catch{}window.open(s,"_blank")}}}),D=new fe.FitAddon;f.loadAddon(D),f.loadAddon(new me.WebLinksAddon),f.open(c),f.attachCustomKeyEventHandler(l=>{if(ee.current&&(l.key==="ArrowLeft"||l.key==="ArrowRight")&&!l.ctrlKey&&!l.altKey&&!l.metaKey&&l.type==="keydown"){const s=l.key==="ArrowLeft"?"\x1B[D":"\x1B[C",m=j.current;return m&&m.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"input",data:s})),!1}return!0}),f.write("\x1B[?25l");let J=null;ve(f,(l,s,m)=>{console.warn(`[Terminal] Renderer fallback: ${l} → ${s}`,m)}).then(l=>{if(x){l.dispose();return}console.log(`[Terminal] Using ${l.type} renderer`),J=l.dispose}),requestAnimationFrame(()=>{try{D.fit()}catch{}}),$.current=f,f.focus(),setTimeout(()=>f.focus(),100),setTimeout(()=>f.focus(),500);const pe=window.location.protocol==="https:"?"wss:":"ws:",xe=window.location.host;function he(l){const s=new URLSearchParams;return s.set("entityName",e),o&&s.set("entityType",o),a&&s.set("entitySha",a),t&&s.set("entityFilePath",t),n&&s.set("scenarioName",n),i&&s.set("scenarioDescription",i),g&&s.set("analysisId",g),S&&s.set("projectSlug",S),N&&s.set("editorMode","true"),l&&s.set("reconnectId",l),h&&s.set("claudeStartMode",h),_&&s.set("claudeSessionId",_),`${pe}//${xe}/ws/terminal?${s.toString()}`}function Z(l){const s=he(l),m=new WebSocket(s);j.current=m,m.onopen=()=>{M.current=0,K.current=!1,m.send(JSON.stringify({type:"resize",cols:f.cols,rows:f.rows}))},m.onmessage=b=>{var T,re,ne,oe,ie;try{const y=JSON.parse(b.data);if(y.type==="session-id"){q.current=y.sessionId;return}if(y.type==="refresh-preview"){p==null||p(y.path,y.scenarioId);return}if(y.type==="show-results"){w==null||w();return}if(y.type==="hide-results"){E==null||E();return}if(y.type==="data-mutation-forwarded"){B==null||B();return}if(y.type==="set-viewport"){A==null||A({name:y.name,width:y.width,height:y.height});return}if(y.type==="claude-idle"){(T=v.current)==null||T.call(v,!0),(re=L.current)==null||re.onIdle(X.current,F.current??!1);return}if(y.type==="claude-active"){(ne=v.current)==null||ne.call(v,!1),(oe=L.current)==null||oe.onActive(),O.current&&(O.current.close(),O.current=null);return}y.type==="output"&&(f.write(y.data),(ie=v.current)==null||ie.call(v,!1))}catch{f.write(b.data)}},m.onclose=()=>{if(H.current){f.write(`\r
34
+ \x1B[90m[Terminal session ended]\x1B[0m\r
35
+ `);return}const b=M.current;if(b<5&&q.current){const T=1e3*Math.pow(2,Math.min(b,3));M.current=b+1,f.write(`\r
36
+ \x1B[33m[Reconnecting...]\x1B[0m\r
37
+ `),setTimeout(()=>{H.current||Z(q.current)},T)}else K.current?f.write(`\r
38
+ \x1B[90m[Terminal session ended]\x1B[0m\r
39
+ `):(K.current=!0,f.write(`\r
40
+ \x1B[33m[Starting new session...]\x1B[0m\r
41
+ `),q.current=null,M.current=0,Z())},m.onerror=()=>{}}Z(),f.onData(l=>{const s=j.current;s&&s.readyState===WebSocket.OPEN&&s.send(JSON.stringify({type:"input",data:l})),Y()});let C=null;const te=new ResizeObserver(()=>{C&&clearTimeout(C),C=setTimeout(()=>{let l;try{l=D.proposeDimensions()}catch{return}if(!l||l.cols===f.cols&&l.rows===f.rows)return;const s=c.querySelector(".xterm-viewport");let m,b=!0;s&&(m=s.scrollTop,b=s.scrollTop+s.clientHeight>=s.scrollHeight-10),D.fit(),s&&m!==void 0&&(b?s.scrollTop=s.scrollHeight:s.scrollTop=m);const T=j.current;T&&T.readyState===WebSocket.OPEN&&T.send(JSON.stringify({type:"resize",cols:f.cols,rows:f.rows}))},150)});te.observe(c),k.current=()=>{var l;C&&clearTimeout(C),te.disconnect(),H.current=!0,(l=j.current)==null||l.close(),j.current=null,J==null||J(),f.dispose(),$.current=null}}),()=>{var W;x=!0,(W=k.current)==null||W.call(k),k.current=null}},[]),u.jsx("div",{ref:G,onClick:de,className:"w-full h-full relative overflow-hidden",style:{padding:"4px 0 0 8px"}})});function Se(r){return r.replace(/[^a-zA-Z0-9_]+/g,"_")}function We(r){const{activeAnalyzedScenario:e,analyzedPreviewUrl:o,activeScenarioId:a,scenarios:t,proxyUrl:n,devServerUrl:i,zoomComponent:g}=r;if(e&&o)return o;if(e&&!o)return null;if(a){const p=t.find(w=>w.id===a);if(p!=null&&p.url){const w=n||i;return w?p.url.startsWith("/")?`${w}${p.url}`:p.url:null}}const S=n||i;if(!S)return null;if(g&&a){const p=t.find(E=>E.id===a),w=p?Se(p.name):"Default";return`${S}/__codeyam__/${g}/${w}`}return S}function ke(r,e){if(!r||!e)return r;try{const o=new URL(r),a=e.indexOf("?");return a>=0?(o.pathname=e.slice(0,a),o.search=e.slice(a)):(o.pathname=e,o.search=""),o.href}catch{return r}}function Ce(r,e){return r?r!==e:!1}function ze(r){if(r.length!==0)return r.find(e=>e.type==="application")||r[0]}function Pe(r,e,o){if(!r.viewportWidth||!r.viewportHeight)return o??null;const a=e.find(t=>t.width===r.viewportWidth&&t.height===r.viewportHeight);return{name:(a==null?void 0:a.name)||"Custom",width:r.viewportWidth,height:r.viewportHeight}}function Ve(r,e){const o=e.width,a=e.height??900,t=r.width,n=r.height;return o<=t&&a<=n?1:Math.min(t/o,n/a)}export{Be as D,Le as T,ke as a,Se as b,z as c,je as d,Ve as e,We as f,ze as g,Re as l,Pe as r,Ce as s};