@codeyam/codeyam-cli 0.1.0-staging.483fdc2 → 0.1.0-staging.49751cb

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 (1065) 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 +24 -24
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/package.json +3 -3
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +23 -1
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  8. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  11. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  12. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  13. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  15. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +624 -22
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +27 -8
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +2 -2
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +20 -1
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +84 -19
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  27. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  28. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  29. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +124 -7
  30. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +101 -2
  31. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  32. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  33. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  34. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  35. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  36. package/analyzer-template/packages/analyze/index.ts +6 -1
  37. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  38. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  39. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  40. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +97 -5
  41. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -36
  42. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  43. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +22 -6
  44. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  45. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  46. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  47. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  48. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  49. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  50. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  51. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +4 -0
  52. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +59 -26
  53. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +467 -24
  54. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  55. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1750 -1194
  56. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  57. package/analyzer-template/packages/aws/package.json +10 -10
  58. package/analyzer-template/packages/database/index.ts +1 -0
  59. package/analyzer-template/packages/database/package.json +4 -4
  60. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  61. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  62. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  63. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  64. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  65. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  66. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -0
  67. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  68. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  69. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  70. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  71. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  72. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  73. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  74. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  75. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  76. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  77. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  78. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  79. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  80. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  81. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  82. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  83. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  84. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  85. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  87. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  97. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  99. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  101. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -0
  103. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  105. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  106. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  107. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  108. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  109. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  110. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  117. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  119. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  120. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  121. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  122. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  123. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  124. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  127. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.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 +76 -90
  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/enums/ProjectFramework.d.ts +2 -0
  153. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  154. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  155. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  156. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  157. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  159. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/package.json +1 -1
  161. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  162. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  163. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  164. package/analyzer-template/packages/ui-components/package.json +1 -1
  165. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  166. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  167. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  168. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  169. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  170. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  171. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  172. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  173. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  174. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  175. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +120 -4
  176. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  177. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +148 -3
  178. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  179. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  180. package/analyzer-template/project/constructMockCode.ts +206 -51
  181. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  182. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  183. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  184. package/analyzer-template/project/start.ts +3 -0
  185. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  186. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  187. package/analyzer-template/project/writeMockDataTsx.ts +136 -17
  188. package/analyzer-template/project/writeScenarioComponents.ts +170 -29
  189. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  190. package/analyzer-template/tsconfig.json +13 -1
  191. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  192. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  193. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  194. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  195. package/background/src/lib/virtualized/project/constructMockCode.js +175 -42
  196. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  197. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  198. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  199. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  200. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  201. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  202. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  203. package/background/src/lib/virtualized/project/start.js +2 -0
  204. package/background/src/lib/virtualized/project/start.js.map +1 -1
  205. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  206. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  207. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  208. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  209. package/background/src/lib/virtualized/project/writeMockDataTsx.js +114 -13
  210. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  211. package/background/src/lib/virtualized/project/writeScenarioComponents.js +143 -27
  212. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  213. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  214. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  215. package/codeyam-cli/scripts/apply-setup.js +252 -21
  216. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  217. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  218. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  219. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  220. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  221. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  222. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  223. package/codeyam-cli/src/cli.js +57 -24
  224. package/codeyam-cli/src/cli.js.map +1 -1
  225. package/codeyam-cli/src/codeyam-cli.js +18 -2
  226. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  227. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  228. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  229. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  230. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  231. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  232. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  233. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  234. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  235. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  236. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  237. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  238. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  239. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +137 -47
  240. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  241. package/codeyam-cli/src/commands/analyze.js +21 -9
  242. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  243. package/codeyam-cli/src/commands/baseline.js +2 -0
  244. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  245. package/codeyam-cli/src/commands/debug.js +2 -0
  246. package/codeyam-cli/src/commands/debug.js.map +1 -1
  247. package/codeyam-cli/src/commands/default.js +44 -21
  248. package/codeyam-cli/src/commands/default.js.map +1 -1
  249. package/codeyam-cli/src/commands/editor.js +6313 -0
  250. package/codeyam-cli/src/commands/editor.js.map +1 -0
  251. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  252. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  253. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  254. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  255. package/codeyam-cli/src/commands/init.js +168 -292
  256. package/codeyam-cli/src/commands/init.js.map +1 -1
  257. package/codeyam-cli/src/commands/memory.js +97 -92
  258. package/codeyam-cli/src/commands/memory.js.map +1 -1
  259. package/codeyam-cli/src/commands/recapture.js +2 -0
  260. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  261. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  262. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  263. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  264. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  265. package/codeyam-cli/src/commands/telemetry.js +37 -0
  266. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  267. package/codeyam-cli/src/commands/test-startup.js +2 -0
  268. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  269. package/codeyam-cli/src/commands/verify.js +14 -2
  270. package/codeyam-cli/src/commands/verify.js.map +1 -1
  271. package/codeyam-cli/src/data/designSystems.js +27 -0
  272. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  273. package/codeyam-cli/src/data/techStacks.js +77 -0
  274. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  275. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  276. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  277. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  278. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  279. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +226 -0
  280. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  281. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  282. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  283. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +4160 -0
  284. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  285. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  286. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  287. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  288. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  289. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  290. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  291. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  292. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  293. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  294. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  295. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  296. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  297. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  298. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  299. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  300. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  301. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  302. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  303. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  304. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  305. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  306. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  307. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  308. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  309. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  310. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  311. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  312. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  313. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +361 -0
  314. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  315. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +250 -0
  316. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  317. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  318. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  319. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  320. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  321. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  322. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  323. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1768 -0
  324. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  325. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  326. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  327. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  328. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  329. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  330. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  331. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  332. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  333. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  334. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  335. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  336. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  337. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  338. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  339. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  340. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  341. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  342. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  343. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  344. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  345. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  346. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  347. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  348. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  349. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  350. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  351. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  352. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  353. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  354. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  355. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  356. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  357. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  358. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  359. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  360. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  361. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  362. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  363. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  364. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  365. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  366. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  367. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +175 -86
  368. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  369. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  370. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  371. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  372. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  373. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  374. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  375. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  376. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  377. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  378. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  379. package/codeyam-cli/src/utils/analyzer.js +26 -0
  380. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  381. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  382. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  383. package/codeyam-cli/src/utils/backgroundServer.js +193 -30
  384. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  385. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  386. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  387. package/codeyam-cli/src/utils/database.js +37 -2
  388. package/codeyam-cli/src/utils/database.js.map +1 -1
  389. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  390. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  391. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  392. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  393. package/codeyam-cli/src/utils/devServerState.js +103 -0
  394. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  395. package/codeyam-cli/src/utils/editorApi.js +95 -0
  396. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  397. package/codeyam-cli/src/utils/editorAudit.js +849 -0
  398. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  399. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  400. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  401. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  402. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  403. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  404. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  405. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  406. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  407. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  408. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  409. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  410. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  411. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  412. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  413. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  414. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  415. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  416. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  417. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  418. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  419. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  420. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  421. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  422. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  423. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  424. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  425. package/codeyam-cli/src/utils/editorPreview.js +139 -0
  426. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  427. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  428. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  429. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  430. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  431. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  432. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  433. package/codeyam-cli/src/utils/editorScenarios.js +687 -0
  434. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  435. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  436. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  437. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  438. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  439. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  440. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  441. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  442. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  443. package/codeyam-cli/src/utils/envFile.js +90 -0
  444. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  445. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  446. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  447. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  448. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  449. package/codeyam-cli/src/utils/generateReport.js +2 -2
  450. package/codeyam-cli/src/utils/git.js +103 -0
  451. package/codeyam-cli/src/utils/git.js.map +1 -1
  452. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  453. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  454. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  455. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  456. package/codeyam-cli/src/utils/install-skills.js +145 -56
  457. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  458. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  459. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  460. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  461. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  462. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  463. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  464. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  465. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  466. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  467. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  468. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  469. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  470. package/codeyam-cli/src/utils/progress.js +8 -1
  471. package/codeyam-cli/src/utils/progress.js.map +1 -1
  472. package/codeyam-cli/src/utils/project.js +15 -5
  473. package/codeyam-cli/src/utils/project.js.map +1 -1
  474. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  475. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  476. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  477. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  478. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  479. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  480. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  481. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  482. package/codeyam-cli/src/utils/queue/job.js +109 -7
  483. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  484. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  485. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  486. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  487. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  488. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  489. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  490. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  491. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  501. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  502. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  503. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  504. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  505. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  506. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  507. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  508. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  509. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  510. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  511. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  512. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  513. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  514. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  515. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  516. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  517. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  518. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  519. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  520. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  521. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  522. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  523. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  524. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  525. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  526. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  527. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  528. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  529. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  530. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  531. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  532. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  533. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  534. package/codeyam-cli/src/utils/rules/index.js +2 -0
  535. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  536. package/codeyam-cli/src/utils/rules/parser.js +16 -29
  537. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  538. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  539. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  540. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  541. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  542. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  543. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  544. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  545. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  546. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  547. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  548. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  549. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  550. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  551. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  552. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  553. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  554. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  555. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  556. package/codeyam-cli/src/utils/serverState.js +94 -12
  557. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  558. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +96 -47
  559. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  560. package/codeyam-cli/src/utils/simulationGateMiddleware.js +175 -0
  561. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  562. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  563. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  564. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  565. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  566. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  567. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  568. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  569. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  570. package/codeyam-cli/src/utils/telemetry.js +106 -0
  571. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  572. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  573. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  574. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  575. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  576. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  577. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  578. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  579. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  580. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  581. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  582. package/codeyam-cli/src/utils/testRunner.js +350 -0
  583. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  584. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  585. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  586. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  587. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  588. package/codeyam-cli/src/utils/webappDetection.js +38 -3
  589. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  590. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
  591. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  592. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +153 -0
  593. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  594. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  595. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  596. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  597. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  598. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +1000 -0
  599. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  600. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  601. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  602. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  603. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  604. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  605. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  606. package/codeyam-cli/src/webserver/app/lib/database.js +56 -30
  607. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  608. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  609. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  610. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  611. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  612. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  613. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  614. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  615. package/codeyam-cli/src/webserver/backgroundServer.js +186 -37
  616. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  617. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  618. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  619. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DTBZZfSk.js +1 -0
  620. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-BxclONWq.js} +5 -5
  621. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  622. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-BsnEOJZ_.js} +9 -9
  623. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ByaELMbv.js +1 -0
  624. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-6WjVfhxX.js +25 -0
  625. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-ChX-Hp7W.js +3 -0
  626. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-By5zI316.js} +1 -1
  627. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-C-9zQdXg.js} +3 -3
  628. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
  629. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-DQsceHVv.js} +5 -10
  630. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DThcm_9M.js +1 -0
  631. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-Cl4oOA3A.js} +3 -3
  632. package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
  633. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  634. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BqkA9zyZ.js +1 -0
  635. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-DnOgyseQ.js} +4 -4
  636. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-DqM9hbNE.js} +10 -15
  637. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  638. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  639. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-C58dYPwR.js +1 -0
  640. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  641. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8NCeOrm.js +22 -0
  642. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  643. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  644. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  645. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  646. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  647. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  648. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  649. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  650. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  651. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  652. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  653. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  654. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  655. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
  656. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  657. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  658. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  659. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  660. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  661. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  662. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  663. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  664. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  665. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  666. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  667. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  668. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  669. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  670. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  671. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  672. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  673. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  674. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  675. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  676. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  677. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  678. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  679. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  680. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  681. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  682. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  683. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  684. package/codeyam-cli/src/webserver/build/client/assets/book-open-BFSIqZgO.js +6 -0
  685. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-B9fDzFVh.js} +2 -2
  686. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  687. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DLPObLUx.js} +2 -2
  688. package/codeyam-cli/src/webserver/build/client/assets/copy-DXEmO0TD.js +11 -0
  689. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BwyFiRot.js +41 -0
  690. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  691. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  692. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-iRhRIFlp.js +1 -0
  693. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  694. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
  695. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
  696. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-pc-vc6wO.js} +14 -13
  697. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js +6 -0
  698. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js +6 -0
  699. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BTcpgIpC.js +6 -0
  700. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +2 -2
  701. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-j1Vi0bco.js} +6 -6
  702. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  703. package/codeyam-cli/src/webserver/build/client/assets/files-kuny2Q_s.js +1 -0
  704. package/codeyam-cli/src/webserver/build/client/assets/git-DgCZPMie.js +1 -0
  705. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  706. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-BliGSSpl.js} +1 -1
  707. package/codeyam-cli/src/webserver/build/client/assets/index-SqjQKTdH.js +15 -0
  708. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-vyrZD2g4.js} +1 -1
  709. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  710. package/codeyam-cli/src/webserver/build/client/assets/labs-c3yLxSEp.js +1 -0
  711. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-D-q28GLF.js} +2 -2
  712. package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
  713. package/codeyam-cli/src/webserver/build/client/assets/memory-CEWIUC4t.js +101 -0
  714. package/codeyam-cli/src/webserver/build/client/assets/pause-BP6fitdh.js +11 -0
  715. package/codeyam-cli/src/webserver/build/client/assets/root-L2V0jea7.js +80 -0
  716. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-BooqacKS.js} +2 -2
  717. package/codeyam-cli/src/webserver/build/client/assets/settings-BM0nbryO.js +1 -0
  718. package/codeyam-cli/src/webserver/build/client/assets/simulations-ovy6FjRY.js +1 -0
  719. package/codeyam-cli/src/webserver/build/client/assets/terminal-DHemCJIs.js +11 -0
  720. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-D87ekDl8.js} +2 -2
  721. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dk0Tciqg.js +1 -0
  722. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
  723. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-jkCytuYz.js +1 -0
  724. package/codeyam-cli/src/webserver/build/client/assets/useToast-BgqkixU9.js +1 -0
  725. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  726. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  727. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-QgInFGdU.js +16 -0
  728. package/codeyam-cli/src/webserver/build/server/assets/index-zblh9auj.js +1 -0
  729. package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
  730. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  731. package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
  732. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  733. package/codeyam-cli/src/webserver/build-info.json +5 -5
  734. package/codeyam-cli/src/webserver/devServer.js +39 -5
  735. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  736. package/codeyam-cli/src/webserver/editorProxy.js +1263 -0
  737. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  738. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  739. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  740. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  741. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  742. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  743. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  744. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +283 -0
  745. package/codeyam-cli/src/webserver/server.js +446 -1
  746. package/codeyam-cli/src/webserver/server.js.map +1 -1
  747. package/codeyam-cli/src/webserver/terminalServer.js +1043 -0
  748. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  749. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  750. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  751. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  752. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  753. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  754. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  755. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  756. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  757. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  758. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  759. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  760. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  761. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  762. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  763. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  764. package/codeyam-cli/templates/codeyam-editor-claude.md +149 -0
  765. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  766. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  767. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  768. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  769. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  770. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  771. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  772. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  773. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  774. package/codeyam-cli/templates/editor-step-hook.py +368 -0
  775. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  776. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  777. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  778. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  779. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  780. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  781. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  782. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  783. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  784. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  785. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  786. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  787. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  788. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  789. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  790. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  791. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  792. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  793. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  794. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  795. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  796. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  797. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  798. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  799. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  800. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  801. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  802. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  803. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  804. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  805. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  806. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  807. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  808. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  809. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  810. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  811. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  812. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  813. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +65 -0
  814. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  815. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  816. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  817. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  818. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  819. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  820. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  821. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  822. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  823. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  824. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  825. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  826. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  827. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  828. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  829. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  830. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  831. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  832. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  833. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  834. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  835. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  836. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  837. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  838. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  839. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  840. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  841. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  842. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  843. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  844. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  845. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  846. package/codeyam-cli/templates/rule-reflection-hook.py +574 -88
  847. package/codeyam-cli/templates/rules-instructions.md +45 -93
  848. package/codeyam-cli/templates/seed-adapters/supabase.ts +475 -0
  849. package/codeyam-cli/templates/{codeyam:debug.md → skills/codeyam-debug/SKILL.md} +1 -1
  850. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  851. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +244 -0
  852. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  853. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  854. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  855. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  856. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  857. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  858. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  859. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  860. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  861. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  862. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  863. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  864. package/codeyam-cli/templates/{codeyam:setup.md → skills/codeyam-setup/SKILL.md} +13 -1
  865. package/codeyam-cli/templates/{codeyam:sim.md → skills/codeyam-sim/SKILL.md} +1 -1
  866. package/codeyam-cli/templates/{codeyam:test.md → skills/codeyam-test/SKILL.md} +1 -1
  867. package/codeyam-cli/templates/{codeyam:verify.md → skills/codeyam-verify/SKILL.md} +1 -1
  868. package/package.json +29 -21
  869. package/packages/ai/index.js +1 -1
  870. package/packages/ai/index.js.map +1 -1
  871. package/packages/ai/src/lib/analyzeScope.js +21 -1
  872. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  873. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  874. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  875. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  876. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  877. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  878. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  879. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  880. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  881. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  882. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  883. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  884. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  885. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  886. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  887. package/packages/ai/src/lib/completionCall.js +10 -7
  888. package/packages/ai/src/lib/completionCall.js.map +1 -1
  889. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +522 -20
  890. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  891. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  892. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  893. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  894. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  895. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +25 -6
  896. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  897. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +2 -2
  898. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  899. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  900. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  901. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  902. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  903. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  904. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  905. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +15 -1
  906. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -1
  907. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +78 -17
  908. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  909. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  910. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  911. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  912. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  913. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  914. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  915. package/packages/ai/src/lib/generateEntityScenarioData.js +89 -5
  916. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  917. package/packages/ai/src/lib/generateExecutionFlows.js +86 -2
  918. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  919. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  920. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  921. package/packages/ai/src/lib/isolateScopes.js +39 -3
  922. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  923. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  924. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  925. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  926. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  927. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  928. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  929. package/packages/analyze/index.js +2 -1
  930. package/packages/analyze/index.js.map +1 -1
  931. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  932. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  933. package/packages/analyze/src/lib/asts/index.js +4 -2
  934. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  935. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  936. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  937. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +68 -4
  938. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  939. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +16 -26
  940. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  941. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  942. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  943. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +12 -2
  944. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  945. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  946. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  947. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  948. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  949. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  950. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  951. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  952. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  953. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  954. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  955. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  956. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  957. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  958. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  959. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +5 -1
  960. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  961. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +51 -14
  962. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  963. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +279 -19
  964. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  965. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  966. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  967. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1410 -956
  968. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  969. package/packages/analyze/src/lib/index.js +1 -0
  970. package/packages/analyze/src/lib/index.js.map +1 -1
  971. package/packages/database/index.js +1 -0
  972. package/packages/database/index.js.map +1 -1
  973. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  974. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  975. package/packages/database/src/lib/analysisToDb.js +1 -1
  976. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  977. package/packages/database/src/lib/branchToDb.js +1 -1
  978. package/packages/database/src/lib/branchToDb.js.map +1 -1
  979. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  980. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  981. package/packages/database/src/lib/commitToDb.js +1 -1
  982. package/packages/database/src/lib/commitToDb.js.map +1 -1
  983. package/packages/database/src/lib/fileToDb.js +1 -1
  984. package/packages/database/src/lib/fileToDb.js.map +1 -1
  985. package/packages/database/src/lib/kysely/db.js +8 -0
  986. package/packages/database/src/lib/kysely/db.js.map +1 -1
  987. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  988. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  989. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  990. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  991. package/packages/database/src/lib/loadAnalysis.js +7 -1
  992. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  993. package/packages/database/src/lib/loadCommits.js +23 -13
  994. package/packages/database/src/lib/loadCommits.js.map +1 -1
  995. package/packages/database/src/lib/loadEntities.js +0 -6
  996. package/packages/database/src/lib/loadEntities.js.map +1 -1
  997. package/packages/database/src/lib/loadEntity.js +5 -5
  998. package/packages/database/src/lib/loadEntity.js.map +1 -1
  999. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  1000. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  1001. package/packages/database/src/lib/projectToDb.js +1 -1
  1002. package/packages/database/src/lib/projectToDb.js.map +1 -1
  1003. package/packages/database/src/lib/saveFiles.js +1 -1
  1004. package/packages/database/src/lib/saveFiles.js.map +1 -1
  1005. package/packages/database/src/lib/scenarioToDb.js +1 -1
  1006. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  1007. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  1008. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  1009. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  1010. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  1011. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  1012. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  1013. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  1014. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  1015. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  1016. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  1017. package/packages/types/src/enums/ProjectFramework.js +2 -0
  1018. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  1019. package/packages/utils/src/lib/fs/rsyncCopy.js +120 -4
  1020. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  1021. package/scripts/npm-post-install.cjs +34 -0
  1022. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  1023. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  1024. package/codeyam-cli/src/commands/list.js +0 -31
  1025. package/codeyam-cli/src/commands/list.js.map +0 -1
  1026. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  1027. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  1028. package/codeyam-cli/src/utils/reviewedRules.js +0 -92
  1029. package/codeyam-cli/src/utils/reviewedRules.js.map +0 -1
  1030. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  1031. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  1032. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-DLqD3qNt.js +0 -1
  1033. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +0 -34
  1034. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-aht4aafF.js +0 -25
  1035. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CVtiBnY5.js +0 -3
  1036. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DuDvi0jm.js +0 -1
  1037. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-DyFZkK0l.js +0 -1
  1038. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +0 -51
  1039. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  1040. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BdhJEx6B.js +0 -21
  1041. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  1042. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +0 -1
  1043. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +0 -6
  1044. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +0 -6
  1045. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  1046. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DMJ7zii9.js +0 -1
  1047. package/codeyam-cli/src/webserver/build/client/assets/files-CJ6lTdTA.js +0 -1
  1048. package/codeyam-cli/src/webserver/build/client/assets/git-CPTZZ-JZ.js +0 -15
  1049. package/codeyam-cli/src/webserver/build/client/assets/globals-CX9f-5xM.css +0 -1
  1050. package/codeyam-cli/src/webserver/build/client/assets/manifest-bba56ec1.js +0 -1
  1051. package/codeyam-cli/src/webserver/build/client/assets/memory-DuTFSyJ2.js +0 -92
  1052. package/codeyam-cli/src/webserver/build/client/assets/root-DTfSQARG.js +0 -62
  1053. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  1054. package/codeyam-cli/src/webserver/build/client/assets/simulations-DwFIBT09.js +0 -1
  1055. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C1v1PQzo.js +0 -1
  1056. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  1057. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DYxHZQuP.js +0 -1
  1058. package/codeyam-cli/src/webserver/build/client/assets/useToast-mBRpZPiu.js +0 -1
  1059. package/codeyam-cli/src/webserver/build/server/assets/index-TD1f-DHV.js +0 -1
  1060. package/codeyam-cli/src/webserver/build/server/assets/server-build-BQ-1XyEa.js +0 -258
  1061. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  1062. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  1063. package/codeyam-cli/templates/codeyam:memory.md +0 -403
  1064. package/codeyam-cli/templates/codeyam:new-rule.md +0 -52
  1065. package/scripts/finalize-analyzer.cjs +0 -81
