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

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 (340) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +7 -4
  5. package/analyzer-template/packages/ai/package.json +1 -1
  6. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +14 -1
  7. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +120 -19
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +91 -35
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +110 -74
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +11 -0
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  14. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  15. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +24 -17
  16. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +214 -39
  17. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +54 -1
  18. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +72 -6
  19. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +12 -5
  20. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +39 -23
  21. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -0
  22. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
  23. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  24. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +73 -69
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -0
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  28. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +22 -6
  29. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +9 -5
  30. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +49 -11
  31. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +399 -52
  33. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +128 -2
  34. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +114 -70
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +34 -129
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +155 -79
  37. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  38. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  39. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  40. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  41. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  42. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  43. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  44. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  45. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  46. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  47. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  48. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  49. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  50. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  51. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  52. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  53. package/analyzer-template/packages/aws/package.json +1 -1
  54. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  55. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  56. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  57. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  58. package/analyzer-template/packages/generate/index.ts +3 -0
  59. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  60. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  61. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  62. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -0
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  68. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  70. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  73. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  75. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  76. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  77. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  78. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  79. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  80. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  81. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  82. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  83. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  84. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  85. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  86. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  88. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  89. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  90. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  91. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  93. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +6 -0
  95. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  96. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  97. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  98. package/analyzer-template/packages/process/index.ts +2 -0
  99. package/analyzer-template/packages/process/package.json +12 -0
  100. package/analyzer-template/packages/process/tsconfig.json +8 -0
  101. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  102. package/analyzer-template/packages/types/src/types/Scenario.ts +6 -0
  103. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  104. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  105. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +6 -0
  106. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  107. package/analyzer-template/playwright/capture.ts +37 -18
  108. package/analyzer-template/playwright/waitForServer.ts +21 -6
  109. package/analyzer-template/project/constructMockCode.ts +781 -140
  110. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  111. package/analyzer-template/project/orchestrateCapture.ts +10 -3
  112. package/analyzer-template/project/reconcileMockDataKeys.ts +28 -100
  113. package/analyzer-template/project/runAnalysis.ts +5 -0
  114. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  115. package/analyzer-template/project/start.ts +5 -3
  116. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  117. package/analyzer-template/project/writeMockDataTsx.ts +50 -22
  118. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  119. package/analyzer-template/project/writeScenarioComponents.ts +162 -100
  120. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  121. package/analyzer-template/project/writeSimpleRoot.ts +11 -35
  122. package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
  123. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  124. package/background/src/lib/local/createLocalAnalyzer.js +1 -29
  125. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  126. package/background/src/lib/local/execAsync.js +1 -1
  127. package/background/src/lib/local/execAsync.js.map +1 -1
  128. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  129. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  130. package/background/src/lib/virtualized/project/constructMockCode.js +718 -127
  131. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  132. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  133. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  134. package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
  135. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  136. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +25 -61
  137. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  138. package/background/src/lib/virtualized/project/runAnalysis.js +4 -0
  139. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  140. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  141. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  142. package/background/src/lib/virtualized/project/start.js +5 -3
  143. package/background/src/lib/virtualized/project/start.js.map +1 -1
  144. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  145. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  146. package/background/src/lib/virtualized/project/writeMockDataTsx.js +52 -23
  147. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  148. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  149. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  150. package/background/src/lib/virtualized/project/writeScenarioComponents.js +136 -83
  151. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  152. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  153. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  154. package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -34
  155. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  156. package/codeyam-cli/src/cli.js +5 -1
  157. package/codeyam-cli/src/cli.js.map +1 -1
  158. package/codeyam-cli/src/commands/analyze.js +1 -1
  159. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  160. package/codeyam-cli/src/commands/baseline.js +177 -0
  161. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  162. package/codeyam-cli/src/commands/status.js +23 -1
  163. package/codeyam-cli/src/commands/status.js.map +1 -1
  164. package/codeyam-cli/src/commands/test-startup.js +1 -1
  165. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  166. package/codeyam-cli/src/commands/wipe.js +108 -0
  167. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  168. package/codeyam-cli/src/utils/database.js +91 -5
  169. package/codeyam-cli/src/utils/database.js.map +1 -1
  170. package/codeyam-cli/src/utils/git.js +79 -0
  171. package/codeyam-cli/src/utils/git.js.map +1 -0
  172. package/codeyam-cli/src/utils/queue/job.js +104 -0
  173. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  174. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  175. package/codeyam-cli/src/utils/wipe.js +128 -0
  176. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  177. package/codeyam-cli/src/webserver/app/lib/database.js +66 -17
  178. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  179. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-wXL1Z2Aq.js → EntityItem-Cmysw5OP.js} +1 -1
  180. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
  181. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CXFKsCOD.js → EntityTypeIcon-CAneekK2.js} +1 -1
  182. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D-9pXIaY.js → InteractivePreview-Cu16OUmx.js} +2 -2
  183. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
  184. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B0GLXMsr.js} +1 -1
  185. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-xgeCVgSM.js} +1 -1
  186. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-4lcOlid-.js → ReportIssueModal-DcAUIpD_.js} +1 -1
  187. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-DuDvi0jm.js} +1 -1
  188. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +15 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
  190. package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +11 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +32 -0
  192. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-Cx24_aWc.js} +1 -1
  193. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-BOARzkeR.js} +1 -1
  195. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-BdhJEx6B.js} +1 -1
  196. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DW_hdGUc.js → dev.empty-RJCf3Tvw.js} +1 -1
  197. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-D0-YwkBh.js} +12 -12
  198. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +1 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D_3ero5o.js → entity._sha_.create-scenario-DMe7kvgo.js} +1 -1
  200. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-C1H_a_Y3.js} +1 -1
  201. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-CS2cb_eZ.js} +6 -6
  202. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-DMJ7zii9.js} +1 -1
  203. package/codeyam-cli/src/webserver/build/client/assets/{files-ClR0d32A.js → files-BW7Cyeyi.js} +1 -1
  204. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-CZu4fif0.js} +2 -2
  205. package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-B1h680n5.js} +1 -1
  207. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-lzqtyFU8.js} +1 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-B7B9V-bu.js} +1 -1
  209. package/codeyam-cli/src/webserver/build/client/assets/{manifest-09d684be.js → manifest-2d191949.js} +1 -1
  210. package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +56 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-CxXUmBSd.js} +1 -1
  212. package/codeyam-cli/src/webserver/build/client/assets/{settings-DgTyB-Wg.js → settings-6D8k8Jp5.js} +1 -1
  213. package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +1 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-B6LgvRJg.js} +1 -1
  215. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BMIGFP-m.js → useCustomSizes-Dv18q8LD.js} +1 -1
  216. package/codeyam-cli/src/webserver/build/client/assets/{useInteractiveMode-Dk_FQqWJ.js → useInteractiveMode-0ToGk4K3.js} +1 -1
  217. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-aSv48UbS.js} +1 -1
  218. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DsJbgMY9.js → useReportContext-1BX144Eg.js} +1 -1
  219. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-mBRpZPiu.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/server/assets/{index-CV6i1S1A.js → index-pU0o5t1o.js} +1 -1
  221. package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +178 -0
  222. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  223. package/codeyam-cli/src/webserver/build-info.json +5 -5
  224. package/codeyam-cli/templates/codeyam-setup-skill.md +138 -3
  225. package/codeyam-cli/templates/debug-codeyam.md +7 -2
  226. package/package.json +5 -5
  227. package/packages/ai/src/lib/astScopes/processExpression.js +13 -1
  228. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  229. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  230. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  231. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +94 -18
  232. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  233. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
  234. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  235. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +51 -23
  236. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  237. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +70 -54
  238. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  239. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +11 -0
  240. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  241. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  242. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  243. package/packages/ai/src/lib/deepEqual.js +32 -0
  244. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  245. package/packages/ai/src/lib/findMatchingAttribute.js +20 -16
  246. package/packages/ai/src/lib/findMatchingAttribute.js.map +1 -1
  247. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +168 -41
  248. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  249. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +42 -1
  250. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  251. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +59 -3
  252. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  253. package/packages/ai/src/lib/generateChangesEntityScenarios.js +6 -6
  254. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  255. package/packages/ai/src/lib/generateEntityScenarioData.js +32 -23
  256. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  257. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +20 -1
  258. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  259. package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
  260. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  261. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  262. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  263. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  264. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  265. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +59 -50
  266. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  267. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -0
  268. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  269. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  270. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  271. package/packages/analyze/src/lib/files/analyzeChange.js +14 -4
  272. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  273. package/packages/analyze/src/lib/files/analyzeEntity.js +7 -6
  274. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  275. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +44 -10
  276. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  277. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  278. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  279. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +314 -52
  280. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  281. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +97 -2
  282. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  283. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +88 -52
  284. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  285. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +26 -98
  286. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  287. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +141 -75
  288. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  289. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  290. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  291. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  292. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  293. package/packages/generate/index.js +3 -0
  294. package/packages/generate/index.js.map +1 -1
  295. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  296. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  297. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  298. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  299. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  300. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  301. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  302. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  303. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  304. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  305. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  306. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  307. package/packages/process/index.js +3 -0
  308. package/packages/process/index.js.map +1 -0
  309. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  310. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  311. package/packages/process/src/ProcessManager.js.map +1 -0
  312. package/packages/process/src/index.js.map +1 -0
  313. package/packages/process/src/managedExecAsync.js.map +1 -0
  314. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  315. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  316. package/analyzer-template/process/README.md +0 -507
  317. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  318. package/background/src/lib/process/ProcessManager.js.map +0 -1
  319. package/background/src/lib/process/index.js.map +0 -1
  320. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  321. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  322. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  323. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
  324. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
  325. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  326. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  327. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
  328. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  329. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  330. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
  331. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
  332. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  333. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
  334. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  335. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  336. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  337. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  338. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  339. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  340. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -21,6 +21,25 @@ function cleanFunctionName(functionName: string) {
21
21
  return functionName?.split('<')[0];
22
22
  }
