@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.28f73cf

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 (440) 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 +8 -7
  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/generateChangesEntityKeyAttributes.ts +51 -107
  28. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
  29. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
  30. package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
  31. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +53 -176
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
  33. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
  34. package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
  35. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
  36. package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
  37. package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
  40. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
  45. package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
  46. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
  47. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +52 -6
  48. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +2 -1
  49. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
  50. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
  51. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
  52. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
  53. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
  54. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +8 -6
  55. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +5 -13
  56. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
  57. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
  58. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
  59. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
  61. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
  62. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
  63. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
  64. package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.d.ts +23 -0
  65. package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.d.ts.map +1 -0
  66. package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js +30 -0
  67. package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js.map +1 -0
  68. package/analyzer-template/packages/aws/package.json +5 -4
  69. package/analyzer-template/packages/aws/s3/index.ts +4 -0
  70. package/analyzer-template/packages/aws/src/lib/s3/getPresignedUrl.ts +62 -0
  71. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
  72. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
  73. package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  76. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.d.ts.map +1 -1
  78. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  79. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  80. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
  81. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
  82. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
  83. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.d.ts +2 -0
  84. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js +3 -0
  86. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts +2 -0
  88. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts +37 -0
  90. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -0
  91. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
  92. package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
  93. package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
  94. package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
  95. package/analyzer-template/packages/github/dist/utils/index.js +2 -0
  96. package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
  97. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
  98. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  99. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
  100. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
  101. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  102. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  103. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  105. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  106. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  107. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  108. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  109. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  110. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  111. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  112. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  113. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  114. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  115. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  116. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  117. package/analyzer-template/packages/supabase/src/lib/kysely/db.ts +6 -0
  118. package/analyzer-template/packages/supabase/src/lib/kysely/tableRelations.ts +3 -0
  119. package/analyzer-template/packages/supabase/src/lib/kysely/tables/debugReportsTable.ts +61 -0
  120. package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
  121. package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
  122. package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
  123. package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
  124. package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
  125. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
  126. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  127. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
  128. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
  129. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  130. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  131. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  132. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  133. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  134. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  135. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  136. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  137. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  138. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  139. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  140. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  141. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  142. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  143. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  144. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  145. package/analyzer-template/packages/utils/index.ts +2 -0
  146. package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
  147. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +8 -3
  148. package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
  149. package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
  150. package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
  151. package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
  152. package/analyzer-template/project/constructMockCode.ts +170 -6
  153. package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
  154. package/analyzer-template/project/start.ts +1 -11
  155. package/analyzer-template/project/startScenarioCapture.ts +24 -0
  156. package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
  157. package/analyzer-template/project/writeMockDataTsx.ts +125 -4
  158. package/analyzer-template/project/writeScenarioComponents.ts +199 -45
  159. package/analyzer-template/project/writeUniversalMocks.ts +72 -10
  160. package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
  161. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  162. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
  163. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  164. package/background/src/lib/virtualized/project/start.js +1 -8
  165. package/background/src/lib/virtualized/project/start.js.map +1 -1
  166. package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
  167. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  168. package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
  169. package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
  170. package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
  171. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  172. package/background/src/lib/virtualized/project/writeScenarioComponents.js +144 -28
  173. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  174. package/background/src/lib/virtualized/project/writeUniversalMocks.js +59 -9
  175. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  176. package/codeyam-cli/scripts/apply-setup.js +288 -0
  177. package/codeyam-cli/scripts/apply-setup.js.map +1 -0
  178. package/codeyam-cli/scripts/extract-setup.js +130 -0
  179. package/codeyam-cli/scripts/extract-setup.js.map +1 -0
  180. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
  181. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
  182. package/codeyam-cli/src/cli.js +6 -0
  183. package/codeyam-cli/src/cli.js.map +1 -1
  184. package/codeyam-cli/src/codeyam-cli.js +0 -0
  185. package/codeyam-cli/src/commands/debug.js +221 -0
  186. package/codeyam-cli/src/commands/debug.js.map +1 -0
  187. package/codeyam-cli/src/commands/init.js +4 -23
  188. package/codeyam-cli/src/commands/init.js.map +1 -1
  189. package/codeyam-cli/src/commands/report.js +102 -0
  190. package/codeyam-cli/src/commands/report.js.map +1 -0
  191. package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
  192. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
  193. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
  194. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
  195. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
  196. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  197. package/codeyam-cli/src/utils/analysisRunner.js +4 -3
  198. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  199. package/codeyam-cli/src/utils/analyzer.js +30 -0
  200. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  201. package/codeyam-cli/src/utils/backgroundServer.js +25 -5
  202. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  203. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
  204. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
  205. package/codeyam-cli/src/utils/fileWatcher.js +75 -5
  206. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  207. package/codeyam-cli/src/utils/generateReport.js +219 -0
  208. package/codeyam-cli/src/utils/generateReport.js.map +1 -0
  209. package/codeyam-cli/src/utils/install-skills.js +7 -0
  210. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  211. package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js +1 -0
  212. package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js.map +1 -1
  213. package/codeyam-cli/src/utils/queue/job.js +8 -3
  214. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  215. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
  216. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  217. package/codeyam-cli/src/utils/webappDetection.js +2 -1
  218. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  219. package/codeyam-cli/src/webserver/app/lib/database.js +63 -2
  220. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  221. package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
  222. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  223. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D5ZHFomX.js +1 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-XDSzQLOY.js} +3 -3
  225. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
  226. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-CRcT5fOZ.js} +1 -1
  227. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BORLgi0X.js +1 -0
  228. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
  229. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bi-YUMa-.js +6 -0
  230. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-4D2vLLJz.js +5 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/_index-BC200mfN.js +1 -0
  232. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CxvZPkCv.js +10 -0
  233. package/codeyam-cli/src/webserver/build/client/assets/api.generate-report-l0sNRNKZ.js +1 -0
  234. package/codeyam-cli/src/webserver/build/client/assets/{chart-column-B2I7jQx2.js → chart-column-B8fb6wnw.js} +1 -1
  235. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
  236. package/codeyam-cli/src/webserver/build/client/assets/{circle-alert-GwwOAbhw.js → circle-alert-IdsgAK39.js} +1 -1
  237. package/codeyam-cli/src/webserver/build/client/assets/circle-check-BACUUf75.js +1 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/clock-vWeoCemX.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CS7XDrKv.js +1 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DIOEw_3i.js +1 -0
  241. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-8Els_3Wb.js} +10 -10
  242. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-C3FZJx1w.js +1 -0
  243. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-YJz_igar.js +5 -0
  244. package/codeyam-cli/src/webserver/build/client/assets/entityStatus-BEqj2qBy.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DiP0q291.js +5 -0
  247. package/codeyam-cli/src/webserver/build/client/assets/file-text-LM0mgxXE.js +1 -0
  248. package/codeyam-cli/src/webserver/build/client/assets/files-Dxh9CcaV.js +1 -0
  249. package/codeyam-cli/src/webserver/build/client/assets/git-BXmqrWCH.js +12 -0
  250. package/codeyam-cli/src/webserver/build/client/assets/globals-BGS74ED-.css +1 -0
  251. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +5 -0
  252. package/codeyam-cli/src/webserver/build/client/assets/index-D-zYbzFZ.js +8 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DN7Vr40D.js → loader-circle-BXPKbHEb.js} +1 -1
  254. package/codeyam-cli/src/webserver/build/client/assets/manifest-1af162d4.js +1 -0
  255. package/codeyam-cli/src/webserver/build/client/assets/root-DB7VgjCY.js +16 -0
  256. package/codeyam-cli/src/webserver/build/client/assets/{settings-MZc4XdmE.js → settings-5zF_GOcS.js} +1 -1
  257. package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
  258. package/codeyam-cli/src/webserver/build/client/assets/simulations-BQ-02-jB.js +1 -0
  259. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-D7k-ArFa.js +1 -0
  260. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-AlhS7g5F.js} +1 -1
  261. package/codeyam-cli/src/webserver/build/client/assets/useToast-Ddo4UQv7.js +1 -0
  262. package/codeyam-cli/src/webserver/build/client/assets/{zap-B4gsLUZQ.js → zap-_jw-9DCp.js} +1 -1
  263. package/codeyam-cli/src/webserver/build/server/assets/index-D4JpXSIO.js +1 -0
  264. package/codeyam-cli/src/webserver/build/server/assets/server-build-vwbN7n65.js +169 -0
  265. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  266. package/codeyam-cli/src/webserver/build-info.json +5 -5
  267. package/codeyam-cli/src/webserver/server.js +1 -1
  268. package/codeyam-cli/src/webserver/server.js.map +1 -1
  269. package/codeyam-cli/templates/codeyam-setup-skill.md +85 -94
  270. package/codeyam-cli/templates/debug-command.md +125 -0
  271. package/package.json +9 -11
  272. package/packages/ai/index.js +1 -2
  273. package/packages/ai/index.js.map +1 -1
  274. package/packages/ai/src/lib/analyzeScope.js +13 -0
  275. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  276. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
  277. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  278. package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
  279. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  280. package/packages/ai/src/lib/astScopes/paths.js +28 -3
  281. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  282. package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
  283. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  284. package/packages/ai/src/lib/checkAllAttributes.js +1 -3
  285. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  286. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
  287. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  288. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
  289. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
  290. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
  291. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  292. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
  293. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
  294. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
  295. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
  296. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
  297. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
  298. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
  299. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
  300. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
  301. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
  302. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
  303. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  304. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
  305. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
  306. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
  307. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
  308. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
  309. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  310. package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
  311. package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
  312. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
  313. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  314. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
  315. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  316. package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
  317. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  318. package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
  319. package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
  320. package/packages/ai/src/lib/generateEntityKeyAttributes.js +53 -176
  321. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  322. package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
  323. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  324. package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
  325. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  326. package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
  327. package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
  328. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
  329. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  330. package/packages/ai/src/lib/getLLMCallStats.js +0 -14
  331. package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
  332. package/packages/ai/src/lib/modelInfo.js +15 -0
  333. package/packages/ai/src/lib/modelInfo.js.map +1 -1
  334. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
  335. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  336. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
  337. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
  338. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
  339. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  340. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
  341. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  342. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
  343. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
  344. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
  345. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  346. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
  347. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  348. package/packages/ai/src/lib/types/index.js +2 -0
  349. package/packages/ai/src/lib/types/index.js.map +1 -1
  350. package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
  351. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  352. package/packages/analyze/src/lib/FileAnalyzer.js +45 -5
  353. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  354. package/packages/analyze/src/lib/asts/nodes/index.js +2 -1
  355. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  356. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
  357. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
  358. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
  359. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
  360. package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
  361. package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
  362. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
  363. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  364. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
  365. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  366. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +8 -2
  367. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  368. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +5 -8
  369. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  370. package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
  371. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  372. package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
  373. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  374. package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
  375. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  376. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
  377. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  378. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
  379. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  380. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
  381. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  382. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
  383. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  384. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
  385. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  386. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  387. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  388. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  389. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  390. package/packages/generate/src/lib/scenarioComponent.js +5 -3
  391. package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
  392. package/packages/supabase/src/lib/kysely/db.js +3 -0
  393. package/packages/supabase/src/lib/kysely/db.js.map +1 -1
  394. package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
  395. package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
  396. package/packages/utils/index.js +2 -0
  397. package/packages/utils/index.js.map +1 -1
  398. package/packages/utils/src/lib/Semaphore.js +40 -0
  399. package/packages/utils/src/lib/Semaphore.js.map +1 -0
  400. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  401. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  402. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  403. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  404. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  405. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  406. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  407. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  408. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  409. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  410. package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
  411. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
  412. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
  413. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-xwuhwsZH.js +0 -1
  414. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
  415. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-M2QuSHKC.js +0 -5
  416. package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
  417. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
  418. package/codeyam-cli/src/webserver/build/client/assets/components-CAx5ONX_.js +0 -40
  419. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
  420. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DGy3zrli.js +0 -1
  421. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-ChAdTrrU.js +0 -1
  422. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-D9L7267w.js +0 -5
  423. package/codeyam-cli/src/webserver/build/client/assets/entry.client-C6FRgjPr.js +0 -1
  424. package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
  425. package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
  426. package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
  427. package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
  428. package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
  429. package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
  430. package/codeyam-cli/src/webserver/build/client/assets/settings-Hbf8b7J_.js +0 -1
  431. package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
  432. package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
  433. package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
  434. package/codeyam-cli/src/webserver/build/server/assets/index-eAULANMV.js +0 -1
  435. package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
  436. package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
  437. package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
  438. package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
  439. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
  440. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
