@codeyam/codeyam-cli 0.1.0-staging.62d4615 → 0.1.0-staging.73a4bf4

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 (285) 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 +1 -1
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +14 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +176 -8
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +70 -13
  11. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +33 -15
  12. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +32 -5
  13. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +38 -2
  14. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  15. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  16. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  17. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  18. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +18 -0
  19. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +50 -25
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +153 -76
  21. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  22. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  23. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  24. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  25. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  26. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  27. package/analyzer-template/packages/database/src/lib/kysely/db.ts +6 -0
  28. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  29. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  30. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  31. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  32. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  33. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  34. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  35. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  37. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  40. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  42. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  43. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  46. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  47. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  48. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +3 -0
  49. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  51. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  52. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  53. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  54. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  55. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  58. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +4 -0
  62. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  63. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -1
  64. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +4 -0
  65. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  66. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  67. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  68. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  69. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  70. package/analyzer-template/project/constructMockCode.ts +2 -2
  71. package/analyzer-template/project/writeMockDataTsx.ts +14 -6
  72. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  73. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  74. package/background/src/lib/virtualized/project/constructMockCode.js +2 -2
  75. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  76. package/background/src/lib/virtualized/project/writeMockDataTsx.js +13 -6
  77. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  78. package/codeyam-cli/scripts/apply-setup.js +1 -1
  79. package/codeyam-cli/src/cli.js +2 -0
  80. package/codeyam-cli/src/cli.js.map +1 -1
  81. package/codeyam-cli/src/codeyam-cli.js +18 -2
  82. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  83. package/codeyam-cli/src/commands/analyze.js +4 -2
  84. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  85. package/codeyam-cli/src/commands/baseline.js +2 -0
  86. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  87. package/codeyam-cli/src/commands/debug.js +2 -0
  88. package/codeyam-cli/src/commands/debug.js.map +1 -1
  89. package/codeyam-cli/src/commands/default.js +31 -20
  90. package/codeyam-cli/src/commands/default.js.map +1 -1
  91. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  92. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  93. package/codeyam-cli/src/commands/init.js +49 -257
  94. package/codeyam-cli/src/commands/init.js.map +1 -1
  95. package/codeyam-cli/src/commands/memory.js +9 -9
  96. package/codeyam-cli/src/commands/memory.js.map +1 -1
  97. package/codeyam-cli/src/commands/recapture.js +2 -0
  98. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  99. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  100. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  101. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  102. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  103. package/codeyam-cli/src/commands/test-startup.js +2 -0
  104. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  105. package/codeyam-cli/src/commands/verify.js +14 -2
  106. package/codeyam-cli/src/commands/verify.js.map +1 -1
  107. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -86
  108. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  109. package/codeyam-cli/src/utils/analyzer.js +7 -0
  110. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  111. package/codeyam-cli/src/utils/backgroundServer.js +107 -23
  112. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  113. package/codeyam-cli/src/utils/generateReport.js +2 -2
  114. package/codeyam-cli/src/utils/install-skills.js +43 -63
  115. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  116. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  117. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  118. package/codeyam-cli/src/utils/progress.js +7 -0
  119. package/codeyam-cli/src/utils/progress.js.map +1 -1
  120. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  121. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  122. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +106 -4
  123. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  124. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +95 -2
  125. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  126. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +37 -5
  127. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  128. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +23 -3
  129. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  130. package/codeyam-cli/src/utils/ruleReflection/index.js +2 -2
  131. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -1
  132. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +11 -0
  133. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -1
  134. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +23 -23
  135. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -1
  136. package/codeyam-cli/src/utils/rules/parser.js +5 -0
  137. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  138. package/codeyam-cli/src/utils/rules/ruleState.js +10 -10
  139. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -1
  140. package/codeyam-cli/src/utils/rules/staleness.js +6 -6
  141. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  142. package/codeyam-cli/src/utils/serverState.js +37 -10
  143. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  144. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -44
  145. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  146. package/codeyam-cli/src/webserver/app/lib/database.js +14 -3
  147. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  148. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  149. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  150. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  151. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-D9i_zSlY.js +1 -0
  152. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-BLlhOa3C.js} +1 -1
  153. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-B5ctlSYt.js → EntityTypeBadge-De5b5pC7.js} +1 -1
  154. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-CzdG5I7z.js} +1 -1
  155. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-ClaLpuOo.js → InlineSpinner-Bclf8Hka.js} +1 -1
  156. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-BDhPilK7.js → InteractivePreview-Ce-byqKl.js} +2 -2
  157. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-VeqEBv9v.js → LibraryFunctionPreview-DEMHrl7v.js} +1 -1
  158. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-B1LNGboS.js} +1 -1
  159. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-B0Ll1DjK.js} +1 -1
  160. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-CVOvmCKb.js} +2 -2
  161. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-Gq3Ocjo6.js → SafeScreenshot-L0DWHa_L.js} +1 -1
  162. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-D54Mmpwi.js} +2 -2
  163. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CiwXDxLh.js → TruncatedFilePath-C7PFQfXy.js} +1 -1
  164. package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-CKTtYlBU.js} +1 -1
  165. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DD1r_QU0.js → activity.(_tab)-CdziRIWU.js} +6 -6
  166. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-CPXtdaWm.js +17 -0
  167. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  168. package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-Ch8b7GyQ.js} +1 -1
  169. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-vJHJExlT.js} +1 -1
  170. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-JE9ZIoBl.js → chunk-JZWAC4HX-BEyX4X6_.js} +7 -7
  171. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-rwynPZTW.js} +1 -1
  172. package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-BBSpeBYf.js} +1 -1
  173. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Ca9fAY46.js → createLucideIcon-DHVDauuc.js} +1 -1
  174. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-C5lqplTC.js → dev.empty-B9_ZqelV.js} +1 -1
  175. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BOPComvD.js +16 -0
  176. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js → entity._sha.scenarios._scenarioId.fullscreen-Cfw__yQa.js} +1 -1
  177. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DGgZjdFg.js → entity._sha_.create-scenario-BIDUUrI3.js} +1 -1
  178. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-BEqewwtZ.js} +1 -1
  179. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-Dxqz8ygt.js} +1 -1
  180. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DCPhhSMo.js → fileTableUtils-CYnF5KWN.js} +1 -1
  181. package/codeyam-cli/src/webserver/build/client/assets/{files-Dk8wkAS7.js → files-B_dAq2PQ.js} +1 -1
  182. package/codeyam-cli/src/webserver/build/client/assets/{git-DXnyr8uP.js → git-BHPqH3Ch.js} +1 -1
  183. package/codeyam-cli/src/webserver/build/client/assets/globals-BJGhRykz.css +1 -0
  184. package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-DgAAopZk.js} +1 -1
  185. package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-viijWaN6.js} +1 -1
  186. package/codeyam-cli/src/webserver/build/client/assets/labs-ChoAe3xq.js +1 -0
  187. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-LGi2eKI5.js} +1 -1
  188. package/codeyam-cli/src/webserver/build/client/assets/manifest-87493a32.js +1 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/memory-D9eA6kTo.js +78 -0
  190. package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-DxJFmMsK.js} +1 -1
  191. package/codeyam-cli/src/webserver/build/client/assets/root-C3r0p_7H.js +62 -0
  192. package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-Cu3QE9E5.js} +1 -1
  193. package/codeyam-cli/src/webserver/build/client/assets/settings-KH9TdArD.js +1 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/{simulations-CPoAg7Zo.js → simulations-D9Fkx0-d.js} +1 -1
  195. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-dAhIBEcd.js} +1 -1
  196. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-C4CYTEeP.js} +1 -1
  197. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DNwUduNu.js → useCustomSizes-CLPnITMB.js} +1 -1
  198. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-COky1GVF.js → useLastLogLine-DmGI38Et.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CpZgwliL.js → useReportContext-BK0S88PB.js} +1 -1
  200. package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bv9JFvUO.js → useToast-CJ-JqR0l.js} +1 -1
  201. package/codeyam-cli/src/webserver/build/server/assets/{index-C0KrUQp-.js → index-CkkmL6r5.js} +1 -1
  202. package/codeyam-cli/src/webserver/build/server/assets/server-build-iBGjHYtO.js +259 -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/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  206. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  207. package/codeyam-cli/templates/codeyam-memory-hook.sh +14 -14
  208. package/codeyam-cli/templates/{codeyam:memory.md → codeyam-memory.md} +16 -24
  209. package/codeyam-cli/templates/{codeyam:new-rule.md → codeyam-new-rule.md} +1 -1
  210. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  211. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  212. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  213. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  214. package/codeyam-cli/templates/rule-notification-hook.py +3 -1
  215. package/codeyam-cli/templates/rule-reflection-hook.py +265 -66
  216. package/codeyam-cli/templates/rules-instructions.md +50 -41
  217. package/package.json +9 -9
  218. package/packages/ai/index.js +1 -1
  219. package/packages/ai/index.js.map +1 -1
  220. package/packages/ai/src/lib/analyzeScope.js +14 -0
  221. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  222. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  223. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  224. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  225. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  226. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +128 -7
  227. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  228. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +59 -11
  229. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  230. package/packages/ai/src/lib/dataStructureChunking.js +26 -11
  231. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  232. package/packages/ai/src/lib/generateEntityScenarioData.js +22 -3
  233. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  234. package/packages/ai/src/lib/generateExecutionFlows.js +16 -2
  235. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  236. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  237. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  238. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  239. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  240. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  241. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  242. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  243. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  244. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +11 -1
  245. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  246. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +42 -13
  247. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  248. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +123 -67
  249. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  250. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  251. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  252. package/packages/database/src/lib/analysisToDb.js +1 -1
  253. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  254. package/packages/database/src/lib/branchToDb.js +1 -1
  255. package/packages/database/src/lib/branchToDb.js.map +1 -1
  256. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  257. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  258. package/packages/database/src/lib/commitToDb.js +1 -1
  259. package/packages/database/src/lib/commitToDb.js.map +1 -1
  260. package/packages/database/src/lib/fileToDb.js +1 -1
  261. package/packages/database/src/lib/fileToDb.js.map +1 -1
  262. package/packages/database/src/lib/kysely/db.js +3 -0
  263. package/packages/database/src/lib/kysely/db.js.map +1 -1
  264. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  265. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  266. package/packages/database/src/lib/projectToDb.js +1 -1
  267. package/packages/database/src/lib/projectToDb.js.map +1 -1
  268. package/packages/database/src/lib/saveFiles.js +1 -1
  269. package/packages/database/src/lib/saveFiles.js.map +1 -1
  270. package/packages/database/src/lib/scenarioToDb.js +1 -1
  271. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  272. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  273. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  274. package/scripts/finalize-analyzer.cjs +8 -76
  275. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CA3JxPb7.js +0 -1
  276. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +0 -11
  277. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-n38keI1k.js +0 -23
  278. package/codeyam-cli/src/webserver/build/client/assets/globals-Bh6jH0cL.css +0 -1
  279. package/codeyam-cli/src/webserver/build/client/assets/labs-BUvfJMNR.js +0 -1
  280. package/codeyam-cli/src/webserver/build/client/assets/manifest-d4e77269.js +0 -1
  281. package/codeyam-cli/src/webserver/build/client/assets/memory-DCHBwHou.js +0 -76
  282. package/codeyam-cli/src/webserver/build/client/assets/root-D6oziHts.js +0 -62
  283. package/codeyam-cli/src/webserver/build/client/assets/settings-B2X7lJgQ.js +0 -1
  284. package/codeyam-cli/src/webserver/build/server/assets/server-build-C2h1v1XD.js +0 -260
  285. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
