@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,49 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe")}catch(e){}}();
3
+
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.printOnboardSummary = void 0;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ /** Prints what the onboard run resolved, before any agent takes over the terminal. */
11
+ const printOnboardSummary = (options) => {
12
+ const { context, frameworkDetection, projectRoot, workspaceDir } = options;
13
+ console.log("");
14
+ console.log(chalk_1.default.bold("Meticulous onboard"));
15
+ console.log(` Project: ${chalk_1.default.green(context.orgAndProject ?? "(unknown — set tokens in the dashboard)")}`);
16
+ const vcsLine = formatVcsLinkLine(context);
17
+ if (vcsLine) {
18
+ console.log(vcsLine);
19
+ }
20
+ console.log(` App: ${chalk_1.default.green(`${context.selectedAppName} (${context.selectedAppPath})`)}${context.isMonorepo ? chalk_1.default.dim(" [monorepo]") : ""}`);
21
+ console.log(` Framework: ${chalk_1.default.green(`${frameworkDetection.framework} / ${frameworkDetection.rendering}`)}`);
22
+ console.log(` Repo: ${chalk_1.default.green(projectRoot)}`);
23
+ console.log(` Workspace: ${chalk_1.default.green(workspaceDir)}`);
24
+ console.log("");
25
+ };
26
+ exports.printOnboardSummary = printOnboardSummary;
27
+ const formatVcsLinkLine = (context) => {
28
+ switch (context.ciProvider) {
29
+ case "github-actions":
30
+ return ` GitHub: ${linkStatus(context.isGitHubIntegrationActive)}`;
31
+ case "gitlab-ci":
32
+ return ` GitLab: ${linkStatus(context.isGitLabIntegrationActive)}`;
33
+ case "bitbucket-pipelines":
34
+ return ` Bitbucket: ${linkStatus(context.isBitbucketIntegrationActive)}`;
35
+ default:
36
+ return null;
37
+ }
38
+ };
39
+ const linkStatus = (linked) => {
40
+ if (linked === true) {
41
+ return chalk_1.default.green("linked");
42
+ }
43
+ if (linked === false) {
44
+ return chalk_1.default.yellow("not linked");
45
+ }
46
+ return chalk_1.default.dim("unknown");
47
+ };
48
+ //# sourceMappingURL=print-summary.js.map
49
+ //# debugId=30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-summary.js","sources":["../../../src/commands/onboard/print-summary.ts"],"sourceRoot":"","names":[],"mappings":";;;;;;;;AAAA,kDAA0B;AAI1B,sFAAsF;AAC/E,MAAM,mBAAmB,GAAG,CAAC,OAKnC,EAAQ,EAAE;IACT,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,yCAAyC,CAAC,EAAE,CAClG,CAAC;IACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CACzB,GAAG,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,GAAG,CAC1D,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC;IACF,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CACzB,GAAG,kBAAkB,CAAC,SAAS,MAAM,kBAAkB,CAAC,SAAS,EAAE,CACpE,EAAE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AA9BW,QAAA,mBAAmB,uBA8B9B;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAA2B,EAAiB,EAAE;IACvE,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3B,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzE,KAAK,WAAW;YACd,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzE,KAAK,qBAAqB;YACxB,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC5E;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAsB,EAAU,EAAE;IACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9B,CAAC,CAAC","debugId":"30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe"}
@@ -0,0 +1,21 @@
1
+ import { type FrameworkDetection } from "./detect-framework";
2
+ import { type DiscoveredApp } from "./discover-apps";
3
+ /**
4
+ * Picks the frontend app to onboard: the `--app` match, the only discovered
5
+ * app, or an interactive picker when the repo is a monorepo.
6
+ */
7
+ export declare const resolveSelectedApp: (options: {
8
+ projectRoot: string;
9
+ app: string | undefined;
10
+ }) => Promise<DiscoveredApp>;
11
+ /**
12
+ * Warns about unsupported SSR before anything is written and lets the user
13
+ * decide whether to continue. Non-interactive runs require the explicit
14
+ * `--skip-ssr-check` override because there is nobody to confirm.
15
+ */
16
+ export declare const assertSupportedSsr: (options: {
17
+ detection: FrameworkDetection;
18
+ selectedApp: DiscoveredApp;
19
+ skipSsrCheck: boolean;
20
+ }) => Promise<void>;
21
+ //# sourceMappingURL=resolve-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-app.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/resolve-app.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,YAAmB;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,KAAG,OAAO,CAAC,aAAa,CAgCxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,YAAmB;IAChD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,aAAa,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,KAAG,OAAO,CAAC,IAAI,CAqCf,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cb20c9e0-2694-552a-98a7-eff127612376")}catch(e){}}();
3
+
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.assertSupportedSsr = exports.resolveSelectedApp = void 0;
9
+ const client_1 = require("@alwaysmeticulous/client");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const inquirer_1 = __importDefault(require("inquirer"));
12
+ const cli_user_error_1 = require("../../utils/cli-user-error");
13
+ const detect_framework_1 = require("./detect-framework");
14
+ const discover_apps_1 = require("./discover-apps");
15
+ /**
16
+ * Picks the frontend app to onboard: the `--app` match, the only discovered
17
+ * app, or an interactive picker when the repo is a monorepo.
18
+ */
19
+ const resolveSelectedApp = async (options) => {
20
+ const apps = (0, discover_apps_1.discoverFrontendApps)(options.projectRoot);
21
+ if (options.app) {
22
+ const requested = options.app.trim();
23
+ const match = apps.find((app) => app.path === requested ||
24
+ app.name === requested ||
25
+ app.packageName === requested);
26
+ if (!match) {
27
+ throw new cli_user_error_1.CliUserError(`App '${requested}' not found. Available frontend apps:\n${formatAppList(apps)}`);
28
+ }
29
+ return match;
30
+ }
31
+ if (apps.length <= 1) {
32
+ return apps[0] ?? { path: ".", name: "app", packageName: null };
33
+ }
34
+ if (!(0, client_1.isInteractiveContext)()) {
35
+ throw new cli_user_error_1.CliUserError("Multiple frontend apps detected in this monorepo, but no interactive terminal is available.\n" +
36
+ "Pass `--app <path-or-name>` to choose one:\n" +
37
+ formatAppList(apps));
38
+ }
39
+ return (0, discover_apps_1.promptForMonorepoApp)(apps);
40
+ };
41
+ exports.resolveSelectedApp = resolveSelectedApp;
42
+ /**
43
+ * Warns about unsupported SSR before anything is written and lets the user
44
+ * decide whether to continue. Non-interactive runs require the explicit
45
+ * `--skip-ssr-check` override because there is nobody to confirm.
46
+ */
47
+ const assertSupportedSsr = async (options) => {
48
+ const { detection, selectedApp, skipSsrCheck } = options;
49
+ if (!detection.isUnsupportedSsr || skipSsrCheck) {
50
+ return;
51
+ }
52
+ const appLabel = `${selectedApp.name} (${selectedApp.path})`;
53
+ console.log(chalk_1.default.yellow((0, detect_framework_1.unsupportedSsrWarningMessage)(detection)));
54
+ console.log(chalk_1.default.dim(` Selected app: ${appLabel}`));
55
+ console.log("");
56
+ if (!(0, client_1.isInteractiveContext)()) {
57
+ throw new cli_user_error_1.CliUserError(`${(0, detect_framework_1.unsupportedSsrMessage)(detection)}\n\nSelected app: ${appLabel}\n\n` +
58
+ "There is no interactive terminal to confirm that you want to continue. " +
59
+ "Re-run with `--skip-ssr-check` to accept this risk.");
60
+ }
61
+ const { proceed } = await inquirer_1.default.prompt([
62
+ {
63
+ type: "confirm",
64
+ name: "proceed",
65
+ message: detection.framework === "nextjs-app"
66
+ ? `We think ${appLabel} uses Next.js App Router. Continue anyway?`
67
+ : `We think ${appLabel} is an unsupported SSR setup. Continue anyway?`,
68
+ default: false,
69
+ },
70
+ ]);
71
+ if (!proceed) {
72
+ throw new cli_user_error_1.CliUserError(`${(0, detect_framework_1.unsupportedSsrMessage)(detection)}\n\nSelected app: ${appLabel}`);
73
+ }
74
+ };
75
+ exports.assertSupportedSsr = assertSupportedSsr;
76
+ const formatAppList = (apps) => apps.map((app) => ` - ${app.name} (${app.path})`).join("\n");
77
+ //# sourceMappingURL=resolve-app.js.map
78
+ //# debugId=cb20c9e0-2694-552a-98a7-eff127612376
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-app.js","sources":["../../../src/commands/onboard/resolve-app.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"cb20c9e0-2694-552a-98a7-eff127612376"}
@@ -0,0 +1,14 @@
1
+ import type { Project } from "@alwaysmeticulous/api";
2
+ /**
3
+ * Resolves which Meticulous project this onboard run is for.
4
+ *
5
+ * - Interactive OAuth: searchable picker (type to filter, ↑/↓ to select).
6
+ * - `--project` / sole accessible project / project-scoped API token: no prompt.
7
+ * - Non-interactive OAuth with several projects: requires `--project`.
8
+ * - Auth failure: returns null and continues with local git context only.
9
+ */
10
+ export declare const resolveOnboardProject: (options: {
11
+ apiToken: string | undefined;
12
+ project: string | undefined;
13
+ }) => Promise<Project | null>;
14
+ //# sourceMappingURL=resolve-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-project.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/resolve-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAmBrD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAmB;IACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAwCzB,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f160cb06-1427-52cc-8b70-5fb6d2b32d44")}catch(e){}}();
3
+
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.resolveOnboardProject = void 0;
9
+ const client_1 = require("@alwaysmeticulous/client");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const cli_user_error_1 = require("../../utils/cli-user-error");
12
+ const select_project_1 = require("../../utils/select-project");
13
+ /**
14
+ * Resolves which Meticulous project this onboard run is for.
15
+ *
16
+ * - Interactive OAuth: searchable picker (type to filter, ↑/↓ to select).
17
+ * - `--project` / sole accessible project / project-scoped API token: no prompt.
18
+ * - Non-interactive OAuth with several projects: requires `--project`.
19
+ * - Auth failure: returns null and continues with local git context only.
20
+ */
21
+ const resolveOnboardProject = async (options) => {
22
+ try {
23
+ const apiToken = await (0, client_1.resolveApiTokenWithOAuth)({
24
+ apiToken: options.apiToken,
25
+ enableOAuthLogin: true,
26
+ });
27
+ const client = await (0, client_1.createClientWithOAuth)({
28
+ apiToken: options.apiToken,
29
+ enableOAuthLogin: true,
30
+ });
31
+ // Project-scoped API tokens already pin a single project.
32
+ if (apiToken && !(0, client_1.isOAuthJwt)(apiToken)) {
33
+ return await (0, client_1.getProject)(client);
34
+ }
35
+ const selectedId = await selectOAuthProjectId({
36
+ client,
37
+ project: options.project,
38
+ });
39
+ if (!selectedId) {
40
+ return null;
41
+ }
42
+ return await (0, client_1.getProject)(client, selectedId);
43
+ }
44
+ catch (error) {
45
+ if (error instanceof cli_user_error_1.CliUserError) {
46
+ throw error;
47
+ }
48
+ console.log(chalk_1.default.yellow("Could not resolve a Meticulous project from your login (continuing with local git context only)."));
49
+ console.log(chalk_1.default.dim(error instanceof Error ? ` ${error.message}` : ` ${String(error)}`));
50
+ return null;
51
+ }
52
+ };
53
+ exports.resolveOnboardProject = resolveOnboardProject;
54
+ const selectOAuthProjectId = async (options) => {
55
+ const { client, project } = options;
56
+ if (project) {
57
+ const stored = await (0, client_1.setOAuthDefaultProject)(client, project.trim());
58
+ if (!stored.projectId) {
59
+ throw new cli_user_error_1.CliUserError(`Could not resolve project '${project.trim()}'. Pass an organization/name slug or project id.`);
60
+ }
61
+ console.log(chalk_1.default.dim(` Using project: ${(0, select_project_1.formatProjectSlug)(stored)}`));
62
+ return stored.projectId;
63
+ }
64
+ const projects = await (0, select_project_1.fetchAccessibleProjects)(client);
65
+ if (projects.length === 0) {
66
+ throw new cli_user_error_1.CliUserError("No projects are accessible to your account. Ask an organization admin to add you to a project.");
67
+ }
68
+ if (projects.length === 1) {
69
+ const only = projects[0];
70
+ await (0, client_1.setOAuthDefaultProject)(client, only.id);
71
+ console.log(chalk_1.default.dim(` Using project: ${only.organization.name}/${only.name}`));
72
+ return only.id;
73
+ }
74
+ if (!(0, client_1.isInteractiveContext)()) {
75
+ throw new cli_user_error_1.CliUserError("Multiple projects are accessible but none was selected (no interactive terminal). " +
76
+ "Pass `--project organization/name` to choose one.");
77
+ }
78
+ const selected = await promptForOnboardProject(client, projects);
79
+ await (0, client_1.setOAuthDefaultProject)(client, selected.id);
80
+ return selected.id;
81
+ };
82
+ const promptForOnboardProject = async (client, projects) => {
83
+ const existing = await (0, client_1.getOAuthDefaultProject)(client).catch(() => ({
84
+ projectId: null,
85
+ }));
86
+ return (0, select_project_1.promptForProject)(projects, {
87
+ message: "Which Meticulous project are you onboarding?",
88
+ defaultProjectId: existing.projectId,
89
+ });
90
+ };
91
+ //# sourceMappingURL=resolve-project.js.map
92
+ //# debugId=f160cb06-1427-52cc-8b70-5fb6d2b32d44
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-project.js","sources":["../../../src/commands/onboard/resolve-project.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"f160cb06-1427-52cc-8b70-5fb6d2b32d44"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Resolves `projectRoot` to its real path. Call once at the start of onboard
3
+ * writes so subsequent checks share the same root.
4
+ */
5
+ export declare const resolveRealProjectRoot: (projectRoot: string) => string;
6
+ /**
7
+ * Resolves a repo-relative path for writing under `projectRoot`.
8
+ *
9
+ * Rejects absolute paths, `..` escapes, and any existing symlink on the path
10
+ * from the project root to the target (inclusive). That stops a
11
+ * repository-seeded symlink such as `.meticulous-onboard` → `~/.ssh` from
12
+ * redirecting onboard writes outside the repo.
13
+ */
14
+ export declare const resolveSafeWritePath: (projectRoot: string, relativePath: string) => string;
15
+ export declare const mkdirSafeSync: (projectRoot: string, relativePath: string) => string;
16
+ export declare const writeFileSafeSync: (projectRoot: string, relativePath: string, data: string | NodeJS.ArrayBufferView) => string;
17
+ export declare const copyFileSafeSync: (projectRoot: string, relativePath: string, sourceAbsolutePath: string) => string;
18
+ /**
19
+ * Asserts that `workspaceDir` is the onboard workspace under `projectRoot`
20
+ * (or a realpath-equivalent path inside it), not an escaped location.
21
+ */
22
+ export declare const assertWorkspaceInsideProject: (projectRoot: string, workspaceDir: string) => string;
23
+ export declare const normalizeRelativeRepoPath: (relativePath: string) => string;
24
+ export declare const isPathInsideRoot: (root: string, candidate: string) => boolean;
25
+ /**
26
+ * True when `absolutePath` is a real (non-symlink) directory whose realpath
27
+ * stays inside the project root. Used by app discovery so a repo-seeded
28
+ * symlink cannot be selected as an onboard target.
29
+ */
30
+ export declare const isRealDirectoryInsideProject: (projectRoot: string, absolutePath: string) => boolean;
31
+ /**
32
+ * Paths the skills installer may create or write under. We must reject
33
+ * repo-seeded symlinks here *before* handing control to the external
34
+ * installer — validating only `.claude` is not enough.
35
+ */
36
+ export declare const SKILLS_INSTALL_DIR_ROOTS: readonly [".claude", ".agents", ".cursor"];
37
+ export declare const SKILLS_INSTALL_FILE_TARGETS: readonly ["skills-lock.json"];
38
+ /**
39
+ * Rejects symlinks on every path the skills installer may write through, then
40
+ * creates the destination directory roots as real directories inside the repo.
41
+ * Also walks any pre-existing nested entries under each agent's skills tree —
42
+ * a real `skills` dir with a last-component symlink like
43
+ * `.claude/skills/<name> -> ~/.ssh` would otherwise let the installer write
44
+ * outside the project while the shallow check still passes.
45
+ */
46
+ export declare const prepareSafeSkillsInstallTargets: (projectRoot: string) => void;
47
+ /**
48
+ * Re-checks skills install destinations after an external installer runs, so a
49
+ * TOCTOU symlink plant during the install cannot go unnoticed — including
50
+ * nested last-component symlinks under each agent's skills tree.
51
+ */
52
+ export declare const assertSafeSkillsInstallTargets: (projectRoot: string) => void;
53
+ /**
54
+ * Recursively rejects any symlink under `.claude/skills`, `.agents/skills`,
55
+ * and `.cursor/skills`. Matches `resolveSafeWritePath`: any symlink is refused,
56
+ * not only ones that currently resolve outside the repo.
57
+ */
58
+ export declare const assertNoSymlinksUnderSkillsTrees: (projectRoot: string) => void;
59
+ //# sourceMappingURL=safe-repo-fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-repo-fs.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/safe-repo-fs.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,KAAG,MAW5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,gBAClB,MAAM,gBACL,MAAM,KACnB,MAmDF,CAAC;AAEF,eAAO,MAAM,aAAa,gBACX,MAAM,gBACL,MAAM,KACnB,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACf,MAAM,gBACL,MAAM,QACd,MAAM,GAAG,MAAM,CAAC,eAAe,KACpC,MAUF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBACd,MAAM,gBACL,MAAM,sBACA,MAAM,KACzB,MAQF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,MAAM,gBACL,MAAM,KACnB,MAiBF,CAAC;AAMF,eAAO,MAAM,yBAAyB,iBAAkB,MAAM,KAAG,MAgBhE,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,aAAa,MAAM,KAAG,OAQlE,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,MAAM,gBACL,MAAM,KACnB,OAaF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,4CAI3B,CAAC;AAEX,eAAO,MAAM,2BAA2B,+BAAgC,CAAC;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,gBAAiB,MAAM,KAAG,IAYrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,gBAAiB,MAAM,KAAG,IASpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,gBAAiB,MAAM,KAAG,IAOtE,CAAC"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="96da1693-9282-57e0-8720-eb64652df868")}catch(e){}}();
3
+
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.assertNoSymlinksUnderSkillsTrees = exports.assertSafeSkillsInstallTargets = exports.prepareSafeSkillsInstallTargets = exports.SKILLS_INSTALL_FILE_TARGETS = exports.SKILLS_INSTALL_DIR_ROOTS = exports.isRealDirectoryInsideProject = exports.isPathInsideRoot = exports.normalizeRelativeRepoPath = exports.assertWorkspaceInsideProject = exports.copyFileSafeSync = exports.writeFileSafeSync = exports.mkdirSafeSync = exports.resolveSafeWritePath = exports.resolveRealProjectRoot = void 0;
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const cli_user_error_1 = require("../../utils/cli-user-error");
9
+ /**
10
+ * Resolves `projectRoot` to its real path. Call once at the start of onboard
11
+ * writes so subsequent checks share the same root.
12
+ */
13
+ const resolveRealProjectRoot = (projectRoot) => {
14
+ const absolute = (0, path_1.resolve)(projectRoot);
15
+ if (!(0, fs_1.existsSync)(absolute)) {
16
+ throw new cli_user_error_1.CliUserError(`Project root does not exist: ${absolute}`);
17
+ }
18
+ const stat = (0, fs_1.lstatSync)(absolute);
19
+ if (stat.isSymbolicLink()) {
20
+ // Allow the root itself to be reached via a symlink (e.g. worktrees), but
21
+ // still pin writes to the real directory.
22
+ }
23
+ return (0, fs_1.realpathSync)(absolute);
24
+ };
25
+ exports.resolveRealProjectRoot = resolveRealProjectRoot;
26
+ /**
27
+ * Resolves a repo-relative path for writing under `projectRoot`.
28
+ *
29
+ * Rejects absolute paths, `..` escapes, and any existing symlink on the path
30
+ * from the project root to the target (inclusive). That stops a
31
+ * repository-seeded symlink such as `.meticulous-onboard` → `~/.ssh` from
32
+ * redirecting onboard writes outside the repo.
33
+ */
34
+ const resolveSafeWritePath = (projectRoot, relativePath) => {
35
+ const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
36
+ const normalizedRelative = (0, exports.normalizeRelativeRepoPath)(relativePath);
37
+ const parts = normalizedRelative
38
+ .split("/")
39
+ .filter((part) => part.length > 0 && part !== ".");
40
+ let current = realRoot;
41
+ for (let index = 0; index < parts.length; index++) {
42
+ const next = (0, path_1.join)(current, parts[index]);
43
+ const stat = tryLstat(next);
44
+ if (!stat) {
45
+ current = (0, path_1.join)(current, ...parts.slice(index));
46
+ break;
47
+ }
48
+ // Use lstat (not existsSync) so broken symlinks are still rejected.
49
+ if (stat.isSymbolicLink()) {
50
+ const display = parts.slice(0, index + 1).join("/");
51
+ throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${display}'. ` +
52
+ `Remove or replace it, then re-run \`meticulous onboard\`.`);
53
+ }
54
+ if (stat.isDirectory()) {
55
+ current = (0, fs_1.realpathSync)(next);
56
+ if (!(0, exports.isPathInsideRoot)(realRoot, current)) {
57
+ throw new cli_user_error_1.CliUserError(`Refusing to write outside the project root via '${parts.slice(0, index + 1).join("/")}'.`);
58
+ }
59
+ continue;
60
+ }
61
+ // Existing non-directory leaf (regular file, etc.): must be the final part.
62
+ if (index !== parts.length - 1) {
63
+ throw new cli_user_error_1.CliUserError(`Refusing to write under non-directory path '${parts.slice(0, index + 1).join("/")}'.`);
64
+ }
65
+ current = next;
66
+ }
67
+ if (!(0, exports.isPathInsideRoot)(realRoot, current)) {
68
+ throw new cli_user_error_1.CliUserError(`Refusing to write outside the project root: ${relativePath}`);
69
+ }
70
+ return current;
71
+ };
72
+ exports.resolveSafeWritePath = resolveSafeWritePath;
73
+ const mkdirSafeSync = (projectRoot, relativePath) => {
74
+ const absolute = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
75
+ (0, fs_1.mkdirSync)(absolute, { recursive: true });
76
+ // Re-check after create: a race could theoretically replace a component, but
77
+ // more importantly ensure we didn't land on a symlink somehow.
78
+ assertNoSymlinkAt(projectRoot, relativePath);
79
+ return absolute;
80
+ };
81
+ exports.mkdirSafeSync = mkdirSafeSync;
82
+ const writeFileSafeSync = (projectRoot, relativePath, data) => {
83
+ (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
84
+ const parentRelative = (0, path_1.dirname)((0, exports.normalizeRelativeRepoPath)(relativePath));
85
+ if (parentRelative !== "." && parentRelative !== "") {
86
+ (0, exports.mkdirSafeSync)(projectRoot, parentRelative);
87
+ }
88
+ // Re-resolve after parents exist so a symlink planted on a parent is caught.
89
+ const target = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
90
+ (0, fs_1.writeFileSync)(target, data);
91
+ return target;
92
+ };
93
+ exports.writeFileSafeSync = writeFileSafeSync;
94
+ const copyFileSafeSync = (projectRoot, relativePath, sourceAbsolutePath) => {
95
+ const parentRelative = (0, path_1.dirname)((0, exports.normalizeRelativeRepoPath)(relativePath));
96
+ if (parentRelative !== "." && parentRelative !== "") {
97
+ (0, exports.mkdirSafeSync)(projectRoot, parentRelative);
98
+ }
99
+ const target = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
100
+ (0, fs_1.copyFileSync)(sourceAbsolutePath, target);
101
+ return target;
102
+ };
103
+ exports.copyFileSafeSync = copyFileSafeSync;
104
+ /**
105
+ * Asserts that `workspaceDir` is the onboard workspace under `projectRoot`
106
+ * (or a realpath-equivalent path inside it), not an escaped location.
107
+ */
108
+ const assertWorkspaceInsideProject = (projectRoot, workspaceDir) => {
109
+ const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
110
+ if (!(0, fs_1.existsSync)(workspaceDir)) {
111
+ throw new cli_user_error_1.CliUserError(`Onboard workspace does not exist: ${workspaceDir}`);
112
+ }
113
+ if ((0, fs_1.lstatSync)(workspaceDir).isSymbolicLink()) {
114
+ throw new cli_user_error_1.CliUserError(`Refusing to use symlink onboard workspace at '${workspaceDir}'.`);
115
+ }
116
+ const realWorkspace = (0, fs_1.realpathSync)(workspaceDir);
117
+ if (!(0, exports.isPathInsideRoot)(realRoot, realWorkspace)) {
118
+ throw new cli_user_error_1.CliUserError(`Onboard workspace escapes the project root: ${workspaceDir}`);
119
+ }
120
+ return realWorkspace;
121
+ };
122
+ exports.assertWorkspaceInsideProject = assertWorkspaceInsideProject;
123
+ const assertNoSymlinkAt = (projectRoot, relativePath) => {
124
+ (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
125
+ };
126
+ const normalizeRelativeRepoPath = (relativePath) => {
127
+ if (relativePath.length === 0 || relativePath === ".") {
128
+ throw new cli_user_error_1.CliUserError("Refusing empty write path under the project root.");
129
+ }
130
+ if ((0, path_1.isAbsolute)(relativePath)) {
131
+ throw new cli_user_error_1.CliUserError(`Refusing absolute write path: ${relativePath}`);
132
+ }
133
+ const normalized = (0, path_1.normalize)(relativePath).replace(/\\/g, "/");
134
+ if (normalized === ".." ||
135
+ normalized.startsWith("../") ||
136
+ normalized.split("/").includes("..")) {
137
+ throw new cli_user_error_1.CliUserError(`Refusing path escape: ${relativePath}`);
138
+ }
139
+ return normalized.replace(/^\.\//u, "");
140
+ };
141
+ exports.normalizeRelativeRepoPath = normalizeRelativeRepoPath;
142
+ const isPathInsideRoot = (root, candidate) => {
143
+ const relativeToRoot = (0, path_1.relative)(root, candidate);
144
+ return (relativeToRoot === "" ||
145
+ (!relativeToRoot.startsWith(`..${path_1.sep}`) &&
146
+ relativeToRoot !== ".." &&
147
+ !(0, path_1.isAbsolute)(relativeToRoot)));
148
+ };
149
+ exports.isPathInsideRoot = isPathInsideRoot;
150
+ const tryLstat = (path) => {
151
+ try {
152
+ return (0, fs_1.lstatSync)(path);
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ };
158
+ /**
159
+ * True when `absolutePath` is a real (non-symlink) directory whose realpath
160
+ * stays inside the project root. Used by app discovery so a repo-seeded
161
+ * symlink cannot be selected as an onboard target.
162
+ */
163
+ const isRealDirectoryInsideProject = (projectRoot, absolutePath) => {
164
+ const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
165
+ const stat = tryLstat(absolutePath);
166
+ if (!stat || stat.isSymbolicLink() || !stat.isDirectory()) {
167
+ return false;
168
+ }
169
+ let realCandidate;
170
+ try {
171
+ realCandidate = (0, fs_1.realpathSync)(absolutePath);
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ return (0, exports.isPathInsideRoot)(realRoot, realCandidate);
177
+ };
178
+ exports.isRealDirectoryInsideProject = isRealDirectoryInsideProject;
179
+ /**
180
+ * Paths the skills installer may create or write under. We must reject
181
+ * repo-seeded symlinks here *before* handing control to the external
182
+ * installer — validating only `.claude` is not enough.
183
+ */
184
+ exports.SKILLS_INSTALL_DIR_ROOTS = [
185
+ ".claude",
186
+ ".agents",
187
+ ".cursor",
188
+ ];
189
+ exports.SKILLS_INSTALL_FILE_TARGETS = ["skills-lock.json"];
190
+ /**
191
+ * Rejects symlinks on every path the skills installer may write through, then
192
+ * creates the destination directory roots as real directories inside the repo.
193
+ * Also walks any pre-existing nested entries under each agent's skills tree —
194
+ * a real `skills` dir with a last-component symlink like
195
+ * `.claude/skills/<name> -> ~/.ssh` would otherwise let the installer write
196
+ * outside the project while the shallow check still passes.
197
+ */
198
+ const prepareSafeSkillsInstallTargets = (projectRoot) => {
199
+ for (const file of exports.SKILLS_INSTALL_FILE_TARGETS) {
200
+ // Throws if the path (or any parent component) is a symlink.
201
+ (0, exports.resolveSafeWritePath)(projectRoot, file);
202
+ }
203
+ for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
204
+ (0, exports.mkdirSafeSync)(projectRoot, dir);
205
+ (0, exports.mkdirSafeSync)(projectRoot, (0, path_1.join)(dir, "skills"));
206
+ }
207
+ (0, exports.assertNoSymlinksUnderSkillsTrees)(projectRoot);
208
+ };
209
+ exports.prepareSafeSkillsInstallTargets = prepareSafeSkillsInstallTargets;
210
+ /**
211
+ * Re-checks skills install destinations after an external installer runs, so a
212
+ * TOCTOU symlink plant during the install cannot go unnoticed — including
213
+ * nested last-component symlinks under each agent's skills tree.
214
+ */
215
+ const assertSafeSkillsInstallTargets = (projectRoot) => {
216
+ for (const file of exports.SKILLS_INSTALL_FILE_TARGETS) {
217
+ (0, exports.resolveSafeWritePath)(projectRoot, file);
218
+ }
219
+ for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
220
+ (0, exports.resolveSafeWritePath)(projectRoot, dir);
221
+ (0, exports.resolveSafeWritePath)(projectRoot, (0, path_1.join)(dir, "skills"));
222
+ }
223
+ (0, exports.assertNoSymlinksUnderSkillsTrees)(projectRoot);
224
+ };
225
+ exports.assertSafeSkillsInstallTargets = assertSafeSkillsInstallTargets;
226
+ /**
227
+ * Recursively rejects any symlink under `.claude/skills`, `.agents/skills`,
228
+ * and `.cursor/skills`. Matches `resolveSafeWritePath`: any symlink is refused,
229
+ * not only ones that currently resolve outside the repo.
230
+ */
231
+ const assertNoSymlinksUnderSkillsTrees = (projectRoot) => {
232
+ const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
233
+ for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
234
+ const relativeSkills = (0, path_1.join)(dir, "skills").replace(/\\/g, "/");
235
+ const absoluteSkills = (0, path_1.join)(realRoot, dir, "skills");
236
+ assertNoSymlinksUnderDirectory(absoluteSkills, relativeSkills);
237
+ }
238
+ };
239
+ exports.assertNoSymlinksUnderSkillsTrees = assertNoSymlinksUnderSkillsTrees;
240
+ const assertNoSymlinksUnderDirectory = (absoluteDir, relativeDisplay) => {
241
+ const dirStat = tryLstat(absoluteDir);
242
+ if (!dirStat) {
243
+ return;
244
+ }
245
+ if (dirStat.isSymbolicLink()) {
246
+ throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${relativeDisplay}'. ` +
247
+ `Remove or replace it, then re-run \`meticulous onboard\`.`);
248
+ }
249
+ if (!dirStat.isDirectory()) {
250
+ return;
251
+ }
252
+ for (const entry of (0, fs_1.readdirSync)(absoluteDir, { withFileTypes: true })) {
253
+ const childRelative = `${relativeDisplay}/${entry.name}`;
254
+ // Check symlink before isDirectory(): a symlink-to-dir can report as both
255
+ // depending on platform / Node version.
256
+ if (entry.isSymbolicLink()) {
257
+ throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${childRelative}'. ` +
258
+ `Remove or replace it, then re-run \`meticulous onboard\`.`);
259
+ }
260
+ if (entry.isDirectory()) {
261
+ assertNoSymlinksUnderDirectory((0, path_1.join)(absoluteDir, entry.name), childRelative);
262
+ }
263
+ }
264
+ };
265
+ //# sourceMappingURL=safe-repo-fs.js.map
266
+ //# debugId=96da1693-9282-57e0-8720-eb64652df868
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-repo-fs.js","sources":["../../../src/commands/onboard/safe-repo-fs.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"96da1693-9282-57e0-8720-eb64652df868"}