@@ -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
+ }
@@ -84,6 +84,17 @@ export class FileAnalyzer {
84
84
  }
85
85
  }
86
86
 
87
+ /**
88
+ * Returns only declared entity nodes (not identifier references).
89
+ * Use this when you need to find entities that can be replaced/mocked.
90
+ */
91
+ getAllDeclaredEntityNodes() {
92
+ if (!this.sourceFile) return {};
93
+ return lib.asts.sourceFiles.getAllDeclaredEntityNodes({
94
+ sourceFile: this.sourceFile,
95
+ });
96
+ }
97
+
87
98
  getNodeCode(node: ts.Node, removeComments = false) {
88
99
  if (!this.sourceFile) return '';
89
100
  if (removeComments) {
@@ -138,6 +149,29 @@ export class FileAnalyzer {
138
149
  });
139
150
  }
140
151
 
152
+ /**
153
+ * Get the code for a declared entity (not identifier references).
154
+ * Use this when you need to find code that can be replaced/mocked.
155
+ */
156
+ getDeclaredEntityCode(entityName: string, removeComments = false) {
157
+ if (!this.sourceFile) return '';
158
+ const entityNode = lib.asts.sourceFiles.getDeclaredEntityNode({
159
+ entityName,
160
+ sourceFile: this.sourceFile,
161
+ });
162
+
163
+ if (removeComments) {
164
+ const printer = ts.createPrinter({ removeComments: true });
165
+ return printer.printNode(
166
+ ts.EmitHint.Unspecified,
167
+ entityNode,
168
+ this.sourceFile,
169
+ );
170
+ }
171
+
172
+ return entityNode.getText(this.sourceFile);
173
+ }
174
+
141
175
  getAllExports(): Record<string, ExportedFunction> {
142
176
  if (!this.sourceFile) return {};
143
177
  return lib.asts.sourceFiles.getAllExports(this.sourceFile);
@@ -244,11 +278,16 @@ export class FileAnalyzer {
244
278
 
245
279
  for (let i = 0; i < uniqueRelevantExpressions.length; i++) {
246
280
  const relevantExpression = uniqueRelevantExpressions[i];
247
- if (
248
- 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 =
249
286
  resolvedModule &&
250
- !resolvedModule.isExternalLibraryImport
251
- ) {
287
+ (!resolvedModule.isExternalLibraryImport ||
288
+ (resolvedModule.resolvedFileName &&
289
+ !resolvedModule.resolvedFileName.includes('node_modules')));
290
+ if (relevantExpression.exportName === '*' && isLocalModule) {
252
291
  uniqueRelevantExpressions.splice(i, 1);
253
292
  uniqueRelevantExpressions.push(
254
293
  ...this.resolveNamespaceImport(
@@ -261,11 +300,18 @@ export class FileAnalyzer {
261
300
  }
262
301
 
263
302
  if (uniqueRelevantExpressions.length > 0) {
264
- // 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);
265
311
  return [
266
312
  importedFilePath,
267
313
  {
268
- externalLibrary: resolvedModule?.isExternalLibraryImport ?? true,
314
+ externalLibrary: isExternalLibrary,
269
315
  resolvedPath: resolvedModule?.resolvedFileName,
270
316
  exportInfos: uniqueRelevantExpressions,
271
317
  },
@@ -163,7 +163,8 @@ export function isFunction(
163
163
  ts.isFunctionDeclaration(node) ||
164
164
  ts.isFunctionExpression(node) ||
165
165
  ts.isArrowFunction(node) ||
166
- ts.isCallExpression(node)
166
+ ts.isCallExpression(node) ||
167
+ ts.isClassDeclaration(node)
167
168
  );
168
169
  }
169
170
 
@@ -0,0 +1,238 @@
1
+ import ts from 'typescript';
2
+
3
+ interface GetAllDeclaredEntityNodesArgs {
4
+ sourceFile: ts.SourceFile;
5
+ possibleIdentifierNode?: ts.Node;
6
+ entityNode?: ts.Node;
7
+ entities?: { [key: string]: ts.Node };
8
+ }
9
+
10
+ /**
11
+ * Returns all declared entity nodes in a source file.
12
+ *
13
+ * Unlike getAllEntityNodes, this function only returns actual declarations
14
+ * (variables, functions, classes, interfaces, types, enums, exports).
15
+ * It does NOT include identifier references in initializers or call expressions.
16
+ *
17
+ * Use this when you need to find entities that can be replaced/mocked.
18
+ * Use getAllEntityNodes when you need to track all identifiers (e.g., for dependency analysis).
19
+ */
20
+ export function getAllDeclaredEntityNodes({
21
+ sourceFile,
22
+ possibleIdentifierNode,
23
+ entityNode,
24
+ entities = {},
25
+ }: GetAllDeclaredEntityNodesArgs): { [key: string]: ts.Node } {
26
+ try {
27
+ if (!possibleIdentifierNode) {
28
+ possibleIdentifierNode = sourceFile;
29
+ }
30
+
31
+ // Handle direct Identifier (e.g., from declaration.name)
32
+ if (ts.isIdentifier(possibleIdentifierNode)) {
33
+ if (!entities[possibleIdentifierNode.text]) {
34
+ entities[possibleIdentifierNode.text] =
35
+ entityNode ?? possibleIdentifierNode;
36
+ }
37
+ return entities;
38
+ }
39
+
40
+ if (ts.isBindingElement(possibleIdentifierNode)) {
41
+ const lastChild = possibleIdentifierNode.getChildAt(
42
+ possibleIdentifierNode.getChildCount(sourceFile) - 1,
43
+ );
44
+
45
+ if (ts.isIdentifier(lastChild)) {
46
+ entities[lastChild.text] = entityNode;
47
+ } else if (
48
+ ts.isObjectBindingPattern(lastChild) ||
49
+ ts.isArrayBindingPattern(lastChild)
50
+ ) {
51
+ entities = {
52
+ ...entities,
53
+ ...getAllDeclaredEntityNodes({
54
+ sourceFile,
55
+ possibleIdentifierNode: lastChild,
56
+ entityNode,
57
+ entities,
58
+ }),
59
+ };
60
+ }
61
+ return entities;
62
+ }
63
+
64
+ possibleIdentifierNode.forEachChild((child) => {
65
+ try {
66
+ const safeEntityNode = entityNode ?? child;
67
+
68
+ // For VariableDeclaration, only traverse the name (not the initializer)
69
+ // This prevents registering identifier references as declarations
70
+ if (ts.isVariableDeclaration(child)) {
71
+ entities = {
72
+ ...getAllDeclaredEntityNodes({
73
+ sourceFile,
74
+ possibleIdentifierNode: child.name,
75
+ entityNode: safeEntityNode,
76
+ entities,
77
+ }),
78
+ ...entities,
79
+ };
80
+ } else if (
81
+ ts.isBindingElement(child) ||
82
+ ts.isModuleDeclaration(child) ||
83
+ ts.isNamedExports(child)
84
+ ) {
85
+ entities = {
86
+ ...getAllDeclaredEntityNodes({
87
+ sourceFile,
88
+ possibleIdentifierNode: child,
89
+ entityNode: safeEntityNode,
90
+ entities,
91
+ }),
92
+ ...entities,
93
+ };
94
+ }
95
+
96
+ if (ts.isVariableDeclarationList(child)) {
97
+ child.declarations.forEach((declaration) => {
98
+ entities = {
99
+ ...getAllDeclaredEntityNodes({
100
+ sourceFile,
101
+ possibleIdentifierNode: declaration.name,
102
+ entityNode: safeEntityNode,
103
+ entities,
104
+ }),
105
+ ...entities,
106
+ };
107
+ });
108
+ }
109
+
110
+ if (ts.isVariableStatement(child)) {
111
+ entities = {
112
+ ...getAllDeclaredEntityNodes({
113
+ sourceFile,
114
+ possibleIdentifierNode: child.declarationList,
115
+ entityNode: safeEntityNode,
116
+ entities,
117
+ }),
118
+ ...entities,
119
+ };
120
+ }
121
+
122
+ if (ts.isObjectBindingPattern(child)) {
123
+ const entityNodes = child.elements.reduce((acc, element) => {
124
+ return {
125
+ ...getAllDeclaredEntityNodes({
126
+ sourceFile,
127
+ possibleIdentifierNode: element,
128
+ entityNode: safeEntityNode,
129
+ entities,
130
+ }),
131
+ ...acc,
132
+ };
133
+ }, {});
134
+
135
+ for (const key in entityNodes) {
136
+ entities[key] = safeEntityNode;
137
+ }
138
+ }
139
+
140
+ if (ts.isArrayBindingPattern(child)) {
141
+ entities = {
142
+ ...entities,
143
+ ...child.elements.reduce((acc, element) => {
144
+ return {
145
+ ...getAllDeclaredEntityNodes({
146
+ sourceFile,
147
+ possibleIdentifierNode: element,
148
+ entityNode: safeEntityNode,
149
+ entities,
150
+ }),
151
+ ...acc,
152
+ };
153
+ }, {}),
154
+ };
155
+ }
156
+
157
+ if (
158
+ ts.isFunctionDeclaration(child) ||
159
+ ts.isTypeAliasDeclaration(child) ||
160
+ ts.isInterfaceDeclaration(child) ||
161
+ ts.isClassDeclaration(child) ||
162
+ ts.isEnumDeclaration(child)
163
+ ) {
164
+ if (!entities[child.name?.text ?? 'default']) {
165
+ entities[child.name?.text ?? 'default'] = safeEntityNode;
166
+
167
+ if (ts.isFunctionDeclaration(child) && child.modifiers) {
168
+ const isDefaultExport =
169
+ child.modifiers.some(
170
+ (modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword,
171
+ ) &&
172
+ child.modifiers.some(
173
+ (modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword,
174
+ );
175
+
176
+ if (isDefaultExport) {
177
+ entities['default'] = safeEntityNode;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ if (ts.isExportDeclaration(child)) {
184
+ if (child.exportClause) {
185
+ entities = {
186
+ ...getAllDeclaredEntityNodes({
187
+ sourceFile,
188
+ possibleIdentifierNode: child.exportClause,
189
+ entityNode: safeEntityNode,
190
+ entities,
191
+ }),
192
+ ...entities,
193
+ };
194
+ }
195
+ }
196
+
197
+ if (ts.isExportAssignment(child)) {
198
+ // For declared entities, always point to the export statement itself
199
+ // (not the original declaration) so mock replacement works correctly.
200
+ // e.g., for `export default prisma;`, we want to replace the export
201
+ // statement, not the prisma variable declaration.
202
+ entities['default'] = safeEntityNode;
203
+ }
204
+
205
+ if (ts.isExportSpecifier(child)) {
206
+ const nameText = child.name.getText(sourceFile);
207
+ if (child.propertyName) {
208
+ const propertyNameText = child.propertyName.getText(sourceFile);
209
+ entities[nameText] = entities[propertyNameText] ?? safeEntityNode;
210
+ if (propertyNameText !== 'default' && !entities[propertyNameText]) {
211
+ entities[propertyNameText] = safeEntityNode;
212
+ }
213
+ } else {
214
+ entities[nameText] = entities[nameText] ?? safeEntityNode;
215
+ }
216
+ }
217
+ } catch (e) {
218
+ console.log(
219
+ 'CodeYam Error: Error Getting All Declared Entity Nodes Child',
220
+ ts.SyntaxKind[child.kind],
221
+ child.getText(sourceFile),
222
+ e,
223
+ );
224
+ throw e;
225
+ }
226
+ });
227
+
228
+ return entities;
229
+ } catch (e) {
230
+ console.log(
231
+ 'CodeYam Error: Error Getting All Declared Entity Nodes',
232
+ ts.SyntaxKind[possibleIdentifierNode.kind],
233
+ possibleIdentifierNode.getText(sourceFile),
234
+ e,
235
+ );
236
+ throw e;
237
+ }
238
+ }
@@ -0,0 +1,25 @@
1
+ import ts from 'typescript';
2
+ import * as lib from '../../index';
3
+
4
+ /**
5
+ * Get the AST node for a declared entity by name.
6
+ * Unlike getEntityNode, this only finds actual declarations (not identifier references).
7
+ */
8
+ export function getDeclaredEntityNode({
9
+ entityName,
10
+ sourceFile,
11
+ }: {
12
+ entityName: string;
13
+ sourceFile: ts.SourceFile;
14
+ }) {
15
+ const entityNodes = lib.asts.sourceFiles.getAllDeclaredEntityNodes({
16
+ sourceFile,
17
+ });
18
+ const entityNode = entityNodes[entityName];
19
+
20
+ if (!entityNode) {
21
+ throw new Error('getDeclaredEntityNode: Entity not found');
22
+ }
23
+
24
+ return entityNode;
25
+ }
@@ -11,7 +11,9 @@ export { getSourceFilesForAllImports } from './getSourceFilesForAllImports';
11
11
  export { getImportMappings } from './getImportMappings';
12
12
  export { getAllEntities } from './getAllEntities';
13
13
  export { getAllEntityNodes } from './getAllEntityNodes';
14
+ export { getAllDeclaredEntityNodes } from './getAllDeclaredEntityNodes';
14
15
  export { getEntityNode } from './getEntityNode';
16
+ export { getDeclaredEntityNode } from './getDeclaredEntityNode';
15
17
  export { getAllExports } from './getAllExports';
16
18
  export { getAllExportedNodes } from './getAllExportedNodes';
17
19
  export { getImportsAnalysis } from './getImportsAnalysis';
@@ -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
  }),