@codeyam/codeyam-cli 0.1.0-staging.8aea589 → 0.1.0-staging.da5baf5

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 (359) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +5 -5
  4. package/analyzer-template/packages/ai/index.ts +2 -1
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
  9. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
  11. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +127 -4
  12. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1821 -542
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
  25. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
  26. package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
  27. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
  28. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
  29. package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
  30. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +32 -8
  31. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
  33. package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
  34. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
  35. package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
  36. package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
  37. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
  40. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
  44. package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
  45. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
  46. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +18 -6
  47. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
  48. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
  49. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
  50. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
  51. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
  52. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
  53. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
  54. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
  55. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
  56. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
  57. package/analyzer-template/packages/aws/package.json +2 -2
  58. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
  59. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
  60. package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
  61. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  63. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
  69. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
  70. package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
  71. package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/utils/index.js +2 -0
  73. package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
  75. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  76. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
  77. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
  78. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
  80. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  82. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  83. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  84. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  86. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  88. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  89. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  91. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  92. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  93. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  94. package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
  95. package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
  96. package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
  97. package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
  98. package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
  99. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
  100. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  101. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
  102. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
  103. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  104. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
  105. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  106. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  107. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  108. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  109. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  110. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  111. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  112. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  113. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  114. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  115. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  116. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  119. package/analyzer-template/packages/utils/index.ts +2 -0
  120. package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
  121. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +2 -1
  122. package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
  123. package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
  124. package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
  125. package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
  126. package/analyzer-template/project/constructMockCode.ts +170 -6
  127. package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
  128. package/analyzer-template/project/startScenarioCapture.ts +24 -0
  129. package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
  130. package/analyzer-template/project/writeMockDataTsx.ts +125 -4
  131. package/analyzer-template/project/writeScenarioComponents.ts +175 -45
  132. package/analyzer-template/project/writeUniversalMocks.ts +66 -8
  133. package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
  134. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  135. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
  136. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  137. package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
  138. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  139. package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
  140. package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
  141. package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
  142. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  143. package/background/src/lib/virtualized/project/writeScenarioComponents.js +130 -28
  144. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  145. package/background/src/lib/virtualized/project/writeUniversalMocks.js +56 -7
  146. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  147. package/codeyam-cli/src/cli.js +4 -0
  148. package/codeyam-cli/src/cli.js.map +1 -1
  149. package/codeyam-cli/src/codeyam-cli.js +0 -0
  150. package/codeyam-cli/src/commands/debug.js +190 -0
  151. package/codeyam-cli/src/commands/debug.js.map +1 -0
  152. package/codeyam-cli/src/commands/init.js +4 -23
  153. package/codeyam-cli/src/commands/init.js.map +1 -1
  154. package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
  155. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
  156. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
  157. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
  158. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
  159. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  160. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
  161. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
  162. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
  163. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  164. package/codeyam-cli/src/utils/webappDetection.js +2 -1
  165. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  166. package/codeyam-cli/src/webserver/app/lib/database.js +50 -2
  167. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  168. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BFRmw1TF.js +1 -0
  169. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-B0oiPem-.js → InteractivePreview-CRfBaL5B.js} +3 -3
  170. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
  171. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-BKKG1s2B.js → LogViewer-CRcT5fOZ.js} +1 -1
  172. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
  173. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Dj4Mm0AR.js +6 -0
  174. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DmjXUj6m.js → ScenarioViewer-wtCIkGzq.js} +1 -1
  175. package/codeyam-cli/src/webserver/build/client/assets/_index-Cjdlwanz.js +1 -0
  176. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dv3k2aEm.js +10 -0
  177. package/codeyam-cli/src/webserver/build/client/assets/{chart-column-VXBS6qOn.js → chart-column-DOftqM9U.js} +1 -1
  178. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
  179. package/codeyam-cli/src/webserver/build/client/assets/{circle-alert-n5GUC2AS.js → circle-alert-0WShkwuc.js} +1 -1
  180. package/codeyam-cli/src/webserver/build/client/assets/{clock-DKqtX8js.js → clock-DXui5oLF.js} +1 -1
  181. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DPFKgE96.js +1 -0
  182. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BHiWkb_W.js → entity._sha._-BxaXKsIx.js} +10 -10
  183. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BRD2FrH5.js +1 -0
  184. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-69R47Ffu.js +5 -0
  185. package/codeyam-cli/src/webserver/build/client/assets/entry.client-B5l8I1m3.js +5 -0
  186. package/codeyam-cli/src/webserver/build/client/assets/file-text-fb2mx25c.js +1 -0
  187. package/codeyam-cli/src/webserver/build/client/assets/files-l_Eh9jQG.js +1 -0
  188. package/codeyam-cli/src/webserver/build/client/assets/git-BCnOUEl9.js +12 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/globals-BxkM6Up7.css +1 -0
  190. package/codeyam-cli/src/webserver/build/client/assets/index-BgDzgbQW.js +8 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-v3c6DFp4.js → loader-circle-DE3HAwpF.js} +1 -1
  192. package/codeyam-cli/src/webserver/build/client/assets/manifest-5579bc45.js +1 -0
  193. package/codeyam-cli/src/webserver/build/client/assets/root-o8NMI2bW.js +16 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/{search-DA14wXpu.js → search-BymWwY_X.js} +1 -1
  195. package/codeyam-cli/src/webserver/build/client/assets/{settings-COJUrwGu.js → settings-C7G4GDvW.js} +1 -1
  196. package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/simulations-Duh3oShE.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-Lumm1t01.js → useLastLogLine-AlhS7g5F.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/useToast-XY00p4rI.js +1 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/{zap-BvukH0eN.js → zap-Dra7vum1.js} +1 -1
  201. package/codeyam-cli/src/webserver/build/server/assets/index-Dpr7o3dP.js +1 -0
  202. package/codeyam-cli/src/webserver/build/server/assets/server-build-BM5nyvlV.js +166 -0
  203. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  204. package/codeyam-cli/src/webserver/build-info.json +5 -5
  205. package/codeyam-cli/src/webserver/server.js +1 -1
  206. package/codeyam-cli/src/webserver/server.js.map +1 -1
  207. package/codeyam-cli/templates/codeyam-setup-skill.md +70 -85
  208. package/package.json +7 -10
  209. package/packages/ai/index.js +1 -2
  210. package/packages/ai/index.js.map +1 -1
  211. package/packages/ai/src/lib/analyzeScope.js +13 -0
  212. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  213. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
  214. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  215. package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
  216. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  217. package/packages/ai/src/lib/astScopes/paths.js +28 -3
  218. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  219. package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
  220. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  221. package/packages/ai/src/lib/checkAllAttributes.js +1 -3
  222. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  223. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
  224. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  225. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
  226. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
  227. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
  228. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  229. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
  230. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
  231. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
  232. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
  233. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
  234. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
  235. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
  236. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
  237. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
  238. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
  239. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
  240. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  241. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
  242. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
  243. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
  244. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
  245. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
  246. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  247. package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
  248. package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
  249. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
  250. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  251. package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
  252. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  253. package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
  254. package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
  255. package/packages/ai/src/lib/generateEntityKeyAttributes.js +32 -8
  256. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  257. package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
  258. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  259. package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
  260. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  261. package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
  262. package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
  263. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
  264. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  265. package/packages/ai/src/lib/getLLMCallStats.js +0 -14
  266. package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
  267. package/packages/ai/src/lib/modelInfo.js +15 -0
  268. package/packages/ai/src/lib/modelInfo.js.map +1 -1
  269. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
  270. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  271. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
  272. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
  273. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
  274. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  275. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
  276. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  277. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
  278. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
  279. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
  280. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  281. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
  282. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  283. package/packages/ai/src/lib/types/index.js +2 -0
  284. package/packages/ai/src/lib/types/index.js.map +1 -1
  285. package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
  286. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  287. package/packages/analyze/src/lib/FileAnalyzer.js +17 -5
  288. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  289. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
  290. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  291. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
  292. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  293. package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
  294. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  295. package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
  296. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  297. package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
  298. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  299. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
  300. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  301. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
  302. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  303. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
  304. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  305. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
  306. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  307. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
  308. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  309. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  310. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  311. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  312. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  313. package/packages/generate/src/lib/scenarioComponent.js +5 -3
  314. package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
  315. package/packages/utils/index.js +2 -0
  316. package/packages/utils/index.js.map +1 -1
  317. package/packages/utils/src/lib/Semaphore.js +40 -0
  318. package/packages/utils/src/lib/Semaphore.js.map +1 -0
  319. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
  320. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  321. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  322. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  323. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  324. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  325. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  326. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  327. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  328. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  329. package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
  330. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +0 -1
  331. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +0 -3
  332. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DU_jxCPD.js +0 -1
  333. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +0 -6
  334. package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +0 -1
  335. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +0 -10
  336. package/codeyam-cli/src/webserver/build/client/assets/components-Dj-Ggnl2.js +0 -40
  337. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BbR3FwNc.js +0 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-L7M9Vr5z.js +0 -1
  339. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-C9w-q7P3.js +0 -5
  340. package/codeyam-cli/src/webserver/build/client/assets/entry.client-CdGoUs8A.js +0 -1
  341. package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +0 -1
  342. package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +0 -1
  343. package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +0 -12
  344. package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +0 -1
  345. package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +0 -1
  346. package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +0 -16
  347. package/codeyam-cli/src/webserver/build/client/assets/settings-NU_ZquhK.js +0 -1
  348. package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +0 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +0 -1
  350. package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
  351. package/codeyam-cli/src/webserver/build/client/favicon.svg +0 -13
  352. package/codeyam-cli/src/webserver/build/server/assets/index-DHr4rT4u.js +0 -1
  353. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +0 -166
  354. package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
  355. package/codeyam-cli/src/webserver/public/favicon.svg +0 -13
  356. package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
  357. package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
  358. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
  359. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
