@alwaysmeticulous/cli 2.326.0 → 2.327.0

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 (450) hide show
  1. package/dist/__tests__/commonjs-dependencies.spec.d.ts +2 -0
  2. package/dist/__tests__/commonjs-dependencies.spec.d.ts.map +1 -0
  3. package/dist/__tests__/commonjs-dependencies.spec.js +82 -0
  4. package/dist/__tests__/commonjs-dependencies.spec.js.map +1 -0
  5. package/dist/command-utils/__tests__/parse-rewrites.spec.js +2 -2
  6. package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -1
  7. package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +2 -2
  8. package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -1
  9. package/dist/command-utils/common-options.js +2 -2
  10. package/dist/command-utils/common-options.js.map +1 -1
  11. package/dist/command-utils/detect-upload-mode.js +2 -2
  12. package/dist/command-utils/detect-upload-mode.js.map +1 -1
  13. package/dist/command-utils/detect-upload-mode.spec.js +2 -2
  14. package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
  15. package/dist/command-utils/download-session.utils.js +2 -2
  16. package/dist/command-utils/download-session.utils.js.map +1 -1
  17. package/dist/command-utils/json-args.js +2 -2
  18. package/dist/command-utils/json-args.js.map +1 -1
  19. package/dist/command-utils/json-args.spec.js +2 -2
  20. package/dist/command-utils/json-args.spec.js.map +1 -1
  21. package/dist/command-utils/parse-container-env.js +2 -2
  22. package/dist/command-utils/parse-container-env.js.map +1 -1
  23. package/dist/command-utils/parse-rewrites.js +2 -2
  24. package/dist/command-utils/parse-rewrites.js.map +1 -1
  25. package/dist/command-utils/print-json.js +2 -2
  26. package/dist/command-utils/print-json.js.map +1 -1
  27. package/dist/command-utils/sentry.utils.js +2 -2
  28. package/dist/command-utils/sentry.utils.js.map +1 -1
  29. package/dist/command-utils/warn-regex-rewrites.js +2 -2
  30. package/dist/command-utils/warn-regex-rewrites.js.map +1 -1
  31. package/dist/commands/agent/agent-review-writes.command.spec.js +2 -2
  32. package/dist/commands/agent/agent-review-writes.command.spec.js.map +1 -1
  33. package/dist/commands/agent/build-git-options.js +2 -2
  34. package/dist/commands/agent/build-git-options.js.map +1 -1
  35. package/dist/commands/agent/build-git-options.spec.js +2 -2
  36. package/dist/commands/agent/build-git-options.spec.js.map +1 -1
  37. package/dist/commands/agent/coverage-columns.util.js +2 -2
  38. package/dist/commands/agent/coverage-columns.util.js.map +1 -1
  39. package/dist/commands/agent/create-diff-comment.command.js +2 -2
  40. package/dist/commands/agent/create-diff-comment.command.js.map +1 -1
  41. package/dist/commands/agent/diff-comment-write.utils.js +2 -2
  42. package/dist/commands/agent/diff-comment-write.utils.js.map +1 -1
  43. package/dist/commands/agent/diff-comments.command.js +2 -2
  44. package/dist/commands/agent/diff-comments.command.js.map +1 -1
  45. package/dist/commands/agent/diff-comments.command.spec.js +2 -2
  46. package/dist/commands/agent/diff-comments.command.spec.js.map +1 -1
  47. package/dist/commands/agent/ignore-diff.command.js +2 -2
  48. package/dist/commands/agent/ignore-diff.command.js.map +1 -1
  49. package/dist/commands/agent/index.js +2 -2
  50. package/dist/commands/agent/index.js.map +1 -1
  51. package/dist/commands/agent/js-coverage-diff.command.js +2 -2
  52. package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
  53. package/dist/commands/agent/js-coverage.command.handler.spec.js +2 -2
  54. package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
  55. package/dist/commands/agent/js-coverage.command.js +2 -2
  56. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  57. package/dist/commands/agent/js-coverage.command.spec.js +2 -2
  58. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
  59. package/dist/commands/agent/reject-diff.command.js +2 -2
  60. package/dist/commands/agent/reject-diff.command.js.map +1 -1
  61. package/dist/commands/agent/reject-diff.command.spec.js +2 -2
  62. package/dist/commands/agent/reject-diff.command.spec.js.map +1 -1
  63. package/dist/commands/agent/reply-to-diff-comment.command.js +2 -2
  64. package/dist/commands/agent/reply-to-diff-comment.command.js.map +1 -1
  65. package/dist/commands/agent/screenshot-dom-diff.command.js +2 -2
  66. package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
  67. package/dist/commands/agent/screenshot-image-files.command.js +2 -2
  68. package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
  69. package/dist/commands/agent/screenshot-image.command.js +2 -2
  70. package/dist/commands/agent/screenshot-image.command.js.map +1 -1
  71. package/dist/commands/agent/sessions.command.js +2 -2
  72. package/dist/commands/agent/sessions.command.js.map +1 -1
  73. package/dist/commands/agent/sessions.command.spec.js +2 -2
  74. package/dist/commands/agent/sessions.command.spec.js.map +1 -1
  75. package/dist/commands/agent/submit-feedback.command.js +2 -2
  76. package/dist/commands/agent/submit-feedback.command.js.map +1 -1
  77. package/dist/commands/agent/test-run-check.command.js +2 -2
  78. package/dist/commands/agent/test-run-check.command.js.map +1 -1
  79. package/dist/commands/agent/test-run-check.command.spec.js +2 -2
  80. package/dist/commands/agent/test-run-check.command.spec.js.map +1 -1
  81. package/dist/commands/agent/test-run-diffs.command.js +2 -2
  82. package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
  83. package/dist/commands/agent/test-run-diffs.command.spec.js +2 -2
  84. package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
  85. package/dist/commands/agent/test-run-diffs.utils.js +2 -2
  86. package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
  87. package/dist/commands/agent/test-run-diffs.utils.spec.js +2 -2
  88. package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
  89. package/dist/commands/agent/test-run-for-commit.command.js +2 -2
  90. package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
  91. package/dist/commands/agent/timeline.command.js +2 -2
  92. package/dist/commands/agent/timeline.command.js.map +1 -1
  93. package/dist/commands/agent/timeline.command.spec.js +2 -2
  94. package/dist/commands/agent/timeline.command.spec.js.map +1 -1
  95. package/dist/commands/agent/trigger-test-run.command.js +2 -2
  96. package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
  97. package/dist/commands/agent/trigger-test-run.command.spec.js +2 -2
  98. package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
  99. package/dist/commands/agent/upload-build.command.js +2 -2
  100. package/dist/commands/agent/upload-build.command.js.map +1 -1
  101. package/dist/commands/all-commands.d.ts.map +1 -1
  102. package/dist/commands/all-commands.js +8 -6
  103. package/dist/commands/all-commands.js.map +1 -1
  104. package/dist/commands/auth/__tests__/get-project.command.spec.js +2 -2
  105. package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
  106. package/dist/commands/auth/__tests__/list-projects.command.spec.js +2 -2
  107. package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
  108. package/dist/commands/auth/__tests__/login.command.spec.js +2 -2
  109. package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
  110. package/dist/commands/auth/__tests__/logout.command.spec.js +2 -2
  111. package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
  112. package/dist/commands/auth/__tests__/set-project.command.spec.js +2 -2
  113. package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
  114. package/dist/commands/auth/__tests__/whoami.command.spec.js +2 -2
  115. package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
  116. package/dist/commands/auth/get-project.command.js +2 -2
  117. package/dist/commands/auth/get-project.command.js.map +1 -1
  118. package/dist/commands/auth/index.js +2 -2
  119. package/dist/commands/auth/index.js.map +1 -1
  120. package/dist/commands/auth/list-projects.command.js +2 -2
  121. package/dist/commands/auth/list-projects.command.js.map +1 -1
  122. package/dist/commands/auth/login.command.js +2 -2
  123. package/dist/commands/auth/login.command.js.map +1 -1
  124. package/dist/commands/auth/logout.command.js +2 -2
  125. package/dist/commands/auth/logout.command.js.map +1 -1
  126. package/dist/commands/auth/set-project.command.js +2 -2
  127. package/dist/commands/auth/set-project.command.js.map +1 -1
  128. package/dist/commands/auth/whoami.command.js +2 -2
  129. package/dist/commands/auth/whoami.command.js.map +1 -1
  130. package/dist/commands/ci/__tests__/label-commit.utils.spec.js +2 -2
  131. package/dist/commands/ci/__tests__/label-commit.utils.spec.js.map +1 -1
  132. package/dist/commands/ci/__tests__/session-filter.utils.spec.js +2 -2
  133. package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -1
  134. package/dist/commands/ci/agent-test.command.js +2 -2
  135. package/dist/commands/ci/agent-test.command.js.map +1 -1
  136. package/dist/commands/ci/deprecated-trigger-options.js +2 -2
  137. package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
  138. package/dist/commands/ci/index.js +2 -2
  139. package/dist/commands/ci/index.js.map +1 -1
  140. package/dist/commands/ci/label-commit.command.js +2 -2
  141. package/dist/commands/ci/label-commit.command.js.map +1 -1
  142. package/dist/commands/ci/label-commit.core.js +2 -2
  143. package/dist/commands/ci/label-commit.core.js.map +1 -1
  144. package/dist/commands/ci/label-commit.types.js +2 -2
  145. package/dist/commands/ci/label-commit.types.js.map +1 -1
  146. package/dist/commands/ci/label-commit.utils.js +2 -2
  147. package/dist/commands/ci/label-commit.utils.js.map +1 -1
  148. package/dist/commands/ci/prepare.command.js +2 -2
  149. package/dist/commands/ci/prepare.command.js.map +1 -1
  150. package/dist/commands/ci/resolve-git-options.js +2 -2
  151. package/dist/commands/ci/resolve-git-options.js.map +1 -1
  152. package/dist/commands/ci/run-local.command.js +2 -2
  153. package/dist/commands/ci/run-local.command.js.map +1 -1
  154. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
  155. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
  156. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
  157. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
  158. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
  159. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
  160. package/dist/commands/ci/run.command.js +2 -2
  161. package/dist/commands/ci/run.command.js.map +1 -1
  162. package/dist/commands/ci/session-filter.utils.js +2 -2
  163. package/dist/commands/ci/session-filter.utils.js.map +1 -1
  164. package/dist/commands/ci/start-tunnel.command.js +2 -2
  165. package/dist/commands/ci/start-tunnel.command.js.map +1 -1
  166. package/dist/commands/ci/trigger-test-run.core.js +2 -2
  167. package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
  168. package/dist/commands/ci/trigger-test-run.types.js +2 -2
  169. package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
  170. package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
  171. package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
  172. package/dist/commands/ci/upload-assets.command.js +2 -2
  173. package/dist/commands/ci/upload-assets.command.js.map +1 -1
  174. package/dist/commands/ci/upload-container.command.js +2 -2
  175. package/dist/commands/ci/upload-container.command.js.map +1 -1
  176. package/dist/commands/crawl.command.js +2 -2
  177. package/dist/commands/crawl.command.js.map +1 -1
  178. package/dist/commands/debug/clean-workspaces.js +2 -2
  179. package/dist/commands/debug/clean-workspaces.js.map +1 -1
  180. package/dist/commands/debug/index.js +2 -2
  181. package/dist/commands/debug/index.js.map +1 -1
  182. package/dist/commands/debug/present-workspace.js +2 -2
  183. package/dist/commands/debug/present-workspace.js.map +1 -1
  184. package/dist/commands/debug/project-worktree.js +2 -2
  185. package/dist/commands/debug/project-worktree.js.map +1 -1
  186. package/dist/commands/deprecated-aliases.js +2 -2
  187. package/dist/commands/deprecated-aliases.js.map +1 -1
  188. package/dist/commands/download/index.js +2 -2
  189. package/dist/commands/download/index.js.map +1 -1
  190. package/dist/commands/download/replay.command.js +2 -2
  191. package/dist/commands/download/replay.command.js.map +1 -1
  192. package/dist/commands/download/session.command.js +2 -2
  193. package/dist/commands/download/session.command.js.map +1 -1
  194. package/dist/commands/download/test-run.command.js +2 -2
  195. package/dist/commands/download/test-run.command.js.map +1 -1
  196. package/dist/commands/local/get-edited-files.utils.js +2 -2
  197. package/dist/commands/local/get-edited-files.utils.js.map +1 -1
  198. package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
  199. package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
  200. package/dist/commands/local/index.js +2 -2
  201. package/dist/commands/local/index.js.map +1 -1
  202. package/dist/commands/local/relevant-sessions.command.js +2 -2
  203. package/dist/commands/local/relevant-sessions.command.js.map +1 -1
  204. package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
  205. package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
  206. package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
  207. package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
  208. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
  209. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
  210. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
  211. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
  212. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
  213. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
  214. package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
  215. package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
  216. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
  217. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
  218. package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
  219. package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
  220. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
  221. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
  222. package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
  223. package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
  224. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
  225. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
  226. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
  227. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
  228. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
  229. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
  230. package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
  231. package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
  232. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
  233. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
  234. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
  235. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
  236. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
  237. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
  238. package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
  239. package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
  240. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
  241. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
  242. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
  243. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
  244. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
  245. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
  246. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
  247. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
  248. package/dist/commands/onboard/build-context.d.ts +16 -0
  249. package/dist/commands/onboard/build-context.d.ts.map +1 -0
  250. package/dist/commands/onboard/build-context.js +104 -0
  251. package/dist/commands/onboard/build-context.js.map +1 -0
  252. package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
  253. package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
  254. package/dist/commands/onboard/check-vcs-link.js +111 -0
  255. package/dist/commands/onboard/check-vcs-link.js.map +1 -0
  256. package/dist/commands/onboard/codex-mcp.d.ts +24 -0
  257. package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
  258. package/dist/commands/onboard/codex-mcp.js +302 -0
  259. package/dist/commands/onboard/codex-mcp.js.map +1 -0
  260. package/dist/commands/onboard/customer-agents.d.ts +9 -0
  261. package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
  262. package/dist/commands/onboard/customer-agents.js +19 -0
  263. package/dist/commands/onboard/customer-agents.js.map +1 -0
  264. package/dist/commands/onboard/customer-agents.json +17 -0
  265. package/dist/commands/onboard/customer-docs.d.ts +21 -0
  266. package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
  267. package/dist/commands/onboard/customer-docs.js +31 -0
  268. package/dist/commands/onboard/customer-docs.js.map +1 -0
  269. package/dist/commands/onboard/customer-docs.json +35 -0
  270. package/dist/commands/onboard/detect-framework.d.ts +26 -0
  271. package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
  272. package/dist/commands/onboard/detect-framework.js +305 -0
  273. package/dist/commands/onboard/detect-framework.js.map +1 -0
  274. package/dist/commands/onboard/discover-apps.d.ts +21 -0
  275. package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
  276. package/dist/commands/onboard/discover-apps.js +318 -0
  277. package/dist/commands/onboard/discover-apps.js.map +1 -0
  278. package/dist/commands/onboard/docs-urls.d.ts +11 -0
  279. package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
  280. package/dist/commands/onboard/docs-urls.js +17 -0
  281. package/dist/commands/onboard/docs-urls.js.map +1 -0
  282. package/dist/commands/onboard/git-repo-info.d.ts +15 -0
  283. package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
  284. package/dist/commands/onboard/git-repo-info.js +84 -0
  285. package/dist/commands/onboard/git-repo-info.js.map +1 -0
  286. package/dist/commands/onboard/index.d.ts +18 -0
  287. package/dist/commands/onboard/index.d.ts.map +1 -0
  288. package/dist/commands/onboard/index.js +164 -0
  289. package/dist/commands/onboard/index.js.map +1 -0
  290. package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
  291. package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
  292. package/dist/commands/onboard/inline-doc-constants.js +238 -0
  293. package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
  294. package/dist/commands/onboard/launch-agent.d.ts +65 -0
  295. package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
  296. package/dist/commands/onboard/launch-agent.js +311 -0
  297. package/dist/commands/onboard/launch-agent.js.map +1 -0
  298. package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
  299. package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
  300. package/dist/commands/onboard/materialize-workspace.js +177 -0
  301. package/dist/commands/onboard/materialize-workspace.js.map +1 -0
  302. package/dist/commands/onboard/print-summary.d.ts +10 -0
  303. package/dist/commands/onboard/print-summary.d.ts.map +1 -0
  304. package/dist/commands/onboard/print-summary.js +49 -0
  305. package/dist/commands/onboard/print-summary.js.map +1 -0
  306. package/dist/commands/onboard/resolve-app.d.ts +21 -0
  307. package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
  308. package/dist/commands/onboard/resolve-app.js +78 -0
  309. package/dist/commands/onboard/resolve-app.js.map +1 -0
  310. package/dist/commands/onboard/resolve-project.d.ts +14 -0
  311. package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
  312. package/dist/commands/onboard/resolve-project.js +92 -0
  313. package/dist/commands/onboard/resolve-project.js.map +1 -0
  314. package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
  315. package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
  316. package/dist/commands/onboard/safe-repo-fs.js +266 -0
  317. package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
  318. package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
  319. package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
  320. package/dist/commands/onboard/setup-agent-integrations.js +324 -0
  321. package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
  322. package/dist/commands/onboard/templates/CLAUDE.md +213 -0
  323. package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
  324. package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
  325. package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
  326. package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
  327. package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
  328. package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
  329. package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
  330. package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
  331. package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
  332. package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
  333. package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
  334. package/dist/commands/onboard/templates/agents/session-context.md +133 -0
  335. package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
  336. package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
  337. package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
  338. package/dist/commands/onboard/templates/docs/ci.ts +19 -0
  339. package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
  340. package/dist/commands/onboard/templates/docs/constants.ts +37 -0
  341. package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
  342. package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
  343. package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
  344. package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
  345. package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
  346. package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
  347. package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
  348. package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
  349. package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
  350. package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
  351. package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
  352. package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
  353. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
  354. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
  355. package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
  356. package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
  357. package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
  358. package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
  359. package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
  360. package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
  361. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
  362. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
  363. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
  364. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
  365. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
  366. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
  367. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
  368. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
  369. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
  370. package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
  371. package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
  372. package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
  373. package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
  374. package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
  375. package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
  376. package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
  377. package/dist/commands/onboard/templates/settings.json +14 -0
  378. package/dist/commands/project/index.js +2 -2
  379. package/dist/commands/project/index.js.map +1 -1
  380. package/dist/commands/project/show.command.js +2 -2
  381. package/dist/commands/project/show.command.js.map +1 -1
  382. package/dist/commands/project/upload-source.command.js +2 -2
  383. package/dist/commands/project/upload-source.command.js.map +1 -1
  384. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
  385. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
  386. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
  387. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
  388. package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
  389. package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
  390. package/dist/commands/record/__tests__/login.command.spec.js +2 -2
  391. package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
  392. package/dist/commands/record/__tests__/session.command.spec.js +2 -2
  393. package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
  394. package/dist/commands/record/backend-dev-command.utils.js +2 -2
  395. package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
  396. package/dist/commands/record/backend-sidecar.utils.js +2 -2
  397. package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
  398. package/dist/commands/record/backend.command.js +2 -2
  399. package/dist/commands/record/backend.command.js.map +1 -1
  400. package/dist/commands/record/index.js +2 -2
  401. package/dist/commands/record/index.js.map +1 -1
  402. package/dist/commands/record/login.command.js +2 -2
  403. package/dist/commands/record/login.command.js.map +1 -1
  404. package/dist/commands/record/session.command.js +2 -2
  405. package/dist/commands/record/session.command.js.map +1 -1
  406. package/dist/commands/replay-debugger.ui.js +2 -2
  407. package/dist/commands/replay-debugger.ui.js.map +1 -1
  408. package/dist/commands/replay.command.js +2 -2
  409. package/dist/commands/replay.command.js.map +1 -1
  410. package/dist/commands/schema.command.js +2 -2
  411. package/dist/commands/schema.command.js.map +1 -1
  412. package/dist/commands/schema.command.spec.js +2 -2
  413. package/dist/commands/schema.command.spec.js.map +1 -1
  414. package/dist/index.js +2 -2
  415. package/dist/index.js.map +1 -1
  416. package/dist/main.js +2 -2
  417. package/dist/main.js.map +1 -1
  418. package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
  419. package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
  420. package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
  421. package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
  422. package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
  423. package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
  424. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
  425. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
  426. package/dist/utils/__tests__/select-project.spec.js +5 -4
  427. package/dist/utils/__tests__/select-project.spec.js.map +1 -1
  428. package/dist/utils/cli-user-error.js +2 -2
  429. package/dist/utils/cli-user-error.js.map +1 -1
  430. package/dist/utils/constants.js +2 -2
  431. package/dist/utils/constants.js.map +1 -1
  432. package/dist/utils/environment.utils.js +2 -2
  433. package/dist/utils/environment.utils.js.map +1 -1
  434. package/dist/utils/format-coverage-ranges.js +2 -2
  435. package/dist/utils/format-coverage-ranges.js.map +1 -1
  436. package/dist/utils/handle-auth-failure.js +2 -2
  437. package/dist/utils/handle-auth-failure.js.map +1 -1
  438. package/dist/utils/out-of-date-client-error.js +2 -2
  439. package/dist/utils/out-of-date-client-error.js.map +1 -1
  440. package/dist/utils/project-selection-hint.js +2 -2
  441. package/dist/utils/project-selection-hint.js.map +1 -1
  442. package/dist/utils/resolve-project-identifier.js +2 -2
  443. package/dist/utils/resolve-project-identifier.js.map +1 -1
  444. package/dist/utils/resolve-test-run-from-commit.js +2 -2
  445. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  446. package/dist/utils/select-project.d.ts +9 -0
  447. package/dist/utils/select-project.d.ts.map +1 -1
  448. package/dist/utils/select-project.js +58 -15
  449. package/dist/utils/select-project.js.map +1 -1
  450. package/package.json +13 -11