@@ -97,6 +97,16 @@ export default class ParentScopeManager implements EquivalencyManager {
97
97
  }
98
98
 
99
99
  if (instantiatedInParent || returnValueFromChildScope) {
100
+ // Skip if we've already propagated this variable to the parent scope.
101
+ // Without this guard, nested scopes trigger redundant addEquivalency calls
102
+ // for the same variable on every addToSchema pass (e.g., 'a' and 'b' in sort
103
+ // callbacks get propagated 30+ times per scope instead of once).
104
+ this.addedToParent[scopeNode.name] ||= new Set<string>();
105
+ if (this.addedToParent[scopeNode.name].has(rootPath)) {
106
+ return false;
107
+ }
108
+ this.addedToParent[scopeNode.name].add(rootPath);
109
+
100
110
  if (traceId && debugLevel > 0) {
101
111
  console.info(
102
112
  'Debug Propagation: parentScope executed',
@@ -114,9 +124,6 @@ export default class ParentScopeManager implements EquivalencyManager {
114
124
  );
115
125
  }
116
126
 
117
- this.addedToParent[scopeNode.name] ||= new Set<string>();
118
- this.addedToParent[scopeNode.name].add(rootPath);
119
-
120
127
  scopeDataStructure.addEquivalency(
121
128
  rootPath,
122
129
  rootPath,
@@ -72,7 +72,11 @@ export class JavascriptFrameworkManager implements EquivalencyManager {
72
72
  }
73
73
 
74
74
  finalize(scopeNode: ScopeNode, scopeDataStructure: ScopeDataStructure) {
75
- cleanNonObjectFunctions(scopeNode, scopeDataStructure, true);
75
+ // Don't call cleanNonObjectFunctions with final=true here.
76
+ // The aggressive cleanup (transformKeyMapping, clearAttributes) removes method call
77
+ // evidence like .includes() before type inference can use it.
78
+ // Instead, defer final cleanup to toSerializable() when we're done with inference.
79
+ cleanNonObjectFunctions(scopeNode, scopeDataStructure, false);
76
80
  cleanKnownObjectFunctions(scopeNode, scopeDataStructure);
77
81
  this.handleUniformArrays(scopeNode, scopeDataStructure);
78
82
  }
@@ -6,7 +6,7 @@ import { ScopeNode, ScopeDataStructure } from '../ScopeDataStructure';
6
6
 
7
7
  type PrimitiveKind = 'array' | 'string' | 'number' | 'boolean' | 'date';
8
8
 
9
- const IGNORE_CLASSES_AND_OBJECTS = [
9
+ const IGNORE_CLASSES_AND_OBJECTS_SET = new Set([
10
10
  'Math',
11
11
  'JSON',
12
12
  'Reflect',
@@ -22,7 +22,7 @@ const IGNORE_CLASSES_AND_OBJECTS = [
22
22
  'useContext',
23
23
  'useReducer',
24
24
  'useLayoutEffect',
25
- ];
25
+ ]);
26
26
 
27
27
  /** cache the tokenised representation of every path we touch */
28
28
  const partsCache = new Map<string, string[]>();
@@ -147,16 +147,26 @@ function scrub(
147
147
  rootTable: Map<string, PrimitiveKind>,
148
148
  onRemove: (key: string) => void,
149
149
  ): void {
150
- const sortedKeys = Object.keys(mapping).sort((a, b) => a.localeCompare(b));
150
+ // Early exit: if no primitive types exist in the schema, there are no
151
+ // built-in methods to clean. Saves sorting + walking 10K+ keys.
152
+ if (rootTable.size === 0) return;
153
+
154
+ // Use direct comparison instead of localeCompare (3-5x faster for large arrays)
155
+ const sortedKeys = Object.keys(mapping).sort((a, b) =>
156
+ a < b ? -1 : a > b ? 1 : 0,
157
+ );
151
158
 
152
159
  for (const keyPath of sortedKeys) {
153
160
  const keyParts = getParts(keyPath);
154
161
  const prefixParts = buildPrefixParts(keyParts);
155
162
 
163
+ const firstPart = keyParts[0];
164
+ const firstPartBase = firstPart.includes('(')
165
+ ? firstPart.split('(')[0]
166
+ : firstPart;
156
167
  if (
157
- IGNORE_CLASSES_AND_OBJECTS.find(
158
- (m) => keyParts[0] === m || keyParts[0].startsWith(`${m}(`),
159
- )
168
+ IGNORE_CLASSES_AND_OBJECTS_SET.has(firstPart) ||
169
+ IGNORE_CLASSES_AND_OBJECTS_SET.has(firstPartBase)
160
170
  ) {
161
171
  delete mapping[keyPath];
162
172
  continue;
@@ -172,9 +182,18 @@ function scrub(
172
182
  const rawMethod = rawToken.split('(')[0];
173
183
 
174
184
  // Check if it's a prototype method (e.g., map, filter, toString)
185
+ // Only match when the token is actually a method reference/call:
186
+ // - Has parentheses (explicit call like map(), filter(x => x))
187
+ // - OR is typed as "function" (method reference like .split)
188
+ // Bare property names that happen to match method names
189
+ // (like .entries = "array", .values = "object") are preserved.
175
190
  if (protoMethodSets[rootKind].has(rawMethod)) {
176
- onRemove(keyPath);
177
- break;
191
+ const isMethodCall = rawToken.includes('(');
192
+ const isMethodReference = mapping[keyPath] === 'function';
193
+ if (isMethodCall || isMethodReference) {
194
+ onRemove(keyPath);
195
+ break;
196
+ }
178
197
  }
179
198
 
180
199
  // Check if it's a built-in property (e.g., length on arrays/strings)
@@ -510,7 +510,7 @@ function removeNonTransformingArrayMethods(variablePath: string): string {
510
510
  const part = keyParts[i];
511
511
 
512
512
  const arrayMethod = getMethodName(part);
513
- if (isValidArrayMethod(arrayMethod)) {
513
+ if (isValidFunctionCall(part) && isValidArrayMethod(arrayMethod)) {
514
514
  const nextPart = keyParts[i + 1];
515
515
  if (
516
516
  !nonTransformingArrayMethodsSet.has(arrayMethod) ||
@@ -550,7 +550,7 @@ function removeIsolatingArrayMethods(
550
550
  const part = keyParts[i];
551
551
 
552
552
  const arrayMethod = getMethodName(part);
553
- if (isValidArrayMethod(arrayMethod)) {
553
+ if (isValidFunctionCall(part) && isValidArrayMethod(arrayMethod)) {
554
554
  const nextPart = keyParts[i + 1];
555
555
  const prevPart = i > 1 ? keyParts[i - 1] : undefined;
556
556
  if (
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Coerces object/array values to primitive types when the schema expects a primitive.
3
+ *
4
+ * The LLM sometimes generates an object or array where the schema expects a primitive
5
+ * type like "string", "number", or "boolean". For example:
6
+ * Schema: { body: "string" }
7
+ * LLM output: { body: { "env": "production" } }
8
+ *
9
+ * This causes runtime errors like `TypeError: body.match is not a function` because
10
+ * the code expects a string but gets an object.
11
+ *
12
+ * Coercion rules:
13
+ * - object/array → string: JSON.stringify
14
+ * - object/array → number: 0
15
+ * - object/array → boolean: false
16
+ *
17
+ * @param data The mock data object to coerce (mutated in place)
18
+ * @param schema The schema describing expected types
19
+ */
20
+ export default function coerceObjectsToPrimitivesBySchema<T>(
21
+ data: T,
22
+ schema: unknown,
23
+ ): T {
24
+ if (data === null || data === undefined) {
25
+ return data;
26
+ }
27
+
28
+ if (typeof data !== 'object') {
29
+ return data;
30
+ }
31
+
32
+ if (Array.isArray(data)) {
33
+ const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
34
+ for (let i = 0; i < data.length; i++) {
35
+ data[i] = coerceObjectsToPrimitivesBySchema(data[i], itemSchema);
36
+ }
37
+ return data;
38
+ }
39
+
40
+ const dataObj = data as Record<string, unknown>;
41
+ const schemaObj = schema as Record<string, unknown> | undefined;
42
+
43
+ for (const key of Object.keys(dataObj)) {
44
+ const value = dataObj[key];
45
+ const fieldSchema = schemaObj?.[key];
46
+
47
+ if (value === null || value === undefined) {
48
+ continue;
49
+ }
50
+
51
+ if (typeof value === 'object' && typeof fieldSchema === 'string') {
52
+ // Schema expects a primitive but the value is an object/array.
53
+ // Coerce to the expected type.
54
+ const schemaType = fieldSchema.toLowerCase();
55
+
56
+ if (schemaType.includes('string')) {
57
+ dataObj[key] = JSON.stringify(value);
58
+ } else if (schemaType.includes('number')) {
59
+ dataObj[key] = 0;
60
+ } else if (schemaType.includes('boolean')) {
61
+ dataObj[key] = false;
62
+ }
63
+ } else if (typeof value === 'object' && value !== null) {
64
+ // Both value and schema are objects — recurse
65
+ coerceObjectsToPrimitivesBySchema(value, fieldSchema);
66
+ }
67
+ }
68
+
69
+ return data;
70
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Coerces primitive values to empty arrays when the schema expects an array.
3
+ *
4
+ * The LLM sometimes generates a primitive (boolean, number, string) where the
5
+ * schema expects an array. For example:
6
+ * Schema: { webapps: [{ name: "string" }] }
7
+ * LLM output: { webapps: true }
8
+ *
9
+ * This causes runtime errors like `TypeError: config.webapps?.forEach is not a function`
10
+ * because the code expects an array but gets a boolean.
11
+ *
12
+ * Coercion rule:
13
+ * - primitive → array: replace with []
14
+ *
15
+ * Null and undefined values are preserved (they may be intentionally nullable).
16
+ *
17
+ * @param data The mock data object to coerce (mutated in place)
18
+ * @param schema The schema describing expected types
19
+ */
20
+ export default function coercePrimitivesToArraysBySchema<T>(
21
+ data: T,
22
+ schema: unknown,
23
+ ): T {
24
+ if (data === null || data === undefined) {
25
+ return data;
26
+ }
27
+
28
+ if (typeof data !== 'object') {
29
+ return data;
30
+ }
31
+
32
+ if (Array.isArray(data)) {
33
+ const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
34
+ for (let i = 0; i < data.length; i++) {
35
+ data[i] = coercePrimitivesToArraysBySchema(data[i], itemSchema);
36
+ }
37
+ return data;
38
+ }
39
+
40
+ const dataObj = data as Record<string, unknown>;
41
+ const schemaObj = schema as Record<string, unknown> | undefined;
42
+
43
+ for (const key of Object.keys(dataObj)) {
44
+ const value = dataObj[key];
45
+ const fieldSchema = schemaObj?.[key];
46
+
47
+ if (value === null || value === undefined) {
48
+ continue;
49
+ }
50
+
51
+ if (typeof value !== 'object' && Array.isArray(fieldSchema)) {
52
+ // Schema expects an array but the value is a primitive.
53
+ // Replace with an empty array.
54
+ dataObj[key] = [];
55
+ } else if (typeof value === 'object' && value !== null) {
56
+ // Both value and schema are objects — recurse
57
+ coercePrimitivesToArraysBySchema(value, fieldSchema);
58
+ }
59
+ }
60
+
61
+ return data;
62
+ }
@@ -14,23 +14,112 @@ const isStandaloneIndex = (s?: string) => !!s && STANDALONE_INDEX_RE.test(s);
14
14
  // The regex matches any path ending with .length that has [] somewhere before it
15
15
  const DYNAMIC_LENGTH_RE = /\[\].*\.length$/;
16
16
 
17
+ // Cache for type string analysis to avoid repeated split/filter operations.
18
+ // These functions are called multiple times per path segment across thousands of paths.
19
+ const typeAnalysisCache = new Map<
20
+ string,
21
+ { isSkippable: boolean; baseType: string; isNullable: boolean }
22
+ >();
23
+
24
+ function getTypeAnalysis(t: string) {
25
+ const cached = typeAnalysisCache.get(t);
26
+ if (cached) return cached;
27
+ const parts = t.split('|').map((s) => s.trim());
28
+ const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
29
+ const result = {
30
+ isSkippable:
31
+ base.length === 1 &&
32
+ (base[0] === 'object' ||
33
+ base[0] === 'array' ||
34
+ base[0] === 'function' ||
35
+ base[0] === 'unknown'),
36
+ baseType: base[0],
37
+ isNullable: parts.includes('undefined') || parts.includes('null'),
38
+ };
39
+ typeAnalysisCache.set(t, result);
40
+ return result;
41
+ }
42
+
17
43
  // Treat these as structural placeholders (don't commit them as concrete leaves)
18
44
  function isSkippableLeafType(t: string) {
19
- // 'unknown' by itself is a placeholder (but 'boolean | unknown' is not)
20
- return (
21
- t === 'object' ||
22
- t === 'array' ||
23
- t === 'function' ||
24
- t.trim() === 'unknown'
25
- );
45
+ return getTypeAnalysis(t).isSkippable;
46
+ }
47
+
48
+ // Extract the base structural type from a potentially nullable type string.
49
+ // e.g., 'object | undefined' → 'object', 'array | null' → 'array'
50
+ function getBaseSkippableType(t: string): string {
51
+ return getTypeAnalysis(t).baseType;
52
+ }
53
+
54
+ // Check if a type string has nullable annotations (| undefined or | null)
55
+ function isNullableType(t: string): boolean {
56
+ return getTypeAnalysis(t).isNullable;
57
+ }
58
+
59
+ // Matches paths containing [][] — e.g., "items[][]" or "items[][].text"
60
+ const DOUBLE_ARRAY_RE = /\[\]\[\]/;
61
+
62
+ // Matches a [].property segment — e.g., "items[].name" (but not "items[][]")
63
+ const ARRAY_OBJECT_PROPERTY_RE = /\[\]\.[^[\]]/;
64
+
65
+ /**
66
+ * When scope analysis produces both `prefix[].property` (array of objects) and
67
+ * `prefix[][]` (array of arrays) for the same prefix, there's a conflict about
68
+ * what the array elements are. Object-property paths are more specific and come
69
+ * from actual property access; double-array paths come from mixed iteration
70
+ * patterns in the scope analysis. Drop the double-array paths when both exist.
71
+ */
72
+ function resolveDoubleArrayConflicts(
73
+ schema: Record<string, string>,
74
+ ): Record<string, string> {
75
+ // Collect prefixes that end in [] and have object property children
76
+ const objectArrayPrefixes = new Set<string>();
77
+ for (const path of Object.keys(schema)) {
78
+ if (!ARRAY_OBJECT_PROPERTY_RE.test(path)) continue;
79
+ // Extract every "...[]" prefix that is followed by ".prop"
80
+ let idx = 0;
81
+ while ((idx = path.indexOf('[].', idx)) !== -1) {
82
+ objectArrayPrefixes.add(path.slice(0, idx + 2)); // includes the "[]"
83
+ idx += 3;
84
+ }
85
+ }
86
+
87
+ if (objectArrayPrefixes.size === 0) return schema;
88
+
89
+ // Check if any double-array paths actually conflict
90
+ let hasConflict = false;
91
+ for (const path of Object.keys(schema)) {
92
+ if (!DOUBLE_ARRAY_RE.test(path)) continue;
93
+ const idx = path.indexOf('[][]');
94
+ if (idx !== -1 && objectArrayPrefixes.has(path.slice(0, idx + 2))) {
95
+ hasConflict = true;
96
+ break;
97
+ }
98
+ }
99
+
100
+ if (!hasConflict) return schema;
101
+
102
+ // Filter out conflicting double-array paths
103
+ const resolved: Record<string, string> = {};
104
+ for (const [path, value] of Object.entries(schema)) {
105
+ if (DOUBLE_ARRAY_RE.test(path)) {
106
+ const idx = path.indexOf('[][]');
107
+ if (idx !== -1 && objectArrayPrefixes.has(path.slice(0, idx + 2))) {
108
+ continue; // drop this conflicting path
109
+ }
110
+ }
111
+ resolved[path] = value;
112
+ }
113
+ return resolved;
26
114
  }
27
115
 
28
116
  export default function convertDotNotation(
29
117
  schema: Record<string, string>,
30
118
  ): JsonTypeDefinition {
119
+ const resolved = resolveDoubleArrayConflicts(schema);
31
120
  const result: JsonTypeDefinition = {};
32
121
 
33
- for (const [rawPath, typ] of Object.entries(schema)) {
122
+ for (const [rawPath, typ] of Object.entries(resolved)) {
34
123
  // Skip paths with .length after array notation from dynamic iteration
35
124
  // e.g., metadata[].length, metadata[][].length
36
125
  if (DYNAMIC_LENGTH_RE.test(rawPath)) continue;
@@ -218,6 +307,17 @@ export default function convertDotNotation(
218
307
  // If the next segment after '[]' is another '[]' or a standalone index,
219
308
  // we need an array at cursor[key][0], not an object (for patterns like "key[][]" or "key[][0]")
220
309
  if (afterArray === '[]' || isStandaloneIndex(afterArray)) {
310
+ // But don't overwrite an existing populated object — object properties
311
+ // (from paths like key[].property) take precedence over double-array hints
312
+ // (from paths like key[][]) which come from mixed access patterns in scope analysis
313
+ if (
314
+ cursor[key][0] &&
315
+ typeof cursor[key][0] === 'object' &&
316
+ !Array.isArray(cursor[key][0]) &&
317
+ Object.keys(cursor[key][0]).length > 0
318
+ ) {
319
+ break;
320
+ }
221
321
  if (!Array.isArray(cursor[key][0])) cursor[key][0] = [];
222
322
  } else {
223
323
  // Default case: create an object
@@ -242,15 +342,41 @@ export default function convertDotNotation(
242
342
  cursor[key] = typ;
243
343
  } else {
244
344
  // Structural/placeholder terminal
245
- if (typ === 'array') {
345
+ const nullable = isNullableType(typ);
346
+ const baseType = getBaseSkippableType(typ);
347
+
348
+ if (baseType === 'array') {
246
349
  if (!Array.isArray(cursor[key])) cursor[key] = [];
350
+ if (nullable) {
351
+ (cursor[key] as any)._nullable = true;
352
+ }
247
353
  } else if (
248
- typ === 'object' ||
249
- typ === 'function' ||
250
- typ.trim() === 'unknown'
354
+ baseType === 'object' ||
355
+ baseType === 'function' ||
356
+ baseType === 'unknown'
251
357
  ) {
252
- if (cursor[key] === undefined) {
253
- cursor[key] = typ;
358
+ if (nullable) {
359
+ // Nullable object: ensure it's an actual object (not a string
360
+ // placeholder) so _nullable can be set and child paths can
361
+ // populate properties on it.
362
+ if (
363
+ cursor[key] === undefined ||
364
+ typeof cursor[key] === 'string'
365
+ ) {
366
+ cursor[key] = {};
367
+ }
368
+ if (
369
+ typeof cursor[key] === 'object' &&
370
+ cursor[key] !== null &&
371
+ !Array.isArray(cursor[key])
372
+ ) {
373
+ (cursor[key] as any)._nullable = true;
374
+ }
375
+ } else {
376
+ // Non-nullable: preserve existing behavior (string placeholder)
377
+ if (cursor[key] === undefined) {
378
+ cursor[key] = typ;
379
+ }
254
380
  }
255
381
  }
256
382
  }
@@ -81,7 +81,23 @@ function isTypeAnnotation(value: string): boolean {
81
81
  'string | number | undefined',
82
82
  ];
83
83
 
84
- return commonTypePatterns.includes(trimmed);
84
+ if (commonTypePatterns.includes(trimmed)) return true;
85
+
86
+ // Check for arrow function type annotations like "() => void", "(event: MouseEvent) => void"
87
+ // These contain '=>' but the body is a type keyword, not a JS expression
88
+ if (trimmed.includes('=>')) {
89
+ const arrowIndex = trimmed.indexOf('=>');
90
+ const body = trimmed.slice(arrowIndex + 2).trim();
91
+ if (
92
+ /^(void|string|number|boolean|any|unknown|never|null|undefined|object|Date|Promise<\w+>)$/i.test(
93
+ body,
94
+ )
95
+ ) {
96
+ return true;
97
+ }
98
+ }
99
+
100
+ return false;
85
101
  }
86
102
 
87
103
  /**
@@ -105,6 +121,9 @@ function typeAnnotationToValue(typeAnnotation: string): unknown {
105
121
  return [];
106
122
  }
107
123
 
124
+ // Handle arrow function type annotations like "() => void"
125
+ if (trimmed.includes('=>')) return () => {};
126
+
108
127
  // Handle primitive types
109
128
  if (trimmed === 'string') return '';
110
129
  if (trimmed === 'number') return 0;
@@ -152,8 +152,11 @@ export default function fillInSchemaGapsAndUnknowns(
152
152
  schema[previousSubPath],
153
153
  )
154
154
  ) {
155
- const newValue =
156
- checkIfKnownType(previousSubPath, functionKeysMapping) ?? 'object';
155
+ // When fillInUnknowns=false, add missing gaps as 'unknown' to preserve raw schema.
156
+ // When fillInUnknowns=true, infer the type using checkIfKnownType.
157
+ const newValue = fillInUnknowns
158
+ ? (checkIfKnownType(previousSubPath, functionKeysMapping) ?? 'object')
159
+ : 'unknown';
157
160
 
158
161
  if (
159
162
  !schema[previousSubPath] ||
@@ -166,10 +169,14 @@ export default function fillInSchemaGapsAndUnknowns(
166
169
 
167
170
  // Handle the wrong function chaining function().function()
168
171
  if (isFunction && !existingSchema(previousSubPath)) {
172
+ // When fillInUnknowns=false, use 'unknown' for non-function paths.
173
+ // When fillInUnknowns=true, infer the type.
169
174
  schema[previousSubPath] = previousSubPath.endsWith(')')
170
175
  ? 'function'
171
- : (checkIfKnownType(previousSubPath, functionKeysMapping) ??
172
- 'object');
176
+ : fillInUnknowns
177
+ ? (checkIfKnownType(previousSubPath, functionKeysMapping) ??
178
+ 'object')
179
+ : 'unknown';
173
180
  changeMade = true;
174
181
  }
175
182
 
@@ -458,7 +465,10 @@ export function fillInDirectSchemaGapsAndUnknowns({
458
465
  }
459
466
  } else if (schema[key] === 'unknown') {
460
467
  const newType = guessTypeForPath(key, 'string');
461
- if (newType && schema[key] !== newType) {
468
+ // Don't convert 'unknown' to 'object' — 'object' is just inferred from
469
+ // having child properties, which isn't more useful than 'unknown' and
470
+ // prevents enrichment from filling in the actual type later.
471
+ if (newType && newType !== 'object' && schema[key] !== newType) {
462
472
  schema[key] = newType;
463
473
  changeMade = true;
464
474
  }
@@ -481,12 +491,44 @@ export function fillInDirectSchemaGapsAndUnknowns({
481
491
  // This handles spurious [] paths from components like JsonNode that handle
482
492
  // both arrays and objects. When metadata is explicitly typed as 'object',
483
493
  // paths like metadata[] (from dynamic iteration) should not change it.
494
+ const existingType = schema[previousSubPath];
495
+ const baseType = existingType?.split(' | ')[0];
496
+
497
+ // Also check if this path has meaningful object property children (non-[] children).
498
+ // If it does, it's an object with mixed access patterns (e.g., agent.entries
499
+ // AND agent[].type), not a pure array. Don't infer 'array' in that case.
500
+ // Exclude .length since it exists on arrays too and is NOT evidence of object-ness.
501
+ let hasObjectPropertyChildren = false;
502
+ if (baseType !== 'array' && baseType !== 'object') {
503
+ const dotPrefix = previousSubPath + '.';
504
+ const lengthPath = previousSubPath + '.length';
505
+ for (const schemaKey in schema) {
506
+ if (
507
+ schemaKey.startsWith(dotPrefix) &&
508
+ schemaKey !== lengthPath
509
+ ) {
510
+ hasObjectPropertyChildren = true;
511
+ break;
512
+ }
513
+ }
514
+ }
515
+
484
516
  if (
485
- schema[previousSubPath] !== 'array' &&
486
- schema[previousSubPath] !== 'object'
517
+ baseType !== 'array' &&
518
+ baseType !== 'object' &&
519
+ !hasObjectPropertyChildren
487
520
  ) {
488
- schema[previousSubPath] = 'array';
489
- changeMade = true;
521
+ // Preserve nullability from existing type (e.g., 'unknown | undefined' -> 'array | undefined')
522
+ let newType = 'array';
523
+ if (existingType?.includes(' | undefined')) {
524
+ newType = 'array | undefined';
525
+ } else if (existingType?.includes(' | null')) {
526
+ newType = 'array | null';
527
+ }
528
+ if (schema[previousSubPath] !== newType) {
529
+ schema[previousSubPath] = newType;
530
+ changeMade = true;
531
+ }
490
532
  }
491
533
  }
492
534
  }
@@ -502,14 +544,36 @@ export function fillInDirectSchemaGapsAndUnknowns({
502
544
  schema[previousSubPath],
503
545
  )
504
546
  ) {
505
- const newValue = getKnownType(previousSubPath) ?? 'object';
506
-
547
+ const existingType = schema[previousSubPath];
548
+ const baseExistingType = existingType?.split(' | ')[0];
549
+ // Skip if the base type is already a structured type
507
550
  if (
508
- !schema[previousSubPath] ||
509
- schema[previousSubPath] !== newValue
551
+ !['object', 'array', 'function', 'async-function'].includes(
552
+ baseExistingType,
553
+ )
510
554
  ) {
511
- schema[previousSubPath] = newValue;
512
- changeMade = true;
555
+ let newValue = getKnownType(previousSubPath) ?? 'object';
556
+ // Don't overwrite 'unknown' with 'object' — 'object' is just
557
+ // inferred from child properties and isn't more useful than 'unknown'
558
+ if (
559
+ newValue === 'object' &&
560
+ existingType &&
561
+ existingType.split(' | ')[0] === 'unknown'
562
+ ) {
563
+ // preserve existing 'unknown' (possibly with nullability)
564
+ } else {
565
+ // Preserve nullability from existing type
566
+ if (existingType?.includes(' | undefined')) {
567
+ newValue = `${newValue} | undefined`;
568
+ } else if (existingType?.includes(' | null')) {
569
+ newValue = `${newValue} | null`;
570
+ }
571
+
572
+ if (!existingType || existingType !== newValue) {
573
+ schema[previousSubPath] = newValue;
574
+ changeMade = true;
575
+ }
576
+ }
513
577
  }
514
578
  }
515
579
 
@@ -778,10 +842,11 @@ function checkIfKnownType(
778
842
  return 'array';
779
843
  }
780
844
 
781
- // When .includes() or .indexOf() is called with a variable argument AND we have .length,
782
- // prefer array. This pattern (arr.length > 0 && arr.includes(item)) is common for arrays.
783
- // But str.includes('literal') is common for strings - that case is handled by hasStringLiteralArgument.
784
- if (isArray && hasLengthAccess && hasIncludesOrIndexOfWithVariable) {
845
+ // When .includes() or .indexOf() is called with a variable argument, prefer array.
846
+ // Pattern: arr.includes(item) -> likely array (checking if item exists in collection)
847
+ // String literals are already filtered by hasStringLiteralArgument, so if we get here
848
+ // with a variable argument, it's strong evidence of array membership testing.
849
+ if (isArray && hasIncludesOrIndexOfWithVariable) {
785
850
  return 'array';
786
851
  }
787
852
 
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Recursively strips `_nullable` keys from LLM-generated mock data.
3
+ *
4
+ * The `_nullable` marker is an internal CodeYam concept used in type definitions
5
+ * to indicate that a field can be null/undefined. The LLM sometimes includes
6
+ * these markers in its generated scenario data, which causes runtime errors
7
+ * when code iterates over object keys (e.g., `Object.keys(importedBy)` picks
8
+ * up `_nullable` as a key alongside real data).
9
+ *
10
+ * This function mutates the input object in-place, consistent with other
11
+ * post-processing helpers like `convertNullToUndefinedBySchema`.
12
+ */
13
+ export default function stripNullableMarkers(
14
+ data: Record<string, unknown>,
15
+ ): void {
16
+ if (data == null || typeof data !== 'object') return;
17
+
18
+ // Delete _nullable from this level
19
+ if ('_nullable' in data) {
20
+ delete data._nullable;
21
+ }
22
+
23
+ // Recurse into nested objects and arrays
24
+ for (const value of Object.values(data)) {
25
+ if (Array.isArray(value)) {
26
+ for (const item of value) {
27
+ if (item !== null && typeof item === 'object' && !Array.isArray(item)) {
28
+ stripNullableMarkers(item as Record<string, unknown>);
29
+ }
30
+ }
31
+ } else if (value !== null && typeof value === 'object') {
32
+ stripNullableMarkers(value as Record<string, unknown>);
33
+ }
34
+ }
35
+ }