@alwaysmeticulous/cli 2.326.1 → 2.328.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 (456) 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.d.ts +2 -0
  135. package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
  136. package/dist/commands/ci/agent-test.command.js +28 -3
  137. package/dist/commands/ci/agent-test.command.js.map +1 -1
  138. package/dist/commands/ci/agent-test.command.spec.d.ts +2 -0
  139. package/dist/commands/ci/agent-test.command.spec.d.ts.map +1 -0
  140. package/dist/commands/ci/agent-test.command.spec.js +133 -0
  141. package/dist/commands/ci/agent-test.command.spec.js.map +1 -0
  142. package/dist/commands/ci/deprecated-trigger-options.js +2 -2
  143. package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
  144. package/dist/commands/ci/index.js +2 -2
  145. package/dist/commands/ci/index.js.map +1 -1
  146. package/dist/commands/ci/label-commit.command.js +2 -2
  147. package/dist/commands/ci/label-commit.command.js.map +1 -1
  148. package/dist/commands/ci/label-commit.core.js +2 -2
  149. package/dist/commands/ci/label-commit.core.js.map +1 -1
  150. package/dist/commands/ci/label-commit.types.js +2 -2
  151. package/dist/commands/ci/label-commit.types.js.map +1 -1
  152. package/dist/commands/ci/label-commit.utils.js +2 -2
  153. package/dist/commands/ci/label-commit.utils.js.map +1 -1
  154. package/dist/commands/ci/prepare.command.js +2 -2
  155. package/dist/commands/ci/prepare.command.js.map +1 -1
  156. package/dist/commands/ci/resolve-git-options.js +2 -2
  157. package/dist/commands/ci/resolve-git-options.js.map +1 -1
  158. package/dist/commands/ci/run-local.command.js +2 -2
  159. package/dist/commands/ci/run-local.command.js.map +1 -1
  160. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
  161. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
  162. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
  163. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
  164. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
  165. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
  166. package/dist/commands/ci/run.command.js +2 -2
  167. package/dist/commands/ci/run.command.js.map +1 -1
  168. package/dist/commands/ci/session-filter.utils.js +2 -2
  169. package/dist/commands/ci/session-filter.utils.js.map +1 -1
  170. package/dist/commands/ci/start-tunnel.command.js +2 -2
  171. package/dist/commands/ci/start-tunnel.command.js.map +1 -1
  172. package/dist/commands/ci/trigger-test-run.core.js +2 -2
  173. package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
  174. package/dist/commands/ci/trigger-test-run.types.js +2 -2
  175. package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
  176. package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
  177. package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
  178. package/dist/commands/ci/upload-assets.command.js +2 -2
  179. package/dist/commands/ci/upload-assets.command.js.map +1 -1
  180. package/dist/commands/ci/upload-container.command.js +2 -2
  181. package/dist/commands/ci/upload-container.command.js.map +1 -1
  182. package/dist/commands/crawl.command.js +2 -2
  183. package/dist/commands/crawl.command.js.map +1 -1
  184. package/dist/commands/debug/clean-workspaces.js +2 -2
  185. package/dist/commands/debug/clean-workspaces.js.map +1 -1
  186. package/dist/commands/debug/index.js +2 -2
  187. package/dist/commands/debug/index.js.map +1 -1
  188. package/dist/commands/debug/present-workspace.js +2 -2
  189. package/dist/commands/debug/present-workspace.js.map +1 -1
  190. package/dist/commands/debug/project-worktree.js +2 -2
  191. package/dist/commands/debug/project-worktree.js.map +1 -1
  192. package/dist/commands/deprecated-aliases.js +2 -2
  193. package/dist/commands/deprecated-aliases.js.map +1 -1
  194. package/dist/commands/download/index.js +2 -2
  195. package/dist/commands/download/index.js.map +1 -1
  196. package/dist/commands/download/replay.command.js +2 -2
  197. package/dist/commands/download/replay.command.js.map +1 -1
  198. package/dist/commands/download/session.command.js +2 -2
  199. package/dist/commands/download/session.command.js.map +1 -1
  200. package/dist/commands/download/test-run.command.js +2 -2
  201. package/dist/commands/download/test-run.command.js.map +1 -1
  202. package/dist/commands/local/get-edited-files.utils.js +2 -2
  203. package/dist/commands/local/get-edited-files.utils.js.map +1 -1
  204. package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
  205. package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
  206. package/dist/commands/local/index.js +2 -2
  207. package/dist/commands/local/index.js.map +1 -1
  208. package/dist/commands/local/relevant-sessions.command.js +2 -2
  209. package/dist/commands/local/relevant-sessions.command.js.map +1 -1
  210. package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
  211. package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
  212. package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
  213. package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
  214. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
  215. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
  216. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
  217. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
  218. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
  219. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
  220. package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
  221. package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
  222. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
  223. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
  224. package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
  225. package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
  226. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
  227. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
  228. package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
  229. package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
  230. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
  231. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
  232. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
  233. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
  234. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
  235. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
  236. package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
  237. package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
  238. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
  239. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
  240. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
  241. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
  242. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
  243. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
  244. package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
  245. package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
  246. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
  247. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
  248. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
  249. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
  250. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
  251. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
  252. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
  253. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
  254. package/dist/commands/onboard/build-context.d.ts +16 -0
  255. package/dist/commands/onboard/build-context.d.ts.map +1 -0
  256. package/dist/commands/onboard/build-context.js +104 -0
  257. package/dist/commands/onboard/build-context.js.map +1 -0
  258. package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
  259. package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
  260. package/dist/commands/onboard/check-vcs-link.js +111 -0
  261. package/dist/commands/onboard/check-vcs-link.js.map +1 -0
  262. package/dist/commands/onboard/codex-mcp.d.ts +24 -0
  263. package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
  264. package/dist/commands/onboard/codex-mcp.js +302 -0
  265. package/dist/commands/onboard/codex-mcp.js.map +1 -0
  266. package/dist/commands/onboard/customer-agents.d.ts +9 -0
  267. package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
  268. package/dist/commands/onboard/customer-agents.js +19 -0
  269. package/dist/commands/onboard/customer-agents.js.map +1 -0
  270. package/dist/commands/onboard/customer-agents.json +17 -0
  271. package/dist/commands/onboard/customer-docs.d.ts +21 -0
  272. package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
  273. package/dist/commands/onboard/customer-docs.js +31 -0
  274. package/dist/commands/onboard/customer-docs.js.map +1 -0
  275. package/dist/commands/onboard/customer-docs.json +35 -0
  276. package/dist/commands/onboard/detect-framework.d.ts +26 -0
  277. package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
  278. package/dist/commands/onboard/detect-framework.js +305 -0
  279. package/dist/commands/onboard/detect-framework.js.map +1 -0
  280. package/dist/commands/onboard/discover-apps.d.ts +21 -0
  281. package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
  282. package/dist/commands/onboard/discover-apps.js +318 -0
  283. package/dist/commands/onboard/discover-apps.js.map +1 -0
  284. package/dist/commands/onboard/docs-urls.d.ts +11 -0
  285. package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
  286. package/dist/commands/onboard/docs-urls.js +17 -0
  287. package/dist/commands/onboard/docs-urls.js.map +1 -0
  288. package/dist/commands/onboard/git-repo-info.d.ts +15 -0
  289. package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
  290. package/dist/commands/onboard/git-repo-info.js +84 -0
  291. package/dist/commands/onboard/git-repo-info.js.map +1 -0
  292. package/dist/commands/onboard/index.d.ts +18 -0
  293. package/dist/commands/onboard/index.d.ts.map +1 -0
  294. package/dist/commands/onboard/index.js +164 -0
  295. package/dist/commands/onboard/index.js.map +1 -0
  296. package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
  297. package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
  298. package/dist/commands/onboard/inline-doc-constants.js +238 -0
  299. package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
  300. package/dist/commands/onboard/launch-agent.d.ts +65 -0
  301. package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
  302. package/dist/commands/onboard/launch-agent.js +311 -0
  303. package/dist/commands/onboard/launch-agent.js.map +1 -0
  304. package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
  305. package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
  306. package/dist/commands/onboard/materialize-workspace.js +177 -0
  307. package/dist/commands/onboard/materialize-workspace.js.map +1 -0
  308. package/dist/commands/onboard/print-summary.d.ts +10 -0
  309. package/dist/commands/onboard/print-summary.d.ts.map +1 -0
  310. package/dist/commands/onboard/print-summary.js +49 -0
  311. package/dist/commands/onboard/print-summary.js.map +1 -0
  312. package/dist/commands/onboard/resolve-app.d.ts +21 -0
  313. package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
  314. package/dist/commands/onboard/resolve-app.js +78 -0
  315. package/dist/commands/onboard/resolve-app.js.map +1 -0
  316. package/dist/commands/onboard/resolve-project.d.ts +14 -0
  317. package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
  318. package/dist/commands/onboard/resolve-project.js +92 -0
  319. package/dist/commands/onboard/resolve-project.js.map +1 -0
  320. package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
  321. package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
  322. package/dist/commands/onboard/safe-repo-fs.js +266 -0
  323. package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
  324. package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
  325. package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
  326. package/dist/commands/onboard/setup-agent-integrations.js +324 -0
  327. package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
  328. package/dist/commands/onboard/templates/CLAUDE.md +213 -0
  329. package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
  330. package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
  331. package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
  332. package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
  333. package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
  334. package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
  335. package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
  336. package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
  337. package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
  338. package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
  339. package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
  340. package/dist/commands/onboard/templates/agents/session-context.md +133 -0
  341. package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
  342. package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
  343. package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
  344. package/dist/commands/onboard/templates/docs/ci.ts +19 -0
  345. package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
  346. package/dist/commands/onboard/templates/docs/constants.ts +37 -0
  347. package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
  348. package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
  349. package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
  350. package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
  351. package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
  352. package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
  353. package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
  354. package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
  355. package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
  356. package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
  357. package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
  358. package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
  359. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
  360. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
  361. package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
  362. package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
  363. package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
  364. package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
  365. package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
  366. package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
  367. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
  368. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
  369. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
  370. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
  371. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
  372. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
  373. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
  374. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
  375. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
  376. package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
  377. package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
  378. package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
  379. package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
  380. package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
  381. package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
  382. package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
  383. package/dist/commands/onboard/templates/settings.json +14 -0
  384. package/dist/commands/project/index.js +2 -2
  385. package/dist/commands/project/index.js.map +1 -1
  386. package/dist/commands/project/show.command.js +2 -2
  387. package/dist/commands/project/show.command.js.map +1 -1
  388. package/dist/commands/project/upload-source.command.js +2 -2
  389. package/dist/commands/project/upload-source.command.js.map +1 -1
  390. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
  391. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
  392. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
  393. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
  394. package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
  395. package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
  396. package/dist/commands/record/__tests__/login.command.spec.js +2 -2
  397. package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
  398. package/dist/commands/record/__tests__/session.command.spec.js +2 -2
  399. package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
  400. package/dist/commands/record/backend-dev-command.utils.js +2 -2
  401. package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
  402. package/dist/commands/record/backend-sidecar.utils.js +2 -2
  403. package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
  404. package/dist/commands/record/backend.command.js +2 -2
  405. package/dist/commands/record/backend.command.js.map +1 -1
  406. package/dist/commands/record/index.js +2 -2
  407. package/dist/commands/record/index.js.map +1 -1
  408. package/dist/commands/record/login.command.js +2 -2
  409. package/dist/commands/record/login.command.js.map +1 -1
  410. package/dist/commands/record/session.command.js +2 -2
  411. package/dist/commands/record/session.command.js.map +1 -1
  412. package/dist/commands/replay-debugger.ui.js +2 -2
  413. package/dist/commands/replay-debugger.ui.js.map +1 -1
  414. package/dist/commands/replay.command.js +2 -2
  415. package/dist/commands/replay.command.js.map +1 -1
  416. package/dist/commands/schema.command.js +2 -2
  417. package/dist/commands/schema.command.js.map +1 -1
  418. package/dist/commands/schema.command.spec.js +2 -2
  419. package/dist/commands/schema.command.spec.js.map +1 -1
  420. package/dist/index.js +2 -2
  421. package/dist/index.js.map +1 -1
  422. package/dist/main.js +2 -2
  423. package/dist/main.js.map +1 -1
  424. package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
  425. package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
  426. package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
  427. package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
  428. package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
  429. package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
  430. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
  431. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
  432. package/dist/utils/__tests__/select-project.spec.js +5 -4
  433. package/dist/utils/__tests__/select-project.spec.js.map +1 -1
  434. package/dist/utils/cli-user-error.js +2 -2
  435. package/dist/utils/cli-user-error.js.map +1 -1
  436. package/dist/utils/constants.js +2 -2
  437. package/dist/utils/constants.js.map +1 -1
  438. package/dist/utils/environment.utils.js +2 -2
  439. package/dist/utils/environment.utils.js.map +1 -1
  440. package/dist/utils/format-coverage-ranges.js +2 -2
  441. package/dist/utils/format-coverage-ranges.js.map +1 -1
  442. package/dist/utils/handle-auth-failure.js +2 -2
  443. package/dist/utils/handle-auth-failure.js.map +1 -1
  444. package/dist/utils/out-of-date-client-error.js +2 -2
  445. package/dist/utils/out-of-date-client-error.js.map +1 -1
  446. package/dist/utils/project-selection-hint.js +2 -2
  447. package/dist/utils/project-selection-hint.js.map +1 -1
  448. package/dist/utils/resolve-project-identifier.js +2 -2
  449. package/dist/utils/resolve-project-identifier.js.map +1 -1
  450. package/dist/utils/resolve-test-run-from-commit.js +2 -2
  451. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  452. package/dist/utils/select-project.d.ts +9 -0
  453. package/dist/utils/select-project.d.ts.map +1 -1
  454. package/dist/utils/select-project.js +58 -15
  455. package/dist/utils/select-project.js.map +1 -1
  456. package/package.json +14 -12