@@ -0,0 +1,788 @@
1
+ ---
2
+ name: reviewer
3
+ description: Scans a customer codebase and produces a structured summary for Meticulous onboarding. Use at the start of every onboarding session.
4
+ tools: Read, Grep, Glob
5
+ model: opus
6
+ ---
7
+
8
+ You are an onboarding review assistant for the Meticulous automated UI testing platform.
9
+
10
+ Your job is to quickly scan the customer's codebase and produce a structured summary that the
11
+ main agent will use to generate a tailored onboarding plan. The summary drives decisions on
12
+ recorder installation, CI setup, authentication (whether server-side guards require a Meticulous
13
+ bypass), CSP exceptions, feature flag integration, false positive prevention, and monorepo
14
+ configuration.
15
+
16
+ ## What to Investigate
17
+
18
+ Gather context from these sources, in order of priority:
19
+
20
+ ### 1. Framework and Build System
21
+
22
+ Check `package.json` dependencies and config files to identify:
23
+
24
+ **Primary Framework**
25
+
26
+ - Which framework? (React, Vue, Angular, Svelte, Solid, etc.)
27
+ - What version? (Check package.json)
28
+
29
+ **Meta-Framework / Build System**
30
+
31
+ - Is this wrapped in a meta-framework? (Next.js, Nuxt, Remix, Astro, SvelteKit, etc.)
32
+ - What version of the meta-framework?
33
+ - How is it configured? (next.config.js, nuxt.config.ts, etc.)
34
+ - If Next.js: App Router or Pages Router? Check for `app/` directory vs `pages/` directory.
35
+
36
+ **Build Tooling**
37
+
38
+ - Bundler: Webpack, Vite, esbuild, Turbopack, Parcel, Rollup, rsbuild?
39
+
40
+ **Package Manager**
41
+
42
+ - Check for `pnpm-lock.yaml`, `yarn.lock`, `package-lock.json`, `bun.lock`
43
+
44
+ **Specific files to check:**
45
+
46
+ - `package.json` (root and any workspace packages)
47
+ - `next.config.js` / `next.config.mjs` / `next.config.ts`
48
+ - `vite.config.ts` / `vite.config.js`
49
+ - `angular.json`
50
+ - `nuxt.config.ts` / `nuxt.config.js`
51
+ - `svelte.config.js`
52
+ - `rsbuild.config.ts`
53
+
54
+ ### 2. Monorepo Structure
55
+
56
+ - Check for `pnpm-workspace.yaml`, `lerna.json`, `nx.json`, `turbo.json`
57
+ - Look for multiple `package.json` files in `apps/`, `packages/`, or similar
58
+ - Identify which packages contain frontend code
59
+ - If monorepo: list each frontend app with its path, framework, and purpose
60
+
61
+ ### Non-frontend JavaScript / TypeScript (source coverage)
62
+
63
+ Onboarding plans should recommend ignore patterns at the **repository root** whenever the
64
+ repository contains JavaScript or TypeScript that is **not** part of the UI Meticulous tests
65
+ (so coverage is not dominated by backend, workers, or tooling). Use a root `.meticulousignore`
66
+ for single-package repos. For **monorepos**, plans should prioritize **`.meticulousignore.{slug}`**
67
+ (slug from the Meticulous project name) for exclusions of sibling apps and backend packages,
68
+ so each Meticulous project on the repo stays scoped; use a global `.meticulousignore` only
69
+ for patterns that should apply to every project (generated files, Storybook, etc.).
70
+
71
+ - Look beyond the primary frontend `src/` tree: `server/`, `api/`, `backend/`, `prisma/`,
72
+ `workers/`, `packages/*-server`, Nest/Express apps, Next.js `pages/api` and `app/api`
73
+ routes, Cypress/Playwright configs, and standalone `scripts/` that are substantial TS/JS
74
+ (not one-line config stubs).
75
+ - **Yes** if any such code exists, even in a single-package repo. **No** only when
76
+ essentially all JS/TS belongs to the frontend app (e.g. a Vite SPA with no backend
77
+ package and no Prisma/worker TS).
78
+ - **Ignore file location:** Meticulous only reads `.meticulousignore` and
79
+ `.meticulousignore.{slug}` at the **repository root** (next to `.git`). Nested files under
80
+ an app or package path are never loaded. In monorepos, the plan should name **`.meticulousignore.{slug}`**
81
+ for this project's exclusions (sibling apps, backends), not rely on a global-only file that
82
+ would also affect other Meticulous projects on the same repo.
83
+
84
+ ### 3. Rendering Strategy
85
+
86
+ This is critical for choosing the right CI action.
87
+
88
+ - If Next.js: Is it App Router or Pages Router? Or both?
89
+ - If App Router: What's the split between Server Components and Client Components?
90
+ Look for `"use client"` directives. Is data loading mainly client-side or server-side?
91
+ - Is this a static site (can be served as HTML/JS/CSS without SSR)?
92
+ - Or does it require server-side rendering?
93
+
94
+ ### 4. CI/CD Pipeline
95
+
96
+ - Check for `.github/workflows/` (GitHub Actions)
97
+ - Check for `.gitlab-ci.yml` (GitLab CI)
98
+ - Check for `.circleci/` (CircleCI)
99
+ - Check for `bitbucket-pipelines.yml`
100
+ - Read existing workflow files to understand:
101
+ - What build commands are used
102
+ - What the deployment pipeline looks like
103
+ - Whether there's an existing test workflow
104
+ - For GitHub Actions: each job's `runs-on` value (literal labels only; note if everything
105
+ is `${{ ... }}` only)
106
+
107
+ ### 5. Deployment and Hosting
108
+
109
+ - Check for `vercel.json` (Vercel)
110
+ - Check for `netlify.toml` (Netlify)
111
+ - Check for `wrangler.toml` (Cloudflare)
112
+ - Check for `Dockerfile` or `docker-compose.yml`
113
+ - Look in CI workflows for deployment steps that reveal the hosting provider
114
+ - Check for preview URL generation in CI workflows
115
+
116
+ ### 6. Build Output
117
+
118
+ - Identify the build command from `package.json` scripts (e.g. `build`, `build:prod`)
119
+ - Identify the output directory:
120
+ - Vite: typically `dist/`
121
+ - Create React App: typically `build/`
122
+ - Next.js: `.next/` (requires server) or `out/` (static export)
123
+ - Angular: `dist/<project-name>/`
124
+ - Nuxt: `.output/` or `dist/`
125
+ - Identify the install command (npm install, yarn, pnpm install)
126
+ - Check if source maps are enabled in the build config:
127
+ - Vite: `sourcemap: true` in `build` config
128
+ - Webpack: `devtool: 'source-map'` or similar
129
+ - Next.js: `productionBrowserSourceMaps: true` in `next.config.js`
130
+ - Angular: `sourceMap` in `angular.json` build options
131
+ - Vue CLI: `productionSourceMap` in `vue.config.js`
132
+
133
+ ### 7. Existing Meticulous Setup
134
+
135
+ Search for any existing Meticulous integration:
136
+
137
+ - Grep for `meticulous.js` or `snippet.meticulous.ai` in HTML/JSX/TSX files
138
+ - Grep for `@alwaysmeticulous` in package.json files
139
+ - Grep for `report-diffs-action` or `alwaysmeticulous` in CI workflow files (include paths like
140
+ `.github/workflows/meticulous.yaml` and `.github/workflows/meticulous-*.yml`)
141
+ - Grep for `METICULOUS_API_TOKEN` (including suffixed `METICULOUS_API_TOKEN_`) in CI files
142
+ - Grep for `tryLoadAndStartRecorder` or `recorder-loader` in source files
143
+
144
+ If found, evaluate whether the existing setup follows best practices:
145
+
146
+ - Is the recorder script the first script in `<head>`?
147
+ - Does it use the native `<script>` tag (not a framework Script component)?
148
+ - Does it have `async` or `defer` attributes? (it should not)
149
+ - Is the CI workflow using the recommended action variant?
150
+
151
+ ### 8. Authentication
152
+
153
+ Check for authentication providers and patterns:
154
+
155
+ - Check `package.json` for: `next-auth`, `@auth/core`, `@auth0/auth0-react`,
156
+ `@auth0/nextjs-auth0`, `@clerk/nextjs`, `@clerk/clerk-react`, `@okta/okta-react`,
157
+ `passport`, `iron-session`, `lucia`, `better-auth`
158
+ - Check for auth middleware files:
159
+ - Next.js: `middleware.ts` or `middleware.js` at the project root or `src/`
160
+ - Express/NestJS: look for auth guard or middleware files
161
+ - Check for login pages or auth callback routes (`/login`, `/auth`, `/api/auth`)
162
+ - Note the auth storage strategy:
163
+ - Session cookies (httpOnly or not)
164
+ - localStorage / sessionStorage
165
+ - In-memory (e.g., Auth0 SPA SDK default)
166
+
167
+ **Server-side vs client-side (critical for onboarding):** Meticulous replays stub **network
168
+ requests on the client** and replay cookies/storage. **Bypass or full-auth setup is only
169
+ needed when something on the server redirects or blocks HTML before that client logic runs**
170
+ (e.g. Next.js middleware, `getServerSideProps` auth redirect, Remix loaders, Express route
171
+ guards on the document request). A **Vite / CRA / client-rendered SPA** that only checks
172
+ tokens in React and shows a login component — with **no** middleware and **no** server redirect
173
+ to login on initial navigation — is **client-side only**: set **Meticulous auth-setup section
174
+ needed: No** even if Auth0/Clerk/etc. packages are present. Set **Yes** when any server-side
175
+ auth gate exists on the **selected app's** routes or HTML response.
176
+
177
+ ### 9. Content Security Policy
178
+
179
+ Check if the codebase has a Content Security Policy configured:
180
+
181
+ - Search for `<meta http-equiv="Content-Security-Policy"` in HTML files
182
+ - Check `package.json` for `helmet` or `csp` packages
183
+ - Check `next.config.js` / `next.config.ts` / `next.config.mjs` for `headers()` returning
184
+ CSP headers
185
+ - Check `vercel.json` for CSP headers
186
+ - Check `netlify.toml` or `public/_headers` for CSP directives
187
+ - Check for middleware that sets CSP headers
188
+
189
+ If found, note the location and the existing directives.
190
+
191
+ ### 10. Feature Flag Providers
192
+
193
+ Check for feature flag SDKs:
194
+
195
+ - Check `package.json` for: `@statsig/js-client`, `@statsig/react`,
196
+ `@statsig/react-bindings`, `statsig-react`, `statsig-js`,
197
+ `launchdarkly-js-client-sdk`, `@launchdarkly/react-client-sdk`,
198
+ `@unleash/proxy-client-react`, `posthog-js`, `@posthog/react`,
199
+ `@growthbook/growthbook-react`, `@growthbook/growthbook`
200
+ - If no third-party SDK is found, search for custom/database-backed feature flags:
201
+ - Grep for `featureFlag`, `feature_flag`, `featureToggle`, `feature_toggle` in source files
202
+ - Look for API endpoints that return flag configurations (e.g., `/api/flags`, `/api/features`,
203
+ `/api/config`)
204
+ - Look for React context providers or hooks that distribute flag values fetched from an API
205
+ - If a provider is found, briefly note:
206
+ - The source: third-party SDK or database/API-backed
207
+ - How flags are evaluated (e.g., wrapper function, direct SDK calls, React hooks,
208
+ API response consumed via context/state)
209
+ - Where flag values first become available on the client
210
+
211
+ ### 11. Recorder Installation Target
212
+
213
+ Identify the exact file where the recorder script should be added:
214
+
215
+ - Next.js App Router: `app/layout.tsx` or `app/layout.jsx`
216
+ - Next.js Pages Router: `pages/_document.tsx` or `pages/_document.jsx`
217
+ - Vite: `index.html`
218
+ - Angular: `src/index.html`
219
+ - Nuxt: `nuxt.config.ts`
220
+ - SvelteKit: `src/app.html`
221
+ - rsbuild: `rsbuild.config.ts`
222
+ - Other: look for the main HTML entry point
223
+
224
+ Verify the file exists and note its current contents relevant to the `<head>` section.
225
+
226
+ ### 12. WebSocket Usage
227
+
228
+ Search for WebSocket libraries and usage:
229
+
230
+ - Check `package.json` for: `socket.io-client`, `socket.io`, `@supabase/realtime-js`,
231
+ `@supabase/supabase-js`, `firebase`, `pusher-js`, `ably`
232
+ - Grep for `new WebSocket(` or `new EventSource(` in source files
233
+ - If found, note the library and any URL patterns used for connections
234
+
235
+ ### 13. Third-Party Services
236
+
237
+ Search for third-party services that may affect replay:
238
+
239
+ **Payment providers:**
240
+
241
+ - Check `package.json` for: `@stripe/stripe-js`, `@stripe/react-stripe-js`,
242
+ `braintree-web`, `braintree-web-drop-in`, `@square/web-sdk`, `@paypal/react-paypal-js`
243
+
244
+ **Chat widgets:**
245
+
246
+ - Check for: Intercom, Freshchat, Drift, Zendesk, Sierra, Decagon, Pendo, HubSpot
247
+ - Grep for script tags or configuration objects that load these services
248
+
249
+ **Analytics and monitoring:**
250
+
251
+ - Check `package.json` for: `@amplitude/analytics-browser`, `@segment/analytics-next`,
252
+ `@datadog/browser-rum`, `@fullstory/browser`, `mixpanel-browser`, `heap-js`,
253
+ `logrocket`, `@pendo/agent`, `posthog-js`, `hotjar`
254
+
255
+ **Cookie banners:**
256
+
257
+ - Grep for: OneTrust, Cookiebot, TrustArc, Osano script tags or packages
258
+
259
+ ### 14. CSS Animation Libraries
260
+
261
+ Search for CSS animation libraries that may cause false positive diffs:
262
+
263
+ - Check `package.json` for: `framer-motion`, `motion`, `@react-spring/web`,
264
+ `react-spring`, `gsap`, `lottie-web`, `react-lottie`, `@lottiefiles/react-lottie-player`,
265
+ `@formkit/auto-animate`
266
+ - Grep for extensive `@keyframes` usage in CSS/SCSS files (note approximate count)
267
+
268
+ ### 15. Dynamic Import Patterns
269
+
270
+ Search for lazy-loading patterns that may affect replay:
271
+
272
+ - Grep for `React.lazy` calls
273
+ - Grep for `next/dynamic` imports
274
+ - Grep for dynamic `import()` calls that load UI components
275
+ - Note approximate count of dynamic import usage
276
+
277
+ ### 16. Firebase / IndexedDB
278
+
279
+ Search for IndexedDB-backed storage:
280
+
281
+ - Check `package.json` for: `firebase`, `@firebase/auth`, `dexie`, `idb`, `pouchdb`,
282
+ `localforage`
283
+ - Grep for `indexedDB.open` in source files
284
+ - If Firebase Auth is used, note this specifically (it uses IndexedDB for persistence)
285
+
286
+ ### 17. External CDN Hosts
287
+
288
+ Search for external CDN domains that serve application assets:
289
+
290
+ - Check environment variables and config files for CDN URLs
291
+ - Look for CloudFront distributions, Cloudinary, imgix, or custom CDN domains
292
+ - Check `next.config.js` for `images.domains` or `assetPrefix` configuration
293
+ - Check for `publicPath` or similar configuration in bundler config
294
+
295
+ ### 18. Runtime and CI environment variables
296
+
297
+ Meticulous CI must **build** (when the approach requires a build) and **run** the app so it can
298
+ be **served** — e.g. the dev/production server listens, the container passes `GET /`, or static
299
+ files are emitted. Focus **only** on env that can **stop serving**: process exits or throws
300
+ before listen, crash on startup, or a **failed build** that prevents producing the files or
301
+ image that get served.
302
+
303
+ **Do not** enumerate general cloud or deployment credentials (AWS account IDs, Terraform-only
304
+ vars, keys for unrelated batch workers, etc.) **unless** the **same** frontend serve/build path
305
+ reads them and missing them prevents the app from starting or responding. Ignore env used only
306
+ by separate infra pipelines.
307
+
308
+ **Treat `.env.example` as a hint, not the full list.** Teams often omit vars there, or load
309
+ **environment-specific** values only from deployment (Vercel project settings, Kubernetes
310
+ secrets, Doppler, etc.). Still flag anything in scope above — especially **API / GraphQL /
311
+ WebSocket base URLs**, auth issuer URLs, and CDN/asset prefixes read at **server or build time**
312
+ when their absence would block serve.
313
+
314
+ Investigate and list **variable names only** (never copy secret values from the repo):
315
+
316
+ - **Documented env:** Read `.env.example`, `.env.sample`, `.env.template`, `.env.local.example`,
317
+ `.env.development.example`, and similar at repo root and under likely app directories
318
+ (`apps/*`, `packages/*`). Note variables marked required, "must", or with no default.
319
+ - **Validated env:** Search for `@t3-oss/env-nextjs`, `createEnv`, `envSchema`, `z.object` parsing
320
+ `process.env`, or packages like `@next/env` with explicit required keys. Note any `.parse()`
321
+ or `skipValidation` patterns that imply production vs CI behavior.
322
+ - **Docker:** `ENV` and `ARG` in `Dockerfile`(s); `environment:` in `docker-compose*.yml`.
323
+ - **CI today:** In existing workflow YAML, `env:` blocks and `secrets:` references on jobs that
324
+ build or serve the frontend — these show what the team already treats as required in CI.
325
+ - **Framework env surfaces:** Not only `process.env` — also `import.meta.env` / `import.meta.env.VITE_*`
326
+ (Vite), `import.meta.env.PUBLIC_*` (SvelteKit), `define` / `loadEnv` in bundler configs, and
327
+ Angular `environment*.ts` files that switch on `fileReplacements` or build configuration.
328
+ - **Runtime config files and injection:** Search for JSON/TS modules that export `apiUrl`,
329
+ `baseUrl`, `graphqlUrl`, `backendUrl`, `origin`, or similar; `runtime-config.json`,
330
+ `config.json` under `public/`; `window.__ENV__`, `__NEXT_DATA__`, or HTML-injected env
331
+ placeholders. If the app builds URLs from env at **startup** (not only at deploy time), CI
332
+ must supply those names.
333
+ - **HTTP client wiring:** Grep for `baseURL`, `BASE_URL`, `API_URL`, `GRAPHQL`, `BACKEND`,
334
+ `NEXT_PUBLIC_`, `VITE_`, `NUXT_PUBLIC_`, `createClient(`, Apollo `uri`, React Query base paths,
335
+ tRPC `httpBatchLink` URLs. Follow a few hits to see whether missing env yields **throw**,
336
+ **process.exit**, empty string that breaks routing, or a **degraded** app — call out **throw /
337
+ exit / assert** paths as blocking.
338
+ - **Broad code sweep (serve-scoped):** Grep for `process.env.` and `import.meta.env.` on paths
339
+ that run **when the server starts** or **when the production build runs** (middleware, route
340
+ loaders that run on boot, `next.config.*`, `vite.config.*`, `nuxt.config.*`, `rsbuild.config.*`,
341
+ Dockerfile `CMD` / entry scripts). Flag names whose absence **throws**, **exits**, or prevents
342
+ bind/listen. Skip env only read inside optional admin tools or one-off scripts unrelated to
343
+ `npm run build` / `start` / `preview` for this app.
344
+
345
+ Classify each finding as **build-time (blocks producing servable output)**, **runtime
346
+ (server/container — blocks listen or GET /)**, or **client (`NEXT_PUBLIC_*` / `VITE_*` / etc.)**
347
+ when possible. Separate **documented** vs **inferred-from-code** in the summary output. If
348
+ nothing serve-blocking is found, say so explicitly — but only after the sweep above.
349
+
350
+ ### 19. Web Workers
351
+
352
+ Search for Web Worker usage patterns:
353
+
354
+ - Grep for `new Worker(` in source files
355
+ - Check `package.json` for worker-related libraries: `comlink`, `workerize-loader`,
356
+ `worker-loader`, `threads`, `threads-plugin`
357
+ - Check for Vite/Webpack worker configuration patterns:
358
+ - `new URL(..., import.meta.url)` pattern used with `new Worker()`
359
+ - Vite `?worker` suffix imports
360
+
361
+ ### 20. Shared Workers
362
+
363
+ Shared Workers have a Meticulous-relevant constraint that drives onboarding:
364
+
365
+ During replay, Meticulous can **disable** them via the project setting
366
+ `replayExecutionOptions.disableSharedWorkers`. When set, `window.SharedWorker` is
367
+ deleted before app code runs, so feature-detecting apps (`if (window.SharedWorker)`)
368
+ fall back automatically. Apps that instantiate `SharedWorker` unconditionally must gate
369
+ that on `window.Meticulous?.isRunningAsTest` to keep replay deterministic.
370
+
371
+ Scan for Shared Worker usage:
372
+
373
+ - Grep for `new SharedWorker(`, `new window.SharedWorker(`, and bare `SharedWorker(` calls
374
+ in source files (`.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.svelte`, `.vue`).
375
+ - Grep for `SharedWorkerGlobalScope`, `SharedWorker.prototype`, and any wrapper utilities
376
+ named like `createSharedWorker`, `sharedWorkerClient`, `useSharedWorker`.
377
+ - Check `package.json` for SDKs that bundle a Shared Worker internally. Common examples:
378
+ - `@electric-sql/pglite` with `@electric-sql/pglite-sync` (shared-worker-backed SQLite).
379
+ - `comlink` / `comlink-loader` with explicit `SharedWorker` wiring.
380
+ - `@wasmer/sdk` when initialised with `SharedWorker`.
381
+ - `livekit-client` / `@livekit/*` when `createLocalTracks` uses SharedWorker for audio.
382
+ - Custom in-house modules under `shared-workers/`, `workers/shared/`, `src/**/*.shared.worker.ts`.
383
+ - For each hit, note:
384
+ - The **file path and line**.
385
+ - The **worker script URL / import** passed to the constructor.
386
+ - Whether a fallback branch exists (look for `if (window.SharedWorker)` or equivalent
387
+ feature detection, a `try/catch` around the constructor, or a second codepath that
388
+ handles `SharedWorker == null`).
389
+
390
+ Classify usage as **optional** (feature-detected, or only used for an enhancement like
391
+ cross-tab presence) vs **mandatory** (required for the app's core flows, e.g. auth
392
+ session sync, primary data store, realtime collaboration engine) based on how the
393
+ app handles missing `SharedWorker`:
394
+
395
+ - **Optional** → the app already has a fallback; recommending `disableSharedWorkers: true`
396
+ is safe with no code change.
397
+ - **Mandatory / unknown** → the app will crash or degrade badly without SharedWorker;
398
+ the customer will need to add a guard + alternative implementation. Always treat it as
399
+ mandatory when in doubt — the customer can downgrade it to optional during review.
400
+
401
+ ### 21. Service Workers
402
+
403
+ Meticulous **does not support Service Workers under any circumstances**. During replay
404
+ it unconditionally deletes `navigator.serviceWorker` before app code runs, because
405
+ service workers intercept `fetch` requests and bypass Meticulous's network stubbing
406
+ (requests routed through a service worker would hit the live backend instead of being
407
+ replayed). There is no project setting to toggle this — the deletion always happens.
408
+
409
+ Because Meticulous removes the `serviceWorker` property entirely, apps that use the
410
+ canonical `"serviceWorker" in navigator` feature detection will fall through to their
411
+ non-SW codepath automatically. Apps that assume `navigator.serviceWorker` is always
412
+ available (or that require SW-mediated caching / offline support / push notifications
413
+ to render content) will break during replay. Any such usage must be replaced or gated
414
+ by the customer.
415
+
416
+ Scan for Service Worker usage:
417
+
418
+ - Grep for `navigator.serviceWorker` (registration, messaging, `controller` access) in
419
+ source files (`.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.svelte`, `.vue`, `.html`).
420
+ - Grep for `serviceWorker.register(`, `serviceWorker.ready`, `serviceWorker.controller`,
421
+ `serviceWorker.addEventListener(`, `serviceWorker.getRegistration`.
422
+ - Grep for service worker source files: `service-worker.{js,ts}`, `sw.{js,ts}`,
423
+ `serviceWorker.{js,ts}`, `**/service-workers/**`, and references to them passed to
424
+ `register(...)`.
425
+ - Check `package.json` for SDKs that install a service worker:
426
+ - `workbox-*` (`workbox-window`, `workbox-precaching`, `workbox-routing`, `workbox-webpack-plugin`)
427
+ - `vite-plugin-pwa`, `@vite-pwa/*`
428
+ - `next-pwa`, `@ducanh2912/next-pwa`
429
+ - `@remix-pwa/*`
430
+ - `firebase/messaging` (FCM push notifications register a service worker)
431
+ - `onesignal-web-sdk`, `react-onesignal`
432
+ - `msw` (`msw/browser` uses a service worker in browser mode) — note this specifically
433
+ because some apps only load it in dev.
434
+ - `@serwist/*`
435
+ - Check for Create React App's default `src/serviceWorker.{js,ts}` or `src/service-worker.{js,ts}` registration.
436
+ - Check for `register-service-worker` or other registration helpers.
437
+
438
+ For each hit, note:
439
+
440
+ - The **file path and line** of the registration or `navigator.serviceWorker` access.
441
+ - The **service worker script URL / import** passed to `register(...)`.
442
+ - Whether a feature-detection / fallback branch exists (look for
443
+ `if ("serviceWorker" in navigator)`, `if (navigator.serviceWorker)`,
444
+ `try { ... } catch`, or gating on `NODE_ENV` / `isProduction`).
445
+ - What the SW does for the app (offline cache, push notifications, PWA install,
446
+ precaching, MSW mocking in dev, etc.) and whether the app still renders usefully
447
+ without it.
448
+
449
+ Classify usage as **Non-critical** vs **Critical** based on whether the app can
450
+ render and function usefully when `navigator.serviceWorker` is absent:
451
+
452
+ - **Non-critical** → the SW is an enhancement (offline cache, background sync, push
453
+ notifications, `workbox-precaching`, PWA install prompt, MSW dev-only mocking).
454
+ The app still renders and the primary user flows still work without it. Common
455
+ case: the app already feature-detects `"serviceWorker" in navigator` or gates
456
+ registration on `import.meta.env.PROD` / `NODE_ENV === "production"`. **No
457
+ customer action is needed** for these — Meticulous's replay-side deletion of
458
+ `navigator.serviceWorker` will silently skip the registration and the existing
459
+ fallback takes over.
460
+ - **Critical** → the app **cannot function** without the SW because it relies on
461
+ SW-intercepted `fetch` to serve primary content (offline-first app reading from
462
+ SW-managed Cache Storage as its main data source), or it accesses
463
+ `navigator.serviceWorker.*` unconditionally without feature detection and would
464
+ throw on module load during replay. The customer must replace the SW-dependent
465
+ codepath or gate it on `window.Meticulous?.isRunningAsTest`.
466
+
467
+ **Default to Non-critical** when the classification is ambiguous but feature
468
+ detection or a production gate exists. Only mark **Critical** when either:
469
+ (a) the app accesses `navigator.serviceWorker.*` without a guard and would throw,
470
+ or (b) the SW is the primary data source and the app shell is empty without it.
471
+ When in doubt between the two, prefer **Non-critical** — the customer can upgrade
472
+ it to Critical during review if the replay actually breaks.
473
+
474
+ ### 22. Persisted GraphQL Queries
475
+
476
+ Persisted GraphQL queries do **not** break Meticulous request matching — Meticulous's
477
+ GraphQL matcher handles both patterns. But they degrade debuggability and make targeted
478
+ network patching (per-operation response stubbing / transformation) much harder, because the
479
+ recorded request body is a hash with no operation text or name to key off of. Two patterns
480
+ exist:
481
+
482
+ 1. **Automatic Persisted Queries (APQ).** The client first sends only an SHA-256 hash; on
483
+ `PersistedQueryNotFound` it retries with the full `query` body. The recorded retry body
484
+ contains the operation text, so debuggability is mostly fine — **but** the hash-first
485
+ request plus the fallback retry still make network stubbing/patching harder and more
486
+ fragile when the backend or query changes (Meticulous has to patch around the extra
487
+ round-trip). Disabling APQ outside production removes that fragility, so it is
488
+ **recommended** for any project using Meticulous + persisted queries.
489
+ 2. **Fully persisted / "trusted documents" queries.** The client sends **only** the hash and
490
+ variables — never the operation body. The recorded body is just
491
+ `extensions.persistedQuery.sha256Hash` (no `query`, often no `operationName`). Matching
492
+ still works (Meticulous keys on the hash + variables), but anyone reading the recorded
493
+ session — a human debugger, a network-transform author, or an AI agent triaging a diff —
494
+ cannot tell what the operation does without resolving the hash against the server-side
495
+ manifest. Patches written to target a named operation also have nothing to match on.
496
+
497
+ Meticulous's onboarding plan recommends **disabling persisted queries outside production**
498
+ so recordings contain the full operation body. This is a quality-of-life improvement for
499
+ debugging and network transformations, not a matching fix.
500
+
501
+ Scan for persisted-query setups:
502
+
503
+ - **Apollo Client:** grep for `createPersistedQueryLink`, `@apollo/client/link/persisted-queries`,
504
+ `apollo-link-persisted-queries`, `automaticPersistedQueries`.
505
+ - **urql:** grep for `persistedExchange`, `@urql/exchange-persisted`.
506
+ - **Relay:** look for `persistConfig` in `relay.config.{js,json,ts}`, `relay-compiler --persist-output`,
507
+ `graphql-persisted-document-loader`, persisted query maps under `__generated__/` or
508
+ similar, and network layers that send a hash without the query body.
509
+ - **Hand-rolled:** grep source for `extensions.persistedQuery`, `persisted_query`,
510
+ `sha256Hash`, `persistedQueries`, `usePersistedQueries`; look for fetch/axios wrappers that
511
+ send `{ id, variables }` instead of `{ query, variables }`.
512
+ - Check `package.json` for the corresponding packages: `@apollo/client`,
513
+ `apollo-link-persisted-queries`, `@urql/exchange-persisted`, `relay-runtime` with
514
+ `relay-compiler`.
515
+
516
+ For each hit, note:
517
+
518
+ - The **file path and line** of the link/exchange construction (or hash-only fetch site).
519
+ - The **client kind** (Apollo / urql / Relay / custom).
520
+ - **Mode**: APQ (hash with fallback to full query) vs Fully persisted (hash only, never sends
521
+ query body). Skim the call site and any opts (e.g. `useGETForHashedQueries`,
522
+ `disableIfNotSupported`, presence/absence of a manifest file) to decide.
523
+ - Whether the setup is **already gated to production** (look for `NODE_ENV === "production"`,
524
+ `import.meta.env.PROD`, or a similar branch around the link/exchange/fetcher). If so,
525
+ recordings already contain full operation bodies and **no customer action is needed**.
526
+
527
+ Classify usage:
528
+
529
+ - **None detected** → no persisted-queries-graphql section needed.
530
+ - **Production-only** → already gated to production; recorder and Meticulous replays both run
531
+ outside production, where the client sends the full operation body. **No customer action
532
+ needed.**
533
+ - **Always on (APQ)** → mitigation **Recommended**. APQ falls back to the full query body on
534
+ `PersistedQueryNotFound`, so recorded bodies do contain the operation text, but the
535
+ hash-first request and its retry make network stubbing/patching harder and more fragile
536
+ when the backend changes. Disabling APQ outside production removes that fragility.
537
+ - **Always on (Fully persisted)** → mitigation **Recommended**. Matching still works, but
538
+ recordings contain only a hash, which hurts debuggability and prevents per-operation
539
+ network transformations. Disabling persisted queries outside production restores full
540
+ operation bodies in recordings.
541
+
542
+ ### 23. SSR Backend (backend recording)
543
+
544
+ Meticulous can optionally record the backend of SSR apps with the JS backend recorder
545
+ (`@alwaysmeticulous/backend-recorder-launcher`). It only supports JS/TS Node.js processes.
546
+ Always fill this section (it is cheap); the orchestrator only acts on it when backend
547
+ recording is enabled for the run.
548
+
549
+ Identify, for the selected/target frontend app, which server process renders or serves its
550
+ HTML. Keep this cheap — read `package.json` files, framework configs, Dockerfile `CMD`s,
551
+ Procfiles, and start scripts. Do **not** trace individual call sites (a later subagent does
552
+ that).
553
+
554
+ - **Meta-framework server** — Next.js (`next start`), Nuxt (`.output/server`), SvelteKit
555
+ (adapter-node), Remix / React Router server, Astro SSR adapter: the app itself is the SSR
556
+ backend. Check for a custom server (`server.js` / `server.ts` wrapping the framework).
557
+ - **Separate BFF** — an Express / NestJS / Fastify / Koa app that serves the SPA's
558
+ `index.html` or renders it server-side. Look for `sendFile(...index.html)`,
559
+ `express.static`, `renderToString` / `renderToPipeableStream` call sites, and reverse
560
+ proxy configs.
561
+ - **Non-JS SSR** — Rails / Django / Laravel / Go templates serving the frontend bundle.
562
+ Detect from Gemfile / manage.py / composer.json / go.mod plus HTML template dirs.
563
+ - **None** — statically hosted SPA (CDN / S3 / static file host): report zero backends.
564
+
565
+ For EACH candidate backend, gather:
566
+
567
+ - Path and name; language/runtime (JS/TS Node vs other; Node version if pinned).
568
+ - Entry point and start command (e.g. `next start`, `node dist/main.js`).
569
+ - Whether server code is **bundled** (Next.js webpack/Turbopack build, `output:
570
+ "standalone"`, a server webpack/esbuild config) or runs from **plain node_modules**
571
+ (tsc + node, ts-node, nest build). This decides whether Prisma/ioredis need manual
572
+ wrapping instead of automatic require-hook instrumentation.
573
+ - Outbound dependency clients in that backend's `package.json` (report ALL that appear):
574
+ `@prisma/client` / `prisma`, `pg`, `postgres` (postgres.js), `ioredis`, `redis`
575
+ (node-redis v4), `mysql` / `mysql2`, `mongodb` / `mongoose`, `@grpc/grpc-js` / `grpc`,
576
+ `kafkajs`, `amqplib`, `@aws-sdk/client-sqs` / `client-sns`, `bullmq`, `axios`, `got`,
577
+ `node-fetch`, `undici`, `graphql-request`, `@apollo/client` (SSR usage). Also report any
578
+ vendor SDK used on the render path (billing, CRM, search, feature flags) — those have no
579
+ per-technology instrumentation and the installation subagent needs to know about them.
580
+ - Whether the frontend calls this backend same-origin (the same host serves HTML and API)
581
+ or cross-origin (separate API domain), if cheaply visible from base-URL env/config.
582
+ - Any eager boot-time connections visible in the entry point (e.g. awaits a DB/Redis
583
+ connection before `listen`) — these matter for running the container without real
584
+ backing services.
585
+
586
+ ## What to Produce
587
+
588
+ Return the structured summary below as your final response. The parent agent will save it.
589
+
590
+ Output a structured summary in this exact format:
591
+
592
+ ```
593
+ ## Codebase Review
594
+
595
+ ### Framework
596
+ - Primary framework: <name> <version>
597
+ - Meta-framework: <name> <version> (or "None")
598
+ - Router: <App Router / Pages Router / Both / React Router / Vue Router / etc.>
599
+ - Rendering: <CSR / SSR / SSG / Mixed> (brief explanation)
600
+ - Build tool: <Vite / Webpack / Turbopack / etc.>
601
+
602
+ ### Package Manager
603
+ - Manager: <npm / yarn / pnpm / bun>
604
+ - Install command: <exact command>
605
+ - Build command: <exact command>
606
+ - Build output directory: <path>
607
+ - Source maps enabled: <Yes / No / Unknown> (note where configured if found)
608
+
609
+ ### Monorepo
610
+ - Is monorepo: <Yes / No>
611
+ - (If yes) Frontend apps:
612
+ - <path>: <framework> - <description>
613
+ - (If yes) **Meticulous CI identifiers (required — ci-setup copies these verbatim):** For the
614
+ **selected** app path (or each listed app if selection happens later), give:
615
+ - `<app-kebab>` (workflow file segment): <e.g. twenty-front>
616
+ - `<APP_SLUG>` (GitHub secret suffix, UPPER_SNAKE): <e.g. TWENTY_FRONT>
617
+ If only one frontend app exists, still fill both for that app. If multiple apps exist and
618
+ selection is not in this review, give one row per app; the orchestrator will pass the
619
+ selected path to ci-setup — **ci-setup must use the matching row** and must **not** emit
620
+ `meticulous.yaml` or bare `METICULOUS_API_TOKEN` when **Is monorepo: Yes**.
621
+ - (If no) Meticulous CI identifiers: N/A
622
+
623
+ ### Repository layout (coverage)
624
+ - Non-frontend JS/TS detected: <Yes / No>
625
+ - (If yes) Locations: <top-level dirs or package paths, e.g. `prisma/`, `packages/twenty-server/`>
626
+ - Notes: <optional brief context>
627
+
628
+ ### CI/CD
629
+ - Provider: <GitHub Actions / GitLab CI / CircleCI / None detected>
630
+ - Existing workflows: <list of workflow file paths>
631
+ - GitHub Actions `runs-on`: <per workflow/job literal labels, or "No .github/workflows" / "N/A (non-GitHub)" / "Only dynamic (${{ }}) expressions">
632
+ - Build steps in CI: <summary of how the app is built in CI>
633
+
634
+ ### Hosting / Preview URLs
635
+ - Hosting: <Vercel / Netlify / Cloudflare / AWS / Self-hosted / Unknown>
636
+ - Preview URLs: <Yes (provider) / No / Unknown>
637
+
638
+ ### Existing Meticulous Setup
639
+ - Recorder: <Not found / Found in <file>> (+ assessment if found)
640
+ - CI integration: <Not found / Found in <file>> (+ assessment if found)
641
+ - npm packages: <Not found / Found: list>
642
+
643
+ ### Authentication
644
+ - Provider: <NextAuth / Auth0 / Clerk / None detected / etc.>
645
+ - Storage: <session cookies (httpOnly) / localStorage / in-memory / Unknown>
646
+ - Middleware path: <path to auth middleware file, or "None detected">
647
+ - Login page: <path to login page/route, or "None detected">
648
+ - Auth enforcement (Meticulous): <Client-side only — no server redirect to login before client runs / Server-side or mixed — middleware, SSR, or server guards redirect unauthenticated users>
649
+ - Meticulous auth-setup section needed: <Yes / No> (**Yes** only for Server-side or mixed; **No** for Client-side only)
650
+
651
+ ### Content Security Policy
652
+ - Configured: <Yes / No>
653
+ - Location: <file path and line, or "N/A">
654
+ - Notes: <any relevant details about the CSP directives>
655
+
656
+ ### Feature Flags
657
+ - Provider: <Statsig / LaunchDarkly / Custom (database/API-backed) / None detected / etc.>
658
+ - Source: <third-party SDK / database/API / N/A>
659
+ - Integration: <React hooks / direct SDK calls / wrapper function / API response via context / N/A>
660
+ - Client entry point: <file where flag values first become available on the client, or "N/A">
661
+ - Notes: <brief description of how flags are used>
662
+
663
+ ### Recorder Installation Target
664
+ - File: <exact path>
665
+ - Framework approach: <script tag / npm package>
666
+ - Notes: <any special considerations>
667
+
668
+ ### WebSocket Usage
669
+ - Libraries: <socket.io / Supabase Realtime / Firebase Realtime / Pusher / None detected>
670
+ - URL patterns: <observed WebSocket URL patterns, or "N/A">
671
+
672
+ ### Third-Party Services
673
+ - Payment providers: <Stripe / Braintree / None detected / etc.>
674
+ - Chat widgets: <Intercom / Freshchat / Drift / None detected / etc.>
675
+ - Analytics: <Amplitude / Segment / Datadog RUM / None detected / etc.>
676
+ - Cookie banners: <OneTrust / Cookiebot / None detected / etc.>
677
+
678
+ ### CSS Animations
679
+ - Libraries: <framer-motion / react-spring / GSAP / Lottie / None detected>
680
+ - Heavy usage: <Yes / No> (brief assessment)
681
+
682
+ ### Dynamic Imports
683
+ - Patterns: <React.lazy / next/dynamic / dynamic import() / None detected>
684
+ - Approximate count: <number or "N/A">
685
+
686
+ ### IndexedDB / Firebase
687
+ - Firebase Auth: <Yes / No>
688
+ - Other IndexedDB: <library names or "None detected">
689
+
690
+ ### External CDN Hosts
691
+ - CDN domains: <list of domains, or "None detected">
692
+
693
+ ### Runtime / CI environment
694
+ - Build-time env (missing → build fails, so nothing to serve): <comma-separated `VAR` names, or "None detected" / "Unknown">
695
+ - Runtime env (missing → server will not start or will not serve): <comma-separated `VAR` names, or "None detected" / "Unknown">
696
+ - Client-exposed env (e.g. `NEXT_PUBLIC_*`, `VITE_*`): <list or "None detected">
697
+ - Inferred from code (not documented in `.env*`): <e.g. `VITE_API_BASE_URL` — backend HTTP API; file `src/lib/api.ts` / or "None">
698
+ - Environment-specific URLs (API / GraphQL / WS / auth issuer): <var names and purpose, or "None detected">
699
+ - Documented in: <paths such as `.env.example`, or "None found">
700
+ - Already provided in CI workflows: <Yes — which vars in which workflow / No / Partial — note gaps>
701
+ - Notes: <serve-blocking vs optional; dummy URLs OK for CI where only a well-formed value is needed; anything that blocks build output or listen/`GET /` if unset>
702
+
703
+ ### Web Workers
704
+ - Usage: <list of files using `new Worker()`, or "None detected">
705
+ - Worker libraries: <comlink / workerize / etc., or "None detected">
706
+ - Critical to app: <Yes — workers handle core app logic / No — workers used for background tasks / Unknown>
707
+
708
+ ### Shared Workers
709
+ - Usage: <Yes / No>
710
+ - Locations: <file path : line for each `new SharedWorker(...)` site, plus SDK package names that embed SharedWorkers, or "N/A">
711
+ - Worker scripts: <list of URL / import specifiers passed to each constructor, or "N/A">
712
+ - Fallback present: <Yes (feature detection / try-catch / alt codepath) / No / Unknown> (cite file:line when Yes)
713
+ - Usage classification: <Optional (fallback exists — safe to disable) / Mandatory (app relies on SharedWorker for a core flow) / Unknown — treat as Mandatory>
714
+ - Notes: <anything unusual — e.g. SharedWorker loaded from a cross-origin CDN, used only in dev mode, etc.>
715
+
716
+ ### Service Workers
717
+ - Usage: <Yes / No>
718
+ - Locations: <file path : line for each `navigator.serviceWorker.*` access or `register(...)` call, plus SDK package names that install a SW, or "N/A">
719
+ - Worker scripts: <list of SW script paths / URLs passed to `register(...)`, or "N/A">
720
+ - SW purpose: <offline cache / push notifications / PWA install / MSW dev mocking / precaching / primary data source / unknown, or "N/A">
721
+ - Feature detection present: <Yes (`"serviceWorker" in navigator` or equivalent, file:line) / No / Unknown>
722
+ - Usage classification: <Non-critical (enhancement-only; app renders fine without SW — no customer action) / Critical (app throws without feature detection, or cannot render without SW-served content — customer must add a guard and alternative) / Unknown — treat as Non-critical>
723
+ - Notes: <anything unusual — e.g. SW only loaded in production, MSW loaded only when `isRunningAsTest`, worker registered by a PWA plugin at build time, etc.>
724
+
725
+ ### Persisted GraphQL Queries
726
+ - Usage: <Yes / No>
727
+ - Client: <Apollo / urql / Relay / Custom / N/A>
728
+ - Locations: <file path : line for each link/exchange construction or hash-only fetch site, or "N/A">
729
+ - Mode: <APQ (hash with fallback to full query) / Fully persisted (hash only) / N/A>
730
+ - Production-only: <Yes (already gated to production — no customer action needed) / No (always on) / N/A>
731
+ - Customer action: <Recommended (always on — either Fully persisted, which restores operation text in recordings and enables per-operation network transformations, or APQ, which removes the fragile hash-first request + retry that complicates network patching) / Not needed (Production-only or no usage)>
732
+ - Notes: <anything unusual — e.g. mixed Apollo + Relay clients, hash-only fetch wrapper, persisted-query manifest file path, etc.>
733
+
734
+ ### SSR Backend
735
+ - SSR backend count (for the selected app): <0 / 1 / N>
736
+ - Backends:
737
+ - <path>: <kind, e.g. Next.js server / Express BFF / Rails> — runtime: <JS/TS Node <ver> / non-JS (<language>)>
738
+ - Entry point / start command: <e.g. `next start` via `apps/web/package.json`>
739
+ - Server bundling: <Bundled (Next.js webpack/Turbopack / standalone) / Plain node_modules / Unknown>
740
+ - Outbound clients: <e.g. @prisma/client 5.x, ioredis 5.x, axios — or "None detected">
741
+ - Meticulous-supported clients: <auto-instrumented: http/https/fetch/undici/pg/postgres.js; manual wrap: prisma, ioredis + postgres.js (when bundled); everything else via the generic seam — or "N/A">
742
+ - Unsupported clients present: <mysql2 / mongodb / redis (node-redis v4) / gRPC / kafkajs / vendor SDKs / ... or "None">
743
+ - Non-JS SSR: <Yes — <language>, unsupported by the backend recorder / No>
744
+ - Frontend-backend origin: <same-origin / cross-origin (<api domain>) / Unknown>
745
+ - Notes: <custom server file, eager boot-time connections in the entry point, etc.>
746
+
747
+ ### CI Setup Recommendation
748
+ - Recommended approach: <upload-assets / upload-container / Cloud Replay>
749
+ - Reasoning: <brief explanation>
750
+
751
+ Preference order (pick the first that applies):
752
+ 1. **upload-assets** -- frontend build produces static files (HTML/JS/CSS), even if production deploys them inside a container with a backend. Meticulous stubs network requests, so the backend is irrelevant. NOT for Next.js (needs a server for routing/middleware).
753
+ 2. **upload-container** -- has Dockerfile, or is Next.js / Nuxt / SSR that can be containerized. This is also the universal fallback when nothing else fits, since a missing Dockerfile is generated in the plan.
754
+ 3. **Cloud Replay** -- has preview URLs (Vercel / Netlify / Cloudflare) but neither of the above applies.
755
+
756
+ Never recommend a tunnel-based approach (`cloud-compute` / `run-with-tunnel`); fall back to `upload-container` instead.
757
+
758
+ ### Warnings
759
+ - <Any blockers, issues, or special considerations>
760
+ ```
761
+
762
+ ## Guidelines
763
+
764
+ - Be concise. The summary should be actionable, not exhaustive.
765
+ - Always verify files exist before referencing them.
766
+ - If this is a monorepo, identify ALL frontend apps and assess each one.
767
+ - Always fill **Repository layout (coverage)** using the non-frontend JS/TS criteria above;
768
+ this drives whether the CI plan must include `.meticulousignore`.
769
+ - Always fill **### SSR Backend**, even when the count is 0 — when backend recording is
770
+ enabled for the run, the orchestrator needs the explicit 0 (or the non-JS flag) to ask
771
+ the user what to do.
772
+ - When mentioning ignore patterns, assume **repository-root** files only (`.meticulousignore`
773
+ and `.meticulousignore.{slug}`); do not suggest nested per-package ignore files. For
774
+ monorepos, expect **`.meticulousignore.{slug}`** for app-specific scoping.
775
+ - If you find an existing Meticulous setup, focus on evaluating it against best practices
776
+ rather than describing how to set it up from scratch.
777
+ - **Runtime / CI environment:** Fill **### Runtime / CI environment** from section 18. Only
778
+ surface vars that **block serving** (or the build that produces the served artifact). Always
779
+ populate **Inferred from code** and **Environment-specific URLs** when they are serve-blocking,
780
+ even if `.env.example` is empty. Omit unrelated cloud/deployment env. If required vars are
781
+ undocumented but inferred from code, say **Unknown** for confidence where needed and list
782
+ names and file references in **Notes**. Put **blocking gaps** for serve/start in **### Warnings**
783
+ as well.
784
+ - **Auth:** Prefer **Meticulous auth-setup section needed: No** when auth is enforced only in
785
+ the browser (hooks/context checking storage). Prefer **Yes** when the selected app has
786
+ Next/Remix/Express (or similar) server checks that redirect to login. Do not recommend
787
+ bypass code in your summary — only classify; the auth-setup subagent produces bypass steps.
788
+ - Do not suggest code changes. You are only producing a summary.