23
23
 
24
+ // Extract the type parameter from a function name, e.g., 'useFetcher<{ data: UserData }>()' -> '{ data: UserData }'
25
+ function getTypeParameter(functionName: string): string | null {
26
+ if (!functionName) return null;
27
+ const openBracket = functionName.indexOf('<');
28
+ if (openBracket === -1) return null;
29
+ // Find matching closing bracket, accounting for nested brackets
30
+ let depth = 0;
31
+ for (let i = openBracket; i < functionName.length; i++) {
32
+ if (functionName[i] === '<') depth++;
33
+ else if (functionName[i] === '>') {
34
+ depth--;
35
+ if (depth === 0) {
36
+ return functionName.slice(openBracket + 1, i);
37
+ }
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+
24
43
  // Check if schemaPathPart matches or is a function call variant of pathPart
25
44
  // e.g., 'isEntityBeingAnalyzed(entity.sha)' matches 'isEntityBeingAnalyzed'
26
45
  function pathPartMatches(pathPart: string, schemaPathPart: string): boolean {
@@ -74,47 +93,6 @@ export default function mergeInDependentDataStructure({
74
93
  };
75
94
  };
76
95
  }) {
77
- // writeFile(
78
- // 'mergeInDependentDataStructure-debug.json',
79
- // JSON.stringify(
80
- // {
81
- // importedExports: importedExports.map((d) => ({
82
- // filePath: d.filePath,
83
- // name: d.name,
84
- // isMocked: d.isMocked,
85
- // })),
86
- // dependentAnalyses: Object.keys(dependentAnalyses).reduce(
87
- // (pathAcc: Record<string, any>, filePath) => {
88
- // pathAcc[filePath] = Object.keys(dependentAnalyses[filePath]).reduce(
89
- // (nameAcc, name) => {
90
- // nameAcc[name] = {
91
- // metadata: {
92
- // mergedDataStructure:
93
- // dependentAnalyses[filePath][name].metadata
94
- // .mergedDataStructure,
95
- // },
96
- // };
97
- // return nameAcc;
98
- // },
99
- // {} as { [name: string]: {
100
- // metadata?: {
101
- // mergedDataStructure?: ReadonlyAnalysis['metadata']['mergedDataStructure'];
102
- // };
103
- // } },
104
- // );
105
- // return pathAcc;
106
- // },
107
- // {},
108
- // ),
109
- // rootScopeName,
110
- // dataStructure,
111
- // dependencySchemas,
112
- // },
113
- // null,
114
- // 2,
115
- // ),
116
- // ).catch(() => {});
117
-
118
96
  const mergedDataStructure: Omit<
119
97
  DataStructure,
120
98
  'equivalentSignatureVariables'
@@ -127,6 +105,44 @@ export default function mergeInDependentDataStructure({
127
105
  environmentVariables: [...(dataStructure.environmentVariables || [])],
128
106
  };
129
107
 
108
+ // Build a set of functions that have multiple DIFFERENT type parameters.
109
+ // For these functions, we must NOT normalize paths to avoid merging different schemas.
110
+ // e.g., if we have both useFetcher<{ data: UserData }>() and useFetcher<{ data: ConfigData }>(),
111
+ // they must stay separate and not both become 'returnValue'.
112
+ const functionsWithMultipleTypeParams = new Set<string>();
113
+ const typeParamsByFunction: Record<string, Set<string>> = {};
114
+
115
+ // Helper to scan a schema for type parameters
116
+ const scanSchemaForTypeParams = (schema: { [key: string]: string }) => {
117
+ for (const schemaPath of Object.keys(schema ?? {})) {
118
+ const parts = splitOutsideParenthesesAndArrays(schemaPath);
119
+ if (parts.length > 0) {
120
+ const firstPart = parts[0];
121
+ const typeParam = getTypeParameter(firstPart);
122
+ if (typeParam) {
123
+ const baseName = cleanFunctionName(firstPart);
124
+ typeParamsByFunction[baseName] ||= new Set();
125
+ typeParamsByFunction[baseName].add(typeParam);
126
+ if (typeParamsByFunction[baseName].size > 1) {
127
+ functionsWithMultipleTypeParams.add(baseName);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ };
133
+
134
+ // Scan the root entity's schema
135
+ scanSchemaForTypeParams(dataStructure.returnValueSchema);
136
+
137
+ // Also scan all dependency schemas for type parameters
138
+ for (const filePath of Object.keys(dependencySchemas ?? {})) {
139
+ for (const name of Object.keys(dependencySchemas[filePath] ?? {})) {
140
+ scanSchemaForTypeParams(
141
+ dependencySchemas[filePath][name]?.returnValueSchema,
142
+ );
143
+ }
144
+ }
145
+
130
146
  let equivalentSchemaPaths: {
131
147
  equivalentRoots: {
132
148
  schemaRootPath: string;
@@ -185,6 +201,15 @@ export default function mergeInDependentDataStructure({
185
201
  const pathParts = splitOutsideParenthesesAndArrays(path);
186
202
  if (pathParts.length > 1) {
187
203
  if (pathParts[1].startsWith('functionCallReturnValue')) {
204
+ // Check if this function has multiple DIFFERENT type parameters.
205
+ // If so, DON'T normalize to returnValue - keep the full path to avoid
206
+ // merging different type-parameterized variants together.
207
+ // e.g., useFetcher<{ data: UserData }>().functionCallReturnValue.data
208
+ // should NOT be merged with useFetcher<{ data: ConfigData }>().functionCallReturnValue.data
209
+ const baseName = cleanFunctionName(pathParts[0]);
210
+ if (functionsWithMultipleTypeParams.has(baseName)) {
211
+ return path; // Keep the original path with type parameters
212
+ }
188
213
  // functionCallReturnValue immediately follows - normalize to returnValue
189
214
  // e.g., useAuth().functionCallReturnValue.user -> returnValue.user
190
215
  return joinParenthesesAndArrays([
@@ -324,10 +349,14 @@ export default function mergeInDependentDataStructure({
324
349
  splitOutsideParenthesesAndArrays(schemaPath);
325
350
 
326
351
  if (schemaPathParts[0].startsWith(functionName)) {
327
- schemaPathParts =
328
- schemaPathParts[1] === 'functionCallReturnValue'
329
- ? ['returnValue', ...schemaPathParts.slice(2)]
330
- : schemaPathParts.slice(1);
352
+ // Only normalize if the function doesn't have multiple different type parameters
353
+ const baseName = cleanFunctionName(schemaPathParts[0]);
354
+ if (!functionsWithMultipleTypeParams.has(baseName)) {
355
+ schemaPathParts =
356
+ schemaPathParts[1] === 'functionCallReturnValue'
357
+ ? ['returnValue', ...schemaPathParts.slice(2)]
358
+ : schemaPathParts.slice(1);
359
+ }
331
360
  }
332
361
 
333
362
  if (schemaPathParts.length < pathParts.length) continue;
@@ -927,6 +956,87 @@ export default function mergeInDependentDataStructure({
927
956
  cleanSchema(depSchema.returnValueSchema);
928
957
  }
929
958
 
959
+ // Process the input dependencySchemas FIRST (before child dependentAnalyses).
960
+ // This ensures the parent entity's direct usage of dependencies takes precedence.
961
+ // When both parent and child use the same dependency (e.g., useLoaderData),
962
+ // the parent's schema paths are preserved, and child's paths are merged in later.
963
+ //
964
+ // Some dependencies (like .d.ts type declaration files) may not have:
965
+ // - Equivalencies with the root scope
966
+ // - A dependent analysis (they're just type declarations)
967
+ // - Be marked as mocked
968
+ // Without this, their schemas would be lost entirely.
969
+ for (const filePath in dependencySchemas) {
970
+ for (const name in dependencySchemas[filePath]) {
971
+ const srcSchema = dependencySchemas[filePath][name];
972
+ if (!srcSchema) continue;
973
+
974
+ // Skip mocked dependencies - they were already processed above with path normalization
975
+ if (mockedDependencies.has(`${filePath}::${name}`)) {
976
+ continue;
977
+ }
978
+
979
+ // Check if this dependency was already processed by equivalencies
980
+ const existingSchema =
981
+ mergedDataStructure.dependencySchemas[filePath]?.[name];
982
+
983
+ // Only add if no existing schema (equivalencies didn't process it)
984
+ if (!existingSchema) {
985
+ const depSchema = findOrCreateDependentSchemas({ filePath, name });
986
+ for (const path in srcSchema.returnValueSchema) {
987
+ depSchema.returnValueSchema[path] = srcSchema.returnValueSchema[path];
988
+ }
989
+ for (const path in srcSchema.signatureSchema) {
990
+ depSchema.signatureSchema[path] = srcSchema.signatureSchema[path];
991
+ }
992
+
993
+ // Clean known object functions (like String.prototype.replace, Array.prototype.map)
994
+ // from the copied schema. Without this, method call paths on primitives like
995
+ // "projectSlug.replace(...)" would cause convertDotNotation to create nested
996
+ // object structures instead of preserving the primitive type.
997
+ cleanSchema(depSchema.returnValueSchema);
998
+ }
999
+
1000
+ // For functions with multiple different type parameters, also create separate entries
1001
+ // for each type-parameterized variant. This allows gatherDataForMocks to look up
1002
+ // the specific schema for each call signature.
1003
+ // This runs regardless of whether the base entry already existed, since we need
1004
+ // the separate variant entries for proper schema lookup.
1005
+ const baseName = cleanFunctionName(name);
1006
+ if (functionsWithMultipleTypeParams.has(baseName)) {
1007
+ // Find all unique type-parameterized call signatures in the schema
1008
+ const typeParamVariants = new Set<string>();
1009
+ for (const path of Object.keys(srcSchema.returnValueSchema)) {
1010
+ const parts = splitOutsideParenthesesAndArrays(path);
1011
+ if (
1012
+ parts.length > 0 &&
1013
+ parts[0].includes('<') &&
1014
+ parts[0].endsWith(')')
1015
+ ) {
1016
+ typeParamVariants.add(parts[0]);
1017
+ }
1018
+ }
1019
+
1020
+ // Create a separate entry for each type-parameterized variant
1021
+ for (const variant of typeParamVariants) {
1022
+ const variantSchema = findOrCreateDependentSchemas({
1023
+ filePath,
1024
+ name: variant,
1025
+ });
1026
+
1027
+ // Copy only paths that belong to this variant
1028
+ for (const path in srcSchema.returnValueSchema) {
1029
+ if (path.startsWith(variant)) {
1030
+ variantSchema.returnValueSchema[path] =
1031
+ srcSchema.returnValueSchema[path];
1032
+ }
1033
+ }
1034
+ cleanSchema(variantSchema.returnValueSchema);
1035
+ }
1036
+ }
1037
+ }
1038
+ }
1039
+
930
1040
  // Ensure ALL dependencies from dependentAnalyses are included in dependencySchemas,
931
1041
  // even if they have no equivalencies with the root scope.
932
1042
  // This preserves nested functionCallReturnValue paths that would otherwise be lost.
@@ -1002,39 +1112,5 @@ export default function mergeInDependentDataStructure({
1002
1112
  }
1003
1113
  }
1004
1114
 
1005
- // Ensure ALL dependencies from the input dependencySchemas are preserved.
1006
- // Some dependencies (like .d.ts type declaration files) may not have:
1007
- // - Equivalencies with the root scope
1008
- // - A dependent analysis (they're just type declarations)
1009
- // - Be marked as mocked
1010
- // Without this, their schemas would be lost entirely.
1011
- //
1012
- // IMPORTANT: Only add schemas for dependencies that weren't already processed.
1013
- // If a dependency has an existing schema (even an empty one), it means the
1014
- // existing processing (mocked dependencies, equivalencies, dependentAnalyses)
1015
- // has already handled it and may have intentionally filtered out certain paths.
1016
- for (const filePath in dependencySchemas) {
1017
- for (const name in dependencySchemas[filePath]) {
1018
- const srcSchema = dependencySchemas[filePath][name];
1019
- if (!srcSchema) continue;
1020
-
1021
- // Check if this dependency was already processed by any other mechanism
1022
- const existingSchema =
1023
- mergedDataStructure.dependencySchemas[filePath]?.[name];
1024
-
1025
- // Only add if no existing schema at all - this means the dependency
1026
- // wasn't processed through equivalencies, mocked dependencies, or dependentAnalyses
1027
- if (!existingSchema) {
1028
- const depSchema = findOrCreateDependentSchemas({ filePath, name });
1029
- for (const path in srcSchema.returnValueSchema) {
1030
- depSchema.returnValueSchema[path] = srcSchema.returnValueSchema[path];
1031
- }
1032
- for (const path in srcSchema.signatureSchema) {
1033
- depSchema.signatureSchema[path] = srcSchema.signatureSchema[path];
1034
- }
1035
- }
1036
- }
1037
- }
1038
-
1039
1115
  return mergedDataStructure;
1040
1116
  }
@@ -4,3 +4,4 @@ export { default as codebuildCheckProject } from '../src/lib/codebuild/checkForC
4
4
  export { default as codebuildCreateProject } from '../src/lib/codebuild/createCodeBuildProject';
5
5
  export { default as codebuildTrigger } from '../src/lib/codebuild/triggerCodeBuild';
6
6
  export { default as codebuildWaitForBuild } from '../src/lib/codebuild/waitForBuild';
7
+ export type { BuildResult } from '../src/lib/codebuild/waitForBuild';
@@ -1,2 +1,12 @@
1
- export default function waitForBuild(buildId: string): Promise<'SUCCEEDED' | 'FAILED' | 'TIMED_OUT'>;
1
+ export interface BuildResult {
2
+ status: 'SUCCEEDED' | 'FAILED' | 'TIMED_OUT';
3
+ buildId: string;
4
+ consoleUrl: string;
5
+ failedPhase?: {
6
+ phaseType: string;
7
+ statusCode?: string;
8
+ message?: string;
9
+ };
10
+ }
11
+ export default function waitForBuild(buildId: string): Promise<BuildResult>;
2
12
  //# sourceMappingURL=waitForBuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"waitForBuild.d.ts","sourceRoot":"","sources":["../../../../src/lib/codebuild/waitForBuild.ts"],"names":[],"mappings":"AAKA,wBAA8B,YAAY,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,CAuD/C"}
1
+ {"version":3,"file":"waitForBuild.d.ts","sourceRoot":"","sources":["../../../../src/lib/codebuild/waitForBuild.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAUD,wBAA8B,YAAY,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CA4DtB"}
@@ -1,4 +1,11 @@
1
- import { CodeBuildClient, BatchGetBuildsCommand, } from '@aws-sdk/client-codebuild';
1
+ import { BatchGetBuildsCommand, CodeBuildClient, } from '@aws-sdk/client-codebuild';
2
+ function getConsoleUrl(buildId) {
3
+ // buildId format: project-name:uuid
4
+ // ARN format: arn:aws:codebuild:region:account:build/project-name:uuid
5
+ const region = process.env.AWS_REGION || 'us-east-1';
6
+ const encodedBuildId = encodeURIComponent(buildId);
7
+ return `https://${region}.console.aws.amazon.com/codesuite/codebuild/projects/${buildId.split(':')[0]}/build/${encodedBuildId}/log`;
8
+ }
2
9
  export default async function waitForBuild(buildId) {
3
10
  const codeBuildClient = new CodeBuildClient({});
4
11
  let attempts = 0;
@@ -12,31 +19,31 @@ export default async function waitForBuild(buildId) {
12
19
  if (!build) {
13
20
  throw new Error(`Build ${buildId} not found`);
14
21
  }
22
+ const consoleUrl = getConsoleUrl(buildId);
15
23
  switch (build.buildStatus) {
16
24
  case 'SUCCEEDED':
17
- return 'SUCCEEDED';
25
+ return { status: 'SUCCEEDED', buildId, consoleUrl };
18
26
  case 'FAILED':
19
27
  case 'FAULT':
20
28
  case 'STOPPED': {
21
29
  // Find the first failed phase
22
30
  const failedPhase = build.phases?.find((phase) => phase.phaseStatus === 'FAILED');
23
- if (failedPhase) {
24
- const context = failedPhase.contexts?.[0];
25
- console.log('Build failed:', {
26
- phase: failedPhase.phaseType,
27
- statusCode: context?.statusCode,
28
- message: context?.message,
29
- });
30
- // Also log full phases for debugging if needed
31
- console.log('Full build phases:', build.phases);
32
- }
33
- else {
34
- console.log('Build failed but no failed phase found:', build.phases);
35
- }
36
- return 'FAILED';
31
+ const context = failedPhase?.contexts?.[0];
32
+ return {
33
+ status: 'FAILED',
34
+ buildId,
35
+ consoleUrl,
36
+ failedPhase: failedPhase
37
+ ? {
38
+ phaseType: failedPhase.phaseType ?? 'UNKNOWN',
39
+ statusCode: context?.statusCode,
40
+ message: context?.message,
41
+ }
42
+ : undefined,
43
+ };
37
44
  }
38
45
  case 'TIMED_OUT':
39
- return 'TIMED_OUT';
46
+ return { status: 'TIMED_OUT', buildId, consoleUrl };
40
47
  case 'IN_PROGRESS':
41
48
  await new Promise((resolve) => setTimeout(resolve, 10000)); // Wait 10 seconds
42
49
  attempts++;
@@ -45,6 +52,10 @@ export default async function waitForBuild(buildId) {
45
52
  throw new Error(`Unknown build status: ${build.buildStatus}`);
46
53
  }
47
54
  }
48
- return 'TIMED_OUT';
55
+ return {
56
+ status: 'TIMED_OUT',
57
+ buildId,
58
+ consoleUrl: getConsoleUrl(buildId),
59
+ };
49
60
  }
50
61
  //# sourceMappingURL=waitForBuild.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"waitForBuild.js","sourceRoot":"","sources":["../../../../src/lib/codebuild/waitForBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,OAAe;IAEf,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IAEhD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,sCAAsC;IAE/D,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC;YAC3C,GAAG,EAAE,CAAC,OAAO,CAAC;SACf,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,KAAK,WAAW;gBACd,OAAO,WAAW,CAAC;YACrB,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAC1C,CAAC;gBACF,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;wBAC3B,KAAK,EAAE,WAAW,CAAC,SAAS;wBAC5B,UAAU,EAAE,OAAO,EAAE,UAAU;wBAC/B,OAAO,EAAE,OAAO,EAAE,OAAO;qBAC1B,CAAC,CAAC;oBAEH,+CAA+C;oBAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,WAAW;gBACd,OAAO,WAAW,CAAC;YACrB,KAAK,aAAa;gBAChB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBAC9E,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"waitForBuild.js","sourceRoot":"","sources":["../../../../src/lib/codebuild/waitForBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAanC,SAAS,aAAa,CAAC,OAAe;IACpC,oCAAoC;IACpC,uEAAuE;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,CAAC;IACrD,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,WAAW,MAAM,wDAAwD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,cAAc,MAAM,CAAC;AACtI,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,OAAe;IAEf,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IAEhD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,sCAAsC;IAE/D,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC;YAC3C,GAAG,EAAE,CAAC,OAAO,CAAC;SACf,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,KAAK,WAAW;gBACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACtD,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAC1C,CAAC;gBACF,MAAM,OAAO,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,OAAO;oBACP,UAAU;oBACV,WAAW,EAAE,WAAW;wBACtB,CAAC,CAAC;4BACE,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,SAAS;4BAC7C,UAAU,EAAE,OAAO,EAAE,UAAU;4BAC/B,OAAO,EAAE,OAAO,EAAE,OAAO;yBAC1B;wBACH,CAAC,CAAC,SAAS;iBACd,CAAC;YACJ,CAAC;YACD,KAAK,WAAW;gBACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACtD,KAAK,aAAa;gBAChB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBAC9E,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,OAAO;QACP,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { ContainerDefinition } from '@aws-sdk/client-ecs';
2
- export default function ecsDefineContainer({ containerName, containerImage, environmentVariables, openPort, dependsOn, }: {
2
+ export default function ecsDefineContainer({ containerName, containerImage, environmentVariables, openPort, command, }: {
3
3
  containerName: string;
4
4
  containerImage: string;
5
5
  environmentVariables?: {
6
6
  [key: string]: string;
7
7
  };
8
8
  openPort?: number;
9
- dependsOn?: ContainerDefinition['dependsOn'];
9
+ command?: string[];
10
10
  }): ContainerDefinition;
11
11
  //# sourceMappingURL=ecsDefineContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecsDefineContainer.d.ts","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsDefineContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,aAAa,EACb,cAAc,EACd,oBAAyB,EACzB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C,GAAG,mBAAmB,CA4BtB"}
1
+ {"version":3,"file":"ecsDefineContainer.d.ts","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsDefineContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,aAAa,EACb,cAAc,EACd,oBAAyB,EACzB,QAAQ,EACR,OAAO,GACR,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,mBAAmB,CA4BtB"}
@@ -1,8 +1,9 @@
1
- export default function ecsDefineContainer({ containerName, containerImage, environmentVariables = {}, openPort, dependsOn, }) {
1
+ export default function ecsDefineContainer({ containerName, containerImage, environmentVariables = {}, openPort, command, }) {
2
2
  return {
3
3
  name: containerName,
4
4
  image: containerImage,
5
5
  essential: true,
6
+ command,
6
7
  environment: Object.entries(environmentVariables).map(([name, value]) => ({
7
8
  name,
8
9
  value,
@@ -24,7 +25,6 @@ export default function ecsDefineContainer({ containerName, containerImage, envi
24
25
  'awslogs-stream-prefix': `${process.env.ECS_CLUSTER_NAME}`,
25
26
  },
26
27
  },
27
- dependsOn,
28
28
  };
29
29
  }
30
30
  //# sourceMappingURL=ecsDefineContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecsDefineContainer.js","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsDefineContainer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,aAAa,EACb,cAAc,EACd,oBAAoB,GAAG,EAAE,EACzB,QAAQ,EACR,SAAS,GAOV;IACC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI;YACJ,KAAK;SACN,CAAC,CAAC;QACH,YAAY,EAAE,QAAQ;YACpB,CAAC,CAAC;gBACE;oBACE,aAAa,EAAE,QAAQ;oBACvB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACH,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE;YAChB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE;gBACP,sBAAsB,EAAE,MAAM;gBAC9B,eAAe,EAAE,kBAAkB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBACxE,gBAAgB,EAAE,WAAW;gBAC7B,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE;aAC3D;SACF;QACD,SAAS;KACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ecsDefineContainer.js","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsDefineContainer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,aAAa,EACb,cAAc,EACd,oBAAoB,GAAG,EAAE,EACzB,QAAQ,EACR,OAAO,GAOR;IACC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,IAAI;QACf,OAAO;QACP,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI;YACJ,KAAK;SACN,CAAC,CAAC;QACH,YAAY,EAAE,QAAQ;YACpB,CAAC,CAAC;gBACE;oBACE,aAAa,EAAE,QAAQ;oBACvB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACH,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE;YAChB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE;gBACP,sBAAsB,EAAE,MAAM;gBAC9B,eAAe,EAAE,kBAAkB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBACxE,gBAAgB,EAAE,WAAW;gBAC7B,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE;aAC3D;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -4,31 +4,21 @@ export type EcsStartConfig = {
4
4
  containerEnvironmentVariables: Array<[string, Record<string, string>]>;
5
5
  };
6
6
  /**
7
- * Prepare to run an ECS task for the classical analysis-then-capture flow
8
- * which uses a 'project' image for analysis and a 'playwright' image for capture.
7
+ * Prepare to run an ECS task for analysis with distributed capture orchestration.
8
+ * Uses the unified 'combo' image which includes both analysis and capture capabilities.
9
9
  */
10
- export declare function getEcsStartConfigForAnalysisThenCapture(projectEnvironmentVariables: Record<string, string>, playwrightEnvironmentVariables: Record<string, string>): EcsStartConfig;
11
- /**
12
- * Prepare to run an ECS task for the new analysis flow with distributed capture
13
- * tasks orchestrated from only a 'project' image.
14
- */
15
- export declare function getEcsStartConfigFoAnalysisWithOrchestration(environmentVariables: Record<string, string>): EcsStartConfig;
10
+ export declare function getEcsStartConfigForAnalysis(environmentVariables: Record<string, string>): EcsStartConfig;
16
11
  /**
17
12
  * Prepare to run an ECS worker task that implements the capture portion of the
18
- * distributed orchestration, which uses a 'combo' image. This task is launched
19
- * from a task created with `getEcsStartConfigFoAnalysisWithOrchestration()`
13
+ * distributed orchestration. Uses the same unified 'combo' image.
14
+ * This task is launched from a task created with `getEcsStartConfigForAnalysis()`
20
15
  */
21
16
  export declare function getEcsStartConfigForOrchestrationTask(environmentVariables: Record<string, string>): EcsStartConfig;
22
17
  export declare enum EcsTaskDefinitionUse {
23
- AnalyzeThenCapture = "analyze-then-capture",
24
- AnalyzeWithOrchestration = "analyze-with-orchestration",
18
+ Analysis = "analysis",
25
19
  OrchestrationTask = "orchestration-task"
26
20
  }
27
21
  export declare function getEcsTaskDefinitionName(forUse: EcsTaskDefinitionUse): string;
28
- export declare enum EcsImageType {
29
- Project = "project",
30
- Playwright = "playwright",
31
- Combo = "combo"
32
- }
33
- export declare function getEcsImageNameForType(type: EcsImageType): string;
22
+ /** Returns the name of the unified Docker image used for all ECS tasks. */
23
+ export declare function getEcsImageName(): string;
34
24
  //# sourceMappingURL=ecsTaskFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecsTaskFactory.d.ts","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsTaskFactory.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uCAAuC,CACrD,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnD,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrD,cAAc,CAgBhB;AAED;;;GAGG;AACH,wBAAgB,4CAA4C,CAC1D,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,cAAc,CAShB;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,cAAc,CAShB;AAED,oBAAY,oBAAoB;IAE9B,kBAAkB,yBAAyB;IAE3C,wBAAwB,+BAA+B;IAEvD,iBAAiB,uBAAuB;CACzC;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAW7E;AAED,oBAAY,YAAY;IAEtB,OAAO,YAAY;IAEnB,UAAU,eAAe;IAEzB,KAAK,UAAU;CAChB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAWjE"}
1
+ {"version":3,"file":"ecsTaskFactory.d.ts","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsTaskFactory.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,cAAc,CAKhB;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,cAAc,CAOhB;AAED,oBAAY,oBAAoB;IAE9B,QAAQ,aAAa;IAErB,iBAAiB,uBAAuB;CACzC;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAS7E;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
@@ -1,87 +1,43 @@
1
1
  /**
2
- * Prepare to run an ECS task for the classical analysis-then-capture flow
3
- * which uses a 'project' image for analysis and a 'playwright' image for capture.
2
+ * Prepare to run an ECS task for analysis with distributed capture orchestration.
3
+ * Uses the unified 'combo' image which includes both analysis and capture capabilities.
4
4
  */
5
- export function getEcsStartConfigForAnalysisThenCapture(projectEnvironmentVariables, playwrightEnvironmentVariables) {
5
+ export function getEcsStartConfigForAnalysis(environmentVariables) {
6
6
  return {
7
- taskDefinition: getEcsTaskDefinitionName(EcsTaskDefinitionUse.AnalyzeThenCapture),
8
- containerEnvironmentVariables: [
9
- [
10
- getEcsImageNameForType(EcsImageType.Project),
11
- projectEnvironmentVariables,
12
- ],
13
- [
14
- getEcsImageNameForType(EcsImageType.Playwright),
15
- playwrightEnvironmentVariables,
16
- ],
17
- ],
18
- };
19
- }
20
- /**
21
- * Prepare to run an ECS task for the new analysis flow with distributed capture
22
- * tasks orchestrated from only a 'project' image.
23
- */
24
- export function getEcsStartConfigFoAnalysisWithOrchestration(environmentVariables) {
25
- return {
26
- taskDefinition: getEcsTaskDefinitionName(EcsTaskDefinitionUse.AnalyzeWithOrchestration),
27
- containerEnvironmentVariables: [
28
- [getEcsImageNameForType(EcsImageType.Project), environmentVariables],
29
- ],
7
+ taskDefinition: getEcsTaskDefinitionName(EcsTaskDefinitionUse.Analysis),
8
+ containerEnvironmentVariables: [[getEcsImageName(), environmentVariables]],
30
9
  };
31
10
  }
32
11
  /**
33
12
  * Prepare to run an ECS worker task that implements the capture portion of the
34
- * distributed orchestration, which uses a 'combo' image. This task is launched
35
- * from a task created with `getEcsStartConfigFoAnalysisWithOrchestration()`
13
+ * distributed orchestration. Uses the same unified 'combo' image.
14
+ * This task is launched from a task created with `getEcsStartConfigForAnalysis()`
36
15
  */
37
16
  export function getEcsStartConfigForOrchestrationTask(environmentVariables) {
38
17
  return {
39
18
  taskDefinition: getEcsTaskDefinitionName(EcsTaskDefinitionUse.OrchestrationTask),
40
- containerEnvironmentVariables: [
41
- [getEcsImageNameForType(EcsImageType.Combo), environmentVariables],
42
- ],
19
+ containerEnvironmentVariables: [[getEcsImageName(), environmentVariables]],
43
20
  };
44
21
  }
45
22
  export var EcsTaskDefinitionUse;
46
23
  (function (EcsTaskDefinitionUse) {
47
- /* A 'project' image runs analysis while a 'playwright' image captures the entities. */
48
- EcsTaskDefinitionUse["AnalyzeThenCapture"] = "analyze-then-capture";
49
- /* A 'project' image runs analysis while firing up distributed capture orchestration. */
50
- EcsTaskDefinitionUse["AnalyzeWithOrchestration"] = "analyze-with-orchestration";
51
- /* A worker task that combines 'project' and 'playwright' code, launched by orchestration. */
24
+ /* Main analysis task - runs analysis and fires up distributed capture orchestration. */
25
+ EcsTaskDefinitionUse["Analysis"] = "analysis";
26
+ /* A worker task launched by orchestration to capture scenarios. */
52
27
  EcsTaskDefinitionUse["OrchestrationTask"] = "orchestration-task";
53
28
  })(EcsTaskDefinitionUse || (EcsTaskDefinitionUse = {}));
54
29
  export function getEcsTaskDefinitionName(forUse) {
55
30
  switch (forUse) {
56
- case EcsTaskDefinitionUse.AnalyzeThenCapture:
57
- return `${process.env.ECR_REPOSITORY_NAME}-project-and-playwright`;
58
- case EcsTaskDefinitionUse.AnalyzeWithOrchestration:
59
- return `${process.env.ECR_REPOSITORY_NAME}-project`;
31
+ case EcsTaskDefinitionUse.Analysis:
32
+ return `${process.env.ECR_REPOSITORY_NAME}-analysis`;
60
33
  case EcsTaskDefinitionUse.OrchestrationTask:
61
- return `${process.env.ECR_REPOSITORY_NAME}-combo`;
34
+ return `${process.env.ECR_REPOSITORY_NAME}-orchestration`;
62
35
  default:
63
36
  throw new Error(`Unknown task definition use: ${forUse}`);
64
37
  }
65
38
  }
66
- export var EcsImageType;
67
- (function (EcsImageType) {
68
- /* The virtualized server that runs the project code. */
69
- EcsImageType["Project"] = "project";
70
- /* The playwright capture process which waits for the project to be ready. */
71
- EcsImageType["Playwright"] = "playwright";
72
- /* A combo image that combines both project and playwright code, used by orchestration. */
73
- EcsImageType["Combo"] = "combo";
74
- })(EcsImageType || (EcsImageType = {}));
75
- export function getEcsImageNameForType(type) {
76
- switch (type) {
77
- case EcsImageType.Project:
78
- return `${process.env.ECR_REPOSITORY_NAME}-project`;
79
- case EcsImageType.Playwright:
80
- return `${process.env.ECR_REPOSITORY_NAME}-playwright`;
81
- case EcsImageType.Combo:
82
- return `${process.env.ECR_REPOSITORY_NAME}-combo`;
83
- default:
84
- throw new Error(`Unknown image type: ${type}`);
85
- }
39
+ /** Returns the name of the unified Docker image used for all ECS tasks. */
40
+ export function getEcsImageName() {
41
+ return `${process.env.ECR_REPOSITORY_NAME}-combo`;
86
42
  }
87
43
  //# sourceMappingURL=ecsTaskFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecsTaskFactory.js","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsTaskFactory.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,UAAU,uCAAuC,CACrD,2BAAmD,EACnD,8BAAsD;IAEtD,OAAO;QACL,cAAc,EAAE,wBAAwB,CACtC,oBAAoB,CAAC,kBAAkB,CACxC;QACD,6BAA6B,EAAE;YAC7B;gBACE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC5C,2BAA2B;aAC5B;YACD;gBACE,sBAAsB,CAAC,YAAY,CAAC,UAAU,CAAC;gBAC/C,8BAA8B;aAC/B;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4CAA4C,CAC1D,oBAA4C;IAE5C,OAAO;QACL,cAAc,EAAE,wBAAwB,CACtC,oBAAoB,CAAC,wBAAwB,CAC9C;QACD,6BAA6B,EAAE;YAC7B,CAAC,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;SACrE;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC,CACnD,oBAA4C;IAE5C,OAAO;QACL,cAAc,EAAE,wBAAwB,CACtC,oBAAoB,CAAC,iBAAiB,CACvC;QACD,6BAA6B,EAAE;YAC7B,CAAC,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;SACnE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAN,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,uFAAuF;IACvF,mEAA2C,CAAA;IAC3C,wFAAwF;IACxF,+EAAuD,CAAA;IACvD,6FAA6F;IAC7F,gEAAwC,CAAA;AAC1C,CAAC,EAPW,oBAAoB,KAApB,oBAAoB,QAO/B;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,kBAAkB;YAC1C,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,yBAAyB,CAAC;QACrE,KAAK,oBAAoB,CAAC,wBAAwB;YAChD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC;QACtD,KAAK,oBAAoB,CAAC,iBAAiB;YACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC;QACpD;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,wDAAwD;IACxD,mCAAmB,CAAA;IACnB,6EAA6E;IAC7E,yCAAyB,CAAA;IACzB,0FAA0F;IAC1F,+BAAe,CAAA;AACjB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAkB;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY,CAAC,OAAO;YACvB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC;QACtD,KAAK,YAAY,CAAC,UAAU;YAC1B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,aAAa,CAAC;QACzD,KAAK,YAAY,CAAC,KAAK;YACrB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC;QACpD;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ecsTaskFactory.js","sourceRoot":"","sources":["../../../../src/lib/ecs/ecsTaskFactory.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,oBAA4C;IAE5C,OAAO;QACL,cAAc,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACvE,6BAA6B,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,oBAAoB,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC,CACnD,oBAA4C;IAE5C,OAAO;QACL,cAAc,EAAE,wBAAwB,CACtC,oBAAoB,CAAC,iBAAiB,CACvC;QACD,6BAA6B,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,oBAAoB,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,wFAAwF;IACxF,6CAAqB,CAAA;IACrB,mEAAmE;IACnE,gEAAwC,CAAA;AAC1C,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,QAAQ;YAChC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC;QACvD,KAAK,oBAAoB,CAAC,iBAAiB;YACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,gBAAgB,CAAC;QAC5D;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC;AACpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uploadFileToS3.d.ts","sourceRoot":"","sources":["../../../../src/lib/s3/uploadFileToS3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,kBAAkB;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CAC7E;AAED,wBAA8B,cAAc,CAAC,EAC3C,UAAU,EACV,GAAG,EACH,IAAI,GACL,EAAE,kBAAkB,iBAqBpB"}
1
+ {"version":3,"file":"uploadFileToS3.d.ts","sourceRoot":"","sources":["../../../../src/lib/s3/uploadFileToS3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,kBAAkB;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CAC7E;AAED,wBAA8B,cAAc,CAAC,EAC3C,UAAU,EACV,GAAG,EACH,IAAI,GACL,EAAE,kBAAkB,iBA4BpB"}
@@ -11,10 +11,17 @@ export default async function uploadFileToS3({ bucketName, key, body, }) {
11
11
  },
12
12
  });
13
13
  try {
14
+ let lastLoggedMB = 0;
14
15
  upload.on('httpUploadProgress', (progress) => {
15
- console.log(progress);
16
+ const loadedMB = Math.floor((progress.loaded ?? 0) / (1024 * 1024));
17
+ // Log every 10MB to avoid spam
18
+ if (loadedMB >= lastLoggedMB + 10) {
19
+ lastLoggedMB = loadedMB;
20
+ console.log(`Uploading ${key}... ${loadedMB}MB`);
21
+ }
16
22
  });
17
23
  await upload.done();
24
+ console.log(`Uploaded ${key}`);
18
25
  }
19
26
  catch (error) {
20
27
  console.log('Error. File not uploaded.', error);
@@ -1 +1 @@
1
- {"version":3,"file":"uploadFileToS3.js","sourceRoot":"","sources":["../../../../src/lib/s3/uploadFileToS3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAS9C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,EAC3C,UAAU,EACV,GAAG,EACH,IAAI,GACe;IACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;SACX;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"uploadFileToS3.js","sourceRoot":"","sources":["../../../../src/lib/s3/uploadFileToS3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAS9C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,EAC3C,UAAU,EACV,GAAG,EACH,IAAI,GACe;IACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;SACX;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YACpE,+BAA+B;YAC/B,IAAI,QAAQ,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;gBAClC,YAAY,GAAG,QAAQ,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,OAAO,QAAQ,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}