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

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 (798) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +10 -10
  4. package/analyzer-template/packages/ai/index.ts +21 -5
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  8. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  10. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  12. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  16. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1215 -29
  17. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  18. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  19. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1750 -318
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +129 -20
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  34. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  35. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  36. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  37. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +4 -3
  38. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -149
  39. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  40. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1382 -65
  41. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  42. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +710 -0
  43. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  44. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  45. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  46. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  47. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  48. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  49. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  50. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  51. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  52. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  53. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +28 -170
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  61. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  62. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  63. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  64. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  65. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  66. package/analyzer-template/packages/analyze/index.ts +2 -0
  67. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  68. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  69. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  70. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  71. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  72. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  73. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  74. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  75. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  76. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +447 -255
  77. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +31 -4
  78. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  79. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  80. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  81. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +14 -14
  82. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +4 -4
  83. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  84. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  85. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  86. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  87. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  88. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
  89. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +203 -41
  90. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -188
  91. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +272 -23
  92. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  93. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +825 -71
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  98. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  99. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  100. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  101. package/analyzer-template/packages/aws/package.json +3 -3
  102. package/analyzer-template/packages/database/package.json +1 -1
  103. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  104. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  105. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  106. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  107. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  108. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  109. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  110. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  111. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  112. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  113. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  114. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  115. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  116. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  117. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  118. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  119. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  120. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  121. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  122. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  123. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  124. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  125. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  127. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  129. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  130. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  131. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  132. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  133. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  135. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  139. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  142. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  143. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  145. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  146. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  147. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  149. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  151. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  152. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  153. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  154. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  155. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -6
  156. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  157. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  158. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  159. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  160. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  163. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  168. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  171. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  176. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  177. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  179. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  182. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  186. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  188. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  189. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  190. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  192. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  193. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  194. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  195. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  196. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  197. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  198. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  199. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  200. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  201. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  202. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  203. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +3 -54
  204. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  205. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  206. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  207. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  208. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  209. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  210. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  211. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  212. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  213. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  214. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  215. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  216. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  217. package/analyzer-template/packages/github/package.json +1 -1
  218. package/analyzer-template/packages/types/index.ts +3 -6
  219. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  220. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  221. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  222. package/analyzer-template/packages/types/src/types/Scenario.ts +3 -77
  223. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  224. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  225. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  226. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  227. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  228. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  229. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  230. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  231. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  232. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  233. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  234. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  235. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  236. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +3 -54
  237. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  238. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  239. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  240. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  241. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  242. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  243. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  244. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  245. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  246. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  247. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  248. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  249. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  250. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  251. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  252. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  253. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  254. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  255. package/analyzer-template/playwright/capture.ts +20 -8
  256. package/analyzer-template/playwright/captureStatic.ts +1 -1
  257. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  258. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  259. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  260. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  261. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  262. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  263. package/analyzer-template/project/constructMockCode.ts +425 -43
  264. package/analyzer-template/project/controller/startController.ts +16 -1
  265. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  266. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  267. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  268. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  269. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  270. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  271. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  272. package/analyzer-template/project/orchestrateCapture.ts +71 -6
  273. package/analyzer-template/project/reconcileMockDataKeys.ts +214 -0
  274. package/analyzer-template/project/runAnalysis.ts +6 -0
  275. package/analyzer-template/project/start.ts +46 -12
  276. package/analyzer-template/project/writeMockDataTsx.ts +295 -10
  277. package/analyzer-template/project/writeScenarioComponents.ts +218 -26
  278. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  279. package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
  280. package/analyzer-template/tsconfig.json +2 -1
  281. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  282. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  283. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  284. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  285. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  286. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  287. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  288. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  289. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  290. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  291. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  292. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  293. package/background/src/lib/virtualized/project/constructMockCode.js +350 -13
  294. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  295. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  296. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  297. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  298. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  299. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  300. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  301. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  302. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  303. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  304. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  305. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  306. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  307. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  308. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  309. package/background/src/lib/virtualized/project/orchestrateCapture.js +58 -6
  310. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  311. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +177 -0
  312. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  313. package/background/src/lib/virtualized/project/runAnalysis.js +5 -0
  314. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  315. package/background/src/lib/virtualized/project/start.js +42 -12
  316. package/background/src/lib/virtualized/project/start.js.map +1 -1
  317. package/background/src/lib/virtualized/project/writeMockDataTsx.js +251 -6
  318. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  319. package/background/src/lib/virtualized/project/writeScenarioComponents.js +164 -29
  320. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  321. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  322. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  323. package/codeyam-cli/scripts/apply-setup.js +180 -0
  324. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  325. package/codeyam-cli/src/cli.js +4 -0
  326. package/codeyam-cli/src/cli.js.map +1 -1
  327. package/codeyam-cli/src/codeyam-cli.js +18 -2
  328. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  329. package/codeyam-cli/src/commands/analyze.js +4 -2
  330. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  331. package/codeyam-cli/src/commands/baseline.js +10 -11
  332. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  333. package/codeyam-cli/src/commands/debug.js +37 -23
  334. package/codeyam-cli/src/commands/debug.js.map +1 -1
  335. package/codeyam-cli/src/commands/default.js +30 -34
  336. package/codeyam-cli/src/commands/default.js.map +1 -1
  337. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  338. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  339. package/codeyam-cli/src/commands/init.js +49 -257
  340. package/codeyam-cli/src/commands/init.js.map +1 -1
  341. package/codeyam-cli/src/commands/memory.js +264 -0
  342. package/codeyam-cli/src/commands/memory.js.map +1 -0
  343. package/codeyam-cli/src/commands/recapture.js +31 -18
  344. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  345. package/codeyam-cli/src/commands/report.js +46 -1
  346. package/codeyam-cli/src/commands/report.js.map +1 -1
  347. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  348. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  349. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  350. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  351. package/codeyam-cli/src/commands/start.js +8 -12
  352. package/codeyam-cli/src/commands/start.js.map +1 -1
  353. package/codeyam-cli/src/commands/test-startup.js +2 -0
  354. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  355. package/codeyam-cli/src/commands/verify.js +14 -2
  356. package/codeyam-cli/src/commands/verify.js.map +1 -1
  357. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  358. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  359. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  360. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  361. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  362. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  363. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  364. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  365. package/codeyam-cli/src/utils/analyzer.js +7 -0
  366. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  367. package/codeyam-cli/src/utils/backgroundServer.js +102 -21
  368. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  369. package/codeyam-cli/src/utils/generateReport.js +4 -3
  370. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  371. package/codeyam-cli/src/utils/install-skills.js +76 -37
  372. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  373. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  374. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  375. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  376. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  377. package/codeyam-cli/src/utils/progress.js +7 -0
  378. package/codeyam-cli/src/utils/progress.js.map +1 -1
  379. package/codeyam-cli/src/utils/queue/job.js +5 -0
  380. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  381. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  382. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  383. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  384. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  385. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  386. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  387. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  388. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  389. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  390. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  391. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  392. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  393. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  394. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  395. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  396. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  397. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  398. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  399. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +378 -0
  400. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  401. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  402. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  403. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  404. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  405. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  406. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  407. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  408. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  409. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  410. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  411. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  412. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  413. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  414. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  415. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  416. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  417. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  418. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  419. package/codeyam-cli/src/utils/rules/index.js +6 -0
  420. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  421. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  422. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  423. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  424. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  425. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  426. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  427. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  428. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  429. package/codeyam-cli/src/utils/serverState.js +37 -10
  430. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  431. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  432. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  433. package/codeyam-cli/src/utils/versionInfo.js +25 -19
  434. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  435. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  436. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  437. package/codeyam-cli/src/webserver/app/lib/database.js +22 -6
  438. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  439. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  440. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  441. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  442. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  443. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  445. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  446. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  447. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BH0XDim7.js +41 -0
  448. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +34 -0
  449. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +25 -0
  450. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  451. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BvMu2i-g.js} +1 -1
  452. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-kgBTLoJD.js} +1 -1
  453. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  454. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  455. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BX2Ny2Qj.js +10 -0
  456. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  457. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  458. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  459. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  460. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  461. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  462. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  463. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  464. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-CG65viiV.js} +1 -1
  465. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
  466. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-igfMr5DY.js} +1 -1
  467. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  468. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-D1zB-pYc.js} +1 -1
  469. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  470. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  471. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  472. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-D0-YwkBh.js → entity._sha._-B0h9AqE6.js} +12 -12
  473. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +6 -0
  474. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +6 -0
  475. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-C1H_a_Y3.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  476. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-I-Wo99C_.js} +1 -1
  477. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  478. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  479. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  480. package/codeyam-cli/src/webserver/build/client/assets/{git-CZu4fif0.js → git-BdHOxVfg.js} +8 -8
  481. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +1 -0
  482. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-CUM5iXwc.js} +1 -1
  483. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-_417gcQW.js} +1 -1
  484. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  485. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-TzRHMVog.js} +1 -1
  486. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +1 -0
  487. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +78 -0
  488. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  489. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +62 -0
  490. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-DcAwD_Ln.js} +1 -1
  491. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  492. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +1 -0
  493. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  494. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-CAD5b1o_.js} +1 -1
  495. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +1 -0
  496. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-aSv48UbS.js → useLastLogLine-DAFqfEDH.js} +1 -1
  497. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +1 -0
  498. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-ihdMtlf6.js} +1 -1
  499. package/codeyam-cli/src/webserver/build/server/assets/index-CxaRxKVt.js +1 -0
  500. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +259 -0
  501. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  502. package/codeyam-cli/src/webserver/build-info.json +5 -5
  503. package/codeyam-cli/src/webserver/server.js +35 -25
  504. package/codeyam-cli/src/webserver/server.js.map +1 -1
  505. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  506. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  507. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  508. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  509. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  510. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +13 -1
  511. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  512. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  513. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  514. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  515. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  516. package/codeyam-cli/templates/rules-instructions.md +132 -0
  517. package/package.json +15 -12
  518. package/packages/ai/index.js +8 -6
  519. package/packages/ai/index.js.map +1 -1
  520. package/packages/ai/src/lib/analyzeScope.js +179 -13
  521. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  522. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  523. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  524. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  525. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  526. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  527. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  528. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  529. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  530. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  531. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  532. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  533. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  534. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  535. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  536. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  537. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  538. package/packages/ai/src/lib/astScopes/processExpression.js +931 -29
  539. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  540. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  541. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  542. package/packages/ai/src/lib/completionCall.js +178 -31
  543. package/packages/ai/src/lib/completionCall.js.map +1 -1
  544. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1367 -187
  545. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  546. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  547. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  548. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
  549. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  550. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  551. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  552. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  553. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  554. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  555. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  556. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  557. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  558. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  559. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  560. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  561. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  562. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  563. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  564. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  565. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  566. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  567. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  568. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  569. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  570. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  571. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  572. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  573. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  574. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  575. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  576. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  577. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  578. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +4 -3
  579. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  580. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  581. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  582. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  583. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  584. package/packages/ai/src/lib/generateEntityScenarioData.js +1098 -60
  585. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  586. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  587. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  588. package/packages/ai/src/lib/generateExecutionFlows.js +495 -0
  589. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  590. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  591. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  592. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  593. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  594. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  595. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  596. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  597. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  598. package/packages/ai/src/lib/isolateScopes.js +270 -7
  599. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  600. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  601. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  602. package/packages/ai/src/lib/mergeStatements.js +88 -46
  603. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  604. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  605. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  606. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  607. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  608. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  609. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  610. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -119
  611. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  612. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  613. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  614. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  615. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  616. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  617. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  618. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  619. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  620. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  621. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  622. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  623. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  624. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  625. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  626. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  627. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  628. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  629. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  630. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  631. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  632. package/packages/analyze/index.js +1 -0
  633. package/packages/analyze/index.js.map +1 -1
  634. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  635. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  636. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  637. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  638. package/packages/analyze/src/lib/analysisContext.js +30 -5
  639. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  640. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  641. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  642. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  643. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  644. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  645. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  646. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  647. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  648. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  649. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  650. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  651. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  652. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +189 -41
  653. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  654. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +21 -4
  655. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  656. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  657. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  658. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  659. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  660. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  661. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  662. package/packages/analyze/src/lib/files/analyzeChange.js +10 -10
  663. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  664. package/packages/analyze/src/lib/files/analyzeEntity.js +4 -4
  665. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  666. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  667. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  668. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  669. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  670. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  671. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  672. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  673. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  674. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  675. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  676. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
  677. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  678. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +178 -31
  679. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  680. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -129
  681. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  682. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +187 -21
  683. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  684. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  685. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  686. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  687. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  688. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  689. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  690. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +670 -53
  691. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  692. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  693. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  694. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  695. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  696. package/packages/analyze/src/lib/index.js +1 -0
  697. package/packages/analyze/src/lib/index.js.map +1 -1
  698. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  699. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  700. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  701. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  702. package/packages/database/src/lib/analysisToDb.js +1 -1
  703. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  704. package/packages/database/src/lib/branchToDb.js +1 -1
  705. package/packages/database/src/lib/branchToDb.js.map +1 -1
  706. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  707. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  708. package/packages/database/src/lib/commitToDb.js +1 -1
  709. package/packages/database/src/lib/commitToDb.js.map +1 -1
  710. package/packages/database/src/lib/fileToDb.js +1 -1
  711. package/packages/database/src/lib/fileToDb.js.map +1 -1
  712. package/packages/database/src/lib/kysely/db.js +11 -1
  713. package/packages/database/src/lib/kysely/db.js.map +1 -1
  714. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  715. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  716. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  717. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  718. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  719. package/packages/database/src/lib/loadAnalyses.js +45 -2
  720. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  721. package/packages/database/src/lib/loadAnalysis.js +8 -0
  722. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  723. package/packages/database/src/lib/loadBranch.js +11 -1
  724. package/packages/database/src/lib/loadBranch.js.map +1 -1
  725. package/packages/database/src/lib/loadCommit.js +7 -0
  726. package/packages/database/src/lib/loadCommit.js.map +1 -1
  727. package/packages/database/src/lib/loadCommits.js +22 -1
  728. package/packages/database/src/lib/loadCommits.js.map +1 -1
  729. package/packages/database/src/lib/loadEntities.js +23 -4
  730. package/packages/database/src/lib/loadEntities.js.map +1 -1
  731. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  732. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  733. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  734. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  735. package/packages/database/src/lib/projectToDb.js +1 -1
  736. package/packages/database/src/lib/projectToDb.js.map +1 -1
  737. package/packages/database/src/lib/saveFiles.js +1 -1
  738. package/packages/database/src/lib/saveFiles.js.map +1 -1
  739. package/packages/database/src/lib/scenarioToDb.js +1 -1
  740. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  741. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  742. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  743. package/packages/types/index.js +0 -1
  744. package/packages/types/index.js.map +1 -1
  745. package/packages/types/src/types/Scenario.js +1 -21
  746. package/packages/types/src/types/Scenario.js.map +1 -1
  747. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  748. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  749. package/packages/utils/src/lib/safeFileName.js +29 -3
  750. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  751. package/scripts/finalize-analyzer.cjs +8 -76
  752. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -109
  753. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -584
  754. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -341
  755. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  756. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  757. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  758. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-Cmysw5OP.js +0 -1
  759. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CAneekK2.js +0 -41
  760. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Cu16OUmx.js +0 -25
  761. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DcAUIpD_.js +0 -11
  762. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +0 -15
  763. package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +0 -11
  764. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +0 -32
  765. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  766. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-RJCf3Tvw.js +0 -1
  767. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +0 -1
  768. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DMe7kvgo.js +0 -1
  769. package/codeyam-cli/src/webserver/build/client/assets/files-BW7Cyeyi.js +0 -1
  770. package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +0 -1
  771. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  772. package/codeyam-cli/src/webserver/build/client/assets/manifest-2d191949.js +0 -1
  773. package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +0 -56
  774. package/codeyam-cli/src/webserver/build/client/assets/settings-6D8k8Jp5.js +0 -1
  775. package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +0 -1
  776. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dv18q8LD.js +0 -1
  777. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-0ToGk4K3.js +0 -1
  778. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-1BX144Eg.js +0 -1
  779. package/codeyam-cli/src/webserver/build/server/assets/index-pU0o5t1o.js +0 -1
  780. package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +0 -178
  781. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  782. package/packages/ai/src/lib/findMatchingAttribute.js +0 -81
  783. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  784. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -425
  785. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  786. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -267
  787. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  788. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  789. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  790. package/packages/ai/src/lib/isFrontend.js +0 -5
  791. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  792. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  793. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  794. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  795. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  796. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  797. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  798. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