@@ -41,7 +41,7 @@ export default function generateChangesEntityScenariosGenerator({
41
41
  const filePath = (attr as any).filePath;
42
42
  const entityName = (attr as any).originalEntityName;
43
43
 
44
- if (!filePath || !entityName) continue; // Skip if missing required fields
44
+ if (!filePath || !entityName) continue;
45
45
 
46
46
  if (!relevantDependentKeyAttributes[filePath]) {
47
47
  relevantDependentKeyAttributes[filePath] = {};
@@ -52,128 +52,112 @@ export default function generateChangesEntityScenariosGenerator({
52
52
  relevantDependentKeyAttributes[filePath][entityName].push(attr);
53
53
  }
54
54
 
55
- return `Added Key Attributes:
56
-
57
- \`\`\`
58
- ${
59
- addedKeyAttributes && addedKeyAttributes.length > 0
60
- ? JSON.stringify(
61
- addedKeyAttributes.map((ka) => ({
62
- dataStructurePath: ka.dataStructurePath, // Full path in mockData
63
- localVariable: ka.internalPath, // Local variable name
64
- description: ka.description,
65
- validValueOptions: ka.validValueOptions,
66
- })),
67
- null,
68
- 2,
69
- )
70
- : 'None'
71
- }
72
- \`\`\`
73
-
74
- Removed Key Attributes:
75
-
76
- \`\`\`
77
- ${removedKeyAttributes && removedKeyAttributes.length > 0 ? JSON.stringify(removedKeyAttributes, null, 2) : 'None'}
78
- \`\`\`
79
-
80
- ${
81
- changedDataStructureFields.length > 0
82
- ? `Changed Data Structure Fields:
83
-
84
- The following fields in the data structure have changed (type changed, added, or removed):
85
-
86
- \`\`\`
55
+ const formatKeyAttrs = (attrs: Analysis['metadata']['keyAttributes']) =>
56
+ attrs.map((ka) => ({
57
+ dataStructurePath: ka.dataStructurePath,
58
+ localVariable: ka.internalPath,
59
+ description: ka.description,
60
+ validValueOptions: ka.validValueOptions,
61
+ }));
62
+
63
+ const addedSection =
64
+ addedKeyAttributes?.length > 0
65
+ ? JSON.stringify(formatKeyAttrs(addedKeyAttributes), null, 2)
66
+ : 'None';
67
+
68
+ const removedSection =
69
+ removedKeyAttributes?.length > 0
70
+ ? JSON.stringify(removedKeyAttributes, null, 2)
71
+ : 'None';
72
+
73
+ const changedFieldsSection =
74
+ changedDataStructureFields.length > 0
75
+ ? `
76
+ ## Changed Data Structure Fields
77
+ Fields that changed type, were added, or removed:
78
+ \`\`\`json
87
79
  ${JSON.stringify(changedDataStructureFields, null, 2)}
88
80
  \`\`\`
89
81
 
90
- **IMPORTANT**: For scenarios that reference these changed fields in their keyAttributeInstructions, you MUST regenerate those specific instructions to match the new data structure. For example:
91
- - If "stats.visualEntities" changed from an array to a number, update keyAttributeInstructions from "Array of 10 objects" to "10 (count of visual entities)"
92
- - If a field was removed, remove it from keyAttributeInstructions
93
- - If a field was added, you may add it to keyAttributeInstructions if relevant for the scenario
94
-
95
- Fields that did NOT change can retain their existing keyAttributeInstructions.
96
-
82
+ **Update keyAttributeInstructions for affected scenarios** (e.g., if "stats.visualEntities" changed from array to number).
97
83
  `
98
- : ''
99
- }
100
- Existing Key Attributes:
101
-
102
- \`\`\`
84
+ : '';
85
+
86
+ const existingScenariosJson = JSON.stringify(
87
+ existingScenarios
88
+ .filter((s) => (error ? !!s.metadata.error : !s.metadata.error))
89
+ .map((s) => ({
90
+ name: s.name,
91
+ description: s.description,
92
+ keyAttributeInstructions: s.metadata.keyAttributeInstructions,
93
+ playwrightInstructions: s.metadata.playwrightInstructions,
94
+ })),
95
+ null,
96
+ 2,
97
+ );
98
+
99
+ const diffSection = commitDiff
100
+ ? `
101
+ ## Code Change (Diff)
102
+ \`\`\`diff
103
+ ${commitDiff}
104
+ \`\`\``
105
+ : '';
106
+
107
+ const dependencySection =
108
+ !error &&
109
+ relevantDependentKeyAttributes &&
110
+ Object.keys(relevantDependentKeyAttributes).length > 0
111
+ ? `
112
+ ## Dependency Key Attributes
113
+ \`\`\`json
103
114
  ${JSON.stringify(
104
- keyAttributes.map((ka) => ({
105
- dataStructurePath: ka.dataStructurePath, // Full path in mockData
106
- localVariable: ka.internalPath, // Local variable name
107
- description: ka.description,
108
- validValueOptions: ka.validValueOptions,
109
- })),
115
+ Object.keys(relevantDependentKeyAttributes).reduce((acc: any, path) => {
116
+ acc[path] = Object.keys(relevantDependentKeyAttributes[path]).reduce(
117
+ (entityAcc: any, entityName) => {
118
+ entityAcc[entityName] = relevantDependentKeyAttributes[path][
119
+ entityName
120
+ ].map((ka: any) => ({
121
+ dataStructurePath: ka.dataStructurePath,
122
+ localVariable: ka.path || ka.internalPath,
123
+ description: ka.description,
124
+ validValueOptions: ka.validValueOptions,
125
+ }));
126
+ return entityAcc;
127
+ },
128
+ {},
129
+ );
130
+ return acc;
131
+ }, {}),
110
132
  null,
111
133
  2,
112
134
  )}
113
- \`\`\`
114
-
115
- Existing Scenarios:
135
+ \`\`\``
136
+ : '';
116
137
 
138
+ return `## Added Key Attributes
139
+ \`\`\`json
140
+ ${addedSection}
117
141
  \`\`\`
118
- ${JSON.stringify(
119
- existingScenarios
120
- .filter((s) => (error ? !!s.metadata.error : !s.metadata.error))
121
- .map((s) => ({
122
- name: s.name,
123
- description: s.description,
124
- keyAttributeInstructions: s.metadata.keyAttributeInstructions,
125
- playwrightInstructions: s.metadata.playwrightInstructions,
126
- })),
127
- null,
128
- 2,
129
- )}
130
- \`\`\`
131
-
132
- ${
133
- commitDiff
134
- ? `
135
- Code Change:
136
142
 
143
+ ## Removed Key Attributes
144
+ \`\`\`json
145
+ ${removedSection}
137
146
  \`\`\`
138
- ${commitDiff}
147
+ ${changedFieldsSection}
148
+ ## Current Key Attributes
149
+ \`\`\`json
150
+ ${JSON.stringify(formatKeyAttrs(keyAttributes), null, 2)}
139
151
  \`\`\`
140
- `
141
- : ''
142
- }
143
- Function Code:
144
152
 
153
+ ## Existing Scenarios
154
+ \`\`\`json
155
+ ${existingScenariosJson}
145
156
  \`\`\`
146
- ${entity.code}
147
- \`\`\`
157
+ ${diffSection}
148
158
 
149
- ${
150
- !error &&
151
- relevantDependentKeyAttributes &&
152
- Object.keys(relevantDependentKeyAttributes).length > 0
153
- ? `Key Attributes for Dependencies:
154
- \`\`\`
155
- ${JSON.stringify(
156
- Object.keys(relevantDependentKeyAttributes).reduce((acc: any, path) => {
157
- acc[path] = Object.keys(
158
- (relevantDependentKeyAttributes as any)[path],
159
- ).reduce((entityAcc: any, entityName) => {
160
- entityAcc[entityName] = (relevantDependentKeyAttributes as any)[path][
161
- entityName
162
- ].map((ka: any) => ({
163
- dataStructurePath: ka.dataStructurePath, // Full path in mockData
164
- localVariable: ka.path || ka.internalPath, // Local variable name
165
- description: ka.description,
166
- validValueOptions: ka.validValueOptions,
167
- }));
168
- return entityAcc;
169
- }, {});
170
- return acc;
171
- }, {}),
172
- null,
173
- 2,
174
- )}
175
- \`\`\``
176
- : ''
177
- }
178
- `;
159
+ ## Current Code
160
+ \`\`\`typescript
161
+ ${entity.code}
162
+ \`\`\`${dependencySection}`;
179
163
  }
