@codeyam/codeyam-cli 0.1.0-staging.323686 → 0.1.0-staging.415103

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 (683) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +18 -18
  4. package/analyzer-template/packages/ai/index.ts +7 -1
  5. package/analyzer-template/packages/ai/package.json +3 -3
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +62 -18
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +101 -12
  8. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  9. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +409 -50
  10. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +21 -6
  12. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1250 -253
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +31 -3
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +37 -15
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +367 -96
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  26. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  27. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  28. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +393 -8
  29. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
  30. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +145 -5
  31. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  32. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +649 -142
  33. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
  34. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  35. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  36. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  37. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  40. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
  41. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
  42. package/analyzer-template/packages/analyze/index.ts +2 -0
  43. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  44. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +119 -26
  45. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  46. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  47. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  48. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  49. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  50. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  51. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  52. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +89 -9
  53. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +27 -4
  54. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  55. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  56. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  57. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
  58. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  59. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  61. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +61 -13
  62. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
  63. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +312 -19
  64. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
  65. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +591 -75
  66. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  67. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  68. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  69. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  70. package/analyzer-template/packages/aws/package.json +10 -10
  71. package/analyzer-template/packages/database/index.ts +1 -0
  72. package/analyzer-template/packages/database/package.json +1 -1
  73. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  74. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  75. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  76. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  77. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  78. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  79. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -0
  80. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  81. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  82. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  83. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  84. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  85. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  86. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  87. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  88. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  89. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  90. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  91. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  92. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  93. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  94. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  95. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  96. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  97. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  99. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  103. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  105. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  107. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  108. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  109. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  110. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -0
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  116. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  117. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  118. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  119. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  120. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  121. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  122. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  123. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  124. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  127. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  130. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  131. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  132. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  133. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  135. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  139. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  142. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  143. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  145. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  146. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  147. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  148. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  149. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  151. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  152. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  153. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  154. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  155. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  156. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  157. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  159. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/package.json +1 -1
  161. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  162. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  163. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
  164. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  165. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  166. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  167. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  168. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  169. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  170. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  171. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  172. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  173. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  174. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  175. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  176. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  177. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  178. package/analyzer-template/project/constructMockCode.ts +260 -60
  179. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  180. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  181. package/analyzer-template/project/start.ts +3 -0
  182. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  183. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  184. package/analyzer-template/project/writeMockDataTsx.ts +198 -8
  185. package/analyzer-template/project/writeScenarioComponents.ts +170 -29
  186. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  187. package/analyzer-template/tsconfig.json +13 -1
  188. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  189. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  190. package/background/src/lib/virtualized/project/constructMockCode.js +220 -45
  191. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  192. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  193. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  194. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  195. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  196. package/background/src/lib/virtualized/project/start.js +2 -0
  197. package/background/src/lib/virtualized/project/start.js.map +1 -1
  198. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  199. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  200. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  201. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  202. package/background/src/lib/virtualized/project/writeMockDataTsx.js +174 -4
  203. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  204. package/background/src/lib/virtualized/project/writeScenarioComponents.js +143 -27
  205. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  206. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  207. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  208. package/codeyam-cli/scripts/apply-setup.js +386 -9
  209. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  210. package/codeyam-cli/src/cli.js +33 -24
  211. package/codeyam-cli/src/cli.js.map +1 -1
  212. package/codeyam-cli/src/codeyam-cli.js +18 -2
  213. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  214. package/codeyam-cli/src/commands/analyze.js +21 -9
  215. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  216. package/codeyam-cli/src/commands/baseline.js +2 -0
  217. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  218. package/codeyam-cli/src/commands/debug.js +9 -5
  219. package/codeyam-cli/src/commands/debug.js.map +1 -1
  220. package/codeyam-cli/src/commands/default.js +87 -21
  221. package/codeyam-cli/src/commands/default.js.map +1 -1
  222. package/codeyam-cli/src/commands/editor.js +696 -0
  223. package/codeyam-cli/src/commands/editor.js.map +1 -0
  224. package/codeyam-cli/src/commands/init.js +75 -259
  225. package/codeyam-cli/src/commands/init.js.map +1 -1
  226. package/codeyam-cli/src/commands/memory.js +97 -92
  227. package/codeyam-cli/src/commands/memory.js.map +1 -1
  228. package/codeyam-cli/src/commands/recapture.js +2 -0
  229. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  230. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  231. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  232. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  233. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  234. package/codeyam-cli/src/commands/test-startup.js +2 -0
  235. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  236. package/codeyam-cli/src/commands/verify.js +14 -2
  237. package/codeyam-cli/src/commands/verify.js.map +1 -1
  238. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  239. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  240. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  241. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  242. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +154 -86
  243. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  244. package/codeyam-cli/src/utils/analyzer.js +7 -0
  245. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  246. package/codeyam-cli/src/utils/backgroundServer.js +109 -22
  247. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  248. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  249. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  250. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  251. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  252. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  253. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  254. package/codeyam-cli/src/utils/generateReport.js +2 -2
  255. package/codeyam-cli/src/utils/git.js +52 -0
  256. package/codeyam-cli/src/utils/git.js.map +1 -1
  257. package/codeyam-cli/src/utils/install-skills.js +101 -45
  258. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  259. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  260. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  261. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  262. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  263. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  264. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  265. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  266. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  267. package/codeyam-cli/src/utils/progress.js +7 -0
  268. package/codeyam-cli/src/utils/progress.js.map +1 -1
  269. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  270. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  271. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  272. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  273. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  274. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  275. package/codeyam-cli/src/utils/queue/job.js +74 -1
  276. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  277. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  278. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  279. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  280. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  281. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  282. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  283. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  284. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  285. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  286. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  287. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  288. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  289. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  290. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  291. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  292. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  293. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  294. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  295. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  296. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  297. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  298. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  299. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  300. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  301. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  302. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  303. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  304. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  305. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  306. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  307. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  308. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  309. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  310. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  311. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  312. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  313. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  314. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  315. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  316. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  317. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  318. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  319. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  320. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  321. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  322. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  323. package/codeyam-cli/src/utils/rules/index.js +2 -0
  324. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  325. package/codeyam-cli/src/utils/rules/parser.js +16 -29
  326. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  327. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  328. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  329. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  330. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  331. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  332. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  333. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  334. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  335. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  336. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  337. package/codeyam-cli/src/utils/serverState.js +64 -12
  338. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  339. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +61 -43
  340. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  341. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  342. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  343. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  344. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  345. package/codeyam-cli/src/utils/testRunner.js +158 -0
  346. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  347. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  348. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  349. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  350. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  351. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  352. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  353. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  354. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  355. package/codeyam-cli/src/webserver/app/lib/database.js +15 -3
  356. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  357. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  358. package/codeyam-cli/src/webserver/backgroundServer.js +166 -16
  359. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  360. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  361. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-C76mRRiF.js} +1 -1
  364. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-g3saevPb.js} +1 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-CobE682z.js} +1 -1
  366. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  367. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-DYFW3lDD.js} +3 -3
  368. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BU_OAEMP.js} +1 -1
  370. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-ceAyBX-H.js} +1 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-djPLI-WV.js} +3 -8
  372. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-BED4B6sP.js} +1 -1
  373. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-B76aig_2.js} +2 -2
  374. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  375. package/codeyam-cli/src/webserver/build/client/assets/Terminal-BaIiqg_w.js +41 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-C96V0n15.js} +1 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-BpKzcsJz.js} +6 -11
  379. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  386. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  387. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  402. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/book-open-D_nMCFmP.js +6 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-BH2h1Ea2.js} +1 -1
  405. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-C4pqxYJB.js} +12 -12
  406. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DyIKORY6.js} +1 -1
  407. package/codeyam-cli/src/webserver/build/client/assets/copy-NDbZjXao.js +11 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-CMT1jU2q.js} +1 -1
  409. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  410. package/codeyam-cli/src/webserver/build/client/assets/editor-BaC8lHDG.js +7 -0
  411. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-CrjR3zZW.js} +11 -11
  412. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DloHYjtt.js +6 -0
  413. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  414. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  416. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-DTvKq3TY.js} +1 -1
  417. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-cPo8LiG3.js} +1 -1
  418. package/codeyam-cli/src/webserver/build/client/assets/{files-CJ6lTdTA.js → files-DO4CZ16O.js} +1 -1
  419. package/codeyam-cli/src/webserver/build/client/assets/{git-CPTZZ-JZ.js → git-CFCTYk9I.js} +1 -1
  420. package/codeyam-cli/src/webserver/build/client/assets/globals-BH6uYxPM.css +1 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-10oVnAAH.js} +1 -1
  422. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-BcvgDzbZ.js} +1 -1
  423. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-BAXYRVEO.js} +1 -1
  425. package/codeyam-cli/src/webserver/build/client/assets/manifest-fb3128c3.js +1 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/memory-FweZHj5U.js +93 -0
  427. package/codeyam-cli/src/webserver/build/client/assets/pause-DTAcYxBt.js +11 -0
  428. package/codeyam-cli/src/webserver/build/client/assets/root-Dzn8nIkU.js +67 -0
  429. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-fKo7v0Zo.js} +1 -1
  430. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  431. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-B3aOzpCZ.js} +1 -1
  432. package/codeyam-cli/src/webserver/build/client/assets/terminal-BG4heKCG.js +11 -0
  433. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-DtSmdtM4.js} +1 -1
  434. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-ByhSyh0W.js} +1 -1
  435. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  436. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-O-jkvSPx.js} +1 -1
  437. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-9FIWuYfK.js} +1 -1
  438. package/codeyam-cli/src/webserver/build/client/assets/xterm-DMSzMhqy.js +9 -0
  439. package/codeyam-cli/src/webserver/build/server/assets/index-DeSuKbSF.js +1 -0
  440. package/codeyam-cli/src/webserver/build/server/assets/server-build-BbQ8YBP-.js +362 -0
  441. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  442. package/codeyam-cli/src/webserver/build-info.json +5 -5
  443. package/codeyam-cli/src/webserver/devServer.js +39 -5
  444. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  445. package/codeyam-cli/src/webserver/editorProxy.js +272 -0
  446. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  447. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +121 -0
  448. package/codeyam-cli/src/webserver/server.js +177 -1
  449. package/codeyam-cli/src/webserver/server.js.map +1 -1
  450. package/codeyam-cli/src/webserver/terminalServer.js +606 -0
  451. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  452. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  453. package/codeyam-cli/templates/codeyam-dev-mode.md +237 -0
  454. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  455. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  456. package/codeyam-cli/templates/codeyam-editor.md +67 -0
  457. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  458. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  459. package/codeyam-cli/templates/codeyam-new-rule.md +11 -0
  460. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  461. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  462. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  463. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  464. package/codeyam-cli/templates/editor-step-hook.py +143 -0
  465. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  466. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  467. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  468. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  469. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  470. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  471. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  472. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  473. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  474. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  475. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  476. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  477. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  478. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  479. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  480. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  481. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  482. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  483. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  484. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  485. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  486. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  487. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  488. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  489. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  490. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  491. package/codeyam-cli/templates/rule-reflection-hook.py +647 -0
  492. package/codeyam-cli/templates/rules-instructions.md +78 -0
  493. package/package.json +16 -14
  494. package/packages/ai/index.js +3 -2
  495. package/packages/ai/index.js.map +1 -1
  496. package/packages/ai/src/lib/analyzeScope.js +50 -13
  497. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  498. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +76 -12
  499. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  500. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  501. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  502. package/packages/ai/src/lib/astScopes/processExpression.js +317 -44
  503. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  504. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  505. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  506. package/packages/ai/src/lib/completionCall.js +10 -7
  507. package/packages/ai/src/lib/completionCall.js.map +1 -1
  508. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +996 -173
  509. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  510. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  511. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  512. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  513. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  514. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  515. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  516. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +33 -3
  517. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  518. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +36 -11
  519. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  520. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  521. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  522. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  523. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  524. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  525. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  526. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  527. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  528. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  529. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  530. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +309 -84
  531. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  532. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  533. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  534. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  535. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  536. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  537. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  538. package/packages/ai/src/lib/generateEntityScenarioData.js +284 -6
  539. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  540. package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
  541. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  542. package/packages/ai/src/lib/generateExecutionFlows.js +107 -4
  543. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  544. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +447 -80
  545. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  546. package/packages/ai/src/lib/isolateScopes.js +39 -3
  547. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  548. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  549. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  550. package/packages/ai/src/lib/mergeStatements.js +70 -51
  551. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  552. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  553. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  554. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  555. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  556. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  557. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  558. package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
  559. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  560. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  561. package/packages/analyze/index.js +1 -0
  562. package/packages/analyze/index.js.map +1 -1
  563. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  564. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  565. package/packages/analyze/src/lib/ProjectAnalyzer.js +99 -26
  566. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  567. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  568. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  569. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  570. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  571. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  572. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  573. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  574. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  575. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  576. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  577. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  578. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  579. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  580. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  581. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +65 -7
  582. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  583. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -4
  584. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  585. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  586. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  587. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  588. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  589. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  590. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  591. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
  592. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  593. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  594. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  595. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  596. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  597. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  598. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  599. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +56 -10
  600. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  601. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
  602. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  603. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +215 -17
  604. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  605. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
  606. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  607. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +494 -56
  608. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  609. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  610. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  611. package/packages/analyze/src/lib/index.js +1 -0
  612. package/packages/analyze/src/lib/index.js.map +1 -1
  613. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  614. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  615. package/packages/database/index.js +1 -0
  616. package/packages/database/index.js.map +1 -1
  617. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  618. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  619. package/packages/database/src/lib/analysisToDb.js +1 -1
  620. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  621. package/packages/database/src/lib/branchToDb.js +1 -1
  622. package/packages/database/src/lib/branchToDb.js.map +1 -1
  623. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  624. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  625. package/packages/database/src/lib/commitToDb.js +1 -1
  626. package/packages/database/src/lib/commitToDb.js.map +1 -1
  627. package/packages/database/src/lib/fileToDb.js +1 -1
  628. package/packages/database/src/lib/fileToDb.js.map +1 -1
  629. package/packages/database/src/lib/kysely/db.js +8 -0
  630. package/packages/database/src/lib/kysely/db.js.map +1 -1
  631. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  632. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  633. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  634. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  635. package/packages/database/src/lib/loadCommits.js +23 -13
  636. package/packages/database/src/lib/loadCommits.js.map +1 -1
  637. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  638. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  639. package/packages/database/src/lib/projectToDb.js +1 -1
  640. package/packages/database/src/lib/projectToDb.js.map +1 -1
  641. package/packages/database/src/lib/saveFiles.js +1 -1
  642. package/packages/database/src/lib/saveFiles.js.map +1 -1
  643. package/packages/database/src/lib/scenarioToDb.js +1 -1
  644. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  645. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  646. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  647. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  648. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  649. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  650. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  651. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  652. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  653. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  654. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  655. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  656. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  657. package/scripts/finalize-analyzer.cjs +8 -76
  658. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  659. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  660. package/codeyam-cli/src/commands/list.js +0 -31
  661. package/codeyam-cli/src/commands/list.js.map +0 -1
  662. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  663. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  664. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  665. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  666. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +0 -34
  667. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  668. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +0 -1
  669. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +0 -6
  670. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +0 -6
  671. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  672. package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
  673. package/codeyam-cli/src/webserver/build/client/assets/manifest-7522edd4.js +0 -1
  674. package/codeyam-cli/src/webserver/build/client/assets/memory-yxFcrxBX.js +0 -92
  675. package/codeyam-cli/src/webserver/build/client/assets/root-eVAaavTS.js +0 -62
  676. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  677. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  678. package/codeyam-cli/src/webserver/build/server/assets/index-DVzYx8PN.js +0 -1
  679. package/codeyam-cli/src/webserver/build/server/assets/server-build-4Cr0uToj.js +0 -257
  680. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  681. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  682. package/codeyam-cli/templates/codeyam:memory.md +0 -462
  683. package/codeyam-cli/templates/codeyam:new-rule.md +0 -13