@@ -1,5 +1,97 @@
1
- import { spawn } from 'child_process';
1
+ import { spawn, execSync } from 'child_process';
2
+ import { existsSync, readdirSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+ /**
5
+ * Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
6
+ * Falls back to rsync on non-macOS or if the clone fails.
7
+ *
8
+ * Returns true if the clone succeeded (caller can skip rsync).
9
+ */
10
+ function tryApfsClone({ sourcePath, destinationPath, excludes, silent, }) {
11
+ if (process.platform !== 'darwin')
12
+ return false;
13
+ // APFS clone requires the destination to not exist.
14
+ // If it exists and is empty, remove it so we can clone into it.
15
+ if (existsSync(destinationPath)) {
16
+ try {
17
+ const contents = readdirSync(destinationPath);
18
+ if (contents.length > 0) {
19
+ // Destination is non-empty — can't use clone, fall back to rsync
20
+ return false;
21
+ }
22
+ rmSync(destinationPath, { recursive: true });
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ try {
29
+ // cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
30
+ execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
31
+ stdio: 'pipe',
32
+ timeout: 300000, // 5 min safety timeout
33
+ });
34
+ // Remove excluded items from the clone
35
+ for (const exclude of excludes) {
36
+ if (exclude.includes('*')) {
37
+ // Glob pattern — use shell expansion
38
+ try {
39
+ execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
40
+ stdio: 'pipe',
41
+ shell: '/bin/sh',
42
+ });
43
+ }
44
+ catch {
45
+ // Glob matched nothing — fine
46
+ }
47
+ }
48
+ else {
49
+ const excludePath = join(destinationPath, exclude);
50
+ if (existsSync(excludePath)) {
51
+ rmSync(excludePath, { recursive: true, force: true });
52
+ }
53
+ }
54
+ }
55
+ if (!silent) {
56
+ console.log(`Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`);
57
+ }
58
+ return true;
59
+ }
60
+ catch {
61
+ // Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
62
+ // Clean up any partial clone
63
+ if (existsSync(destinationPath)) {
64
+ try {
65
+ rmSync(destinationPath, { recursive: true });
66
+ }
67
+ catch {
68
+ // Best effort cleanup
69
+ }
70
+ }
71
+ return false;
72
+ }
73
+ }
2
74
  export default async function rsyncCopy({ sourcePath, destinationPath, excludes = [], keepExisting = false, silent = false, extraArgs = [], }) {
75
+ const startTime = Date.now();
76
+ // On macOS, try APFS copy-on-write clone first (near-instant).
77
+ // Skip when extraArgs are provided since those are rsync-specific flags
78
+ // that the clone path can't honor.
79
+ if (!keepExisting && extraArgs.length === 0) {
80
+ const cloned = tryApfsClone({
81
+ sourcePath,
82
+ destinationPath,
83
+ excludes,
84
+ silent,
85
+ });
86
+ if (cloned) {
87
+ if (!silent) {
88
+ const duration = ((Date.now() - startTime) / 1000).toFixed(1);
89
+ console.log(`Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`);
90
+ }
91
+ return;
92
+ }
93
+ }
94
+ // Fall back to rsync
3
95
  return new Promise((resolve, reject) => {
4
96
  const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
5
97
  const dest = destinationPath.endsWith('/')
@@ -16,7 +108,6 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
16
108
  rsyncArgs.push(`--exclude=${exclude}`);
17
109
  }
18
110
  rsyncArgs.push(source, dest);
19
- const startTime = Date.now();
20
111
  const rsyncProcess = spawn('rsync', rsyncArgs);
21
112
  rsyncProcess.on('exit', (code) => {
22
113
  if (code === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAQ,GAAG,EAAE,EACb,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,EAAE,GAQf;IACC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QACxE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC;QAE1B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,wCAAwC;QACxC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE/C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CACT,yBAAyB,UAAU,OAAO,eAAe,WAAW,QAAQ,IAAI,CACjF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,87 @@
1
- import { spawn } from 'child_process';
1
+ import { spawn, execSync } from 'child_process';
2
+ import { existsSync, readdirSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+
5
+ /**
6
+ * Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
7
+ * Falls back to rsync on non-macOS or if the clone fails.
8
+ *
9
+ * Returns true if the clone succeeded (caller can skip rsync).
10
+ */
11
+ function tryApfsClone({
12
+ sourcePath,
13
+ destinationPath,
14
+ excludes,
15
+ silent,
16
+ }: {
17
+ sourcePath: string;
18
+ destinationPath: string;
19
+ excludes: string[];
20
+ silent: boolean;
21
+ }): boolean {
22
+ if (process.platform !== 'darwin') return false;
23
+
24
+ // APFS clone requires the destination to not exist.
25
+ // If it exists and is empty, remove it so we can clone into it.
26
+ if (existsSync(destinationPath)) {
27
+ try {
28
+ const contents = readdirSync(destinationPath);
29
+ if (contents.length > 0) {
30
+ // Destination is non-empty — can't use clone, fall back to rsync
31
+ return false;
32
+ }
33
+ rmSync(destinationPath, { recursive: true });
34
+ } catch {
35
+ return false;
36
+ }
37
+ }
38
+
39
+ try {
40
+ // cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
41
+ execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
42
+ stdio: 'pipe',
43
+ timeout: 300_000, // 5 min safety timeout
44
+ });
45
+
46
+ // Remove excluded items from the clone
47
+ for (const exclude of excludes) {
48
+ if (exclude.includes('*')) {
49
+ // Glob pattern — use shell expansion
50
+ try {
51
+ execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
52
+ stdio: 'pipe',
53
+ shell: '/bin/sh',
54
+ });
55
+ } catch {
56
+ // Glob matched nothing — fine
57
+ }
58
+ } else {
59
+ const excludePath = join(destinationPath, exclude);
60
+ if (existsSync(excludePath)) {
61
+ rmSync(excludePath, { recursive: true, force: true });
62
+ }
63
+ }
64
+ }
65
+
66
+ if (!silent) {
67
+ console.log(
68
+ `Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`,
69
+ );
70
+ }
71
+ return true;
72
+ } catch {
73
+ // Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
74
+ // Clean up any partial clone
75
+ if (existsSync(destinationPath)) {
76
+ try {
77
+ rmSync(destinationPath, { recursive: true });
78
+ } catch {
79
+ // Best effort cleanup
80
+ }
81
+ }
82
+ return false;
83
+ }
84
+ }
2
85
 
3
86
  export default async function rsyncCopy({
4
87
  sourcePath,
@@ -15,6 +98,30 @@ export default async function rsyncCopy({
15
98
  silent?: boolean;
16
99
  extraArgs?: string[];
17
100
  }): Promise<void> {
101
+ const startTime = Date.now();
102
+
103
+ // On macOS, try APFS copy-on-write clone first (near-instant).
104
+ // Skip when extraArgs are provided since those are rsync-specific flags
105
+ // that the clone path can't honor.
106
+ if (!keepExisting && extraArgs.length === 0) {
107
+ const cloned = tryApfsClone({
108
+ sourcePath,
109
+ destinationPath,
110
+ excludes,
111
+ silent,
112
+ });
113
+ if (cloned) {
114
+ if (!silent) {
115
+ const duration = ((Date.now() - startTime) / 1000).toFixed(1);
116
+ console.log(
117
+ `Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`,
118
+ );
119
+ }
120
+ return;
121
+ }
122
+ }
123
+
124
+ // Fall back to rsync
18
125
  return new Promise((resolve, reject) => {
19
126
  const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
20
127
  const dest = destinationPath.endsWith('/')
@@ -37,7 +144,6 @@ export default async function rsyncCopy({
37
144
 
38
145
  rsyncArgs.push(source, dest);
39
146
 
40
- const startTime = Date.now();
41
147
  const rsyncProcess = spawn('rsync', rsyncArgs);
42
148
 
43
149
  rsyncProcess.on('exit', (code) => {
@@ -342,7 +342,7 @@ export default function constructMockCode(
342
342
  let foundEntityWithSignature = false;
343
343
  let signatureSchema: DataStructure['signatureSchema'] | undefined;
344
344
 
345
- for (const filePath in dependencySchemas) {
345
+ entitySearch: for (const filePath in dependencySchemas) {
346
346
  for (const entityName in dependencySchemas[filePath]) {
347
347
  // Match entity by base name (without generics/args)
348
348
  const entityBaseName = entityName.split(/[<(]/)[0];
@@ -386,7 +386,7 @@ export default function constructMockCode(
386
386
  // However, we still need to remove duplicate function calls that create invalid syntax
387
387
  removeDuplicateFunctionCalls(relevantReturnValueSchema);
388
388
  dataStructureValue = relevantReturnValueSchema?.[dataStructurePath];
389
- break;
389
+ break entitySearch;
390
390
  }
391
391
  }
392
392
  }
@@ -873,13 +873,21 @@ const jsonToCode = (
873
873
  `CodeYam: Nested func transform (string->function): "${key}" -> "${funcName}": () => {}`,
874
874
  );
875
875
  } else if (looksLikeFunction) {
876
- // First, check for malformed LLM-generated function values like "(function)() => {}"
877
- // These have an invalid "(function)" prefix that must be stripped
878
- const cleanedFn = cleanMalformedFunctionValue(stringValue);
879
- if (cleanedFn) {
880
- outputValue = cleanedFn;
876
+ // Check for "[native code]" in function body this is what
877
+ // Function.prototype.toString() returns for built-in functions.
878
+ // The LLM sometimes generates "function () { [native code] }" which
879
+ // is not valid JavaScript (the "[" is parsed as array destructuring).
880
+ if (stringValue.includes('[native code]')) {
881
+ outputValue = '() => {}';
882
+ console.log(
883
+ `CodeYam: Nested func transform (native-code->noop): "${key}" -> "${funcName}": () => {}`,
884
+ );
885
+ } else if (cleanMalformedFunctionValue(stringValue)) {
886
+ // Check for malformed LLM-generated function values like "(function)() => {}"
887
+ // These have an invalid "(function)" prefix that must be stripped
888
+ outputValue = cleanMalformedFunctionValue(stringValue)!;
881
889
  console.log(
882
- `CodeYam: Nested func transform (malformed->clean): "${key}" -> "${funcName}": ${cleanedFn}`,
890
+ `CodeYam: Nested func transform (malformed->clean): "${key}" -> "${funcName}": ${outputValue}`,
883
891
  );
884
892
  } else if (isArrowFunctionTypeAnnotation(stringValue)) {
885
893
  // TypeScript arrow function type annotations like "() => void",
@@ -16,7 +16,7 @@ export async function createAnalyzerTemplate(absoluteCodeyamRootPath) {
16
16
  await copyFolderToArchive({
17
17
  source: folder,
18
18
  destination: `${absoluteCodeyamRootPath}/${folderName}`,
19
- exclude: ['__tests__'],
19
+ exclude: ['__tests__', 'node_modules'],
20
20
  recursive: true,
21
21
  });
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createLocalAnalyzer.js","sourceRoot":"","sources":["../../../../../../background/src/lib/local/createLocalAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createLocalAnalyzer.js","sourceRoot":"","sources":["../../../../../../background/src/lib/local/createLocalAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,SAAS,EAAE,EAEhB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,YAAY,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,uBAA+B;IAC1E,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,yBAAyB,UAAU,EAAE,CAAC;QACrD,MAAM,mBAAmB,CAAC;YACxB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,GAAG,uBAAuB,IAAI,UAAU,EAAE;YACvD,OAAO,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;YACtC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,mBAAmB,CAAC;QACxB,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,GAAG,uBAAuB,WAAW;QAClD,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC;KACxD,CAAC,CAAC;IAEH,MAAM,mBAAmB,CAAC;QACxB,MAAM,EAAE,yBAAyB;QACjC,WAAW,EAAE,GAAG,uBAAuB,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,mBAAmB,CAAC;QACxB,MAAM,EAAE,2BAA2B;QACnC,WAAW,EAAE,GAAG,uBAAuB,UAAU;KAClD,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC;QACd,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC;QAClC,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,uBAA+B;IAE/B,MAAM,SAAS,CAAC;QACd,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC;QACd,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;QAC/B,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC;QACd,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,uBAA+B,EAC/B,gBAAgB,GAAG,KAAK;IAExB,MAAM,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;IAEtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,uBAA+B,EAC/B,QAAgC,EAChC,SAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,SAAS,CAAC,GAAG,uBAAuB,OAAO,EAAE,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAExC,OAAO,MAAM,SAAS,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC;QACrE,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,uBAA+B;IAE/B,OAAO,MAAM,SAAS,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE;YACJ,sBAAsB;YACtB,8BAA8B;YAC9B,QAAQ;YACR,WAAW;SACZ;QACD,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;AACL,CAAC;AASD,MAAM,UAAU,gCAAgC,CAAC,EAC/C,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,aAAa,GACiB;IAI9B,qEAAqE;IACrE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,EAAE,CAAC,aAAa,CAAC,GAAG,uBAAuB,OAAO,EAAE,GAAG,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAExC,OAAO,oBAAoB,CAAC;QAC1B,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC;QACrE,UAAU,EAAE,uBAAuB;QACnC,aAAa;QACb,WAAW,EAAE,UAAU;QACvB,GAAG,EAAE,QAAQ,EAAE,oDAAoD;KACpE,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,UAAU,kCAAkC,CAAC,EACjD,WAAW,EACX,uBAAuB,EACvB,aAAa,GACmB;IAIhC,OAAO,oBAAoB,CAAC;QAC1B,OAAO,EAAE,MAAM;QACf,IAAI,EAAE;YACJ,sBAAsB;YACtB,8BAA8B;YAC9B,QAAQ;YACR,WAAW;SACZ;QACD,UAAU,EAAE,uBAAuB;QACnC,aAAa;QACb,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -257,7 +257,7 @@ options) {
257
257
  let dataStructureValue;
258
258
  let foundEntityWithSignature = false;
259
259
  let signatureSchema;
260
- for (const filePath in dependencySchemas) {
260
+ entitySearch: for (const filePath in dependencySchemas) {
261
261
  for (const entityName in dependencySchemas[filePath]) {
262
262
  // Match entity by base name (without generics/args)
263
263
  const entityBaseName = entityName.split(/[<(]/)[0];
@@ -289,7 +289,7 @@ options) {
289
289
  // However, we still need to remove duplicate function calls that create invalid syntax
290
290
  removeDuplicateFunctionCalls(relevantReturnValueSchema);
291
291
  dataStructureValue = relevantReturnValueSchema?.[dataStructurePath];
292
- break;
292
+ break entitySearch;
293
293
  }
294
294
  }
295
295
  }