@@ -1,35 +1,16 @@
1
1
  import { Entity } from '~codeyam/types';
2
2
 
3
3
  export default function generateEntityDocumentationGenerator(entity: Entity) {
4
- return `Here is the code for ${entity.name}:
5
-
6
- """
7
- ${entity.code}
8
- """
9
-
10
- What does this code do? Please create documentation for this code.
11
-
12
- - Start with an overview that describes the overall intent of the code. Be concise in your language. Immediately start with the intent of the code. Here is an example Overview:
4
+ return `## Task
5
+ Document the following code.
13
6
 
14
- \`\`\` Overview
15
- Displays details about a specific Git commit. It shows the commit message, author, date, and provides a link to the commit on GitHub. Users can copy the commit SHA to their clipboard, with a visual indication of the copy action.
7
+ ## Code
8
+ \`\`\`typescript
9
+ ${entity.code}
16
10
  \`\`\`
17
11
 
18
- Note that it does not mention the name of the function but dives directly into what the code does in concise language followed by a small amount of detail.
19
-
20
- - Next, specify the inputs (with details about types, how the input is used, and examples) and expected outputs (with details about types and examples).
21
-
22
- - Finally, provide examples of how the code can be used with clear inputs and outputs for each example. Provide diverse examples (there's no need to include repetitive examples).
23
-
24
- Write the documentation as markdown. Be concise. Use bullets when possible. No one wants to read long paragraphs of text.
25
-
26
- Provide no other text than the documentation in proper markdown using the headers below.
27
-
28
- ## Overview
29
-
30
- ## Inputs
31
-
32
- ## Output
12
+ ## Overview Example
13
+ Good: "Displays details about a specific Git commit. Shows the commit message, author, date, and provides a link to GitHub. Users can copy the commit SHA to clipboard."
33
14
 
34
- ## Examples`;
15
+ Bad: "The CommitDetails function takes a commit object..." (mentions the function name)`;
35
16
  }
@@ -11,50 +11,45 @@ export default function generateEntityScenarioDataGenerator(
11
11
  return incompleteResponse;
12
12
  }
13
13
 
14
- return `## Scenarios
14
+ const scenarioJson = JSON.stringify(
15
+ {
16
+ name: scenario.name,
17
+ description: scenario.description,
18
+ keyAttributeInstructions: scenario.metadata.keyAttributeInstructions,
19
+ },
20
+ null,
21
+ 2,
22
+ );
15
23
 
16
- This scenario needs mock data to support it:
17
- \`\`\`
18
- ${JSON.stringify(
19
- {
20
- name: scenario.name,
21
- description: scenario.description,
22
- keyAttributeInstructions: scenario.metadata.keyAttributeInstructions,
23
- },
24
- null,
25
- 2,
26
- )}
27
- \`\`\`
28
- ${
29
- defaultScenarioData
24
+ const defaultDataSection = defaultScenarioData
30
25
  ? `
31
- ## Default Scenario Data
32
-
33
- Here is the Default Scenario data. The data generated for this scenario will be merged into this Default Scenario data.
34
- \`\`\`
26
+ ## Default Scenario Data (merge base)
27
+ \`\`\`json
35
28
  ${JSON.stringify(defaultScenarioData.data, null, 2)}
36
29
  \`\`\`
37
-
38
30
  `
39
- : ''
40
- }
41
- ${
42
- structure.dataForMocks
43
- ? `The mockData structure (for the default scenario provide robust values for the entire structure, excluding error attributes unless specifically requested):
44
- \`\`\`
31
+ : '';
32
+
33
+ const mockDataSection = structure.dataForMocks
34
+ ? `## mockData Structure
35
+ \`\`\`json
45
36
  ${JSON.stringify(noErrorAttributes(structure.dataForMocks), null, 2)}
46
- \`\`\`
47
- `
48
- : 'There is no mockData for this file. Return {} for the mockData.'
49
- }
50
-
51
- ${
52
- structure.arguments
53
- ? `The argumentsData structure (for the default scenario provide robust values for the entire structure, excluding error attributes unless specifically requested):
54
- \`\`\`
37
+ \`\`\``
38
+ : '## mockData Structure\nNone—return `{}` for mockData.';
39
+
40
+ const argumentsSection = structure.arguments
41
+ ? `## argumentsData Structure
42
+ \`\`\`json
55
43
  ${JSON.stringify(noErrorAttributes(structure.arguments), null, 2)}
44
+ \`\`\``
45
+ : '## argumentsData Structure\nNone—return `[]` for argumentsData.';
46
+
47
+ return `## Scenario
48
+ \`\`\`json
49
+ ${scenarioJson}
56
50
  \`\`\`
57
- `
58
- : 'There is no argumentsData for this file. Return [] for the argumentsData.'
59
- }`;
51
+ ${defaultDataSection}
52
+ ${mockDataSection}
53
+
54
+ ${argumentsSection}`;
60
55
  }