@@ -16,6 +16,8 @@ import { awsLog } from '~codeyam/utils';
16
16
  import gatherDataForMocks from './gatherDataForMocks';
17
17
  import enrichArrayTypesFromChildSignatures from './enrichArrayTypesFromChildSignatures';
18
18
  import enrichUnknownTypesFromSourceEquivalencies from './enrichUnknownTypesFromSourceEquivalencies';
19
+ import { transformationTracer } from './TransformationTracer';
20
+ // import propagateArrayItemSchemas from './propagateArrayItemSchemas';
19
21
  export interface GenerateDataStructureArgs {
20
22
  entity: Entity;
21
23
  dependentAnalyses: ReadonlyAnalysisMap;
@@ -162,6 +164,25 @@ export default function generateDataStructure({
162
164
  return acc;
163
165
  }, {} as ReadonlyAnalysisMap);
164
166
 
167
+ // Include same-file child components in nonMockedDependentAnalyses.
168
+ // Same-file components (e.g., AgentCard defined in the same file as AgentTranscriptsPage)
169
+ // are NOT in importedExports, so the reduce above never includes them.
170
+ // But they ARE in dependentAnalyses and their full signatureSchema (with all prop fields)
171
+ // needs to be merged into the parent's dependencySchemas for array enrichment to work.
172
+
173
+ const sameFileAnalyses = dependentAnalyses[entity.filePath];
174
+ if (sameFileAnalyses) {
175
+ for (const name in sameFileAnalyses) {
176
+ if (name === entity.name) continue;
177
+ if (nonMockedDependentAnalyses[entity.filePath]?.[name]) continue;
178
+ const childAnalysis = sameFileAnalyses[name];
179
+ if (childAnalysis?.entityType === 'visual') {
180
+ nonMockedDependentAnalyses[entity.filePath] ||= {};
181
+ nonMockedDependentAnalyses[entity.filePath][name] = childAnalysis;
182
+ }
183
+ }
184
+ }
185
+
165
186
  // For non-mocked child components (like visual components), include their mocked
166
187
  // dependencies in allImportedExports. This ensures that when a parent component
167
188
  // renders a child that uses the same hook with different destructure patterns,
@@ -440,6 +461,29 @@ export default function generateDataStructure({
440
461
 
441
462
  const { isolatedDataStructure } = entity.metadata;
442
463
 
464
+ if (!isolatedDataStructure) {
465
+ awsLog(
466
+ 'CodeYam: Skipping data structure generation — isolatedDataStructure is undefined (scope analysis may have failed)',
467
+ {
468
+ entityName: entity.name,
469
+ filePath: entity.filePath,
470
+ },
471
+ );
472
+ return analysis;
473
+ }
474
+
475
+ // Transformation tracing: start entity and capture isolated data structure
476
+ transformationTracer.startEntity({
477
+ name: entity.name,
478
+ entityType: entity.entityType,
479
+ filePath: entity.filePath,
480
+ });
481
+ transformationTracer.snapshot(entity.name, 'isolated', {
482
+ signatureSchema: isolatedDataStructure.signatureSchema,
483
+ returnValueSchema: isolatedDataStructure.returnValueSchema,
484
+ dependencySchemas: isolatedDataStructure.dependencySchemas,
485
+ });
486
+
443
487
  const mergedDataStructure = mergeInDependentDataStructure({
444
488
  importedExports: allImportedExports,
445
489
  dependentAnalyses: nonMockedDependentAnalyses,
@@ -457,6 +501,13 @@ export default function generateDataStructure({
457
501
  mergedDataStructure.environmentVariables =
458
502
  isolatedDataStructure.environmentVariables || [];
459
503
 
504
+ // Transformation tracing: capture merged data structure
505
+ transformationTracer.snapshot(entity.name, 'merged', {
506
+ signatureSchema: mergedDataStructure.signatureSchema,
507
+ returnValueSchema: mergedDataStructure.returnValueSchema,
508
+ dependencySchemas: mergedDataStructure.dependencySchemas,
509
+ });
510
+
460
511
  // Merge collected child dependency schemas into mergedDataStructure.
461
512
  // This ensures that when gatherDataForMocks looks up schemas for child imports,
462
513
  // the child's schemas are available.
@@ -469,11 +520,34 @@ export default function generateDataStructure({
469
520
 
470
521
  if (existingSchema) {
471
522
  // Merge schemas - child schemas add to parent schemas
523
+ // But prefer more specific types (without | undefined) when both exist
524
+ const mergedSignatureSchema = { ...existingSchema.signatureSchema };
525
+ for (const path in childSchema.signatureSchema) {
526
+ const existingType = mergedSignatureSchema[path];
527
+ const childType = childSchema.signatureSchema[path];
528
+ if (!existingType) {
529
+ mergedSignatureSchema[path] = childType;
530
+ } else {
531
+ // Prefer the more specific (narrower) type
532
+ const existingIsOptional =
533
+ existingType.includes('| undefined') ||
534
+ existingType.includes('| null');
535
+ const childIsOptional =
536
+ childType.includes('| undefined') ||
537
+ childType.includes('| null');
538
+ if (childIsOptional && !existingIsOptional) {
539
+ // Keep existing - it's more specific
540
+ } else if (!childIsOptional && existingIsOptional) {
541
+ // Use child - it's more specific
542
+ mergedSignatureSchema[path] = childType;
543
+ } else {
544
+ // Same specificity - use child (original behavior)
545
+ mergedSignatureSchema[path] = childType;
546
+ }
547
+ }
548
+ }
472
549
  mergedDataStructure.dependencySchemas[schemaFilePath][schemaName] = {
473
- signatureSchema: {
474
- ...existingSchema.signatureSchema,
475
- ...childSchema.signatureSchema,
476
- },
550
+ signatureSchema: mergedSignatureSchema,
477
551
  returnValueSchema: mergeJsonTypeDefinitions(
478
552
  existingSchema.returnValueSchema as Record<string, unknown>,
479
553
  childSchema.returnValueSchema as Record<string, unknown>,
@@ -487,6 +561,13 @@ export default function generateDataStructure({
487
561
  }
488
562
  }
489
563
 
564
+ // Transformation tracing: capture after child schemas merged
565
+ transformationTracer.snapshot(entity.name, 'childSchemasMerged', {
566
+ signatureSchema: mergedDataStructure.signatureSchema,
567
+ returnValueSchema: mergedDataStructure.returnValueSchema,
568
+ dependencySchemas: mergedDataStructure.dependencySchemas,
569
+ });
570
+
490
571
  // console.info(
491
572
  // 'CODEYAM DEBUG: end merge',
492
573
  // JSON.stringify(
@@ -509,32 +590,183 @@ export default function generateDataStructure({
509
590
 
510
591
  // Deduplicate function schemas in the merged data structure
511
592
  // The merge process might introduce duplicates even if individual schemas were clean
593
+ // Trace deduplication of signatureSchema
594
+ const sigBefore = { ...mergedDataStructure.signatureSchema };
512
595
  mergedDataStructure.signatureSchema = deduplicateFunctionSchemas(
513
596
  mergedDataStructure.signatureSchema,
514
597
  );
598
+ transformationTracer.traceSchemaTransformResult(
599
+ entity.name,
600
+ 'deduplicateFunctionSchemas',
601
+ sigBefore,
602
+ mergedDataStructure.signatureSchema,
603
+ { schemaType: 'signature' },
604
+ );
605
+
606
+ // Trace deduplication of returnValueSchema
607
+ const rvBefore = { ...mergedDataStructure.returnValueSchema };
515
608
  mergedDataStructure.returnValueSchema = deduplicateFunctionSchemas(
516
609
  mergedDataStructure.returnValueSchema,
517
610
  );
611
+ transformationTracer.traceSchemaTransformResult(
612
+ entity.name,
613
+ 'deduplicateFunctionSchemas',
614
+ rvBefore,
615
+ mergedDataStructure.returnValueSchema,
616
+ { schemaType: 'returnValue' },
617
+ );
518
618
 
519
- // Also deduplicate dependency schemas
619
+ // Also deduplicate dependency schemas and clear known attributes
520
620
  for (const filePath in mergedDataStructure.dependencySchemas) {
521
- for (const entityName in mergedDataStructure.dependencySchemas[
621
+ for (const depEntityName in mergedDataStructure.dependencySchemas[
522
622
  filePath
523
623
  ]) {
524
624
  const depSchema =
525
- mergedDataStructure.dependencySchemas[filePath][entityName];
625
+ mergedDataStructure.dependencySchemas[filePath][depEntityName];
626
+
627
+ // Trace deduplication of dependency signatureSchema
628
+ const depSigBefore = { ...depSchema.signatureSchema };
526
629
  depSchema.signatureSchema = deduplicateFunctionSchemas(
527
630
  depSchema.signatureSchema,
528
631
  );
632
+ transformationTracer.traceSchemaTransformResult(
633
+ entity.name,
634
+ 'deduplicateFunctionSchemas',
635
+ depSigBefore,
636
+ depSchema.signatureSchema,
637
+ { filePath, dependencyName: depEntityName, schemaType: 'signature' },
638
+ );
639
+
640
+ // Trace deduplication of dependency returnValueSchema
641
+ const depRvBefore = { ...depSchema.returnValueSchema };
529
642
  depSchema.returnValueSchema = deduplicateFunctionSchemas(
530
643
  depSchema.returnValueSchema,
531
644
  );
645
+ transformationTracer.traceSchemaTransformResult(
646
+ entity.name,
647
+ 'deduplicateFunctionSchemas',
648
+ depRvBefore,
649
+ depSchema.returnValueSchema,
650
+ {
651
+ filePath,
652
+ dependencyName: depEntityName,
653
+ schemaType: 'returnValue',
654
+ },
655
+ );
532
656
 
533
- clearAttributesFromMapping(depSchema.signatureSchema);
534
- clearAttributesFromMapping(depSchema.returnValueSchema);
657
+ // Infer function types from child component usage BEFORE fillInSchemaGapsAndUnknowns.
658
+ // When a hook returns a property with type 'unknown' that is passed to a child
659
+ // component which calls it as a function (e.g., isEntityPending(entity)),
660
+ // promote it to 'function'. Without this, name heuristics like isLikelyBoolean
661
+ // would mistype "isEntityPending" as boolean because of the "is" prefix.
662
+ //
663
+ // sourceEquivalencies are in isolatedDataStructure.dependencySchemas (not in
664
+ // mergedDataStructure.dependencySchemas — they're dropped during the merge).
665
+ // The child's signatureSchema (with function call evidence) IS in the merged schemas.
666
+ {
667
+ const isolatedDepSchemas =
668
+ entity.metadata.isolatedDataStructure?.dependencySchemas;
669
+ if (isolatedDepSchemas) {
670
+ for (const childFilePath in isolatedDepSchemas) {
671
+ const childIsolated = isolatedDepSchemas[childFilePath];
672
+ for (const childName in childIsolated) {
673
+ const sourceEq = childIsolated[childName]?.sourceEquivalencies;
674
+ if (!sourceEq) continue;
675
+
676
+ // Get the child's signatureSchema from the MERGED schemas (richer)
677
+ const mergedChildSchema =
678
+ mergedDataStructure.dependencySchemas[childFilePath]?.[
679
+ childName
680
+ ];
681
+ const sigSchema = mergedChildSchema?.signatureSchema;
682
+ if (!sigSchema) continue;
683
+
684
+ for (const childPath in sourceEq) {
685
+ for (const source of sourceEq[childPath]) {
686
+ const fcrvSuffix = '.functionCallReturnValue.';
687
+ const fcrvIndex = source.schemaPath.indexOf(fcrvSuffix);
688
+ if (fcrvIndex === -1) continue;
689
+
690
+ const propName = source.schemaPath.slice(
691
+ fcrvIndex + fcrvSuffix.length,
692
+ );
693
+
694
+ // Find the corresponding child signature path
695
+ const entityCallPrefix = childName + '().';
696
+ const sigPathBase = childPath.startsWith(entityCallPrefix)
697
+ ? childPath.slice(entityCallPrefix.length)
698
+ : childPath;
699
+
700
+ // Check if the child's signatureSchema has a function call version
701
+ let isFunction = false;
702
+ for (const sigKey in sigSchema) {
703
+ if (
704
+ sigKey.startsWith(sigPathBase + '(') &&
705
+ sigSchema[sigKey] === 'function'
706
+ ) {
707
+ isFunction = true;
708
+ break;
709
+ }
710
+ }
711
+
712
+ if (isFunction) {
713
+ for (const rvKey in depSchema.returnValueSchema) {
714
+ if (
715
+ rvKey.endsWith('.' + propName) &&
716
+ depSchema.returnValueSchema[rvKey] === 'unknown'
717
+ ) {
718
+ depSchema.returnValueSchema[rvKey] = 'function';
719
+ }
720
+ }
721
+ }
722
+ }
723
+ }
724
+ }
725
+ }
726
+ }
727
+ }
728
+
729
+ // Fill in type gaps BEFORE clearing attributes, so evidence like .includes()
730
+ // is used for type inference before being deleted
731
+
732
+ depSchema.signatureSchema = fillInDirectSchemaGapsAndUnknowns({
733
+ schema: depSchema.signatureSchema,
734
+ });
735
+
736
+ depSchema.returnValueSchema = fillInDirectSchemaGapsAndUnknowns({
737
+ schema: depSchema.returnValueSchema,
738
+ });
739
+
740
+ // Trace clearAttributesFromMapping on dependency schemas
741
+ transformationTracer.traceSchemaTransform(
742
+ entity.name,
743
+ 'clearAttributesFromMapping',
744
+ depSchema.signatureSchema,
745
+ clearAttributesFromMapping,
746
+ { filePath, dependencyName: depEntityName, schemaType: 'signature' },
747
+ );
748
+
749
+ transformationTracer.traceSchemaTransform(
750
+ entity.name,
751
+ 'clearAttributesFromMapping',
752
+ depSchema.returnValueSchema,
753
+ clearAttributesFromMapping,
754
+ {
755
+ filePath,
756
+ dependencyName: depEntityName,
757
+ schemaType: 'returnValue',
758
+ },
759
+ );
535
760
  }
536
761
  }
537
762
 
763
+ // Transformation tracing: capture after deduplication
764
+ transformationTracer.snapshot(entity.name, 'deduplicated', {
765
+ signatureSchema: mergedDataStructure.signatureSchema,
766
+ returnValueSchema: mergedDataStructure.returnValueSchema,
767
+ dependencySchemas: mergedDataStructure.dependencySchemas,
768
+ });
769
+
538
770
  analysis.metadata ||= {};
539
771
  analysis.metadata.mergedDataStructure = mergedDataStructure;
540
772
 
@@ -543,29 +775,70 @@ export default function generateDataStructure({
543
775
  // expects survey.updatedAt, the array element type includes updatedAt.
544
776
  // Uses usageEquivalencies to trace data flow and only enrich arrays with fields
545
777
  // from children that actually receive elements from that specific array.
546
- enrichArrayTypesFromChildSignatures(
547
- allImportedExports,
778
+ transformationTracer.traceDependencySchemaChanges(
779
+ entity.name,
780
+ 'enrichArrayTypesFromChildSignatures',
548
781
  mergedDataStructure.dependencySchemas,
549
- mergedDataStructure.usageEquivalencies,
782
+ () =>
783
+ enrichArrayTypesFromChildSignatures(
784
+ allImportedExports,
785
+ mergedDataStructure.dependencySchemas,
786
+ mergedDataStructure.usageEquivalencies,
787
+ ),
550
788
  );
551
789
 
790
+ // Transformation tracing: capture after array types enriched
791
+ transformationTracer.snapshot(entity.name, 'arrayTypesEnriched', {
792
+ signatureSchema: mergedDataStructure.signatureSchema,
793
+ returnValueSchema: mergedDataStructure.returnValueSchema,
794
+ dependencySchemas: mergedDataStructure.dependencySchemas,
795
+ });
796
+
552
797
  // Enrich mocked dependency unknown types using sourceEquivalencies
553
798
  // When a mocked dependency returns unknown, but that data flows to a child component
554
799
  // with a known type, propagate the type back to the mocked dependency.
555
800
  // This prevents fillInDirectSchemaGapsAndUnknowns from guessing incorrectly
556
801
  // (e.g., 'data' becoming 'number' because pluralize thinks it's plural)
557
- enrichUnknownTypesFromSourceEquivalencies(
558
- isolatedDataStructure.dependencySchemas || {},
802
+ transformationTracer.traceDependencySchemaChanges(
803
+ entity.name,
804
+ 'enrichUnknownTypesFromSourceEquivalencies',
559
805
  mergedDataStructure.dependencySchemas,
560
- allImportedExports,
806
+ () =>
807
+ enrichUnknownTypesFromSourceEquivalencies(
808
+ isolatedDataStructure.dependencySchemas || {},
809
+ mergedDataStructure.dependencySchemas,
810
+ allImportedExports,
811
+ ),
561
812
  );
562
813
 
814
+ // Transformation tracing: capture after unknown types enriched
815
+ transformationTracer.snapshot(entity.name, 'unknownTypesEnriched', {
816
+ signatureSchema: mergedDataStructure.signatureSchema,
817
+ returnValueSchema: mergedDataStructure.returnValueSchema,
818
+ dependencySchemas: mergedDataStructure.dependencySchemas,
819
+ });
820
+
821
+ // DISABLED: Testing if ternary fix eliminates the need for this heuristic
822
+ // Propagate array item schemas between arrays that likely have the same type.
823
+ // When one array (e.g., entities) has item schema traced but another similar array
824
+ // (e.g., currentEntities) doesn't (because it's only used in an OR expression fallback),
825
+ // copy the item schema from the rich array to the empty one.
826
+ // propagateArrayItemSchemas(mergedDataStructure.dependencySchemas);
827
+
563
828
  let dataForMocks = gatherDataForMocks(
564
829
  allImportedExports,
565
830
  mergedDataStructure.dependencySchemas,
566
831
  { entityName: entity.name },
567
832
  );
568
833
 
834
+ // Transformation tracing: capture after dataForMocks gathered
835
+ transformationTracer.snapshot(entity.name, 'dataForMocksGathered', {
836
+ signatureSchema: mergedDataStructure.signatureSchema,
837
+ returnValueSchema: mergedDataStructure.returnValueSchema,
838
+ dependencySchemas: mergedDataStructure.dependencySchemas,
839
+ dataForMocks,
840
+ });
841
+
569
842
  // Merge dataForMocks from non-mocked child analyses to include transitive dependency data.
570
843
  // This handles cases where grandchild trpc calls aren't in allImportedExports because
571
844
  // the grandchild's analysis wasn't in dependentAnalyses.
@@ -587,11 +860,25 @@ export default function generateDataStructure({
587
860
  }
588
861
  }
589
862
 
590
- const finalizedArgumentsSchema = fillInDirectSchemaGapsAndUnknowns({
591
- schema: { ...mergedDataStructure.signatureSchema },
592
- });
863
+ const finalizedArgumentsSchema = { ...mergedDataStructure.signatureSchema };
864
+
865
+ // Trace fillInDirectSchemaGapsAndUnknowns
866
+ transformationTracer.traceSchemaTransform(
867
+ entity.name,
868
+ 'fillInDirectSchemaGapsAndUnknowns',
869
+ finalizedArgumentsSchema,
870
+ (schema) => fillInDirectSchemaGapsAndUnknowns({ schema }),
871
+ { stage: 'finalization' },
872
+ );
593
873
 
594
- clearAttributesFromMapping(finalizedArgumentsSchema);
874
+ // Trace clearAttributesFromMapping
875
+ transformationTracer.traceSchemaTransform(
876
+ entity.name,
877
+ 'clearAttributesFromMapping',
878
+ finalizedArgumentsSchema,
879
+ clearAttributesFromMapping,
880
+ { stage: 'finalization' },
881
+ );
595
882
 
596
883
  const argumentsSchema = convertDotNotation(finalizedArgumentsSchema)
597
884
  .signature as JsonTypeDefinition[];
@@ -601,6 +888,12 @@ export default function generateDataStructure({
601
888
  dataForMocks,
602
889
  };
603
890
 
891
+ // Transformation tracing: capture final scenariosDataStructure
892
+ transformationTracer.snapshot(entity.name, 'finalized', {
893
+ signatureSchema: finalizedArgumentsSchema,
894
+ dataForMocks,
895
+ });
896
+
604
897
  return analysis;
605
898
  } catch (e) {
606
899
  awsLog('CodeYam Error: Error generating data structure', {
@@ -65,6 +65,10 @@ export default async function generateExecutionFlows({
65
65
  }
66
66
 
67
67
  if (!analysis.metadata.executionFlows) {
68
+ console.log(
69
+ `[GenerateExecutionFlows] Starting for ${entity.name} (${entity.filePath})`,
70
+ );
71
+
68
72
  // Build childEntityMetadata from dependentAnalyses for child flow merging
69
73
  // This maps child component names to their metadata (specifically isolatedDataStructure)
70
74
  const childEntityMetadata = buildChildEntityMetadata(
@@ -72,6 +76,16 @@ export default async function generateExecutionFlows({
72
76
  dependentAnalyses,
73
77
  );
74
78
 
79
+ const childCount = Object.keys(childEntityMetadata).length;
80
+ console.log(
81
+ `[GenerateExecutionFlows] Built childEntityMetadata with ${childCount} children`,
82
+ );
83
+ if (childCount > 0) {
84
+ console.log(
85
+ `[GenerateExecutionFlows] Will merge flows from children: [${Object.keys(childEntityMetadata).join(', ')}]`,
86
+ );
87
+ }
88
+
75
89
  const {
76
90
  result: { executionFlows, llmCall: executionFlowsLLMCall },
77
91
  } = await measureAndReportExecutionTime(
@@ -80,15 +94,24 @@ export default async function generateExecutionFlows({
80
94
  entity,
81
95
  mergedDataStructure: analysis.metadata.mergedDataStructure,
82
96
  model,
83
- childEntityMetadata:
84
- Object.keys(childEntityMetadata).length > 0
85
- ? childEntityMetadata
86
- : undefined,
97
+ childEntityMetadata: childCount > 0 ? childEntityMetadata : undefined,
87
98
  }),
88
99
  `Generating execution flows`,
89
100
  updateProgress,
90
101
  );
91
102
 
103
+ console.log(
104
+ `[GenerateExecutionFlows] Generated ${executionFlows.length} execution flows for ${entity.name}`,
105
+ );
106
+ for (const flow of executionFlows) {
107
+ const reqValues = flow.requiredValues
108
+ .map((rv) => `${rv.attributePath}=${rv.value}`)
109
+ .join(', ');
110
+ console.log(
111
+ `[GenerateExecutionFlows] - Flow '${flow.id}': ${flow.name} [${reqValues}]`,
112
+ );
113
+ }
114
+
92
115
  analysis.metadata.executionFlows = executionFlows;
93
116
 
94
117
  if (executionFlowsLLMCall) {
@@ -114,7 +137,14 @@ export function buildChildEntityMetadata(
114
137
  ): Record<string, Entity['metadata']> {
115
138
  const childEntityMetadata: Record<string, Entity['metadata']> = {};
116
139
 
140
+ console.log(
141
+ `[BuildChildMetadata] Starting for entity: ${entity.name} (${entity.filePath})`,
142
+ );
143
+
117
144
  if (!dependentAnalyses) {
145
+ console.log(
146
+ `[BuildChildMetadata] No dependentAnalyses provided, returning empty`,
147
+ );
118
148
  return childEntityMetadata;
119
149
  }
120
150
 
@@ -122,18 +152,54 @@ export function buildChildEntityMetadata(
122
152
  entity.metadata?.isolatedDataStructure?.childBoundaryGatingConditions;
123
153
 
124
154
  if (!childBoundaryGatingConditions) {
155
+ console.log(
156
+ `[BuildChildMetadata] No childBoundaryGatingConditions found in isolatedDataStructure`,
157
+ );
158
+ console.log(
159
+ `[BuildChildMetadata] isolatedDataStructure keys: ${Object.keys(entity.metadata?.isolatedDataStructure ?? {}).join(', ') || 'none'}`,
160
+ );
125
161
  return childEntityMetadata;
126
162
  }
127
163
 
164
+ const childNames = Object.keys(childBoundaryGatingConditions);
165
+ console.log(
166
+ `[BuildChildMetadata] Found ${childNames.length} children in childBoundaryGatingConditions: [${childNames.join(', ')}]`,
167
+ );
168
+
169
+ // Log gating conditions for each child
170
+ for (const [childName, conditions] of Object.entries(
171
+ childBoundaryGatingConditions,
172
+ )) {
173
+ const isUnconditional = conditions.some(
174
+ (c) => c.location === 'unconditional',
175
+ );
176
+ console.log(
177
+ `[BuildChildMetadata] Child '${childName}': ${conditions.length} gating conditions, unconditional=${isUnconditional}`,
178
+ );
179
+ for (const condition of conditions) {
180
+ console.log(
181
+ `[BuildChildMetadata] - path='${condition.path}' location='${condition.location}' isNegated=${condition.isNegated ?? false}`,
182
+ );
183
+ }
184
+ }
185
+
128
186
  const importedExports = entity.metadata?.importedExports ?? [];
187
+ console.log(
188
+ `[BuildChildMetadata] Entity has ${importedExports.length} importedExports`,
189
+ );
190
+
191
+ for (const childName of childNames) {
192
+ console.log(`[BuildChildMetadata] Looking up child '${childName}'...`);
129
193
 
130
- for (const childName of Object.keys(childBoundaryGatingConditions)) {
131
194
  // Find the child in importedExports to get its file path
132
195
  const importedExport = importedExports.find(
133
196
  (ie) => ie.name === childName || ie.resolvedName === childName,
134
197
  );
135
198
 
136
199
  if (!importedExport) {
200
+ console.log(
201
+ `[BuildChildMetadata] Child '${childName}' NOT FOUND in importedExports`,
202
+ );
137
203
  continue;
138
204
  }
139
205
 
@@ -142,15 +208,57 @@ export function buildChildEntityMetadata(
142
208
  importedExport.resolvedFilePath ?? importedExport.filePath;
143
209
  const lookupName = importedExport.resolvedName ?? importedExport.name;
144
210
 
211
+ console.log(
212
+ `[BuildChildMetadata] Child '${childName}' found in importedExports: lookupPath='${lookupPath}' lookupName='${lookupName}'`,
213
+ );
214
+
145
215
  // Look up the child's analysis in dependentAnalyses
146
216
  const childAnalysis = dependentAnalyses[lookupPath]?.[lookupName];
147
217
 
148
- if (childAnalysis?.entity?.metadata) {
149
- // Cast to mutable type - the metadata is only read, not modified
150
- childEntityMetadata[childName] = childAnalysis.entity
151
- .metadata as Entity['metadata'];
218
+ if (!childAnalysis) {
219
+ console.log(
220
+ `[BuildChildMetadata] Child '${childName}' analysis NOT FOUND in dependentAnalyses[${lookupPath}][${lookupName}]`,
221
+ );
222
+ console.log(
223
+ `[BuildChildMetadata] Available paths in dependentAnalyses: [${Object.keys(dependentAnalyses).slice(0, 10).join(', ')}...]`,
224
+ );
225
+ continue;
226
+ }
227
+
228
+ if (!childAnalysis.entity?.metadata) {
229
+ console.log(
230
+ `[BuildChildMetadata] Child '${childName}' analysis found but entity.metadata is missing`,
231
+ );
232
+ continue;
233
+ }
234
+
235
+ // Log what we found in the child's metadata
236
+ const childIsolated = childAnalysis.entity.metadata.isolatedDataStructure;
237
+ const childConditionalUsages = childIsolated?.conditionalUsages ?? {};
238
+ const childConditionalCount = Object.keys(childConditionalUsages).length;
239
+
240
+ console.log(
241
+ `[BuildChildMetadata] Child '${childName}' FOUND with metadata:`,
242
+ );
243
+ console.log(
244
+ `[BuildChildMetadata] - conditionalUsages: ${childConditionalCount} paths`,
245
+ );
246
+ if (childConditionalCount > 0) {
247
+ for (const [path, usages] of Object.entries(childConditionalUsages)) {
248
+ console.log(
249
+ `[BuildChildMetadata] - '${path}': ${(usages as any[]).length} usages`,
250
+ );
251
+ }
152
252
  }
253
+
254
+ // Cast to mutable type - the metadata is only read, not modified
255
+ childEntityMetadata[childName] = childAnalysis.entity
256
+ .metadata as Entity['metadata'];
153
257
  }
154
258
 
259
+ console.log(
260
+ `[BuildChildMetadata] RESULT: Found metadata for ${Object.keys(childEntityMetadata).length} children: [${Object.keys(childEntityMetadata).join(', ')}]`,
261
+ );
262
+
155
263
  return childEntityMetadata;
156
264
  }