@@ -0,0 +1,880 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ // ============================================================================
4
+ // Utility Functions
5
+ // ============================================================================
6
+ /**
7
+ * Compute the diff between two schema objects.
8
+ */
9
+ export function computeSchemaDiff(before, after) {
10
+ const diff = {
11
+ added: {},
12
+ removed: {},
13
+ changed: {},
14
+ };
15
+ const beforeKeys = new Set(Object.keys(before ?? {}));
16
+ const afterKeys = new Set(Object.keys(after ?? {}));
17
+ // Find added keys
18
+ for (const key of afterKeys) {
19
+ if (!beforeKeys.has(key)) {
20
+ diff.added[key] = after[key];
21
+ }
22
+ }
23
+ // Find removed keys
24
+ for (const key of beforeKeys) {
25
+ if (!afterKeys.has(key)) {
26
+ diff.removed[key] = before[key];
27
+ }
28
+ }
29
+ // Find changed keys
30
+ for (const key of beforeKeys) {
31
+ if (afterKeys.has(key) && before[key] !== after[key]) {
32
+ diff.changed[key] = { from: before[key], to: after[key] };
33
+ }
34
+ }
35
+ return diff;
36
+ }
37
+ /**
38
+ * Check if a diff has any changes.
39
+ */
40
+ export function hasDiffChanges(diff) {
41
+ return (Object.keys(diff.added).length > 0 ||
42
+ Object.keys(diff.removed).length > 0 ||
43
+ Object.keys(diff.changed).length > 0);
44
+ }
45
+ /**
46
+ * Count total changes in a diff.
47
+ */
48
+ export function countDiffChanges(diff) {
49
+ return (Object.keys(diff.added).length +
50
+ Object.keys(diff.removed).length +
51
+ Object.keys(diff.changed).length);
52
+ }
53
+ // ============================================================================
54
+ // TransformationTracer Class
55
+ // ============================================================================
56
+ // Global counter to identify tracer instances
57
+ let tracerInstanceCounter = 0;
58
+ export class TransformationTracer {
59
+ constructor(options) {
60
+ this.traces = new Map();
61
+ this.currentEntity = null;
62
+ this.currentStage = null;
63
+ this.tracerId = ++tracerInstanceCounter;
64
+ this.enabled = options?.enabled ?? false;
65
+ this.outputPath =
66
+ options?.outputPath ?? '/tmp/codeyam/transform-trace.json';
67
+ if (this.enabled) {
68
+ console.log(`[Tracer] Initialized (id=${this.tracerId}, output=${this.outputPath})`);
69
+ }
70
+ }
71
+ /**
72
+ * Log a message (only when tracing is enabled).
73
+ */
74
+ log(message) {
75
+ if (this.isEnabled()) {
76
+ console.log(`[Tracer] ${message}`);
77
+ }
78
+ }
79
+ /**
80
+ * Check if tracing is enabled.
81
+ * Dynamically checks environment variable so it works even if set after module load.
82
+ */
83
+ isEnabled() {
84
+ // Check environment variable dynamically - allows setting after module load
85
+ const envValue = process.env.CODEYAM_TRACE_TRANSFORMS;
86
+ if (envValue === '1' || envValue === 'true') {
87
+ return true;
88
+ }
89
+ return this.enabled;
90
+ }
91
+ /**
92
+ * Enable tracing.
93
+ */
94
+ enable() {
95
+ this.enabled = true;
96
+ }
97
+ /**
98
+ * Disable tracing.
99
+ */
100
+ disable() {
101
+ this.enabled = false;
102
+ }
103
+ /**
104
+ * Set the output path for the trace file.
105
+ */
106
+ setOutputPath(outputPath) {
107
+ this.outputPath = outputPath;
108
+ }
109
+ /**
110
+ * Set the project slug for metadata.
111
+ */
112
+ setProjectSlug(slug) {
113
+ this.projectSlug = slug;
114
+ }
115
+ /**
116
+ * Start tracing a new entity.
117
+ * If the entity already exists, preserves its existing stages and operations.
118
+ */
119
+ startEntity(entity) {
120
+ if (!this.isEnabled())
121
+ return;
122
+ this.currentEntity = entity.name;
123
+ // Preserve existing trace data if entity was already started
124
+ // (e.g., early stages from generateEntityDataStructure.ts)
125
+ const existing = this.traces.get(entity.name);
126
+ if (existing) {
127
+ this.log(`startEntity: ${entity.name} already exists, preserving ${existing.stages.length} stages`);
128
+ return; // Keep existing trace data
129
+ }
130
+ this.log(`startEntity: ${entity.name}`);
131
+ this.traces.set(entity.name, {
132
+ entityName: entity.name,
133
+ entityType: entity.entityType,
134
+ filePath: entity.filePath,
135
+ stages: [],
136
+ operations: [],
137
+ });
138
+ }
139
+ /**
140
+ * Take a coarse-grained snapshot at a transformation stage.
141
+ */
142
+ snapshot(entityName, stage, data) {
143
+ if (!this.isEnabled())
144
+ return;
145
+ const trace = this.traces.get(entityName);
146
+ if (!trace) {
147
+ this.log(`snapshot: no trace for ${entityName}, creating one`);
148
+ this.startEntity({
149
+ name: entityName,
150
+ entityType: 'unknown',
151
+ filePath: 'unknown',
152
+ });
153
+ return this.snapshot(entityName, stage, data);
154
+ }
155
+ this.log(`snapshot: ${entityName} → ${stage}`);
156
+ this.currentStage = stage;
157
+ // Deep clone the data to avoid capturing references that change later
158
+ const clonedData = JSON.parse(JSON.stringify(data));
159
+ const snapshot = {
160
+ stage,
161
+ timestamp: Date.now(),
162
+ data: clonedData,
163
+ };
164
+ // Compute diff from previous stage if there is one
165
+ const previousSnapshot = trace.stages[trace.stages.length - 1];
166
+ if (previousSnapshot) {
167
+ snapshot.diffFromPrevious = {
168
+ signatureSchema: computeSchemaDiff(previousSnapshot.data.signatureSchema, clonedData.signatureSchema),
169
+ returnValueSchema: computeSchemaDiff(previousSnapshot.data.returnValueSchema, clonedData.returnValueSchema),
170
+ };
171
+ // Compute diffs for dependency schemas
172
+ if (clonedData.dependencySchemas ||
173
+ previousSnapshot.data.dependencySchemas) {
174
+ snapshot.diffFromPrevious.dependencySchemas = {};
175
+ const allDepKeys = new Set([
176
+ ...Object.keys(clonedData.dependencySchemas ?? {}),
177
+ ...Object.keys(previousSnapshot.data.dependencySchemas ?? {}),
178
+ ]);
179
+ for (const depKey of allDepKeys) {
180
+ const prevDep = previousSnapshot.data.dependencySchemas?.[depKey];
181
+ const currDep = clonedData.dependencySchemas?.[depKey];
182
+ // Compare returnValueSchema for each dependency
183
+ for (const entityKey of new Set([
184
+ ...Object.keys(prevDep ?? {}),
185
+ ...Object.keys(currDep ?? {}),
186
+ ])) {
187
+ const fullKey = `${depKey}::${entityKey}`;
188
+ const prevSchema = prevDep?.[entityKey]?.returnValueSchema;
189
+ const currSchema = currDep?.[entityKey]?.returnValueSchema;
190
+ const depDiff = computeSchemaDiff(prevSchema, currSchema);
191
+ if (hasDiffChanges(depDiff)) {
192
+ snapshot.diffFromPrevious.dependencySchemas[fullKey] = depDiff;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ trace.stages.push(snapshot);
199
+ }
200
+ /**
201
+ * Log a fine-grained operation within the current stage.
202
+ */
203
+ operation(entityName, op) {
204
+ if (!this.isEnabled())
205
+ return;
206
+ const trace = this.traces.get(entityName);
207
+ if (!trace)
208
+ return;
209
+ trace.operations.push({
210
+ ...op,
211
+ stage: op.stage ?? this.currentStage ?? undefined,
212
+ timestamp: Date.now(),
213
+ });
214
+ }
215
+ /**
216
+ * Write the trace to the output file.
217
+ */
218
+ flush() {
219
+ if (!this.isEnabled())
220
+ return;
221
+ if (this.traces.size === 0) {
222
+ this.log('flush: no traces to write');
223
+ return;
224
+ }
225
+ const entities = Array.from(this.traces.keys());
226
+ const stageCounts = entities
227
+ .map((e) => `${e}(${this.traces.get(e).stages.length})`)
228
+ .join(', ');
229
+ this.log(`flush: writing ${entities.length} entities: ${stageCounts}`);
230
+ // Compute summary
231
+ const stageChangeCounts = {};
232
+ const entityChangeCounts = new Map();
233
+ for (const [entityName, trace] of this.traces) {
234
+ let entityTotal = 0;
235
+ for (const snapshot of trace.stages) {
236
+ if (!snapshot.diffFromPrevious)
237
+ continue;
238
+ const previousStage = trace.stages[trace.stages.indexOf(snapshot) - 1]?.stage ?? 'start';
239
+ const transitionKey = `${previousStage}→${snapshot.stage}`;
240
+ if (!stageChangeCounts[transitionKey]) {
241
+ stageChangeCounts[transitionKey] = {
242
+ added: 0,
243
+ removed: 0,
244
+ changed: 0,
245
+ };
246
+ }
247
+ // Count signature schema changes
248
+ if (snapshot.diffFromPrevious.signatureSchema) {
249
+ const diff = snapshot.diffFromPrevious.signatureSchema;
250
+ stageChangeCounts[transitionKey].added += Object.keys(diff.added).length;
251
+ stageChangeCounts[transitionKey].removed += Object.keys(diff.removed).length;
252
+ stageChangeCounts[transitionKey].changed += Object.keys(diff.changed).length;
253
+ entityTotal += countDiffChanges(diff);
254
+ }
255
+ // Count return value schema changes
256
+ if (snapshot.diffFromPrevious.returnValueSchema) {
257
+ const diff = snapshot.diffFromPrevious.returnValueSchema;
258
+ stageChangeCounts[transitionKey].added += Object.keys(diff.added).length;
259
+ stageChangeCounts[transitionKey].removed += Object.keys(diff.removed).length;
260
+ stageChangeCounts[transitionKey].changed += Object.keys(diff.changed).length;
261
+ entityTotal += countDiffChanges(diff);
262
+ }
263
+ }
264
+ entityChangeCounts.set(entityName, entityTotal);
265
+ }
266
+ // Get top 10 entities with most changes
267
+ const entitiesWithMostChanges = [...entityChangeCounts.entries()]
268
+ .sort((a, b) => b[1] - a[1])
269
+ .slice(0, 10)
270
+ .map(([name]) => name);
271
+ const traceFile = {
272
+ meta: {
273
+ timestamp: new Date().toISOString(),
274
+ projectSlug: this.projectSlug,
275
+ entityCount: this.traces.size,
276
+ },
277
+ summary: {
278
+ stageChangeCounts,
279
+ entitiesWithMostChanges,
280
+ },
281
+ entities: Object.fromEntries(this.traces),
282
+ };
283
+ // Ensure directory exists
284
+ const dir = path.dirname(this.outputPath);
285
+ if (!fs.existsSync(dir)) {
286
+ fs.mkdirSync(dir, { recursive: true });
287
+ }
288
+ fs.writeFileSync(this.outputPath, JSON.stringify(traceFile, null, 2));
289
+ this.log(`flush: wrote trace to ${this.outputPath}`);
290
+ }
291
+ /**
292
+ * Clear all traces (useful for testing).
293
+ */
294
+ clear() {
295
+ this.traces.clear();
296
+ this.currentEntity = null;
297
+ this.currentStage = null;
298
+ }
299
+ // ============================================================================
300
+ // Analysis Utilities
301
+ // ============================================================================
302
+ /**
303
+ * Load a trace from a file.
304
+ */
305
+ static loadTrace(tracePath) {
306
+ const content = fs.readFileSync(tracePath, 'utf-8');
307
+ const traceFile = JSON.parse(content);
308
+ const tracer = new TransformationTracer({ enabled: false });
309
+ tracer.projectSlug = traceFile.meta.projectSlug;
310
+ for (const [entityName, entityTrace] of Object.entries(traceFile.entities)) {
311
+ tracer.traces.set(entityName, entityTrace);
312
+ }
313
+ return tracer;
314
+ }
315
+ /**
316
+ * Get a high-level summary of the trace.
317
+ */
318
+ getSummary() {
319
+ const stageChangeCounts = {};
320
+ const entityChangeCounts = new Map();
321
+ for (const [entityName, trace] of this.traces) {
322
+ let entityTotal = 0;
323
+ for (let i = 1; i < trace.stages.length; i++) {
324
+ const snapshot = trace.stages[i];
325
+ const previousStage = trace.stages[i - 1]?.stage ?? 'start';
326
+ const transitionKey = `${previousStage}→${snapshot.stage}`;
327
+ if (!stageChangeCounts[transitionKey]) {
328
+ stageChangeCounts[transitionKey] = {
329
+ added: 0,
330
+ removed: 0,
331
+ changed: 0,
332
+ };
333
+ }
334
+ if (snapshot.diffFromPrevious?.signatureSchema) {
335
+ const diff = snapshot.diffFromPrevious.signatureSchema;
336
+ stageChangeCounts[transitionKey].added += Object.keys(diff.added).length;
337
+ stageChangeCounts[transitionKey].removed += Object.keys(diff.removed).length;
338
+ stageChangeCounts[transitionKey].changed += Object.keys(diff.changed).length;
339
+ entityTotal += countDiffChanges(diff);
340
+ }
341
+ if (snapshot.diffFromPrevious?.returnValueSchema) {
342
+ const diff = snapshot.diffFromPrevious.returnValueSchema;
343
+ stageChangeCounts[transitionKey].added += Object.keys(diff.added).length;
344
+ stageChangeCounts[transitionKey].removed += Object.keys(diff.removed).length;
345
+ stageChangeCounts[transitionKey].changed += Object.keys(diff.changed).length;
346
+ entityTotal += countDiffChanges(diff);
347
+ }
348
+ }
349
+ entityChangeCounts.set(entityName, entityTotal);
350
+ }
351
+ const entitiesWithMostChanges = [...entityChangeCounts.entries()]
352
+ .sort((a, b) => b[1] - a[1])
353
+ .slice(0, 10)
354
+ .map(([name, totalChanges]) => ({ name, totalChanges }));
355
+ return {
356
+ entityCount: this.traces.size,
357
+ stageChangeCounts,
358
+ entitiesWithMostChanges,
359
+ };
360
+ }
361
+ /**
362
+ * Get a summary of stages for a specific entity.
363
+ */
364
+ getEntitySummary(entityName) {
365
+ const trace = this.traces.get(entityName);
366
+ if (!trace)
367
+ return null;
368
+ return {
369
+ entityName,
370
+ stages: trace.stages.map((s) => ({
371
+ stage: s.stage,
372
+ diffFromPrevious: s.diffFromPrevious
373
+ ? {
374
+ signatureSchema: s.diffFromPrevious.signatureSchema,
375
+ returnValueSchema: s.diffFromPrevious.returnValueSchema,
376
+ }
377
+ : undefined,
378
+ })),
379
+ };
380
+ }
381
+ /**
382
+ * Get operations for an entity, optionally filtered by path pattern.
383
+ */
384
+ getOperations(entityName, pathPattern) {
385
+ const trace = this.traces.get(entityName);
386
+ if (!trace)
387
+ return [];
388
+ if (!pathPattern)
389
+ return trace.operations;
390
+ return trace.operations.filter((op) => op.path && pathPattern.test(op.path));
391
+ }
392
+ /**
393
+ * Trace the full history of a specific path through all transformations.
394
+ */
395
+ tracePath(entityName, targetPath) {
396
+ const trace = this.traces.get(entityName);
397
+ const history = [];
398
+ if (!trace) {
399
+ return { entityName, path: targetPath, history };
400
+ }
401
+ // Track value through stages
402
+ for (const snapshot of trace.stages) {
403
+ const sigValue = snapshot.data.signatureSchema?.[targetPath];
404
+ const retValue = snapshot.data.returnValueSchema?.[targetPath];
405
+ const value = sigValue ?? retValue;
406
+ if (value !== undefined) {
407
+ history.push({
408
+ stage: snapshot.stage,
409
+ value,
410
+ });
411
+ }
412
+ }
413
+ // Track value through operations
414
+ for (const op of trace.operations) {
415
+ if (op.path === targetPath) {
416
+ history.push({
417
+ operation: op.operation,
418
+ stage: op.stage,
419
+ value: op.after ?? op.before,
420
+ context: op.context,
421
+ });
422
+ }
423
+ }
424
+ return { entityName, path: targetPath, history };
425
+ }
426
+ /**
427
+ * Get the raw entity trace for direct inspection.
428
+ */
429
+ getEntityTrace(entityName) {
430
+ return this.traces.get(entityName);
431
+ }
432
+ /**
433
+ * Get all entity names in the trace.
434
+ */
435
+ getEntityNames() {
436
+ return [...this.traces.keys()];
437
+ }
438
+ // ============================================================================
439
+ // Debugging Utilities
440
+ // ============================================================================
441
+ /**
442
+ * Find all paths containing a property name across all stages.
443
+ * Useful for debugging: "where does 'analyses' appear in the schema?"
444
+ */
445
+ findProperty(entityName, propertyName) {
446
+ const trace = this.traces.get(entityName);
447
+ if (!trace)
448
+ return [];
449
+ const results = [];
450
+ const pattern = new RegExp(`(^|\\.)${propertyName}(\\.|\\[|$)`);
451
+ for (const snapshot of trace.stages) {
452
+ // Search signature schema
453
+ for (const [path, type] of Object.entries(snapshot.data.signatureSchema ?? {})) {
454
+ if (pattern.test(path)) {
455
+ results.push({
456
+ stage: snapshot.stage,
457
+ path,
458
+ type,
459
+ schemaType: 'signature',
460
+ });
461
+ }
462
+ }
463
+ // Search return value schema
464
+ for (const [path, type] of Object.entries(snapshot.data.returnValueSchema ?? {})) {
465
+ if (pattern.test(path)) {
466
+ results.push({
467
+ stage: snapshot.stage,
468
+ path,
469
+ type,
470
+ schemaType: 'returnValue',
471
+ });
472
+ }
473
+ }
474
+ // Search dependency schemas
475
+ for (const [depPath, depEntities] of Object.entries(snapshot.data.dependencySchemas ?? {})) {
476
+ for (const [depName, depData] of Object.entries(depEntities)) {
477
+ for (const [path, type] of Object.entries(depData.returnValueSchema ?? {})) {
478
+ if (pattern.test(path)) {
479
+ results.push({
480
+ stage: snapshot.stage,
481
+ path: `${depPath}/${depName}::${path}`,
482
+ type,
483
+ schemaType: 'dependency',
484
+ });
485
+ }
486
+ }
487
+ }
488
+ }
489
+ }
490
+ return results;
491
+ }
492
+ /**
493
+ * Find properties that have inconsistent types across different paths.
494
+ * Useful for debugging: "why does 'analyses' have different types?"
495
+ *
496
+ * Only compares paths that end with the same pattern (e.g., both end in `.analyses`
497
+ * or both end in `.analyses[]`). Ignores built-in properties like `.length`.
498
+ */
499
+ findTypeInconsistencies(entityName) {
500
+ const trace = this.traces.get(entityName);
501
+ if (!trace)
502
+ return [];
503
+ // Find the best stage for comparison (last one with dependency schemas)
504
+ let targetStage = trace.stages[trace.stages.length - 1];
505
+ for (let i = trace.stages.length - 1; i >= 0; i--) {
506
+ if (Object.keys(trace.stages[i].data.dependencySchemas ?? {}).length > 0) {
507
+ targetStage = trace.stages[i];
508
+ break;
509
+ }
510
+ }
511
+ if (!targetStage)
512
+ return [];
513
+ // Built-in properties to ignore
514
+ const builtIns = new Set(['length', 'toString', 'valueOf', 'constructor']);
515
+ // Group paths by their terminal pattern (e.g., ".analyses" or ".analyses[]")
516
+ const propertyGroups = new Map();
517
+ const addToGroup = (path, type) => {
518
+ // Extract terminal property pattern (e.g., "foo.bar.analyses[]" -> "analyses[]")
519
+ const match = path.match(/\.([a-zA-Z_][a-zA-Z0-9_]*)(\[\])?$/);
520
+ if (!match)
521
+ return;
522
+ const propName = match[1];
523
+ const isArray = match[2] === '[]';
524
+ // Skip built-in properties
525
+ if (builtIns.has(propName))
526
+ return;
527
+ // Use pattern as key (includes [] suffix)
528
+ const pattern = propName + (isArray ? '[]' : '');
529
+ if (!propertyGroups.has(pattern)) {
530
+ propertyGroups.set(pattern, []);
531
+ }
532
+ propertyGroups.get(pattern).push({ path, type });
533
+ };
534
+ // Collect from dependency schemas (where inconsistencies usually appear)
535
+ for (const [, depEntities] of Object.entries(targetStage.data.dependencySchemas ?? {})) {
536
+ for (const [, depData] of Object.entries(depEntities)) {
537
+ for (const [path, type] of Object.entries(depData.returnValueSchema ?? {})) {
538
+ addToGroup(path, type);
539
+ }
540
+ }
541
+ }
542
+ // Find inconsistencies (same terminal pattern, different types)
543
+ const inconsistencies = [];
544
+ for (const [pattern, paths] of propertyGroups) {
545
+ // Normalize types for comparison (treat "unknown | undefined" and "unknown" as similar)
546
+ const normalizedTypes = new Set(paths.map((p) => p.type.replace(/ \| undefined/g, '').replace(/ \| null/g, '')));
547
+ if (normalizedTypes.size > 1) {
548
+ inconsistencies.push({
549
+ propertyName: pattern,
550
+ paths: paths.map((p) => ({ ...p, stage: targetStage.stage })),
551
+ });
552
+ }
553
+ }
554
+ // Sort by number of different types (most inconsistent first)
555
+ inconsistencies.sort((a, b) => {
556
+ const aTypes = new Set(a.paths.map((p) => p.type)).size;
557
+ const bTypes = new Set(b.paths.map((p) => p.type)).size;
558
+ return bTypes - aTypes;
559
+ });
560
+ return inconsistencies;
561
+ }
562
+ /**
563
+ * Get a human-readable summary of changes between two stages.
564
+ */
565
+ getStageDiffSummary(entityName, fromStage, toStage) {
566
+ const trace = this.traces.get(entityName);
567
+ if (!trace)
568
+ return null;
569
+ const from = trace.stages.find((s) => s.stage === fromStage);
570
+ const to = trace.stages.find((s) => s.stage === toStage);
571
+ if (!from || !to)
572
+ return null;
573
+ const result = {
574
+ added: [],
575
+ removed: [],
576
+ typeChanged: [],
577
+ };
578
+ // Compare return value schemas (most common)
579
+ const fromSchema = from.data.returnValueSchema ?? {};
580
+ const toSchema = to.data.returnValueSchema ?? {};
581
+ const fromKeys = new Set(Object.keys(fromSchema));
582
+ const toKeys = new Set(Object.keys(toSchema));
583
+ for (const key of toKeys) {
584
+ if (!fromKeys.has(key)) {
585
+ result.added.push(`${key}: ${toSchema[key]}`);
586
+ }
587
+ else if (fromSchema[key] !== toSchema[key]) {
588
+ result.typeChanged.push({
589
+ path: key,
590
+ from: fromSchema[key],
591
+ to: toSchema[key],
592
+ });
593
+ }
594
+ }
595
+ for (const key of fromKeys) {
596
+ if (!toKeys.has(key)) {
597
+ result.removed.push(`${key}: ${fromSchema[key]}`);
598
+ }
599
+ }
600
+ return result;
601
+ }
602
+ /**
603
+ * Trace a schema transformation by capturing before/after and logging operations for all changes.
604
+ *
605
+ * This is a helper to wrap transformative functions like:
606
+ * - cleanKnownObjectFunctionsFromMapping
607
+ * - clearAttributesFromMapping
608
+ * - fillInDirectSchemaGapsAndUnknowns
609
+ * - deduplicateFunctionSchemas
610
+ *
611
+ * @param entityName - The entity being traced
612
+ * @param operationName - Name of the transformation (e.g., 'cleanKnownObjectFunctions')
613
+ * @param schema - The schema to transform (will be mutated)
614
+ * @param transformFn - The transformation function to run
615
+ * @param context - Optional context to include in operation logs
616
+ * @returns The schema (same reference, mutated)
617
+ */
618
+ traceSchemaTransform(entityName, operationName, schema, transformFn, context) {
619
+ if (!this.enabled) {
620
+ transformFn(schema);
621
+ return schema;
622
+ }
623
+ // Capture before state
624
+ const before = { ...schema };
625
+ // Run the transformation
626
+ transformFn(schema);
627
+ // Compute diff and log operations
628
+ const diff = computeSchemaDiff(before, schema);
629
+ // Log added paths
630
+ for (const [path, value] of Object.entries(diff.added)) {
631
+ this.operation(entityName, {
632
+ operation: operationName,
633
+ path,
634
+ before: undefined,
635
+ after: value,
636
+ context: { ...context, changeType: 'added' },
637
+ });
638
+ }
639
+ // Log removed paths
640
+ for (const [path, value] of Object.entries(diff.removed)) {
641
+ this.operation(entityName, {
642
+ operation: operationName,
643
+ path,
644
+ before: value,
645
+ after: undefined,
646
+ context: { ...context, changeType: 'removed' },
647
+ });
648
+ }
649
+ // Log changed paths
650
+ for (const [path, { from, to }] of Object.entries(diff.changed)) {
651
+ this.operation(entityName, {
652
+ operation: operationName,
653
+ path,
654
+ before: from,
655
+ after: to,
656
+ context: { ...context, changeType: 'changed' },
657
+ });
658
+ }
659
+ return schema;
660
+ }
661
+ /**
662
+ * Trace a schema transformation where the function returns a new schema (non-mutating).
663
+ *
664
+ * Use this for functions like deduplicateFunctionSchemas that return a new object
665
+ * rather than mutating the input.
666
+ *
667
+ * @param entityName - The entity being traced
668
+ * @param operationName - Name of the transformation
669
+ * @param before - The schema before transformation
670
+ * @param after - The schema after transformation
671
+ * @param context - Optional context to include in operation logs
672
+ */
673
+ traceSchemaTransformResult(entityName, operationName, before, after, context) {
674
+ if (!this.enabled)
675
+ return;
676
+ // Compute diff and log operations
677
+ const diff = computeSchemaDiff(before, after);
678
+ // Log added paths
679
+ for (const [path, value] of Object.entries(diff.added)) {
680
+ this.operation(entityName, {
681
+ operation: operationName,
682
+ path,
683
+ before: undefined,
684
+ after: value,
685
+ context: { ...context, changeType: 'added' },
686
+ });
687
+ }
688
+ // Log removed paths
689
+ for (const [path, value] of Object.entries(diff.removed)) {
690
+ this.operation(entityName, {
691
+ operation: operationName,
692
+ path,
693
+ before: value,
694
+ after: undefined,
695
+ context: { ...context, changeType: 'removed' },
696
+ });
697
+ }
698
+ // Log changed paths
699
+ for (const [path, { from, to }] of Object.entries(diff.changed)) {
700
+ this.operation(entityName, {
701
+ operation: operationName,
702
+ path,
703
+ before: from,
704
+ after: to,
705
+ context: { ...context, changeType: 'changed' },
706
+ });
707
+ }
708
+ }
709
+ /**
710
+ * Trace multiple schemas in a dependency schemas structure.
711
+ * Useful for tracing transformations that apply to all dependency schemas.
712
+ *
713
+ * @param entityName - The entity being traced
714
+ * @param operationName - Name of the transformation
715
+ * @param dependencySchemas - The dependency schemas structure
716
+ * @param transformFn - Function to apply to each schema (signature or returnValue)
717
+ * @param schemaType - Which schema to transform: 'signature', 'returnValue', or 'both'
718
+ */
719
+ traceDependencySchemaTransform(entityName, operationName, dependencySchemas, transformFn, schemaType = 'both') {
720
+ if (!this.enabled) {
721
+ // Still run the transform even if not tracing
722
+ for (const filePath in dependencySchemas) {
723
+ for (const depName in dependencySchemas[filePath]) {
724
+ const depSchema = dependencySchemas[filePath][depName];
725
+ if ((schemaType === 'signature' || schemaType === 'both') &&
726
+ depSchema.signatureSchema) {
727
+ transformFn(depSchema.signatureSchema);
728
+ }
729
+ if ((schemaType === 'returnValue' || schemaType === 'both') &&
730
+ depSchema.returnValueSchema) {
731
+ transformFn(depSchema.returnValueSchema);
732
+ }
733
+ }
734
+ }
735
+ return;
736
+ }
737
+ for (const filePath in dependencySchemas) {
738
+ for (const depName in dependencySchemas[filePath]) {
739
+ const depSchema = dependencySchemas[filePath][depName];
740
+ const depContext = { filePath, dependencyName: depName };
741
+ if ((schemaType === 'signature' || schemaType === 'both') &&
742
+ depSchema.signatureSchema) {
743
+ this.traceSchemaTransform(entityName, operationName, depSchema.signatureSchema, transformFn, { ...depContext, schemaType: 'signature' });
744
+ }
745
+ if ((schemaType === 'returnValue' || schemaType === 'both') &&
746
+ depSchema.returnValueSchema) {
747
+ this.traceSchemaTransform(entityName, operationName, depSchema.returnValueSchema, transformFn, { ...depContext, schemaType: 'returnValue' });
748
+ }
749
+ }
750
+ }
751
+ }
752
+ /**
753
+ * Trace changes to dependency schemas before/after a function call.
754
+ *
755
+ * Use this for functions like enrichArrayTypesFromChildSignatures or
756
+ * enrichUnknownTypesFromSourceEquivalencies that modify dependency schemas in place.
757
+ *
758
+ * @param entityName - The entity being traced
759
+ * @param operationName - Name of the transformation
760
+ * @param dependencySchemas - The dependency schemas to track
761
+ * @param transformFn - The function to run (should mutate dependencySchemas)
762
+ */
763
+ traceDependencySchemaChanges(entityName, operationName, dependencySchemas, transformFn) {
764
+ if (!this.enabled) {
765
+ transformFn();
766
+ return;
767
+ }
768
+ // Capture before state (deep copy of all schemas)
769
+ const beforeState = {};
770
+ for (const filePath in dependencySchemas) {
771
+ beforeState[filePath] = {};
772
+ for (const depName in dependencySchemas[filePath]) {
773
+ const depSchema = dependencySchemas[filePath][depName];
774
+ beforeState[filePath][depName] = {
775
+ sig: { ...(depSchema.signatureSchema || {}) },
776
+ rv: { ...(depSchema.returnValueSchema || {}) },
777
+ };
778
+ }
779
+ }
780
+ // Run the transformation
781
+ transformFn();
782
+ // Compare and log changes
783
+ for (const filePath in dependencySchemas) {
784
+ for (const depName in dependencySchemas[filePath]) {
785
+ const depSchema = dependencySchemas[filePath][depName];
786
+ const before = beforeState[filePath]?.[depName];
787
+ const context = { filePath, dependencyName: depName };
788
+ // Check signature schema changes
789
+ if (depSchema.signatureSchema) {
790
+ const sigBefore = before?.sig || {};
791
+ const diff = computeSchemaDiff(sigBefore, depSchema.signatureSchema);
792
+ for (const [path, value] of Object.entries(diff.added)) {
793
+ this.operation(entityName, {
794
+ operation: operationName,
795
+ path,
796
+ before: undefined,
797
+ after: value,
798
+ context: {
799
+ ...context,
800
+ schemaType: 'signature',
801
+ changeType: 'added',
802
+ },
803
+ });
804
+ }
805
+ for (const [path, { from, to }] of Object.entries(diff.changed)) {
806
+ this.operation(entityName, {
807
+ operation: operationName,
808
+ path,
809
+ before: from,
810
+ after: to,
811
+ context: {
812
+ ...context,
813
+ schemaType: 'signature',
814
+ changeType: 'changed',
815
+ },
816
+ });
817
+ }
818
+ }
819
+ // Check return value schema changes
820
+ if (depSchema.returnValueSchema) {
821
+ const rvBefore = before?.rv || {};
822
+ const diff = computeSchemaDiff(rvBefore, depSchema.returnValueSchema);
823
+ for (const [path, value] of Object.entries(diff.added)) {
824
+ this.operation(entityName, {
825
+ operation: operationName,
826
+ path,
827
+ before: undefined,
828
+ after: value,
829
+ context: {
830
+ ...context,
831
+ schemaType: 'returnValue',
832
+ changeType: 'added',
833
+ },
834
+ });
835
+ }
836
+ for (const [path, { from, to }] of Object.entries(diff.changed)) {
837
+ this.operation(entityName, {
838
+ operation: operationName,
839
+ path,
840
+ before: from,
841
+ after: to,
842
+ context: {
843
+ ...context,
844
+ schemaType: 'returnValue',
845
+ changeType: 'changed',
846
+ },
847
+ });
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
853
+ }
854
+ // ============================================================================
855
+ // Global Instance
856
+ // ============================================================================
857
+ /**
858
+ * Check if tracing is enabled via environment variable.
859
+ */
860
+ function isTracingEnabled() {
861
+ const envValue = process.env.CODEYAM_TRACE_TRANSFORMS;
862
+ return envValue === '1' || envValue === 'true';
863
+ }
864
+ /**
865
+ * Global tracer instance.
866
+ * Enabled via CODEYAM_TRACE_TRANSFORMS=1 environment variable.
867
+ * Output is always written to /tmp/codeyam/transform-trace.json
868
+ */
869
+ export const transformationTracer = new TransformationTracer({
870
+ enabled: isTracingEnabled(),
871
+ outputPath: '/tmp/codeyam/transform-trace.json',
872
+ });
873
+ // Auto-flush on process exit if tracing is enabled and there's data
874
+ process.on('beforeExit', () => {
875
+ if (transformationTracer.isEnabled()) {
876
+ transformationTracer.flush();
877
+ }
878
+ });
879
+ export default transformationTracer;
880
+ //# sourceMappingURL=TransformationTracer.js.map