@@ -19,36 +19,28 @@ export default function generateEntityScenariosGenerator({
19
19
  (ka) => ka.dependentEntityName,
20
20
  );
21
21
 
22
- return `Key Attributes:
23
-
24
- \`\`\`
25
- ${JSON.stringify(
26
- thisEntityKeyAttributes.map((ka) => ({
27
- dataStructurePath: ka.dataStructurePath, // Full path in mockData (e.g., "useDiffModal().diffView")
28
- localVariable: ka.internalPath, // Local variable name (e.g., "diffView")
29
- description: ka.description,
30
- validValueOptions: ka.validValueOptions,
31
- })),
32
- null,
33
- 2,
34
- )}
35
- \`\`\`
36
-
37
- Code:
38
- \`\`\`
39
- ${entity.code}
40
- \`\`\`
22
+ const keyAttrsJson = JSON.stringify(
23
+ thisEntityKeyAttributes.map((ka) => ({
24
+ dataStructurePath: ka.dataStructurePath,
25
+ localVariable: ka.internalPath,
26
+ description: ka.description,
27
+ validValueOptions: ka.validValueOptions,
28
+ })),
29
+ null,
30
+ 2,
31
+ );
41
32
 
42
- ${
43
- !error &&
44
- relevantDependentKeyAttributes &&
45
- Object.keys(relevantDependentKeyAttributes).length > 0
46
- ? `Key Attributes for Dependencies:
47
- \`\`\`
33
+ const dependencySection =
34
+ !error &&
35
+ relevantDependentKeyAttributes &&
36
+ relevantDependentKeyAttributes.length > 0
37
+ ? `
38
+ ## Dependency Key Attributes
39
+ \`\`\`json
48
40
  ${JSON.stringify(
49
41
  relevantDependentKeyAttributes.map((ka) => ({
50
- dataStructurePath: ka.dataStructurePath, // Full path in mockData
51
- localVariable: ka.internalPath, // Local variable name
42
+ dataStructurePath: ka.dataStructurePath,
43
+ localVariable: ka.internalPath,
52
44
  forDependency: ka.dependentEntityName,
53
45
  description: ka.description,
54
46
  validValueOptions: ka.validValueOptions,
@@ -57,7 +49,15 @@ ${JSON.stringify(
57
49
  2,
58
50
  )}
59
51
  \`\`\``
60
- : ''
61
- }
62
- `;
52
+ : '';
53
+
54
+ return `## Key Attributes
55
+ \`\`\`json
56
+ ${keyAttrsJson}
57
+ \`\`\`
58
+
59
+ ## Code
60
+ \`\`\`typescript
61
+ ${entity.code}
62
+ \`\`\`${dependencySection}`;
63
63
  }