@@ -0,0 +1,1324 @@
1
+ import {
2
+ AGENT_REVIEW_DOCS_URL,
3
+ AGENTS_CLI_COMMANDS_URL,
4
+ FAQ_AND_TROUBLESHOOTING_URL,
5
+ GITHUB_ACTIONS_SETUP_URL,
6
+ TUNNEL_ADVANCED_OPTIONS_URL,
7
+ } from "src/lib/utils/internal-urls/docs-urls.utils";
8
+
9
+ export const document = `---
10
+ {
11
+ "title": "CLI Commands Reference"
12
+ }
13
+ ---
14
+
15
+ # {% $frontmatter.title %}
16
+
17
+ Complete reference for Meticulous CLI commands, flags, and usage patterns.
18
+
19
+ ---
20
+
21
+ ## Installation
22
+
23
+ Install the CLI globally or use npx:
24
+
25
+ \`\`\`bash
26
+ # Using npx (recommended)
27
+ npx @alwaysmeticulous/cli [command]
28
+
29
+ # Or install globally
30
+ npm install -g @alwaysmeticulous/cli
31
+ meticulous [command]
32
+ \`\`\`
33
+
34
+ ---
35
+
36
+ ## Commands Overview
37
+
38
+ | Command | Purpose | Use Case |
39
+ |---------|---------|----------|
40
+ | \`ci run-with-tunnel\` | Run tests in cloud via tunnel | CI testing with local app |
41
+ | \`ci upload-assets\` | Upload and test static assets | CI testing for static sites |
42
+ | \`ci upload-asset-chunk\` | Upload one named, versioned asset chunk | Multi-bundle deployments |
43
+ | \`ci run-with-uploaded-asset-chunks\` | Trigger a test run against uploaded chunks | Multi-bundle deployments |
44
+ | \`ci upload-container\` | Upload Docker container and test | CI testing with containers |
45
+ | \`ci agent-test\` | Upload a build and launch an agent to explore the PR | Beta, opt-in Agent review |
46
+ | \`ci run-local\` | Run all replay test cases locally | Local test execution |
47
+ | \`ci prepare\` | Ensure base run exists | CI setup |
48
+ | \`ci label-commit\` | Attach labels to a commit | Marking commits as not relevant for testing |
49
+ | \`ci start-tunnel\` | Start secure tunnel | Manual testing/debugging |
50
+ | \`simulate\` (alias: \`replay\`) | Replay session locally | Local debugging |
51
+ | \`record session\` | Record a user session | Session recording |
52
+ | \`record login\` | Record a login flow | Login flow recording |
53
+ | \`crawl\` | Crawl your app to record sessions and create a test run | Bootstrapping session coverage |
54
+ | \`auth login\` | Force a fresh browser login and select a project | Authentication |
55
+ | \`auth whoami\` | Show current user | Authentication check |
56
+ | \`auth logout\` | Clear stored tokens | Authentication |
57
+ | \`auth get-project\` | Print your default project | Authentication |
58
+ | \`auth set-project\` | Choose your default project | Authentication |
59
+ | \`auth list-projects\` | List the projects you can access | Authentication |
60
+ | \`project show\` | Show linked project | Project info |
61
+ | \`project upload-source\` | Upload a source-code archive for a given commit | Source coverage / CI |
62
+ | \`download session\` | Download a recorded session | Debugging |
63
+ | \`download replay\` | Download a replay | Debugging |
64
+ | \`download test-run\` | Download a test run | Debugging |
65
+ | \`local relevant-sessions\` | Find sessions covering the current branch's code changes | Local development |
66
+ | \`debug replay\` | Set up a debug workspace for a single replay | Investigating a replay |
67
+ | \`debug replay-diff\` | Set up a debug workspace for a specific replay diff | Investigating a diff |
68
+ | \`debug clean\` | Clean up debug workspaces | Debug workspace maintenance |
69
+ | \`agent upload-build\` | Upload a build (static assets or container) and capture a deployment ID | Agent/programmatic use |
70
+ | \`agent trigger-test-run\` | Trigger a test run against an uploaded build | Agent/programmatic use |
71
+ | \`agent test-run-diffs\` | List replay diffs for a test run with summary | Agent/programmatic use |
72
+ | \`agent diff-comments\` | Get review comments for a replay-diff screenshot | Agent/programmatic use |
73
+ | \`agent reject-diff\` | Agent-reject a screenshot diff and comment why | Agent/programmatic use |
74
+ | \`agent ignore-diff\` | Agent-ignore a screenshot diff and comment why | Agent/programmatic use |
75
+ | \`agent create-diff-comment\` | Start a review comment thread on a screenshot diff | Agent/programmatic use |
76
+ | \`agent reply-to-diff-comment\` | Reply to a review comment thread | Agent/programmatic use |
77
+ | \`agent dom-diff\` | Get the DOM diff for a replay-diff screenshot | Agent/programmatic use |
78
+ | \`agent image-urls\` | Get screenshot image URLs for a replay-diff screenshot | Agent/programmatic use |
79
+ | \`agent image-files\` | Download screenshot images to \`~/.meticulous/agent-images\` | Agent/programmatic use |
80
+ | \`agent timeline-diff\` | Get the timeline diff for a replay diff | Agent/programmatic use |
81
+ | \`agent test-run-check\` | Get a builtin or custom non-visual check report for a test run, or list available check IDs with \`--availableIds\` | Agent/programmatic use |
82
+ | \`agent test-run-for-commit\` | Look up the latest test run for a commit (defaults to git HEAD) | Agent/programmatic use |
83
+ | \`agent sessions\` | List a project's most recently recorded sessions, newest first | Agent/programmatic use |
84
+ | \`agent js-coverage\` | Get JS coverage for a replay or a whole test run | Agent/programmatic use |
85
+ | \`agent js-coverage-diff\` | Get the JS coverage diff (base vs head) for a replay diff | Agent/programmatic use |
86
+ | \`agent upload-build\` | Upload a build (static assets or container) and capture a deployment ID | Agent/programmatic use |
87
+ | \`agent trigger-test-run\` | Trigger a test run against an uploaded build | Agent/programmatic use |
88
+ | \`agent submit-feedback\` | Submit free-form feedback about Meticulous to the Meticulous team | Agent/programmatic use |
89
+ | \`schema\` | Print the CLI command schema as JSON | Agent/programmatic use |
90
+
91
+ For a closer look at the \`agent\` and \`auth\` commands — including their flags and how they compose into agent workflows — see [CLI commands for agents](${AGENTS_CLI_COMMANDS_URL}).
92
+
93
+ ---
94
+
95
+ ## ci run-with-tunnel
96
+
97
+ Run Meticulous tests in the cloud against a locally-running application.
98
+
99
+ ### Synopsis
100
+
101
+ \`\`\`bash
102
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
103
+ --apiToken="<token>" \\
104
+ --appUrl="<url>" \\
105
+ [options]
106
+ \`\`\`
107
+
108
+ ### Required Flags
109
+
110
+ #### \`--apiToken\`
111
+
112
+ **Type**: String
113
+ **Description**: Your Meticulous API token
114
+ **How to get**: From Meticulous dashboard project settings
115
+
116
+ **Example**:
117
+ \`\`\`bash
118
+ --apiToken="met_live_abc123..."
119
+ \`\`\`
120
+
121
+ **Note**: Can also be set via \`METICULOUS_API_TOKEN\` environment variable.
122
+
123
+ ---
124
+
125
+ #### \`--appUrl\`
126
+
127
+ **Type**: String
128
+ **Description**: URL where your app is running
129
+ **Format**: Full URL including protocol and port
130
+
131
+ **Examples**:
132
+ \`\`\`bash
133
+ --appUrl="http://localhost:3000"
134
+ --appUrl="http://localhost:8080"
135
+ --appUrl="https://localhost:3000"
136
+ \`\`\`
137
+
138
+ ---
139
+
140
+ ### Optional Flags
141
+
142
+ #### \`--commitSha\`
143
+
144
+ **Type**: String
145
+ **Description**: Commit SHA being tested
146
+ **Default**: Auto-detected from git
147
+
148
+ **Example**:
149
+ \`\`\`bash
150
+ --commitSha="$GITHUB_SHA"
151
+ --commitSha="abc123def456..."
152
+ \`\`\`
153
+
154
+ ---
155
+
156
+ #### \`--companionAssetsFolder\`
157
+
158
+ **Type**: String (path)
159
+ **Description**: Path to local folder with static assets to upload
160
+ **Default**: None
161
+ **Requires**: Must also provide \`--companionAssetsRegex\`
162
+
163
+ **Example**:
164
+ \`\`\`bash
165
+ --companionAssetsFolder="companion-assets"
166
+ \`\`\`
167
+
168
+ ---
169
+
170
+ #### \`--companionAssetsRegex\`
171
+
172
+ **Type**: String (regex)
173
+ **Description**: Regex pattern for requests to serve from companion assets
174
+ **Default**: None
175
+ **Requires**: Must also provide \`--companionAssetsFolder\`
176
+
177
+ **Example**:
178
+ \`\`\`bash
179
+ --companionAssetsRegex="^/_next/static/"
180
+ \`\`\`
181
+
182
+ ---
183
+
184
+ #### \`--proxyAllUrls\`
185
+
186
+ **Type**: Boolean
187
+ **Description**: Proxy all URLs through tunnel (not just app URL)
188
+ **Default**: false
189
+
190
+ **Example**:
191
+ \`\`\`bash
192
+ --proxyAllUrls
193
+ \`\`\`
194
+
195
+ **Use case**: Multi-server applications (frontend + API on different ports)
196
+
197
+ ---
198
+
199
+ #### \`--rewriteHostnameToAppUrl\`
200
+
201
+ **Type**: Boolean
202
+ **Description**: Rewrite request hostname to match app URL
203
+ **Default**: false
204
+
205
+ **Example**:
206
+ \`\`\`bash
207
+ --rewriteHostnameToAppUrl
208
+ \`\`\`
209
+
210
+ **Use case**: When HTML contains absolute URLs
211
+
212
+ ---
213
+
214
+ #### \`--secureTunnelHost\`
215
+
216
+ **Type**: String
217
+ **Description**: Custom tunnel server host
218
+ **Default**: Meticulous production tunnel
219
+ **Note**: For Meticulous team use only
220
+
221
+ ---
222
+
223
+ #### \`--hadPreparedForTests\`
224
+
225
+ **Type**: Boolean
226
+ **Description**: Indicate that \`meticulous ci prepare\` was already run
227
+ **Default**: false
228
+
229
+ ---
230
+
231
+ ### Complete Example
232
+
233
+ \`\`\`bash
234
+ # Basic usage
235
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
236
+ --apiToken="$METICULOUS_API_TOKEN" \\
237
+ --appUrl="http://localhost:3000"
238
+
239
+ # With companion assets (Next.js)
240
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
241
+ --apiToken="$METICULOUS_API_TOKEN" \\
242
+ --appUrl="http://localhost:3000" \\
243
+ --companionAssetsFolder="companion-assets" \\
244
+ --companionAssetsRegex="^/_next/static/"
245
+
246
+ # Multi-server app
247
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
248
+ --apiToken="$METICULOUS_API_TOKEN" \\
249
+ --appUrl="http://localhost:3000" \\
250
+ --proxyAllUrls
251
+ \`\`\`
252
+
253
+ ---
254
+
255
+ ### Exit Codes
256
+
257
+ | Code | Meaning |
258
+ |------|---------|
259
+ | 0 | Success - all tests passed or diffs approved |
260
+ | 1 | Failure - tests failed or unapproved diffs |
261
+ | 2 | Error - configuration or connection error |
262
+
263
+ ---
264
+
265
+ ## ci agent-test
266
+
267
+ {% callout type="info" title="Beta opt-in" %}
268
+ Agent review is currently in beta and is not available to every customer. Your Meticulous project must be explicitly enabled before this command can launch. [Set up Agent review](${AGENT_REVIEW_DOCS_URL}) explains how to request access and configure the workflow.
269
+ {% /callout %}
270
+
271
+ Upload one build target and launch a Meticulous-hosted agent that explores the pull request and creates additional recorded sessions.
272
+
273
+ ### Synopsis
274
+
275
+ \`\`\`bash
276
+ npx @alwaysmeticulous/cli ci agent-test \\
277
+ --assetsDir="<path-to-built-assets>" \\
278
+ --commitSha="<pr-head-sha>" \\
279
+ [options]
280
+ \`\`\`
281
+
282
+ Provide exactly one target:
283
+
284
+ - \`--assetsDir\` — a built static frontend directory.
285
+ - \`--assetsUploadId\` — an existing uploaded-assets build.
286
+ - \`--localImageTag\` — a locally built Docker image.
287
+
288
+ Use \`--instructionsFile\` to give the agent routes and flows to exercise. With an uploaded frontend, \`--backendUrl\` proxies configured relative paths (\`--backendProxyPaths\`, default \`/api\`) to a public HTTPS staging backend. It cannot be combined with \`--enableLocalMocks\`. If the frontend calls other hosts with absolute URLs, pass them as repeatable \`--trustedOrigins https://…\` values (HTTPS origins only; uploaded assets only). Those hosts must allow CORS from the app origin (\`http://localhost:8000\` by default, overridable with \`--appPort\`); cookie sessions need \`SameSite=None; Secure\`.
289
+
290
+ For a pull request workflow, pass \`github.event.pull_request.head.sha || github.sha\` as \`--commitSha\`, rather than only \`github.sha\`. Use \`--dryRun\` to validate options without launching an agent.
291
+
292
+ ---
293
+
294
+ ## ci upload-assets
295
+
296
+ Upload static assets and run tests in the cloud.
297
+
298
+ ### Synopsis
299
+
300
+ \`\`\`bash
301
+ npx @alwaysmeticulous/cli ci upload-assets \\
302
+ --apiToken="<token>" \\
303
+ --appDirectory="<path>" \\
304
+ [options]
305
+ \`\`\`
306
+
307
+ ### Required Flags
308
+
309
+ #### \`--apiToken\`
310
+
311
+ **Type**: String
312
+ **Description**: Your Meticulous API token
313
+
314
+ ---
315
+
316
+ #### \`--appDirectory\`
317
+
318
+ **Type**: String (path)
319
+ **Description**: Path to directory containing built static assets
320
+ **Common values**: \`dist\`, \`build\`, \`out\`
321
+
322
+ **Examples**:
323
+ \`\`\`bash
324
+ --appDirectory="dist" # Vite
325
+ --appDirectory="build" # Create React App
326
+ --appDirectory="out" # Next.js static export
327
+ \`\`\`
328
+
329
+ ---
330
+
331
+ ### Optional Flags
332
+
333
+ #### \`--commitSha\`
334
+
335
+ **Type**: String
336
+ **Description**: Commit SHA being tested
337
+ **Default**: Auto-detected from git
338
+
339
+ ---
340
+
341
+ #### \`--rewrites\`
342
+
343
+ **Type**: String (JSON)
344
+ **Description**: URL rewrite rules in Vercel format
345
+ **Use case**: SPA routing, redirects
346
+
347
+ **Example**:
348
+ \`\`\`bash
349
+ --rewrites='[{"source":"/(.*)", "destination":"/index.html"}]'
350
+ \`\`\`
351
+
352
+ **Common patterns**:
353
+
354
+ **SPA routing**:
355
+ \`\`\`json
356
+ [{"source": "/(.*)", "destination": "/index.html"}]
357
+ \`\`\`
358
+
359
+ **API proxy**:
360
+ \`\`\`json
361
+ [{"source": "/api/(.*)", "destination": "https://api.example.com/$1"}]
362
+ \`\`\`
363
+
364
+ ---
365
+
366
+ #### \`--waitForBase\`
367
+
368
+ **Type**: Boolean
369
+ **Description**: Wait for base test run
370
+ **Default**: false
371
+
372
+ ---
373
+
374
+ #### \`--waitForTestRunToComplete\`
375
+
376
+ **Type**: Boolean
377
+ **Description**: After the upload succeeds and Meticulous has started a test run, keep polling until that run reaches a terminal status, then exit non-zero if the run failed.
378
+
379
+ **Default**: false (omit the flag)
380
+
381
+ **Standard CI setups should leave this flag off.** For GitHub, GitLab, Buildkite, CircleCI, and similar pipelines, the usual pattern is: build, run \`ci upload-assets\` (or \`ci upload-container\`) to upload and trigger a run, then let the job exit. Meticulous reports progress and outcomes on the pull request or through your VCS integration. Holding the whole CI job open until every replay finishes makes pipelines slower, rarely adds value, and tooling (including some AI code reviewers) often suggests this flag because the name sounds helpful.
382
+
383
+ **Why avoid it by default:** the run can still have background work in some configurations (for example lazy session execution), so a naive "wait until complete" loop may exit too early or fail with errors that are hard to interpret if you were only trying to "wait for Meticulous."
384
+
385
+ **When it may be appropriate:** automation that deliberately must block until the run is fully finished (for example internal regression checks where the process relies on the CLI exit code). If you are onboarding a new project or wiring PR checks, you almost never need this flag.
386
+
387
+ ---
388
+
389
+ ### Complete Example
390
+
391
+ \`\`\`bash
392
+ # Basic usage
393
+ npx @alwaysmeticulous/cli ci upload-assets \\
394
+ --apiToken="$METICULOUS_API_TOKEN" \\
395
+ --appDirectory="dist"
396
+
397
+ # With SPA routing
398
+ npx @alwaysmeticulous/cli ci upload-assets \\
399
+ --apiToken="$METICULOUS_API_TOKEN" \\
400
+ --appDirectory="dist" \\
401
+ --rewrites='[{"source":"/(.*)", "destination":"/index.html"}]'
402
+
403
+ # With commit SHA
404
+ npx @alwaysmeticulous/cli ci upload-assets \\
405
+ --apiToken="$METICULOUS_API_TOKEN" \\
406
+ --appDirectory="build" \\
407
+ --commitSha="$CI_COMMIT_SHA"
408
+ \`\`\`
409
+
410
+ ---
411
+
412
+ ### Exit Codes
413
+
414
+ | Code | Meaning |
415
+ |------|---------|
416
+ | 0 | Success |
417
+ | 1 | Failure |
418
+ | 2 | Error |
419
+
420
+ ---
421
+
422
+ ## ci upload-asset-chunk
423
+
424
+ Upload a named, versioned chunk of static assets to Meticulous for incremental deployments.
425
+
426
+ ### Synopsis
427
+
428
+ \`\`\`bash
429
+ npx @alwaysmeticulous/cli ci upload-asset-chunk \\
430
+ --apiToken="<token>" \\
431
+ --chunkName="<name>" \\
432
+ --chunkVersionId="<version>" \\
433
+ --chunkAssetsDirectory="<path>" \\
434
+ [options]
435
+ \`\`\`
436
+
437
+ ### Required Flags
438
+
439
+ #### \`--apiToken\`
440
+
441
+ **Type**: String
442
+ **Description**: Your Meticulous API token
443
+
444
+ **Note**: Can also be set via \`METICULOUS_API_TOKEN\` environment variable.
445
+
446
+ ---
447
+
448
+ #### \`--chunkName\`
449
+
450
+ **Type**: String
451
+ **Description**: Logical name of the asset chunk (e.g. \`app\`, \`vendor\`).
452
+
453
+ **Example**:
454
+ \`\`\`bash
455
+ --chunkName="app"
456
+ \`\`\`
457
+
458
+ ---
459
+
460
+ #### \`--chunkVersionId\`
461
+
462
+ **Type**: String
463
+ **Description**: Version identifier for this chunk (e.g. content hash or build id). Chunks are deduped by (chunkName, chunkVersionId).
464
+
465
+ **Example**:
466
+ \`\`\`bash
467
+ --chunkVersionId="$CI_COMMIT_SHA"
468
+ \`\`\`
469
+
470
+ ---
471
+
472
+ #### \`--chunkAssetsDirectory\`
473
+
474
+ **Type**: String (path)
475
+ **Description**: Directory whose contents should be packaged into this chunk.
476
+
477
+ **Example**:
478
+ \`\`\`bash
479
+ --chunkAssetsDirectory="dist"
480
+ \`\`\`
481
+
482
+ ---
483
+
484
+ ### Optional Flags
485
+
486
+ #### \`--chunkAssetsDirectoryPrefix\`
487
+
488
+ **Type**: String
489
+ **Description**: Path prefix prepended to every entry in the chunk (e.g. \`static/assets\`). Files in \`chunkAssetsDirectory\` will be served under this prefix at replay time.
490
+
491
+ **Example**:
492
+ \`\`\`bash
493
+ --chunkAssetsDirectoryPrefix="static/assets"
494
+ \`\`\`
495
+
496
+ ---
497
+
498
+ #### \`--commitSha\`
499
+
500
+ **Type**: String
501
+ **Description**: Commit SHA being tested
502
+ **Default**: Auto-detected from git
503
+
504
+ ---
505
+
506
+ #### \`--force\`
507
+
508
+ **Type**: Boolean
509
+ **Description**: Re-upload even if a chunk with the same \`--chunkName\` and \`--chunkVersionId\` is already marked as uploaded on the server. Use only for recovery (e.g., a corrupted S3 object). The server will overwrite the existing chunk; downstream test runs that already referenced the old bytes will resolve to the new ones.
510
+ **Default**: \`false\`
511
+
512
+ **Example**:
513
+ \`\`\`bash
514
+ --force
515
+ \`\`\`
516
+
517
+ ---
518
+
519
+ ### Complete Example
520
+
521
+ \`\`\`bash
522
+ npx @alwaysmeticulous/cli ci upload-asset-chunk \\
523
+ --apiToken="$METICULOUS_API_TOKEN" \\
524
+ --chunkName="app" \\
525
+ --chunkVersionId="$CI_COMMIT_SHA" \\
526
+ --chunkAssetsDirectory="dist"
527
+ \`\`\`
528
+
529
+ ---
530
+
531
+ ### Exit Codes
532
+
533
+ | Code | Meaning |
534
+ |------|---------|
535
+ | 0 | Success |
536
+ | 1 | Failure |
537
+ | 2 | Error |
538
+
539
+ ---
540
+
541
+ ## ci run-with-uploaded-asset-chunks
542
+
543
+ Trigger a test run against already-uploaded asset chunks. Pair with \`ci upload-asset-chunk\`.
544
+
545
+ ### Synopsis
546
+
547
+ \`\`\`bash
548
+ npx @alwaysmeticulous/cli ci run-with-uploaded-asset-chunks \\
549
+ --apiToken="<token>" \\
550
+ --commitSha="<sha>" \\
551
+ --assetReferencesManifest="<path>" \\
552
+ [options]
553
+ \`\`\`
554
+
555
+ ### Required Flags
556
+
557
+ #### \`--apiToken\`
558
+
559
+ **Type**: String
560
+ **Description**: Your Meticulous API token
561
+
562
+ ---
563
+
564
+ #### \`--assetReferencesManifest\`
565
+
566
+ **Type**: String (path)
567
+ **Description**: Path to a JSON file containing a list of references to previously uploaded asset chunks (see \`ci upload-asset-chunk\`). Each entry is either \`{ name, versionId }\` (an explicit chunk version) or \`{ name, versionLookup: "latest-in-history" }\` (resolves the version of an unchanged chunk from the base test run's history; the base is inferred automatically for GitHub projects, or pass \`--baseSha\` to override it). Chunk names must be unique. Chunked analog of \`--appDirectory\` / \`--appZip\` on \`ci upload-assets\`.
568
+
569
+ **File format**:
570
+ \`\`\`json
571
+ [
572
+ { "name": "app", "versionId": "ad8a8da9aaaweaad9" },
573
+ { "name": "plugin-1", "versionLookup": "latest-in-history" }
574
+ ]
575
+ \`\`\`
576
+
577
+ **Example**:
578
+ \`\`\`bash
579
+ --assetReferencesManifest="./manifest.json"
580
+ \`\`\`
581
+
582
+ ---
583
+
584
+ ### Optional Flags
585
+
586
+ #### \`--commitSha\`
587
+
588
+ **Type**: String
589
+ **Description**: Commit SHA being tested
590
+ **Default**: Auto-detected from git
591
+
592
+ ---
593
+
594
+ #### \`--baseSha\`
595
+
596
+ **Type**: String
597
+ **Description**: The base commit SHA to compare against. Intended for custom test run triggers. Cannot be combined with \`--repoDirectory\`.
598
+
599
+ ---
600
+
601
+ #### \`--gitDiffOutput\`
602
+
603
+ **Type**: String
604
+ **Description**: Raw git diff output between the base and head commits. Requires \`--baseSha\`. Cannot be combined with \`--repoDirectory\`.
605
+
606
+ ---
607
+
608
+ #### \`--repoDirectory\`
609
+
610
+ **Type**: String (path)
611
+ **Description**: The path to a git repository. Intended for custom test run triggers. Automatically infers \`--commitSha\`, \`--baseSha\`, and \`--gitDiffOutput\` from the repo. Cannot be combined with \`--commitSha\`, \`--baseSha\`, or \`--gitDiffOutput\`.
612
+
613
+ ---
614
+
615
+ #### \`--rewrites\`
616
+
617
+ **Type**: String (JSON)
618
+ **Description**: URL rewrite rules in Vercel \`serve-handler\` format.
619
+ **Default**: \`'[]'\` (falls back to \`{ source: "**", destination: "/index.html" }\`)
620
+
621
+ **Example**:
622
+ \`\`\`bash
623
+ --rewrites='[{"source":"/(.*)", "destination":"/index.html"}]'
624
+ \`\`\`
625
+
626
+ ---
627
+
628
+ #### \`--sessionFilter\`
629
+
630
+ **Type**: String (path)
631
+ **Description**: Path to a JSON file restricting which sessions the test run replays. A session is replayed if its start URL matches at least one of the regexes ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). If omitted, all selected sessions are replayed. See [Filter Sessions by Start URL](/docs/how-to/filter-sessions-by-start-url).
632
+
633
+ **File format**:
634
+ \`\`\`json
635
+ {
636
+ "session-start-url-matches-any-regex": ["/checkout/", "/settings/"]
637
+ }
638
+ \`\`\`
639
+
640
+ **Example**:
641
+ \`\`\`bash
642
+ --sessionFilter="./session-filter.json"
643
+ \`\`\`
644
+
645
+ ---
646
+
647
+ #### \`--waitForBase\`
648
+
649
+ **Type**: Boolean
650
+ **Description**: If true, wait for a base test run to be created before triggering a test run.
651
+ **Default**: \`true\`
652
+
653
+ ---
654
+
655
+ #### \`--waitForTestRunToComplete\`
656
+
657
+ **Type**: Boolean
658
+ **Description**: Block until the triggered test run finishes. Only for runs tied to a local branch: requires \`--repoDirectory\`, or both \`--baseSha\` and \`--gitDiffOutput\`. Implies \`--waitForBase\`.
659
+ **Default**: \`false\`
660
+
661
+ ---
662
+
663
+ #### \`--dryRun\`
664
+
665
+ **Type**: Boolean
666
+ **Description**: Print what would be triggered without making the API call.
667
+ **Default**: \`false\`
668
+
669
+ ---
670
+
671
+ ### Complete Example
672
+
673
+ \`\`\`bash
674
+ # manifest.json
675
+ # [
676
+ # { "name": "app", "versionId": "ad8a8da9aaaweaad9" },
677
+ # { "name": "plugin-1", "versionId": "dd8ffdaa9dfedebb3" }
678
+ # ]
679
+
680
+ npx @alwaysmeticulous/cli ci run-with-uploaded-asset-chunks \\
681
+ --apiToken="$METICULOUS_API_TOKEN" \\
682
+ --commitSha="$CI_COMMIT_SHA" \\
683
+ --assetReferencesManifest="./manifest.json"
684
+ \`\`\`
685
+
686
+ ---
687
+
688
+ ### Exit Codes
689
+
690
+ | Code | Meaning |
691
+ |------|---------|
692
+ | 0 | Success |
693
+ | 1 | Failure |
694
+ | 2 | Error |
695
+
696
+ ---
697
+
698
+ ## simulate
699
+
700
+ Replay a session locally for debugging.
701
+
702
+ ### Synopsis
703
+
704
+ \`\`\`bash
705
+ npx @alwaysmeticulous/cli simulate \\
706
+ --sessionId="<id>" \\
707
+ --appUrl="<url>" \\
708
+ [options]
709
+ \`\`\`
710
+
711
+ ### Required Flags
712
+
713
+ #### \`--sessionId\`
714
+
715
+ **Type**: String
716
+ **Description**: ID of session to replay
717
+ **How to get**: From Meticulous dashboard or test run
718
+
719
+ **Example**:
720
+ \`\`\`bash
721
+ --sessionId="ses_abc123..."
722
+ \`\`\`
723
+
724
+ ---
725
+
726
+ #### \`--appUrl\`
727
+
728
+ **Type**: String
729
+ **Description**: URL where your app is running locally
730
+
731
+ **Example**:
732
+ \`\`\`bash
733
+ --appUrl="http://localhost:3000"
734
+ \`\`\`
735
+
736
+ ---
737
+
738
+ ### Optional Flags
739
+
740
+ #### \`--apiToken\`
741
+
742
+ **Type**: String
743
+ **Description**: Your Meticulous API token
744
+ **Note**: Required if session is private
745
+
746
+ ---
747
+
748
+ #### \`--headless\`
749
+
750
+ **Type**: Boolean
751
+ **Description**: Run browser in headless mode
752
+ **Default**: false
753
+
754
+ **Example**:
755
+ \`\`\`bash
756
+ --headless
757
+ \`\`\`
758
+
759
+ ---
760
+
761
+ #### \`--devtools\`
762
+
763
+ **Type**: Boolean
764
+ **Description**: Open browser DevTools automatically
765
+ **Default**: false
766
+
767
+ **Example**:
768
+ \`\`\`bash
769
+ --devtools
770
+ \`\`\`
771
+
772
+ ---
773
+
774
+ ### Complete Example
775
+
776
+ \`\`\`bash
777
+ # Basic replay
778
+ npx @alwaysmeticulous/cli simulate \\
779
+ --sessionId="ses_abc123..." \\
780
+ --appUrl="http://localhost:3000"
781
+
782
+ # With DevTools for debugging
783
+ npx @alwaysmeticulous/cli simulate \\
784
+ --sessionId="ses_abc123..." \\
785
+ --appUrl="http://localhost:3000" \\
786
+ --devtools
787
+
788
+ # Headless mode for CI
789
+ npx @alwaysmeticulous/cli simulate \\
790
+ --sessionId="ses_abc123..." \\
791
+ --appUrl="http://localhost:3000" \\
792
+ --headless
793
+ \`\`\`
794
+
795
+ ---
796
+
797
+ ### Exit Codes
798
+
799
+ | Code | Meaning |
800
+ |------|---------|
801
+ | 0 | Replay completed successfully |
802
+ | 1 | Replay failed |
803
+
804
+ ---
805
+
806
+ ## crawl
807
+
808
+ Crawl your app from a start URL to record sessions and create a test run from them. Opens a local headed browser at the start URL and pauses so you can manually log in before crawling starts — useful for bootstrapping session coverage on apps that require a login.
809
+
810
+ {% callout type="warning" %}
811
+ Recording starts as soon as the browser opens, so the login flow (including any credentials you type) is recorded as part of the first session.
812
+ {% /callout %}
813
+
814
+ ### Synopsis
815
+
816
+ \`\`\`bash
817
+ npx @alwaysmeticulous/cli crawl \\
818
+ --apiToken="<token>" \\
819
+ --startUrl="<url>" \\
820
+ [options]
821
+ \`\`\`
822
+
823
+ ### Required Flags
824
+
825
+ #### \`--startUrl\`
826
+
827
+ **Type**: String
828
+ **Description**: The URL to start crawling from
829
+
830
+ **Example**:
831
+ \`\`\`bash
832
+ --startUrl="https://app.example.com"
833
+ \`\`\`
834
+
835
+ ---
836
+
837
+ ### Optional Flags
838
+
839
+ #### \`--apiToken\`
840
+
841
+ **Type**: String
842
+ **Description**: The API token of the project to record sessions into
843
+ **Note**: When omitted, the command uses your OAuth login (run \`meticulous auth login\` and \`meticulous auth set-project\` to choose the project), falling back to the \`METICULOUS_API_TOKEN\` environment variable or your locally stored token
844
+
845
+ ---
846
+
847
+ #### \`--crawlingTimeoutSeconds\`
848
+
849
+ **Type**: Number
850
+ **Description**: The maximum time in seconds to spend crawling (time spent logging in doesn't count)
851
+ **Default**: 120
852
+
853
+ ---
854
+
855
+ #### \`--maxNumSessions\`
856
+
857
+ **Type**: Number
858
+ **Description**: The maximum number of sessions to record
859
+ **Default**: 200
860
+
861
+ ---
862
+
863
+ #### \`--skipTestRun\`
864
+
865
+ **Type**: Boolean
866
+ **Description**: Don't create a test run from the recorded sessions
867
+ **Default**: false
868
+
869
+ ---
870
+
871
+ ### Complete Example
872
+
873
+ \`\`\`bash
874
+ # Crawl for 2 minutes and create a test run from the recorded sessions
875
+ npx @alwaysmeticulous/cli crawl \\
876
+ --apiToken="<token>" \\
877
+ --startUrl="https://app.example.com"
878
+
879
+ # Longer crawl, sessions only (no test run)
880
+ npx @alwaysmeticulous/cli crawl \\
881
+ --apiToken="<token>" \\
882
+ --startUrl="https://app.example.com" \\
883
+ --crawlingTimeoutSeconds=600 \\
884
+ --skipTestRun
885
+ \`\`\`
886
+
887
+ When the browser opens, log in if your app requires it, then press Enter in the terminal to start crawling. Once the crawl finishes the CLI prints the URL of the created test run.
888
+
889
+ ---
890
+
891
+ ### Exit Codes
892
+
893
+ | Code | Meaning |
894
+ |------|---------|
895
+ | 0 | Crawl completed successfully |
896
+ | 1 | Crawl failed or no sessions were recorded |
897
+
898
+ ---
899
+
900
+ ## ci start-tunnel
901
+
902
+ Start a secure tunnel for manual testing and debugging.
903
+
904
+ ### Synopsis
905
+
906
+ \`\`\`bash
907
+ npx @alwaysmeticulous/cli ci start-tunnel \\
908
+ --port=<port> \\
909
+ [options]
910
+ \`\`\`
911
+
912
+ ### Required Flags
913
+
914
+ #### \`--port\` / \`-p\`
915
+
916
+ **Type**: Number
917
+ **Description**: Port your local server is running on
918
+
919
+ **Example**:
920
+ \`\`\`bash
921
+ --port=3000
922
+ -p 3000
923
+ \`\`\`
924
+
925
+ ---
926
+
927
+ ### Optional Flags
928
+
929
+ #### \`--apiToken\`
930
+
931
+ **Type**: String
932
+ **Description**: Your Meticulous API token
933
+ **Note**: Required for authentication
934
+
935
+ ---
936
+
937
+ #### \`--localHost\` / \`-l\`
938
+
939
+ **Type**: String
940
+ **Description**: Host to tunnel to
941
+ **Default**: localhost
942
+
943
+ **Example**:
944
+ \`\`\`bash
945
+ --localHost=127.0.0.1
946
+ \`\`\`
947
+
948
+ ---
949
+
950
+ #### \`--localHttps\`
951
+
952
+ **Type**: Boolean
953
+ **Description**: Connect to local HTTPS server
954
+ **Default**: false
955
+
956
+ **Example**:
957
+ \`\`\`bash
958
+ --localHttps
959
+ \`\`\`
960
+
961
+ ---
962
+
963
+ #### \`--localCert\`
964
+
965
+ **Type**: String (path)
966
+ **Description**: Path to SSL certificate file
967
+
968
+ **Example**:
969
+ \`\`\`bash
970
+ --localCert="./certs/server.crt"
971
+ \`\`\`
972
+
973
+ ---
974
+
975
+ #### \`--localKey\`
976
+
977
+ **Type**: String (path)
978
+ **Description**: Path to SSL key file
979
+
980
+ **Example**:
981
+ \`\`\`bash
982
+ --localKey="./certs/server.key"
983
+ \`\`\`
984
+
985
+ ---
986
+
987
+ #### \`--localCa\`
988
+
989
+ **Type**: String (path)
990
+ **Description**: Path to CA file for self-signed certificates
991
+
992
+ **Example**:
993
+ \`\`\`bash
994
+ --localCa="./certs/ca.crt"
995
+ \`\`\`
996
+
997
+ ---
998
+
999
+ #### \`--allowInvalidCert\`
1000
+
1001
+ **Type**: Boolean
1002
+ **Description**: Ignore SSL certificate errors
1003
+ **Default**: false
1004
+
1005
+ **Example**:
1006
+ \`\`\`bash
1007
+ --allowInvalidCert
1008
+ \`\`\`
1009
+
1010
+ ---
1011
+
1012
+ #### \`--proxyAllUrls\`
1013
+
1014
+ **Type**: Boolean
1015
+ **Description**: Proxy all URLs through tunnel
1016
+ **Default**: false
1017
+
1018
+ ---
1019
+
1020
+ #### \`--rewriteHostnameToAppUrl\`
1021
+
1022
+ **Type**: Boolean
1023
+ **Description**: Rewrite request hostnames
1024
+ **Default**: false
1025
+
1026
+ ---
1027
+
1028
+ #### \`--enableDnsCache\`
1029
+
1030
+ **Type**: Boolean
1031
+ **Description**: Enable DNS caching
1032
+ **Default**: false
1033
+
1034
+ ---
1035
+
1036
+ #### \`--printRequests\`
1037
+
1038
+ **Type**: Boolean
1039
+ **Description**: Log all requests through tunnel
1040
+ **Default**: false
1041
+
1042
+ **Example**:
1043
+ \`\`\`bash
1044
+ --printRequests
1045
+ \`\`\`
1046
+
1047
+ ---
1048
+
1049
+ #### \`--http2Connections\`
1050
+
1051
+ **Type**: Number
1052
+ **Description**: Number of HTTP/2 connections for multiplexing
1053
+ **Default**: Number of CPU cores
1054
+
1055
+ **Example**:
1056
+ \`\`\`bash
1057
+ --http2Connections=8
1058
+ \`\`\`
1059
+
1060
+ ---
1061
+
1062
+ ### Complete Example
1063
+
1064
+ \`\`\`bash
1065
+ # Basic tunnel
1066
+ npx @alwaysmeticulous/cli ci start-tunnel \\
1067
+ --port=3000
1068
+
1069
+ # With request logging
1070
+ npx @alwaysmeticulous/cli ci start-tunnel \\
1071
+ --port=3000 \\
1072
+ --printRequests
1073
+
1074
+ # HTTPS tunnel with self-signed cert
1075
+ npx @alwaysmeticulous/cli ci start-tunnel \\
1076
+ --port=3000 \\
1077
+ --localHttps \\
1078
+ --allowInvalidCert
1079
+
1080
+ # Multi-server setup
1081
+ npx @alwaysmeticulous/cli ci start-tunnel \\
1082
+ --port=3000 \\
1083
+ --proxyAllUrls
1084
+ \`\`\`
1085
+
1086
+ ---
1087
+
1088
+ ### Output
1089
+
1090
+ When tunnel starts successfully:
1091
+
1092
+ \`\`\`
1093
+ Your url is: https://abc123.meticulous.ai
1094
+ user: meticulous, password: ******
1095
+ \`\`\`
1096
+
1097
+ Use these credentials to access your app through the tunnel.
1098
+
1099
+ ---
1100
+
1101
+ ## ci prepare
1102
+
1103
+ Ensure a base test run exists before running tests.
1104
+
1105
+ ### Synopsis
1106
+
1107
+ \`\`\`bash
1108
+ npx @alwaysmeticulous/cli ci prepare \\
1109
+ --apiToken="<token>" \\
1110
+ [options]
1111
+ \`\`\`
1112
+
1113
+ ### Required Flags
1114
+
1115
+ #### \`--apiToken\`
1116
+
1117
+ **Type**: String
1118
+ **Description**: Your Meticulous API token
1119
+
1120
+ ---
1121
+
1122
+ ### Required Flags
1123
+
1124
+ #### \`--triggerScript\`
1125
+
1126
+ **Type**: String
1127
+ **Description**: Path to script that triggers a test run on a specific commit
1128
+
1129
+ ---
1130
+
1131
+ ### Optional Flags
1132
+
1133
+ #### \`--headCommit\`
1134
+
1135
+ **Type**: String
1136
+ **Description**: Commit SHA to check/prepare
1137
+ **Default**: Auto-detected
1138
+
1139
+ ---
1140
+
1141
+ ### Complete Example
1142
+
1143
+ \`\`\`bash
1144
+ npx @alwaysmeticulous/cli ci prepare \\
1145
+ --apiToken="$METICULOUS_API_TOKEN" \\
1146
+ --triggerScript="./scripts/trigger-test-run.sh"
1147
+ \`\`\`
1148
+
1149
+ ---
1150
+
1151
+ ## ci label-commit
1152
+
1153
+ Attach labels to a commit. Labelling a commit as \`not-relevant\` tells Meticulous the commit doesn't affect the app under test, so it can be skipped when searching for a base test run to compare against.
1154
+
1155
+ ### Synopsis
1156
+
1157
+ \`\`\`bash
1158
+ npx @alwaysmeticulous/cli ci label-commit \\
1159
+ --apiToken="<token>" \\
1160
+ --labels not-relevant \\
1161
+ [options]
1162
+ \`\`\`
1163
+
1164
+ ### Required Flags
1165
+
1166
+ #### \`--apiToken\`
1167
+
1168
+ **Type**: String
1169
+ **Description**: Your Meticulous API token
1170
+
1171
+ ---
1172
+
1173
+ #### \`--labels\`
1174
+
1175
+ **Type**: String (list)
1176
+ **Description**: The labels to attach to the commit. Supported labels: \`not-relevant\`
1177
+
1178
+ ---
1179
+
1180
+ ### Optional Flags
1181
+
1182
+ #### \`--commitSha\`
1183
+
1184
+ **Type**: String
1185
+ **Description**: The commit to label
1186
+ **Default**: Auto-detected from git
1187
+
1188
+ ---
1189
+
1190
+ ### Complete Example
1191
+
1192
+ \`\`\`bash
1193
+ npx @alwaysmeticulous/cli ci label-commit \\
1194
+ --apiToken="$METICULOUS_API_TOKEN" \\
1195
+ --labels not-relevant
1196
+ \`\`\`
1197
+
1198
+ ---
1199
+
1200
+ ## Common Patterns
1201
+
1202
+ ### Environment Variables
1203
+
1204
+ Set API token via environment variable:
1205
+
1206
+ \`\`\`bash
1207
+ export METICULOUS_API_TOKEN="met_live_abc123..."
1208
+
1209
+ # Now can omit --apiToken flag
1210
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
1211
+ --appUrl="http://localhost:3000"
1212
+ \`\`\`
1213
+
1214
+ ---
1215
+
1216
+ ### CI Integration
1217
+
1218
+ #### GitHub Actions
1219
+
1220
+ \`\`\`yaml
1221
+ - name: Run Meticulous tests
1222
+ run: |
1223
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
1224
+ --apiToken="\${{ secrets.METICULOUS_API_TOKEN }}" \\
1225
+ --appUrl="http://localhost:3000"
1226
+ \`\`\`
1227
+
1228
+ #### GitLab CI
1229
+
1230
+ \`\`\`yaml
1231
+ script:
1232
+ - >
1233
+ npx @alwaysmeticulous/cli ci upload-assets
1234
+ --apiToken="$METICULOUS_API_TOKEN"
1235
+ --appDirectory="dist"
1236
+ --commitSha="$CI_COMMIT_SHA"
1237
+ \`\`\`
1238
+
1239
+ ---
1240
+
1241
+ ### Debug Mode
1242
+
1243
+ Enable verbose logging:
1244
+
1245
+ \`\`\`bash
1246
+ DEBUG=meticulous:* npx @alwaysmeticulous/cli ci run-with-tunnel \\
1247
+ --apiToken="$METICULOUS_API_TOKEN" \\
1248
+ --appUrl="http://localhost:3000"
1249
+ \`\`\`
1250
+
1251
+ ---
1252
+
1253
+ ### Scripting
1254
+
1255
+ Use in shell scripts:
1256
+
1257
+ \`\`\`bash
1258
+ #!/bin/bash
1259
+ set -e
1260
+
1261
+ # Start app
1262
+ npm start &
1263
+ APP_PID=$!
1264
+
1265
+ # Wait for app
1266
+ npx wait-on http://localhost:3000
1267
+
1268
+ # Run tests
1269
+ npx @alwaysmeticulous/cli ci run-with-tunnel \\
1270
+ --apiToken="$METICULOUS_API_TOKEN" \\
1271
+ --appUrl="http://localhost:3000"
1272
+
1273
+ # Cleanup
1274
+ kill $APP_PID
1275
+ \`\`\`
1276
+
1277
+ ---
1278
+
1279
+ ## Troubleshooting
1280
+
1281
+ ### "API token required"
1282
+
1283
+ **Cause**: No API token provided
1284
+
1285
+ **Solution**: Pass \`--apiToken\` or set \`METICULOUS_API_TOKEN\` env var
1286
+
1287
+ ---
1288
+
1289
+ ### "Failed to connect"
1290
+
1291
+ **Cause**: App not running or wrong URL
1292
+
1293
+ **Solutions**:
1294
+ 1. Verify app is running: \`curl http://localhost:3000\`
1295
+ 2. Check port in \`--appUrl\` matches actual port
1296
+ 3. Increase wait time before running command
1297
+
1298
+ ---
1299
+
1300
+ ### "No sessions found"
1301
+
1302
+ **Cause**: No recorded sessions for project
1303
+
1304
+ **Solution**: Record sessions first (add recorder snippet to app)
1305
+
1306
+ ---
1307
+
1308
+ ### "Tunnel connection failed"
1309
+
1310
+ **Cause**: Network/firewall issue
1311
+
1312
+ **Solutions**:
1313
+ 1. Check outbound HTTPS (443) is allowed
1314
+ 2. Try \`--printRequests\` to debug
1315
+ 3. Contact support if persists
1316
+
1317
+ ---
1318
+
1319
+ ## See Also
1320
+
1321
+ - [GitHub Actions Setup](${GITHUB_ACTIONS_SETUP_URL}) - GitHub Actions configuration
1322
+ - [Tunnel Advanced Options](${TUNNEL_ADVANCED_OPTIONS_URL}) - Detailed tunnel configuration
1323
+ - [FAQ & Troubleshooting](${FAQ_AND_TROUBLESHOOTING_URL}) - Common issues and solutions
1324
+ `;