@codeyam/codeyam-cli 0.1.0-staging.4c0c3c9 → 0.1.0-staging.50df560

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 (771) 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/package.json +3 -3
  5. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  6. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +259 -5
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  10. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +15 -6
  11. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  12. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +96 -33
  13. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  14. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  15. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  18. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +21 -6
  19. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  22. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  23. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  24. package/analyzer-template/packages/aws/package.json +10 -10
  25. package/analyzer-template/packages/database/index.ts +1 -0
  26. package/analyzer-template/packages/database/package.json +4 -4
  27. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  28. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  29. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +19 -15
  30. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  31. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  32. package/analyzer-template/packages/database/src/lib/loadEntity.ts +8 -4
  33. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  34. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  35. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  36. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  37. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  38. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  39. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  40. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  41. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  42. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  44. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  46. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  47. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  48. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  49. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  50. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  51. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  52. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  54. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  58. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  61. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  67. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  70. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  73. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  76. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  78. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  79. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  80. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  81. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  82. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  83. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  84. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  86. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  88. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  90. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  91. package/analyzer-template/packages/github/package.json +1 -1
  92. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  93. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  94. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  95. package/analyzer-template/packages/ui-components/package.json +1 -1
  96. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  97. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  98. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  99. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  100. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  101. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  102. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  103. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  104. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  105. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  106. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  107. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  108. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  109. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  110. package/analyzer-template/project/constructMockCode.ts +168 -48
  111. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  112. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  113. package/analyzer-template/project/start.ts +3 -0
  114. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  115. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  116. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  117. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  118. package/analyzer-template/tsconfig.json +13 -1
  119. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  120. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  121. package/background/src/lib/virtualized/project/constructMockCode.js +143 -39
  122. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  123. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  124. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  125. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  126. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  127. package/background/src/lib/virtualized/project/start.js +2 -0
  128. package/background/src/lib/virtualized/project/start.js.map +1 -1
  129. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  130. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  131. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  132. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  133. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  134. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  135. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  136. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  137. package/codeyam-cli/scripts/apply-setup.js +208 -11
  138. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  139. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  140. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  141. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  142. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  143. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  144. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  145. package/codeyam-cli/src/cli.js +56 -25
  146. package/codeyam-cli/src/cli.js.map +1 -1
  147. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  148. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  149. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  150. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  151. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  152. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  153. package/codeyam-cli/src/commands/analyze.js +17 -7
  154. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  155. package/codeyam-cli/src/commands/default.js +14 -2
  156. package/codeyam-cli/src/commands/default.js.map +1 -1
  157. package/codeyam-cli/src/commands/editor.js +5080 -0
  158. package/codeyam-cli/src/commands/editor.js.map +1 -0
  159. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  160. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  161. package/codeyam-cli/src/commands/init.js +109 -45
  162. package/codeyam-cli/src/commands/init.js.map +1 -1
  163. package/codeyam-cli/src/commands/memory.js +89 -75
  164. package/codeyam-cli/src/commands/memory.js.map +1 -1
  165. package/codeyam-cli/src/commands/telemetry.js +37 -0
  166. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  167. package/codeyam-cli/src/data/techStacks.js +77 -0
  168. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  169. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  170. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  171. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  172. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  173. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  174. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  175. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  176. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  177. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +2952 -0
  178. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  179. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  180. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  181. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  182. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  183. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  184. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  185. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  186. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  187. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  188. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  189. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  190. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  191. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  192. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  193. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  194. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  195. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  196. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  197. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  198. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  199. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  200. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  201. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  202. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  203. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  204. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  205. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  206. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  207. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  208. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  209. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  210. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  211. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  212. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  213. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +291 -0
  214. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  215. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1629 -0
  216. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  217. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +280 -0
  218. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  219. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  220. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  221. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  222. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  223. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  224. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  225. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2089 -0
  226. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  227. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  228. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  229. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  230. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  231. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  232. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  233. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +26 -20
  234. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  235. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  236. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  237. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  238. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  239. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  240. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  241. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  242. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  243. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  244. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  245. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  246. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  247. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  248. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  249. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  250. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  251. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +51 -4
  252. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  253. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  254. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  255. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  256. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  257. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  258. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  259. package/codeyam-cli/src/utils/analysisRunner.js +11 -7
  260. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  261. package/codeyam-cli/src/utils/analyzer.js +9 -0
  262. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  263. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  264. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  265. package/codeyam-cli/src/utils/backgroundServer.js +105 -13
  266. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  267. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  268. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  269. package/codeyam-cli/src/utils/database.js +37 -2
  270. package/codeyam-cli/src/utils/database.js.map +1 -1
  271. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  272. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  273. package/codeyam-cli/src/utils/devServerState.js +71 -0
  274. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  275. package/codeyam-cli/src/utils/editorApi.js +79 -0
  276. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  277. package/codeyam-cli/src/utils/editorAudit.js +595 -0
  278. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  279. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  280. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  281. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  282. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  283. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  284. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  285. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  286. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  287. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  288. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  289. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  290. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  291. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  292. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  293. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  294. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  295. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  296. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  297. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  298. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  299. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  300. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  301. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  302. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  303. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  304. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  305. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  306. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  307. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  308. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  309. package/codeyam-cli/src/utils/editorScenarioSwitch.js +134 -0
  310. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  311. package/codeyam-cli/src/utils/editorScenarios.js +616 -0
  312. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  313. package/codeyam-cli/src/utils/editorSeedAdapter.js +422 -0
  314. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  315. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  316. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  317. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  318. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  319. package/codeyam-cli/src/utils/entityChangeStatus.server.js +196 -0
  320. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  321. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  322. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  323. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  324. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  325. package/codeyam-cli/src/utils/git.js +103 -0
  326. package/codeyam-cli/src/utils/git.js.map +1 -1
  327. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  328. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  329. package/codeyam-cli/src/utils/install-skills.js +71 -15
  330. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  331. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  332. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  333. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  334. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  335. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  336. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  337. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  338. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  339. package/codeyam-cli/src/utils/progress.js +2 -2
  340. package/codeyam-cli/src/utils/progress.js.map +1 -1
  341. package/codeyam-cli/src/utils/project.js +15 -5
  342. package/codeyam-cli/src/utils/project.js.map +1 -1
  343. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  344. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  345. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  346. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  347. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  348. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  349. package/codeyam-cli/src/utils/queue/job.js +76 -4
  350. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  351. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  352. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  353. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  354. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  355. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  356. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  357. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  358. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  359. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  360. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  361. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  362. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  363. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  364. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  365. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  366. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  367. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  368. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  369. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  370. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  371. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  372. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  373. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  374. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  375. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  376. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  377. package/codeyam-cli/src/utils/rules/index.js +1 -0
  378. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  379. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  380. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  381. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  382. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  383. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  384. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  385. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  386. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  387. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  388. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  389. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  390. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  391. package/codeyam-cli/src/utils/scenariosManifest.js +307 -0
  392. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  393. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  394. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  395. package/codeyam-cli/src/utils/serverState.js +57 -2
  396. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  397. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +83 -11
  398. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  399. package/codeyam-cli/src/utils/simulationGateMiddleware.js +175 -0
  400. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  401. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  402. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  403. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  404. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  405. package/codeyam-cli/src/utils/telemetry.js +106 -0
  406. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  407. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  408. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  409. package/codeyam-cli/src/utils/testRunner.js +158 -0
  410. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  411. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  412. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  413. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  414. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  415. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  416. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  417. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  418. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  419. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  420. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  421. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +628 -0
  422. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  423. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +248 -0
  424. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  425. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  426. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  427. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +83 -0
  428. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  429. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  430. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  431. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  432. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  433. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  434. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  435. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  436. package/codeyam-cli/src/webserver/backgroundServer.js +141 -42
  437. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  438. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CLe80MMu.js +1 -0
  439. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-Crt_KN_U.js} +5 -5
  440. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  441. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-CD7lGABo.js} +9 -9
  442. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CgTNOhnu.js +1 -0
  443. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CKeQT5Ty.js +25 -0
  444. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-D3s1MFkb.js +3 -0
  445. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-By5zI316.js} +1 -1
  446. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-CM5zg40N.js} +3 -3
  447. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-C2PLkej3.js} +4 -4
  448. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DanvyBPb.js +1 -0
  449. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-DUMfcNVK.js} +3 -3
  450. package/codeyam-cli/src/webserver/build/client/assets/Spinner-D0LgAaSa.js +34 -0
  451. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  452. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BA_Ry-rs.js +1 -0
  453. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-BAWd-Xjf.js} +4 -4
  454. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-BOARiB-g.js} +8 -8
  455. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  456. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  457. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-CHx25PAe.js +1 -0
  458. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  459. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Bg3e7q4S.js +22 -0
  460. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  461. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  462. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  463. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  464. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  465. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  466. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  467. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  468. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  469. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  470. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  471. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  472. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  473. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  474. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  475. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  476. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  477. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  478. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  479. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  480. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  481. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  482. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  483. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  484. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  485. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  486. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  487. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  488. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  489. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  490. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-CL-lMgHh.js} +2 -2
  491. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-GmAjGS9-.js} +2 -2
  492. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +43 -0
  493. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-DFcQkN5j.js} +2 -2
  494. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-C6iF61Xs.js} +3 -3
  495. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-4ImjHTVC.js +41 -0
  496. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C8y4mmyv.js +1 -0
  497. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  498. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DII1pg_z.js +58 -0
  499. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-oepecPae.js +41 -0
  500. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-Blfy9UlN.js} +11 -11
  501. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-KTQuL0aj.js +6 -0
  502. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C6eeL24i.js +6 -0
  503. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DQM8E7L4.js +6 -0
  504. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-CAoXLsQr.js} +2 -2
  505. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-SuW9syRS.js} +6 -6
  506. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  507. package/codeyam-cli/src/webserver/build/client/assets/files-D-xGrg29.js +1 -0
  508. package/codeyam-cli/src/webserver/build/client/assets/git-Bq_fbXP5.js +1 -0
  509. package/codeyam-cli/src/webserver/build/client/assets/globals-Yn9W3zp3.css +1 -0
  510. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-Bp1l4hSv.js} +1 -1
  511. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-CWV9XZiG.js} +1 -1
  512. package/codeyam-cli/src/webserver/build/client/assets/index-DE3jI_dv.js +15 -0
  513. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  514. package/codeyam-cli/src/webserver/build/client/assets/labs-B_IX45ih.js +1 -0
  515. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-De-7qQ2u.js} +2 -2
  516. package/codeyam-cli/src/webserver/build/client/assets/manifest-cdf2c0a7.js +1 -0
  517. package/codeyam-cli/src/webserver/build/client/assets/memory-Cx2xEx7s.js +101 -0
  518. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-CFxEKL1u.js} +3 -3
  519. package/codeyam-cli/src/webserver/build/client/assets/root-BxUQigda.js +67 -0
  520. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-BdBb5aqc.js} +2 -2
  521. package/codeyam-cli/src/webserver/build/client/assets/settings-DdE-Untf.js +1 -0
  522. package/codeyam-cli/src/webserver/build/client/assets/simulations-DSCdE99u.js +1 -0
  523. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-CrplD4b1.js} +3 -3
  524. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-DqJ0j69l.js} +2 -2
  525. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DhXHbEjP.js +1 -0
  526. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BNd5hYuW.js +2 -0
  527. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-Cy5Qg_UR.js +1 -0
  528. package/codeyam-cli/src/webserver/build/client/assets/useToast-5HR2j9ZE.js +1 -0
  529. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  530. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  531. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-B_PsTAb1.js +13 -0
  532. package/codeyam-cli/src/webserver/build/server/assets/index-CjLhfz6Z.js +1 -0
  533. package/codeyam-cli/src/webserver/build/server/assets/init-BEqlbI84.js +10 -0
  534. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  535. package/codeyam-cli/src/webserver/build/server/assets/server-build-YI63xTu4.js +553 -0
  536. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  537. package/codeyam-cli/src/webserver/build-info.json +5 -5
  538. package/codeyam-cli/src/webserver/devServer.js +39 -5
  539. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  540. package/codeyam-cli/src/webserver/editorProxy.js +976 -0
  541. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  542. package/codeyam-cli/src/webserver/idleDetector.js +106 -0
  543. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  544. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  545. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  546. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  547. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  548. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +283 -0
  549. package/codeyam-cli/src/webserver/server.js +379 -1
  550. package/codeyam-cli/src/webserver/server.js.map +1 -1
  551. package/codeyam-cli/src/webserver/terminalServer.js +938 -0
  552. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  553. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  554. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  555. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  556. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  557. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  558. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  559. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  560. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  561. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  562. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  563. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  564. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  565. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  566. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  567. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  568. package/codeyam-cli/templates/codeyam-editor-claude.md +149 -0
  569. package/codeyam-cli/templates/codeyam-editor-reference.md +214 -0
  570. package/codeyam-cli/templates/editor-step-hook.py +368 -0
  571. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  572. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  573. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  574. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  575. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  576. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  577. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  578. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  579. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  580. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  581. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  582. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  583. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  584. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  585. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  586. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  587. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  588. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  589. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  590. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  591. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  592. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  593. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  594. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  595. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  596. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  597. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  598. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  599. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  600. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  601. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  602. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  603. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  604. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  605. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  606. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  607. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  608. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  609. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  610. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  611. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  612. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  613. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  614. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +127 -0
  615. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  616. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  617. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  618. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  619. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  620. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  621. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  622. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  623. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  624. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  625. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  626. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  627. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  628. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  629. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  630. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  631. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  632. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  633. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  634. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  635. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  636. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  637. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  638. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  639. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  640. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  641. package/codeyam-cli/templates/rules-instructions.md +34 -88
  642. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  643. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  644. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +229 -0
  645. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  646. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  647. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  648. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  649. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  650. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  651. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  652. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  653. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  654. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  655. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  656. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  657. package/package.json +22 -14
  658. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  659. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  660. package/packages/ai/src/lib/completionCall.js +10 -7
  661. package/packages/ai/src/lib/completionCall.js.map +1 -1
  662. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +234 -3
  663. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  664. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  665. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  666. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  667. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  668. package/packages/ai/src/lib/dataStructureChunking.js +9 -5
  669. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  670. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  671. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  672. package/packages/ai/src/lib/generateExecutionFlows.js +81 -11
  673. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  674. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  675. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  676. package/packages/analyze/src/lib/asts/index.js +4 -2
  677. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  678. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  679. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  680. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  681. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  682. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  683. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  684. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +11 -2
  685. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  686. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  687. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  688. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  689. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  690. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  691. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  692. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  693. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  694. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  695. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  696. package/packages/database/index.js +1 -0
  697. package/packages/database/index.js.map +1 -1
  698. package/packages/database/src/lib/kysely/db.js +5 -0
  699. package/packages/database/src/lib/kysely/db.js.map +1 -1
  700. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  701. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  702. package/packages/database/src/lib/loadAnalysis.js +1 -1
  703. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  704. package/packages/database/src/lib/loadCommits.js +23 -13
  705. package/packages/database/src/lib/loadCommits.js.map +1 -1
  706. package/packages/database/src/lib/loadEntities.js +0 -6
  707. package/packages/database/src/lib/loadEntities.js.map +1 -1
  708. package/packages/database/src/lib/loadEntity.js +1 -1
  709. package/packages/database/src/lib/loadEntity.js.map +1 -1
  710. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  711. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  712. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  713. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  714. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  715. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  716. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  717. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  718. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  719. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  720. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  721. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  722. package/packages/types/src/enums/ProjectFramework.js +2 -0
  723. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  724. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  725. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  726. package/scripts/npm-post-install.cjs +34 -0
  727. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  728. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  729. package/codeyam-cli/src/commands/list.js +0 -31
  730. package/codeyam-cli/src/commands/list.js.map +0 -1
  731. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  732. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  733. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  734. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  735. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +0 -1
  736. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CvzqMxcu.js +0 -1
  737. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  738. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +0 -25
  739. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-Cq5o8jL4.js +0 -3
  740. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CwZrv-Ok.js +0 -1
  741. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CDpEprKa.js +0 -1
  742. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  743. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-DB3aFuEO.js +0 -51
  744. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-D1zB-pYc.js +0 -21
  745. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  746. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  747. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  748. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-9sMMAiWJ.js +0 -1
  749. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +0 -1
  750. package/codeyam-cli/src/webserver/build/client/assets/git-BdHOxVfg.js +0 -15
  751. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +0 -1
  752. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  753. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +0 -1
  754. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +0 -78
  755. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +0 -62
  756. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  757. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +0 -1
  758. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +0 -1
  759. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  760. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +0 -1
  761. package/codeyam-cli/src/webserver/build/client/assets/useToast-ihdMtlf6.js +0 -1
  762. package/codeyam-cli/src/webserver/build/server/assets/index-CxaRxKVt.js +0 -1
  763. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +0 -259
  764. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  765. package/scripts/finalize-analyzer.cjs +0 -13
  766. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  767. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  768. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  769. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  770. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  771. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,368 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ PostToolUse + Stop + UserPromptSubmit hook for editor mode step tracking.