@@ -55,6 +55,7 @@ export namespace AI {
55
55
  */
56
56
  export enum Model {
57
57
  // OpenAI
58
+ OPENAI_GPT5_1 = 'openai/gpt-5.1',
58
59
  OPENAI_GPT5 = 'openai/gpt-5',
59
60
  OPENAI_GPT5_MINI = 'openai/gpt-5-mini',
60
61
  OPENAI_GPT5_NANO = 'openai/gpt-5-nano',
@@ -83,6 +84,7 @@ export namespace AI {
83
84
  // Anthropic
84
85
  ANTHROPIC_CLAUDE_4_5_HAIKU = 'anthropic/claude-4.5-haiku',
85
86
  ANTHROPIC_CLAUDE_4_5_SONNET = 'anthropic/claude-4.5-sonnet',
87
+ ANTHROPIC_CLAUDE_4_5_OPUS = 'anthropic/claude-4.5-opus',
86
88
 
87
89
  // Deprecated models (kept for backward compatibility)
88
90
  PHIND_CODELLAMA = 'phind/codellama',
@@ -34,6 +34,28 @@ export interface SerializableFunctionResult {
34
34
  environmentVariables: string[];
35
35
  }
36
36
 
37
+ /**
38
+ * Enriched conditional usage that includes traced source data path.
39
+ * The sourceDataPath connects a local variable (used in conditionals) back to
40
+ * the original data attribute from the attributes map.
41
+ */
42
+ export interface EnrichedConditionalUsage {
43
+ /** The local variable path (e.g., "activeTab") */
44
+ path: string;
45
+ /** The type of condition this attribute is used in */
46
+ conditionType: 'truthiness' | 'comparison' | 'switch';
47
+ /** For comparison conditions, the literal values being compared against */
48
+ comparedValues?: string[];
49
+ /** Where this conditional usage occurs */
50
+ location: 'if' | 'ternary' | 'logical-and' | 'switch';
51
+ /**
52
+ * The traced source data path in the format "scopeName.path"
53
+ * e.g., "useParams().functionCallReturnValue['*']"
54
+ * This connects the local variable to the original data attribute.
55
+ */
56
+ sourceDataPath?: string;
57
+ }
58
+
37
59
  export interface SerializableDataStructure {
38
60
  // External function calls array
39
61
  externalFunctionCalls: SerializableFunctionCallInfo[];
@@ -48,6 +70,13 @@ export interface SerializableDataStructure {
48
70
  equivalentSignatureVariables: Record<string, string>;
49
71
 
50
72
  environmentVariables: string[];
73
+
74
+ /**
75
+ * Conditional usages with source tracing.
76
+ * Maps local variable path to array of enriched usages that include
77
+ * the traced source data path.
78
+ */
79
+ conditionalUsages?: Record<string, EnrichedConditionalUsage[]>;
51
80
  }
52
81
 
53
82
  /**
@@ -182,3 +211,13 @@ export function getEquivalentSignatureVariables(
182
211
  ): Record<string, string> {
183
212
  return dataStructure.equivalentSignatureVariables;
184
213
  }
214
+
215
+ /**
216
+ * Get enriched conditional usages with source tracing.
217
+ * Returns the conditional usages map, or empty object if not available.
218
+ */
219
+ export function getConditionalUsages(
220
+ dataStructure: SerializableDataStructure,
221
+ ): Record<string, EnrichedConditionalUsage[]> {
222
+ return dataStructure.conditionalUsages ?? {};
223
+ }
@@ -278,11 +278,16 @@ export class FileAnalyzer {
278
278
 
279
279
  for (let i = 0; i < uniqueRelevantExpressions.length; i++) {
280
280
  const relevantExpression = uniqueRelevantExpressions[i];
281
- if (
282
- relevantExpression.exportName === '*' &&
281
+ // Resolve namespace imports for local packages (not external libraries).
282
+ // A module is local if it's not external OR if it resolves to a path outside node_modules
283
+ // (handles local monorepo packages like @codeyam/ui-components).
284
+ // If resolvedFileName is undefined, we can't determine location, so treat as external.
285
+ const isLocalModule =
283
286
  resolvedModule &&
284
- !resolvedModule.isExternalLibraryImport
285
- ) {
287
+ (!resolvedModule.isExternalLibraryImport ||
288
+ (resolvedModule.resolvedFileName &&
289
+ !resolvedModule.resolvedFileName.includes('node_modules')));
290
+ if (relevantExpression.exportName === '*' && isLocalModule) {
286
291
  uniqueRelevantExpressions.splice(i, 1);
287
292
  uniqueRelevantExpressions.push(
288
293
  ...this.resolveNamespaceImport(
@@ -295,11 +300,18 @@ export class FileAnalyzer {
295
300
  }
296
301
 
297
302
  if (uniqueRelevantExpressions.length > 0) {
298
- // Debug logging for ./types imports
303
+ // A module is external if TypeScript says so AND the resolved path is in node_modules.
304
+ // This handles local monorepo packages (like @codeyam/ui-components) which TypeScript
305
+ // marks as isExternalLibraryImport=true because they're symlinked, but actually
306
+ // resolve to files inside the project (not in node_modules).
307
+ const isExternalLibrary =
308
+ (resolvedModule?.isExternalLibraryImport ?? true) &&
309
+ (resolvedModule?.resolvedFileName?.includes('node_modules') ??
310
+ true);
299
311
  return [
300
312
  importedFilePath,
301
313
  {
302
- externalLibrary: resolvedModule?.isExternalLibraryImport ?? true,
314
+ externalLibrary: isExternalLibrary,
303
315
  resolvedPath: resolvedModule?.resolvedFileName,
304
316
  exportInfos: uniqueRelevantExpressions,
305
317
  },
@@ -12,7 +12,7 @@ import {
12
12
  getReturnValue,
13
13
  getSourceEquivalencies,
14
14
  getUsageEquivalencies,
15
- getConditionalUsagesFromCode,
15
+ getConditionalUsages,
16
16
  detectWrapperRequirements,
17
17
  } from '~codeyam/ai';
18
18
  import type { AnalysisOptions } from '../analyzeEntities';
@@ -94,11 +94,6 @@ export default async function prepareEntityDataStructures(
94
94
  }
95
95
  }
96
96
 
97
- // Extract conditional usages from the entity code for key attribute detection
98
- const conditionalUsages = entity.code
99
- ? getConditionalUsagesFromCode(entity.code)
100
- : {};
101
-
102
97
  entity.metadata.isolatedDataStructure = {
103
98
  signatureSchema: deduplicateFunctionSchemas(
104
99
  isolatedDataStructure.signatureSchema,
@@ -110,10 +105,8 @@ export default async function prepareEntityDataStructures(
110
105
  isolatedDataStructure.equivalentSignatureVariables,
111
106
  dependencySchemas: clonedDependencySchemas,
112
107
  environmentVariables: isolatedDataStructure.environmentVariables,
113
- conditionalUsages:
114
- Object.keys(conditionalUsages).length > 0
115
- ? conditionalUsages
116
- : undefined,
108
+ // Use enriched conditional usages with source tracing from analysis
109
+ conditionalUsages: isolatedDataStructure.conditionalUsages,
117
110
  };
118
111
 
119
112
  // Detect wrapper requirements (Context providers, etc.)
@@ -290,6 +283,9 @@ async function getEntityDataStructureAndFunctionCalls({
290
283
  const clonedRawSignature = { ...rawSignature };
291
284
  const clonedRawReturnValue = { ...rawReturnValue };
292
285
 
286
+ // Get enriched conditional usages with source tracing
287
+ const conditionalUsages = getConditionalUsages(dataStructure);
288
+
293
289
  const isolatedDataStructure = {
294
290
  signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
295
291
  returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
@@ -297,6 +293,8 @@ async function getEntityDataStructureAndFunctionCalls({
297
293
  getEquivalentSignatureVariables(dataStructure),
298
294
  dependencySchemas,
299
295
  environmentVariables: dataStructure.environmentVariables,
296
+ conditionalUsages:
297
+ Object.keys(conditionalUsages).length > 0 ? conditionalUsages : undefined,
300
298
  };
301
299
 
302
300
  const functionCalls: Record<string, string[]> = {};
@@ -18,7 +18,7 @@ import {
18
18
  upsertEntities,
19
19
  } from '~codeyam/supabase';
20
20
  import { getCandidatesReadyForCapture as getAnalysesReadyForCapture } from './dependencyResolver';
21
- import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
21
+ import { awsLog, awsLogDebugLevel, Semaphore } from '~codeyam/utils';
22
22
 
23
23
  const MAX_CONCURRENT_ANALYSES = 100; // fairly arbitrary, but more isn't necessarily better
24
24
 
@@ -133,6 +133,10 @@ export default async function analyzeEntities({
133
133
  const markedReady = new Set<string>(); // Analyses we've attempted to mark ready
134
134
  const analyses: Analysis[] = [];
135
135
 
136
+ // Semaphore to serialize CPU-intensive Structure phase while allowing
137
+ // I/O-bound KeyAttributes LLM calls to run in parallel
138
+ const structureSemaphore = new Semaphore(1);
139
+
136
140
  const analysesAlreadyCompletedAtStart =
137
141
  commit?.metadata?.currentRun?.analysesCompleted ?? 0;
138
142
 
@@ -442,6 +446,7 @@ export default async function analyzeEntities({
442
446
  analyzeAsDependency: !allRootEntities.some(
443
447
  (e) => e.filePath === entity.filePath && e.name === entity.name,
444
448
  ),
449
+ structureSemaphore,
445
450
  ...options,
446
451
  force,
447
452
  }),