4
+
5
+ Reads .codeyam/editor-step.json and prints a reminder about the current step.
6
+ Logs each firing to .codeyam/logs/editor-log.jsonl.
7
+ If no state file exists, outputs nothing (not in editor mode or between features).
8
+ """
9
+
10
+ import json
11
+ import os
12
+ import sys
13
+ from datetime import datetime, timezone
14
+
15
+
16
+ STEP_LABELS = {
17
+ 1: "Plan",
18
+ 2: "Prepare",
19
+ 3: "Prototype",
20
+ 4: "Verify Prototype",
21
+ 5: "Confirm",
22
+ 6: "Deconstruct",
23
+ 7: "Extract",
24
+ 8: "Glossary",
25
+ 9: "Analyze",
26
+ 10: "App Scenarios",
27
+ 11: "User Scenarios",
28
+ 12: "Verify",
29
+ 13: "Journal",
30
+ 14: "Review",
31
+ 15: "Present",
32
+ 16: "Commit",
33
+ 17: "Finalize",
34
+ 18: "Push",
35
+ }
36
+
37
+ STEP_RESTRICTIONS = {
38
+ 1: "Do NOT write any code. Plan and describe only. Wait for user confirmation.",
39
+ 2: "Do NOT write any code or build features. Set up the project and prepare the database only.",
40
+ 3: "Do NOT create scenarios or run codeyam analyze. Build fast — working prototype with real data.",
41
+ 4: "Verify the prototype works. Do NOT add features — only fix broken functionality.",
42
+ 5: "Present a selection menu (AskUserQuestion) for confirmation. Do NOT refactor or create scenarios until approved.",
43
+ 6: "Do NOT write any code. Read every file, identify all extractable pieces, write a numbered plan. Planning only.",
44
+ 7: "Execute the extraction plan from step 6. Components first (no tests), then library functions via TDD. Page files must contain ZERO direct JSX.",
45
+ 8: "Do NOT write application code or scenarios. Update the glossary only.",
46
+ 9: "Create isolation routes for visual components, run tests for library functions. Register component scenarios via codeyam editor register.",
47
+ 10: "Do NOT modify application code. Create and register app-level scenarios only.",
48
+ 11: "Do NOT modify application code. Create user-persona scenarios only (or skip if no users).",
49
+ 12: "Verify component isolation screenshots AND editor scenarios. After ANY code fix, re-register affected components. Fix only — do NOT add features.",
50
+ 13: "Create or update the journal entry for this feature. Do NOT create a duplicate — check if one exists first.",
51
+ 14: "Verify ALL screenshots exist and NO client-side errors (/api/editor-client-errors). Run codeyam editor audit. Do not proceed until all checks pass.",
52
+ 15: "Show the results panel, present summary, then selection menu (AskUserQuestion): Save or make changes.",
53
+ 16: "Hide the results panel and commit all changes. Do NOT push — that happens in step 18.",
54
+ 17: "Update the journal entry with the commit SHA and amend the commit to include the journal update.",
55
+ 18: "Check for a git remote and offer to push. WAIT for the user's answer before starting the next feature.",
56
+ }
57
+
58
+ MIGRATION_STEP_LABELS = {
59
+ 1: "Survey",
60
+ 2: "App Scenarios",
61
+ 3: "Component Scenarios",
62
+ 4: "Preview",
63
+ 5: "Discuss",
64
+ 6: "Decompose",
65
+ 7: "Extract",
66
+ 8: "Recapture",
67
+ 9: "Journal",
68
+ 10: "Present",
69
+ }
70
+
71
+ MIGRATION_STEP_RESTRICTIONS = {
72
+ 1: "Survey the page and start the dev server. Read all files and map data flow. Do NOT register scenarios yet.",
73
+ 2: "Set up seed adapter if needed, then register application scenarios for the ACTUAL page route with seed data.",
74
+ 3: "Create isolation routes and register component scenarios for individual visual components.",
75
+ 4: "Verify screenshots and show results to the user. Do NOT modify application code.",
76
+ 5: "Assess complexity and ask user about decomposition. Wait for user decision before proceeding.",
77
+ 6: "Plan-only. Identify all extractions, mark existing components as REUSE. Do NOT write code.",
78
+ 7: "Execute the extraction plan. Components first, then functions via TDD.",
79
+ 8: "Update glossary, re-register scenarios after code changes, verify screenshots. Fix issues only.",
80
+ 9: "Create the journal entry for this page's migration.",
81
+ 10: "Show results, present summary, commit or make changes. After commit run `codeyam editor migrate complete` then `codeyam editor migrate next`.",
82
+ }
83
+
84
+
85
+ def log_event(project_dir, event, data=None):
86
+ """Append a JSONL entry to .codeyam/logs/editor-log.jsonl."""
87
+ try:
88
+ logs_dir = os.path.join(project_dir, ".codeyam", "logs")
89
+ os.makedirs(logs_dir, exist_ok=True)
90
+ log_path = os.path.join(logs_dir, "editor-log.jsonl")
91
+ entry = {"ts": datetime.now(timezone.utc).isoformat(), "event": event}
92
+ if data:
93
+ entry.update(data)
94
+ with open(log_path, "a") as f:
95
+ f.write(json.dumps(entry) + "\n")
96
+ except Exception:
97
+ pass # Logging is best-effort
98
+
99
+
100
+ def detect_event():
101
+ """Detect whether this is a PostToolUse, Stop, or UserPromptSubmit hook from stdin."""
102
+ try:
103
+ raw = sys.stdin.read()
104
+ if not raw.strip():
105
+ return "unknown", {}
106
+ data = json.loads(raw)
107
+ # PostToolUse has tool_name; Stop has stop_hook_active; UserPromptSubmit has prompt
108
+ if "tool_name" in data:
109
+ return "post_tool_use", data
110
+ elif "stop_hook_active" in data:
111
+ return "stop", data
112
+ elif "prompt" in data:
113
+ return "user_prompt", data
114
+ return "unknown", data
115
+ except Exception:
116
+ return "unknown", {}
117
+
118
+
119
+ def main():
120
+ # Only run in editor Build sessions. The env var is set by the terminal
121
+ # server when launching Claude in editor mode. Without this guard, hooks
122
+ # fire in every Claude session in the project (scenario editing, bare
123
+ # claude, etc.) and inject unwanted step restrictions.
124
+ if not os.environ.get("CODEYAM_EDITOR_ACTIVE"):
125
+ return
126
+
127
+ project_dir = os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
128
+ state_path = os.path.join(project_dir, ".codeyam", "editor-step.json")
129
+ prompt_path = os.path.join(project_dir, ".codeyam", "editor-user-prompt.txt")
130
+
131
+ # Detect event early so we can capture the user prompt even before state exists
132
+ event_type, event_data = detect_event()
133
+
134
+ # Capture the user's feature request prompt.
135
+ # Write when: (a) no prompt file yet, (b) no state file (between features),
136
+ # or (c) previous feature is done (step >= 18). This ensures the prompt
137
+ # is refreshed for each new feature instead of persisting stale text.
138
+ # Skip slash commands (e.g. /codeyam-editor) — they aren't user prompts.
139
+ if event_type == "user_prompt":
140
+ prompt_text = event_data.get("prompt", "").strip()
141
+ if prompt_text and not prompt_text.startswith("/"):
142
+ should_capture = not os.path.exists(prompt_path)
143
+ if not should_capture:
144
+ # Overwrite stale prompt when between features
145
+ if not os.path.exists(state_path):
146
+ should_capture = True
147
+ else:
148
+ try:
149
+ with open(state_path, "r") as f:
150
+ prev = json.load(f)
151
+ if prev.get("step", 0) >= 18:
152
+ should_capture = True
153
+ except Exception:
154
+ pass
155
+ if should_capture:
156
+ try:
157
+ os.makedirs(os.path.dirname(prompt_path), exist_ok=True)
158
+ with open(prompt_path, "w") as f:
159
+ f.write(prompt_text)
160
+ except Exception:
161
+ pass # Best-effort
162
+
163
+ if not os.path.exists(state_path):
164
+ return
165
+
166
+ try:
167
+ with open(state_path, "r") as f:
168
+ state = json.load(f)
169
+ except (json.JSONDecodeError, IOError):
170
+ return
171
+
172
+ step = state.get("step")
173
+ label = state.get("label", "Unknown")
174
+ feature = state.get("feature", "")
175
+ migration = state.get("migration") # Optional migration context
176
+
177
+ if not step:
178
+ return
179
+
180
+ # ── Task tracking ──────────────────────────────────────────────────
181
+ # Track whether TaskCreate was called between step transitions.
182
+ # If Claude advances to the next step without creating a task, block it.
183
+ task_tracking_path = os.path.join(project_dir, ".codeyam", "editor-task-tracking.json")
184
+
185
+ if event_type == "post_tool_use":
186
+ tool_name = event_data.get("tool_name", "")
187
+
188
+ # Record when TaskCreate is called
189
+ if tool_name == "TaskCreate":
190
+ try:
191
+ tracking = {}
192
+ if os.path.exists(task_tracking_path):
193
+ with open(task_tracking_path, "r") as f:
194
+ tracking = json.load(f)
195
+ tracking["taskCreated"] = True
196
+ with open(task_tracking_path, "w") as f:
197
+ json.dump(tracking, f)
198
+ except Exception:
199
+ pass
200
+
201
+ # Log the hook firing
202
+ log_data = {"step": step, "label": label, "feature": feature, "hook": event_type}
203
+ if migration:
204
+ log_data["migration"] = True
205
+ if event_type == "post_tool_use":
206
+ log_data["tool"] = event_data.get("tool_name", "")
207
+ log_event(project_dir, "hook", log_data)
208
+
209
+ # Use migration-specific labels/restrictions when in migration mode
210
+ if migration:
211
+ restriction = MIGRATION_STEP_RESTRICTIONS.get(step, "")
212
+ next_cmd = f"codeyam editor migrate {step + 1}" if step < 10 else "codeyam editor migrate next"
213
+ else:
214
+ restriction = STEP_RESTRICTIONS.get(step, "")
215
+ next_cmd = f"codeyam editor {step + 1}" if step < 18 else "codeyam editor 1"
216
+
217
+ # UserPromptSubmit: concise workflow reminder injected before Claude processes the user's message
218
+ if event_type == "user_prompt":
219
+ mode_label = "Migration Mode" if migration else "Editor Mode"
220
+ page_info = ""
221
+ if migration:
222
+ page_name = migration.get("pageName", "")
223
+ page_idx = migration.get("pageIndex", 0)
224
+ total = migration.get("totalPages", 0)
225
+ page_info = f" — Page {page_idx + 1}/{total} ({page_name})"
226
+
227
+ lines = [
228
+ f'<user-prompt-submit-hook>',
229
+ f'{mode_label} — Step {step} ({label}): "{feature}"{page_info}',
230
+ ]
231
+
232
+ # Include the active scenario so Claude knows what the user is looking at
233
+ active_scenario_path = os.path.join(project_dir, ".codeyam", "active-scenario.json")
234
+ try:
235
+ with open(active_scenario_path, "r") as f:
236
+ active = json.load(f)
237
+ scenario_name = (
238
+ active.get("scenarioName")
239
+ or active.get("scenarioSlug", "").replace("_", " ")
240
+ )
241
+ if scenario_name:
242
+ lines.append(
243
+ f'The user is currently viewing scenario: "{scenario_name}". '
244
+ "Assume any feedback refers to this scenario unless they say otherwise."
245
+ )
246
+ except (IOError, json.JSONDecodeError):
247
+ pass
248
+
249
+ if migration and step == 8:
250
+ lines.append(
251
+ "If the user is requesting changes (even indirectly), "
252
+ "run `codeyam editor change` BEFORE making any modifications. "
253
+ "The change workflow ensures Working Session Results are shown to the user. "
254
+ "If the user chose to commit, run `codeyam editor migrate next` to advance to the next page."
255
+ )
256
+ elif step in (15, 16, 17, 18) and not migration:
257
+ lines.append(
258
+ "If the user is requesting changes (even indirectly), "
259
+ "run `codeyam editor change` BEFORE making any modifications "
260
+ "(code, scenarios, data, styles — everything). "
261
+ "The change command gives you the post-change checklist. "
262
+ "The change workflow ensures Working Session Results are shown to the user. "
263
+ "If the user chose to commit, run `codeyam editor 16` to advance to the commit step."
264
+ )
265
+ elif migration:
266
+ lines.append(
267
+ f"You are on migration step {step}. Follow the `codeyam editor migrate` workflow. "
268
+ f"Do NOT skip ahead or make changes outside the current step."
269
+ )
270
+ else:
271
+ lines.append(
272
+ f"You are on step {step}. Follow the `codeyam editor` workflow. "
273
+ f"Do NOT skip ahead or make changes outside the current step."
274
+ )
275
+ if restriction:
276
+ lines.append(restriction)
277
+ lines.append('</user-prompt-submit-hook>')
278
+ print("\n".join(lines))
279
+ return
280
+
281
+ mode_label = "Migration Mode" if migration else "Editor Mode"
282
+ lines = [
283
+ f'{mode_label} \u2014 Step {step} ({label}): "{feature}"',
284
+ ]
285
+ if restriction:
286
+ lines.append(restriction)
287
+
288
+ if event_type == "stop":
289
+ # Build colored progress tracker using ANSI escape codes
290
+ GREEN = "\033[32m"
291
+ BOLD_CYAN = "\033[1;36m"
292
+ DIM = "\033[2m"
293
+ RESET = "\033[0m"
294
+
295
+ if migration:
296
+ # Migration progress tracker (10 steps)
297
+ page_name = migration.get("pageName", "")
298
+ page_idx = migration.get("pageIndex", 0)
299
+ total = migration.get("totalPages", 0)
300
+ tracker = [f"{DIM} Migration: Page {page_idx + 1}/{total} ({page_name}){RESET}"]
301
+ tracker.append(f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}")
302
+ for i in range(1, 11):
303
+ lbl = MIGRATION_STEP_LABELS[i].ljust(28)
304
+ num = f" {i}" if i < 10 else f"{i}"
305
+ cntnt = f"{num}. {lbl}"
306
+ if i < step:
307
+ tracker.append(f"{DIM} \u2502{RESET}{GREEN} \u2713 {cntnt}{RESET}{DIM}\u2502{RESET}")
308
+ elif i == step:
309
+ tracker.append(f"{DIM} \u2502{RESET}{BOLD_CYAN} \u2192 {cntnt}{RESET}{DIM}\u2502{RESET}")
310
+ else:
311
+ tracker.append(f"{DIM} \u2502 \u25cb {cntnt}\u2502{RESET}")
312
+ tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
313
+ else:
314
+ # Standard progress tracker (18 steps)
315
+ tracker = [f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}"]
316
+ for i in range(1, 19):
317
+ lbl = STEP_LABELS[i].ljust(28)
318
+ num = f" {i}" if i < 10 else f"{i}"
319
+ content = f"{num}. {lbl}"
320
+ if i < step:
321
+ tracker.append(f"{DIM} \u2502{RESET}{GREEN} \u2713 {content}{RESET}{DIM}\u2502{RESET}")
322
+ elif i == step:
323
+ tracker.append(f"{DIM} \u2502{RESET}{BOLD_CYAN} \u2192 {content}{RESET}{DIM}\u2502{RESET}")
324
+ else:
325
+ tracker.append(f"{DIM} \u2502 \u25cb {content}\u2502{RESET}")
326
+ tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
327
+
328
+ lines.append("Present this progress tracker to the user (copy verbatim):")
329
+ lines.extend(tracker)
330
+ lines.append(
331
+ "For the CURRENT step (\u2192), show each checklist item with "
332
+ "\u2713 (done) or \u2717 (skipped + reason)."
333
+ )
334
+
335
+ if event_type == "stop" and ((step in (15, 16) and not migration) or (step == 8 and migration)):
336
+ import subprocess as _sp
337
+ try:
338
+ _result = _sp.run(
339
+ ["git", "status", "--porcelain"],
340
+ cwd=project_dir,
341
+ capture_output=True, text=True, timeout=5
342
+ )
343
+ has_uncommitted = bool(_result.stdout.strip())
344
+ except Exception:
345
+ has_uncommitted = False
346
+
347
+ if has_uncommitted:
348
+ lines.append(
349
+ "\n\033[1;31m⚠️ You have uncommitted changes but haven't shown Working Session Results.\033[0m"
350
+ )
351
+ lines.append(
352
+ f"\033[31mRun `codeyam editor change` if you haven't already, then complete the "
353
+ f"checklist and run `{'codeyam editor migrate 8' if migration else 'codeyam editor 15'}` to show results to the user.\033[0m"
354
+ )
355
+
356
+ if event_type == "stop":
357
+ lines.append(
358
+ f"\n\033[2mReminder: Only use `codeyam editor` subcommands in the Build terminal. "
359
+ f"Follow `codeyam editor steps` when changing code.\033[0m"
360
+ )
361
+
362
+ lines.append(f"When this step is complete, run: {next_cmd}")
363
+
364
+ print("\n".join(lines))
365
+
366
+
367
+ if __name__ == "__main__":
368
+ main()
@@ -0,0 +1,89 @@
1
+ # Expo + React Native Setup
2
+
3
+ ## Development
4
+
5
+ This project uses **Expo** with **Expo Router** for file-based navigation and **NativeWind** (Tailwind CSS) for styling.
6
+
7
+ ### Web Development (used by CodeYam)
8
+
9
+ ```bash
10
+ npm run dev
11
+ ```
12
+
13
+ This starts the Expo web dev server. CodeYam uses this to preview your app and take screenshots.
14
+
15
+ ### Mobile Development
16
+
17
+ ```bash
18
+ # iOS Simulator
19
+ npm run ios
20
+
21
+ # Android Emulator
22
+ npm run android
23
+
24
+ # Start Expo dev server (pick platform from menu)
25
+ npm start
26
+ ```
27
+
28
+ ## Project Structure
29
+
30
+ ```
31
+ app/ # Expo Router file-based routes
32
+ _layout.tsx # Root layout (status bar, navigation)
33
+ (tabs)/ # Tab-based navigation group
34
+ _layout.tsx # Tab bar configuration
35
+ index.tsx # Home tab
36
+ settings.tsx # Settings tab
37
+ components/ # Reusable components
38
+ lib/
39
+ storage.ts # AsyncStorage wrapper for persistent data
40
+ ```
41
+
42
+ ## Key Patterns
43
+
44
+ ### Navigation (Expo Router)
45
+
46
+ Add new screens by creating files in `app/`:
47
+
48
+ - `app/profile.tsx` — accessible at `/profile`
49
+ - `app/items/[id].tsx` — dynamic route at `/items/123`
50
+
51
+ ### Data Fetching
52
+
53
+ Use standard `fetch()` for API calls. CodeYam intercepts these to provide mock data during simulations:
54
+
55
+ ```tsx
56
+ const response = await fetch('/api/items');
57
+ const data = await response.json();
58
+ ```
59
+
60
+ ### Storage
61
+
62
+ Use the typed storage helper for persistent data:
63
+
64
+ ```tsx
65
+ import { storage } from '@/lib/storage';
66
+
67
+ const items = await storage.get('items', []);
68
+ await storage.set('items', [...items, newItem]);
69
+ ```
70
+
71
+ ### Styling (NativeWind)
72
+
73
+ Use Tailwind classes on React Native components:
74
+
75
+ ```tsx
76
+ <View className="flex-1 items-center justify-center bg-white p-4">
77
+ <Text className="text-lg font-bold text-gray-900">Hello</Text>
78
+ </View>
79
+ ```
80
+
81
+ ## Building for Production
82
+
83
+ ```bash
84
+ # Web
85
+ npm run build:web
86
+
87
+ # iOS/Android (requires EAS CLI)
88
+ npx eas build
89
+ ```
@@ -0,0 +1,41 @@
1
+ # Project Name
2
+
3
+ Brief description of what this app does.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ npm run setup
9
+ ```
10
+
11
+ ## Development
12
+
13
+ Start the Expo dev server (web):
14
+
15
+ ```bash
16
+ npm run dev
17
+ ```
18
+
19
+ For native platforms:
20
+
21
+ ```bash
22
+ npm run ios # iOS simulator
23
+ npm run android # Android emulator
24
+ ```
25
+
26
+ ## Using CodeYam Editor
27
+
28
+ This project was built with [CodeYam](https://codeyam.com). To launch the editor:
29
+
30
+ ```bash
31
+ codeyam editor
32
+ ```
33
+
34
+ ## Scripts
35
+
36
+ | Script | Description |
37
+ | ----------------- | --------------------------- |
38
+ | `npm run setup` | Install dependencies |
39
+ | `npm run dev` | Start Expo dev server (web) |
40
+ | `npm run ios` | Run on iOS simulator |
41
+ | `npm run android` | Run on Android emulator |
@@ -0,0 +1,33 @@
1
+ import { Tabs } from 'expo-router';
2
+ import { Ionicons } from '@expo/vector-icons';
3
+
4
+ export default function TabLayout() {
5
+ return (
6
+ <Tabs
7
+ screenOptions={{
8
+ tabBarActiveTintColor: '#005C75',
9
+ headerStyle: { backgroundColor: '#f8fafc' },
10
+ headerTitleStyle: { fontWeight: '600' },
11
+ }}
12
+ >
13
+ <Tabs.Screen
14
+ name="index"
15
+ options={{
16
+ title: 'Home',
17
+ tabBarIcon: ({ color, size }) => (
18
+ <Ionicons name="home-outline" size={size} color={color} />
19
+ ),
20
+ }}
21
+ />
22
+ <Tabs.Screen
23
+ name="settings"
24
+ options={{
25
+ title: 'Settings',
26
+ tabBarIcon: ({ color, size }) => (
27
+ <Ionicons name="settings-outline" size={size} color={color} />
28
+ ),
29
+ }}
30
+ />
31
+ </Tabs>
32
+ );
33
+ }
@@ -0,0 +1,12 @@
1
+ import { View, Text } from 'react-native';
2
+
3
+ export default function HomeScreen() {
4
+ return (
5
+ <View className="flex-1 items-center justify-center bg-white p-6">
6
+ <Text className="text-2xl font-bold text-gray-900 mb-2">Welcome</Text>
7
+ <Text className="text-base text-gray-500 text-center">
8
+ Your Expo app is ready. Start building!
9
+ </Text>
10
+ </View>
11
+ );
12
+ }
@@ -0,0 +1,12 @@
1
+ import { View, Text } from 'react-native';
2
+
3
+ export default function SettingsScreen() {
4
+ return (
5
+ <View className="flex-1 items-center justify-center bg-white p-6">
6
+ <Text className="text-2xl font-bold text-gray-900 mb-2">Settings</Text>
7
+ <Text className="text-base text-gray-500 text-center">
8
+ Configure your app preferences here.
9
+ </Text>
10
+ </View>
11
+ );
12
+ }
@@ -0,0 +1,12 @@
1
+ import '../global.css';
2
+ import { Stack } from 'expo-router';
3
+ import { StatusBar } from 'expo-status-bar';
4
+
5
+ export default function RootLayout() {
6
+ return (
7
+ <>
8
+ <Stack screenOptions={{ headerShown: false }} />
9
+ <StatusBar style="auto" />
10
+ </>
11
+ );
12
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "expo": {
3
+ "name": "CodeYam Expo App",
4
+ "slug": "codeyam-expo-app",
5
+ "version": "1.0.0",
6
+ "scheme": "codeyam-expo-app",
7
+ "platforms": ["ios", "android", "web"],
8
+ "web": {
9
+ "bundler": "metro",
10
+ "output": "single",
11
+ "favicon": "./assets/favicon.png"
12
+ },
13
+ "plugins": ["expo-router"],
14
+ "experiments": {
15
+ "typedRoutes": true
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,9 @@
1
+ module.exports = function (api) {
2
+ api.cache(true);
3
+ return {
4
+ presets: [
5
+ ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
6
+ 'nativewind/babel',
7
+ ],
8
+ };
9
+ };
@@ -0,0 +1,12 @@
1
+ node_modules/
2
+ .expo/
3
+ dist/
4
+ web-build/
5
+ *.jks
6
+ *.p8
7
+ *.p12
8
+ *.key
9
+ *.mobileprovision
10
+ *.orig.*
11
+ .env
12
+ .env.local
@@ -0,0 +1,3 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
@@ -0,0 +1,32 @@
1
+ import AsyncStorage from '@react-native-async-storage/async-storage';
2
+
3
+ /**
4
+ * Type-safe storage abstraction over AsyncStorage.
5
+ * Works on iOS, Android, and Web.
6
+ */
7
+ export const storage = {
8
+ async get<T>(key: string, defaultValue: T): Promise<T> {
9
+ try {
10
+ const raw = await AsyncStorage.getItem(key);
11
+ return raw !== null ? JSON.parse(raw) : defaultValue;
12
+ } catch {
13
+ return defaultValue;
14
+ }
15
+ },
16
+
17
+ async set<T>(key: string, value: T): Promise<void> {
18
+ try {
19
+ await AsyncStorage.setItem(key, JSON.stringify(value));
20
+ } catch {
21
+ // Storage write failed silently
22
+ }
23
+ },
24
+
25
+ async remove(key: string): Promise<void> {
26
+ try {
27
+ await AsyncStorage.removeItem(key);
28
+ } catch {
29
+ // Storage remove failed silently
30
+ }
31
+ },
32
+ };
@@ -0,0 +1,6 @@
1
+ const { getDefaultConfig } = require('expo/metro-config');
2
+ const { withNativeWind } = require('nativewind/metro');
3
+
4
+ const config = getDefaultConfig(__dirname);
5
+
6
+ module.exports = withNativeWind(config, { input: './global.css' });
@@ -0,0 +1 @@
1
+ /// <reference types="nativewind/types" />